Kriptografi kunci simetris
Dalam pelajaran ini kita akan melihat kriptografi kunci simetris yang mengamankan sebagian besar data yang disimpan dan dalam transit berkat efisiensinya.
Pada akhir pelajaran kita akan sudah membahas:
- Apa itu kriptografi kunci simetris
- Contoh kode Python yang mendemonstrasikan penggunaan kriptografi kunci simetris
- Tinjauan aplikasi kriptografi kunci simetris
- Aplikasi kriptografi kunci simetris
- Keamanan kriptografi kunci simetris
- Ancaman terhadap algoritma-algoritma ini dari komputer klasik maupun kuantum
Pengenalan kriptografi kunci simetris​
Kriptografi kunci simetris (SKC) adalah bentuk kriptografi tertua dan paling intuitif. Dengan SKC, informasi rahasia diamankan melalui enkripsi kunci simetris (SKE), yaitu dengan menggunakan satu kunci rahasia tunggal untuk enkripsi dan dekripsi.
SKC melibatkan:
- Fungsi enkripsi yang mengubah instansi plain text yang diberikan menjadi ciphertext sambil menggunakan kunci rahasia
- Fungsi dekripsi yang membalikkan operasi dengan mengubah ciphertext kembali ke plain text menggunakan kunci rahasia yang sama
Plain text bisa berarti jenis data yang tidak terenkripsi seperti teks bahasa alami atau kode biner yang konten informasinya pada prinsipnya dapat diakses langsung, sementara ciphertext mengacu pada data terenkripsi yang konten informasinya dimaksudkan agar tidak dapat diakses sebelum didekripsi.
Algoritma yang mendeskripsikan operasi enkripsi dan dekripsi menggunakan kunci rahasia bersama juga disebut cipher simetris.

Gambar 1. Enkripsi kunci simetris dari plain text yang diberikan ke ciphertext dan dekripsi kembali ke plain text menggunakan kunci yang sama.
Properti kriptosistem kunci simetris​
Kriptosistem kunci simetris harus memastikan properti-properti berikut untuk mengamankan pesan—baik data yang disimpan secara statis maupun/atau komunikasi melalui beberapa saluran transmisi:
- Kerahasiaan: Mengacu pada properti bahwa konten informasi pesan terenkripsi terlindungi dari akses yang tidak sah.
- Integritas: Mengacu pada properti bahwa setiap perusakan pesan terenkripsi selama penyimpanan atau transmisi dapat dideteksi.
- Keaslian: Mengacu pada properti bahwa penerima pesan bisa memverifikasi identitas pengirim dan mendeteksi peniruan oleh pihak yang tidak berwenang.
Selain itu, properti-properti ini harus diwujudkan dalam pengaturan di mana algoritma atau cipher yang digunakan untuk enkripsi dan dekripsi mungkin bersifat publik dan di mana akses ke konten informasi pesan terenkripsi dikendalikan secara eksklusif melalui akses ke kunci rahasia.
Mengimplementasikan kriptosistem kunci simetris yang aman oleh karena itu melibatkan dua tugas utama:
- Menggunakan algoritma enkripsi kunci simetris yang kuat dan tahan terhadap serangan kriptografi.
- Memastikan kerahasiaan dalam distribusi dan pengelolaan kunci rahasia.
Dalam pelajaran ini, kita akan membahas aspek yang berkaitan dengan tugas pertama, yang merupakan perhatian utama teknologi SKC. Tugas kedua, bagaimanapun, memerlukan solusi yang berada di luar SKC itu sendiri dan akan diperkenalkan nanti.
Ilustrasi enkripsi kunci simetris menggunakan python​
Kita tunjukkan contoh sederhana dari operasi enkripsi dan dekripsi menggunakan Caesar shift cipher klasik dan Advanced Encryption System (AES) modern, yang telah menjadi standar untuk enkripsi kunci simetris sejak tahun 2001. Pertama kita siapkan beberapa library Python yang menyediakan cipher enkripsi kunci simetris yang diperlukan, kemudian mendefinisikan plain text yang ingin kita enkripsi.
# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy
# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np
# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")
Kita akan lihat cara mengenkripsi dan mendekripsinya menggunakan dua metode enkripsi kunci simetris yang berbeda:
- Caesar shift cipher klasik
- Protokol AES-256 Advanced Encryption Standard modern
Caesar shift cipher:​
Enkripsi Caesar shift melibatkan pendefinisian
- Alfabet dari kemungkinan karakter yang akan dikodekan
- Nilai shift yang bisa antara 0 (tidak terenkripsi) dan panjang alfabet. Kita anggap ini sebagai kunci.
Ini dikenal sebagai cipher substitusi monoalfabetik karena setiap huruf dari plain text diganti dengan huruf lain dalam ciphertext.
Dalam contoh ini kita akan menggunakan huruf kecil dari alfabet.
Mari mulai dengan menyiapkan semuanya.
# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()
# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")
# Define the alphabet
alphabet = (
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
)
print(f"alphabet: {alphabet}")
Enkripsi plain text untuk mendapatkan ciphertext untuk Caesar cipher.
caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")
Dekripsi ciphertext kembali ke plain text asli menggunakan kunci yang sama yang digunakan untuk enkripsi.
caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")
Cipher advanced encryption standard (AES)​
Kita sekarang enkripsi plain text menggunakan AES, algoritma enkripsi kunci simetris yang populer.
Kita mulai dengan membuat kunci, dalam hal ini, string 16 huruf acak.
# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])
print(f"AES secret key: {aes_key}")
AES mendukung beberapa mode operasi dan mengharuskan kita menentukan mana yang akan digunakan.
Kita memilih mode Cipher Block Chaining (CBC) yang disediakan oleh kelas modes.CBC dari library cryptography. Mode CBC dari AES menggunakan keacakan untuk keamanan tambahan. Ini memerlukan spesifikasi Initialization Vector (IV) acak, yang juga disebut nonce. Kita akan menggunakan string acak untuk ini juga, seperti yang kita lakukan untuk kunci.
aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")
Kita sekarang bisa menginstansiasi cipher AES atas nama pengirim pesan rahasia. Perhatikan bahwa initialization vector dilewatkan ke kelas modes.CBC untuk mengatur mode operasi CBC.
Kita kemudian akan mengenkripsi plain text untuk dikirim.
# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()
# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)
# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")
Untuk mendekripsinya, mari instansiasi cipher AES atas nama penerima. Perhatikan bahwa penerima yang dimaksud memiliki akses ke kunci rahasia dan initialization vector, tetapi yang terakhir tidak perlu dirahasiakan.
# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()
# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()
# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")
print(f"Decrypted AES plaintext: {aes_plaintext}")
Aplikasi kriptografi kunci simetris​
Sementara cipher klasik seperti Caesar cipher sudah lama tidak digunakan, kriptosistem simetris modern seperti AES digunakan dalam berbagai aplikasi, termasuk:
-
Enkripsi dan dekripsi data: SKC banyak digunakan untuk melindungi data sensitif, baik yang disimpan secara statis di perangkat maupun yang dikirimkan melalui jaringan. Contohnya termasuk melindungi kredensial pengguna, mengenkripsi pesan email, dan mengamankan transaksi keuangan, antara lain.
-
Komunikasi aman: Protokol komunikasi umum seperti SSL/TLS menggunakan kombinasi enkripsi kunci simetris dan asimetris untuk memastikan kerahasiaan dan integritas data yang dipertukarkan antara dua pihak. Pesan-pesan ini dienkripsi dan didekripsi menggunakan enkripsi kunci simetris yang menggunakan kunci bersama. Kunci yang digunakan dalam enkripsi kunci simetris dipertukarkan dengan aman menggunakan enkripsi kunci asimetris yang menggunakan pasangan kunci publik-privat. Enkripsi kunci simetris jauh lebih cepat dan oleh karena itu bisa digunakan untuk enkripsi pesan berukuran besar.
-
Verifikasi keaslian: Dalam beberapa pengaturan, SKC digunakan melalui teknik seperti message authentication codes (MAC) dan keyed-hash MAC (HMAC) untuk memverifikasi keaslian dan integritas pesan, memastikan komunikasi yang tahan gangguan.
-
Enkripsi file dan disk: Perangkat lunak enkripsi full-disk dan alat enkripsi file menggunakan SKC untuk melindungi data sensitif yang tersimpan di hard disk atau perangkat penyimpanan portabel.
-
Virtual private network: Teknologi VPN, yang bertujuan menyediakan saluran komunikasi rahasia bebas dari penyadapan, bisa menggunakan enkripsi kunci simetris atau asimetris untuk menghubungkan pengguna jarak jauh maupun jaringan perusahaan.
Beragam aplikasi di mana SKC digunakan pada gilirannya mengharuskan kriptosistem simetris memenuhi seperangkat kriteria tertentu.
Prinsip enkripsi kunci simetris​
Dalam bagian ini, kita akan membahas beberapa prinsip dasar yang mendasari keamanan algoritma enkripsi kunci simetris.
Ketahanan terhadap serangan brute force: Persyaratan paling dasar untuk keamanan cipher enkripsi adalah ukuran key space—dengan kata lain, jumlah kunci berbeda yang mungkin dari mana seseorang yang menggunakan algoritma tersebut bisa memilih—sangatlah besar.
Ketahanan terhadap serangan kriptanalitik: Persyaratan dasar kedua untuk cipher, simetris atau lainnya, adalah bahwa cipher dapat menghasilkan ciphertext yang secara informasional tidak dapat dipahami. Untuk tujuan ini, kondisi yang diperlukan tetapi tidak cukup dari perspektif teori informasi adalah bahwa ciphertext harus ditandai dengan entropi tinggi, membuatnya tidak dapat dibedakan dari teks acak tanpa pola atau korelasi yang dapat dikenali. Dengan cara ini, penyerang tidak dapat memperoleh informasi tentang plain text atau kunci rahasia dengan mencoba menganalisis ciphertext menggunakan analisis frekuensi atau teknik statistik lainnya.
Ketahanan terhadap bentuk umum serangan kriptanalitik yang cukup untuk memastikan keamanan semantik diformalkan melalui gagasan indistinguishability. Meskipun ada beberapa varian indistinguishability dengan persyaratan yang berbeda, kriptosistem simetris dianggap aman secara semantis jika memenuhi kriteria Indistinguishability under Chosen Plain Text Attack (IND-CPA). Ini berarti bahwa penyerang tidak dapat membedakan antara enkripsi dua pesan berbeda bahkan jika diizinkan untuk mengirim beberapa plain text pilihannya sendiri ke algoritma dan melihat ciphertext yang sesuai.
Seperti yang akan kita pertimbangkan nanti, IND-CPA biasanya memerlukan penggunaan keacakan untuk memastikan bahwa setiap kali plain text yang diberikan dienkripsi dengan kunci rahasia yang diberikan, ciphertext yang dihasilkan berbeda secara tidak terduga untuk setiap enkripsi.
Mode kegagalan cipher klasik: Sebelum munculnya kriptografi modern pada 1970-an, sebagian besar cipher klasik dalam penggunaan praktis gagal memenuhi satu atau keduanya dari persyaratan di atas. Misalnya, cipher substitusi awal seperti Caesar shift cipher monoalfabetik ditandai oleh ukuran key space yang kecil (lihat Tabel 1) dan ciphertext berenergi rendah, membuatnya tidak aman terhadap berbagai serangan kriptanalitik seperti serangan brute force, analisis frekuensi, dan serangan known-plain-text (KPT).
Cipher substitusi polialpabetik berikutnya seperti Vigenère cipher dan cipher mesin Enigma menampilkan ukuran key space yang efektif besar, membuatnya tahan terhadap serangan brute force, tetapi rentan terhadap analisis frekuensi dan serangan KPT, masing-masing. Mirip dengan cipher substitusi, cipher transposisi klasik, yang mengatur ulang huruf dalam pesan alih-alih menggantinya, juga dikompromikan oleh berbagai serangan seperti anagramming, analisis statistik, brute force, dan serangan KPT, antara lain.
Secara teoritis, cipher substitusi polialpabetik yang dikenal sebagai one-time pad (OTP) diketahui aman secara kriptografi. OTP menampilkan kunci rahasia yang harus (1) terdiri dari huruf atau bit yang dipilih secara acak, (2) setidaknya sepanjang plain text asli, dan (3) hanya digunakan sekali. OTP tidak praktis untuk aplikasi nyata karena jika kunci rahasia—yang diharuskan sepanjang plain text dan hanya bisa digunakan sekali—bisa dibagikan dengan aman, maka plain text asli juga bisa. OTP malah mengilustrasikan utilitas keacakan dalam menghasilkan ciphertext yang aman.
Penyerang yang mencoba mengimplementasikan pencarian brute force melalui key space untuk menemukan kunci yang mendekripsi pesan harus melakukan sejumlah operasi yang proporsional dengan ukuran key space.
Oleh karena itu, ukuran key space yang besar memberikan ketahanan terhadap serangan brute force dengan membuatnya tidak dapat dilakukan secara komputasi. Tabel 1 mencantumkan ukuran key space dari beberapa cipher yang terkenal.
Tabel 1: Ukuran key space dari beberapa cipher simetris​
| Cipher | Panjang kunci | Ukuran key space |
|---|---|---|
| Caeser shift | 1 | alphabet-size |
| Vigenere | n | alphabet-size |
| One-time-pad | plaintext-length | alphabet-size |
| DES | 56 | 2 |
| AES-128 | 128 | 2 |
| AES-192 | 192 | 2 |
| AES-256 | 256 | 2 |
| ChaCha20 | 256 | 2 |
| Skema enkripsi kunci simetris modern sebagian besar mengatasi keterbatasan cipher klasik. Mereka menghasilkan ciphertext yang tahan terhadap kriptanalisis dan menampilkan ukuran key space yang besar sambil juga jauh lebih efisien secara praktis daripada OTP. |
Cipher blok: Satu kelas cipher modern—seperti DES dan AES—mencapai keamanan dengan menggabungkan prinsip confusion dan diffusion yang awalnya diperkenalkan oleh Claude Shannon. Kita membahas gagasan-gagasan ini dalam pengaturan di mana skema enkripsi bekerja dengan representasi biner pesan:
-
Confusion: Confusion adalah karakteristik di mana setiap bit dalam ciphertext bergantung pada beberapa bit dari kunci rahasia. Ini memastikan bahwa perubahan kecil pada kunci rahasia memodifikasi hampir semua bit dari ciphertext, mengaburkan hubungan antara ciphertext dan kunci rahasia.
-
Diffusion: Diffusion adalah karakteristik di mana membalik satu bit dalam plain text harus memodifikasi sekitar setengah bit dalam ciphertext dan sebaliknya. Diffusion menyembunyikan hubungan statistik antara plain text dan ciphertext. Cipher dengan diffusion yang memadai memenuhi apa yang disebut avalanche criterion kriptografi.
Cipher blok mengimplementasikan confusion dan diffusion menggunakan struktur kriptografi yang dikenal sebagai substitution-permutation networks (SPN) yang beroperasi pada blok data diskrit. Sebuah SPN menerima blok plain text dan kunci rahasia sebagai input dan melakukan jumlah putaran transformasi yang ditentukan untuk menghasilkan blok ciphertext. Setiap putaran terdiri dari struktur matematika bergantian yang dikenal sebagai substitution box (S-box) dan permutation box (P-box) atau operasi yang setara.
Ini masing-masing mengimplementasikan transformasi non-linear dan linear yang kompleks pada blok input, yang menghasilkan efek avalanche dalam ciphertext.
SPN dirancang sedemikian rupa sehingga meningkatkan jumlah putaran biasanya meningkatkan keamanan cipher. Ini menghasilkan gagasan security margin. Security margin: Security margin dari cipher kriptografi berbasis SPN yang diberikan adalah perbedaan antara jumlah putaran dalam implementasi lengkap cipher dan jumlah putaran maksimum yang diketahui bisa dipecahkan menggunakan serangan terbaik yang diketahui di dunia nyata.
Misalnya, saat ini serangan yang lebih cepat dari brute force terhadap AES-256 terbaik yang diketahui bisa memecahkan hingga 9 putaran dari total 14 putaran dalam cipher penuh ketika digunakan dalam mode standar yang dikenal sebagai mode Electronic Codebook (ECB). Oleh karena itu, saat ini security margin AES-256 adalah 5 putaran.
Cipher stream: Sebagai alternatif dari cipher blok, kriptografer modern juga telah merancang cipher stream yang aman secara praktis seperti Chacha20. Cipher-cipher ini memanfaatkan keacakan sebagai bagian fundamental dari desain mereka dan beroperasi pada keystream bit pseudoacak alih-alih blok data diskrit.
Sesuai dengan itu, cipher stream menggabungkan kunci rahasia dan initialization vector (IV) untuk menyemai generator bilangan acak semu (PRNG) untuk menghasilkan keystream bit acak yang kemudian dikombinasikan dengan plain text yang diberikan untuk menghasilkan ciphertext. Dalam pengertian ini, cipher stream mirip dengan one-time pad (OTP) tetapi menampilkan panjang kunci rahasia yang lebih pendek dan kunci yang dapat digunakan kembali, yang membuatnya lebih praktis. Namun, karena alasan yang sama, mereka tidak menjamin kerahasiaan sempurna, tidak seperti OTP.
Keamanan semantis: Kita menutup bagian ini dengan kembali ke gagasan keamanan semantis atau keamanan level IND-CPA yang diperkenalkan di atas. Operasi dasar yang diimplementasikan oleh cipher blok seperti S-box dan P-box bersifat deterministik. Ini berarti bahwa dalam mode operasi standar seperti ECB, pasangan kunci plain text yang diberikan selalu menghasilkan ciphertext yang sama, situasi yang rentan terhadap serangan chosen-plain-text.
Untuk mencapai keamanan level IND-CPA, cipher blok perlu beroperasi dalam mode yang menggunakan keacakan yang diperkenalkan melalui initialization vector (IV) pseudoacak dengan persyaratan tambahan bahwa tidak ada dua operasi enkripsi yang menggunakan pasangan kunci-IV yang sama. AES mendukung beberapa mode operasi, seperti cipher block chaining (CBC), yang aman dengan IND-CPA. Persyaratan serupa juga berlaku untuk cipher stream di mana pasangan kunci-IV yang sama tidak boleh digunakan untuk menyemai PRNG lebih dari sekali jika IND-CPA diinginkan.
Algoritma kunci simetris yang populer​
Setelah memperkenalkan beberapa prinsip dasar SKC, kita sekarang mencantumkan beberapa algoritma kunci simetris yang populer untuk mengilustrasikan berbagai pendekatan yang diterapkan dalam kriptosistem modern. Cipher blok modern dan cipher stream keduanya digunakan dalam konteks yang berbeda seperti yang diilustrasikan di bawah ini.
-
Advanced Encryption Standard: AES, yang sudah diperkenalkan di atas, saat ini merupakan standar de facto untuk SKC karena karakteristik keamanan, efisiensi, dan kinerjanya. AES menampilkan ukuran kunci tetap 128, 192, dan 256 bit dan menggunakan substitution-permutation network (SPN) multi-putaran. AES diketahui tahan terhadap berbagai serangan kriptanalitik. AES diumumkan sebagai Federal Information Processing Standard (FIPS) untuk enkripsi kunci simetris di Amerika Serikat pada tahun 2001.`
-
Data Encryption Standard (DES) dan Triple Data Encryption Standard (3DES): DES adalah cipher blok yang awalnya ditemukan oleh Horst Feistel dan rekan-rekannya di IBM® pada 1970-an dan menggunakan SPN dengan kunci 56-bit yang relatif pendek. DES diadopsi sebagai FIPS untuk enkripsi kunci simetris di Amerika Serikat hingga akhir 1990-an ketika terbukti bisa dipecahkan menggunakan serangan brute force dengan perangkat keras khusus karena ukuran key space-nya yang kecil. Selanjutnya, 3DES diperkenalkan sebagai pengganti dan menerapkan algoritma DES tiga kali dengan kunci berbeda, meningkatkan panjang kunci menjadi 168 bit. Namun demikian, 3DES sebagian besar telah digantikan oleh AES.
-
Blowfish dan Twofish: Blowfish dan penerusnya, Twofish, adalah cipher blok yang diusulkan oleh kriptografer Bruce Schneier pada 1990-an. Blowfish dan Twofish memungkinkan panjang kunci variabel hingga 448 bit dan 256 bit masing-masing, menawarkan fleksibilitas dalam trade-off antara keamanan dan kinerja. Tidak seperti AES, mereka juga menampilkan S-box yang bergantung pada kunci. Twofish adalah salah satu finalis dalam kompetisi NIST untuk memilih Advanced Encryption Standard tetapi pada akhirnya tidak dipilih. Kedua algoritma saat ini dianggap aman.
-
Rivest Ciphers (RC2, RC4, RC5, dan RC6): Keluarga algoritma kunci simetris Rivest Cipher (RC) dirancang oleh Ron Rivest mulai 1980-an. RC2 adalah cipher blok 64-bit awal sementara RC4 adalah cipher stream yang banyak digunakan dalam protokol keamanan terkait lalu lintas web karena kesederhanaannya dan kecepatannya. Keduanya tidak lagi dianggap aman saat ini. RC5 dan RC6 adalah cipher blok berbasis SPN yang dirancang dengan ukuran blok, ukuran kunci, dan jumlah putaran yang dapat dikustomisasi. Seperti Twofish di atas, RC6 adalah finalis dalam kompetisi NIST AES dan dianggap aman.
-
Salsa20 dan ChaCha20: Salsa20 dan ChaCha20 mengacu pada keluarga cipher stream terkait yang dirancang oleh kriptografer Daniel Bernstein pada 2000-an. Salsa20 adalah bagian dari portofolio profil-1 proyek validasi kriptografi Uni Eropa eSTREAM. ChaCha20, modifikasi dari Salsa20, dirancang untuk meningkatkan karakteristik diffusion dan kinerja. Saat ini, ChaCha20 dianggap aman dan menawarkan kinerja yang lebih baik tanpa akselerasi perangkat keras AES yang didedikasikan. Oleh karena itu, ChaCha20 digunakan dalam pengaturan tertentu seperti protokol jaringan seperti QUIC dan perangkat mobile dengan CPU berbasis ARM.
Keunggulan kriptografi kunci simetris​
Setelah menguraikan properti kriptosistem kunci simetris dan beberapa prinsip yang mendasari pengembangannya, kita sekarang mencantumkan beberapa keunggulan utama SKC dibandingkan kriptografi kunci asimetris. Yang terakhir akan dibahas dalam pelajaran selanjutnya.
-
Kecepatan dan efisiensi: Algoritma kunci simetris lebih cocok untuk mengenkripsi volume data yang besar atau untuk digunakan dalam skenario komunikasi real-time karena umumnya lebih cepat dan kurang intensif sumber daya daripada rekan asimetris mereka. Algoritma SKC seperti AES berskala secara linear dengan ukuran plain text dan tidak melibatkan operasi matematika yang intensif secara aljabar. Lihat Tomoiaga et al. untuk tinjauan terperinci tentang karakteristik kinerja AES.
-
Skalabilitas: Karena overhead komputasi mereka yang relatif rendah, algoritma kunci simetris berskala dengan baik seiring bertambahnya jumlah pengguna dan jumlah data yang dienkripsi.
-
Kesederhanaan: Protokol enkripsi simetris sering lebih mudah diimplementasikan dan dipahami dibandingkan pendekatan kunci asimetris, menjadikannya menarik bagi pengembang dan pengguna.
Tantangan dan keterbatasan kriptografi kunci simetris​
Terlepas dari keunggulannya, kriptografi kunci simetris juga memiliki beberapa tantangan dan keterbatasan:
-
Distribusi dan pengelolaan kunci: Dalam SKC, pengirim dan penerima pesan keduanya harus memiliki akses ke kunci yang sama, yang harus dirahasiakan dari pihak yang tidak berwenang. Jika kunci tersebut entah bagaimana diintersepsi atau dikompromikan oleh pihak ketiga maka keamanan data terenkripsi juga hilang. Distribusi dan pengelolaan kunci rahasia yang aman oleh karena itu merupakan tantangan utama. Namun, solusi untuk tantangan ini berada di luar SKC itu sendiri.
-
Kurangnya non-repudiation: Non-repudiation mengacu pada kemampuan untuk membuktikan bahwa pihak tertentu telah mengirim pesan. Dalam SKC, karena kunci yang sama digunakan untuk enkripsi dan dekripsi, tidak mungkin untuk menentukan pihak mana yang telah membuat ciphertext tertentu. Sebaliknya, kriptografi kunci asimetris memberikan non-repudiation melalui penggunaan tanda tangan digital.
Untuk mengatasi tantangan-tantangan ini, kriptografi kunci simetris sering digunakan dalam kombinasi dengan kriptografi kunci asimetris. Misalnya, seseorang sering menggunakan enkripsi kunci asimetris untuk mengirimkan kunci rahasia bersama yang relatif pendek secara aman antara pengirim dan penerima. Ini memungkinkan penggunaan enkripsi kunci simetris selanjutnya untuk mengirimkan data dan pesan yang jauh lebih besar secara efisien.
Komputasi kuantum dan enkripsi kunci simetris: Risiko dan mitigasi​
Kriptografi kuantum menawarkan jalur yang menjanjikan untuk mitigasi risiko di era digital, dengan adopsi produk quantum-safe yang siap mengamankan informasi kita terhadap ancaman kemajuan komputasi kuantum yang akan datang.
Dalam uraian berikut, kita membahas risiko yang ditimbulkan oleh komputer kuantum terhadap skema enkripsi kunci simetris yang diperkenalkan di bagian sebelumnya dan menguraikan beberapa jalur potensial untuk memitigasi risikonya.
Serangan kriptografi kuantum​
Ada dua kelas ancaman kuantum yang berbeda terhadap algoritma kriptografi tradisional:
-
Serangan brute force kuantum: Ini mengacu pada situasi di mana penyerang menggunakan komputer kuantum untuk mengeksekusi algoritma kuantum khusus untuk melakukan pencarian brute force melalui key space dari cipher simetris. Primitif kuantum yang paling relevan untuk mengaktifkan jenis serangan ini adalah algoritma Grover.
-
Serangan kriptanalitik kuantum: Ini mengacu pada situasi di mana komputer kuantum digunakan untuk mengeksekusi serangan kriptanalitik yang bertujuan memulihkan kunci rahasia atau plain text dengan cara yang lebih efisien daripada pencarian brute force. Kemungkinan mengeksekusi serangan kriptanalitik kuantum yang berhasil bergantung pada banyak faktor yang berkaitan dengan struktur matematika dari cipher yang dianalisis serta potensi kelemahan dalam implementasi tertentu.
Strategi mitigasi risiko untuk serangan kuantum​
Sebelum kita membahas strategi mitigasi risiko untuk serangan kuantum, mari perkenalkan gagasan security level dari cipher kriptografi:
Security level adalah ukuran kesulitan memecahkan cipher yang diukur dalam hal jumlah operasi komputasi yang diperlukan untuk berhasil memecahkan cipher tersebut.
Biasanya, security level dinyatakan dalam bit; yaitu, secara umum, cipher menawarkan keamanan N-bit jika memerlukan operasi untuk memecahkannya. Pada komputer klasik, dengan asumsi cipher simetris aman secara kriptografi, security level kurang lebih sinonim dengan panjang kunci.
Misalnya, security level AES-128, yang menampilkan kunci 128-bit, umumnya dianggap 128 bit karena akan memerlukan sekitar 2 operasi bagi penyerang yang menggunakan komputer klasik untuk mencoba semua kemungkinan kunci 128-bit dalam key space.
Serangan brute force dan mitigasi​
Risiko serangan brute force kuantum: Serangan brute force kuantum mengubah penilaian di atas karena algoritma Grover memungkinkan penyerang dengan komputer kuantum yang sesuai untuk mencari key space dari cipher lebih cepat secara kuadratik daripada komputer klasik mana pun.
Misalnya, serangan brute force yang sama pada AES-128 dengan algoritma Grover berpotensi dapat dilakukan hanya dengan 2 operasi. Oleh karena itu security level AES-128 dikurangi dari 128 bit menjadi 64 bit ketika dihadapi dengan musuh kuantum yang menjalankan pencarian Grover. Karena daya komputasi secara tradisional telah tumbuh secara eksponensial seiring waktu, saat ini security level 64 bit dianggap tidak aman, yang berarti bahwa sekali komputer kuantum yang cukup mampu terwujud, AES-128 harus ditinggalkan.
Jenis perhitungan yang sama berlaku untuk cipher blok atau stream simetris lainnya di mana security level untuk panjang kunci yang diberikan secara efektif dibelah dua oleh algoritma Grover.
Mitigasi risiko serangan brute force kuantum: Pertimbangan di atas menyiratkan bahwa cara yang jelas untuk menolak serangan brute force kuantum adalah dengan setidaknya menggandakan panjang kunci minimum yang digunakan untuk enkripsi kunci simetris.
Oleh karena itu, untuk memastikan keamanan 128-bit sehubungan dengan serangan brute force kuantum, seseorang cukup menggunakan cipher seperti AES-256 atau ChaCha20 yang menggunakan kunci 256-bit. Ini dianggap aman karena bahkan dengan komputer kuantum, melakukan 2 operasi untuk memecahkan cipher tidak dapat dilakukan dalam waktu mendatang.
Meskipun secara teoritis sederhana, solusi yang diusulkan untuk menggandakan ukuran kunci ini tidak tanpa biaya, karena ukuran kunci yang lebih panjang menyiratkan biaya komputasi tambahan untuk tugas enkripsi-dekripsi rutin, beserta kinerja yang lebih lambat, kebutuhan memori yang lebih banyak, dan penggunaan energi tambahan.
Serangan kriptanalitik dan mitigasi​
Risiko serangan kriptanalitik kuantum: Risiko terhadap kriptosistem kunci simetris yang ditimbulkan oleh serangan kriptanalitik kuantum saat ini sedang diteliti secara aktif oleh kriptografer. Kombinasi komputasi klasik dan kuantum berpotensi memperluas deretan alat yang tersedia bagi penyerang untuk menyelidiki kelemahan dalam struktur matematika cipher, dan berbagai serangan kriptanalitik kuantum baru sedang diusulkan saat ini. Ini termasuk kuantisasi dari teknik klasik yang diketahui seperti kriptanalisis linear dan diferensial serta mode serangan baru yang tidak memiliki padanan klasik.
Sebuah studi kriptanalitik kuantum terbaru tentang Advanced Encryption Standard (AES) menemukan bahwa cipher tersebut tetap tahan terhadap berbagai serangan kriptanalitik kuantum yang diketahui dan terus menunjukkan security margin pasca-kuantum yang memadai. Namun, beberapa studi menemukan bahwa berbagai cipher simetris yang dianggap aman secara klasik mudah dikompromikan oleh apa yang disebut quantum chosen plain text attack. Oleh karena itu, primitif baru untuk enkripsi kunci simetris yang dirancang khusus untuk era pasca-kuantum juga telah diusulkan.
Mitigasi risiko serangan kriptanalitik kuantum: Mengingat bahwa kriptanalisis kuantum sebagai disiplin masih dalam tahap awal, mungkin saja kriptografi simetris pasca-kuantum akan mengalami evolusi yang cepat seiring munculnya serangan kriptanalitik kuantum baru dan cipher baru yang tahan terhadapnya diusulkan dan dievaluasi. Oleh karena itu, strategi terbaik untuk memitigasi risiko serangan kriptanalitik kuantum dalam waktu mendatang adalah cryptographic agility (atau crypto-agility). Crypto-agility mengacu pada kemampuan sistem informasi untuk dengan cepat dan mudah mengadopsi primitif kriptografi alternatif tanpa perubahan mengganggu pada infrastruktur sistem.
Crypto-agility memerlukan kemampuan untuk menggantikan algoritma yang sudah usang yang digunakan untuk enkripsi, dekripsi, tanda tangan digital, atau fungsi kriptografi lainnya dengan upaya dan gangguan minimal. Sistem yang crypto-agile akan berada dalam posisi yang baik untuk mengelola transisi ke kriptografi kunci simetris pasca-kuantum.
Ringkasan​
Kriptografi kunci simetris memberikan solusi yang kuat dan efisien untuk mengamankan informasi digital. Kesederhanaan menggunakan kunci yang sama untuk enkripsi dan dekripsi memungkinkan kinerja dan skalabilitas tinggi, menjadikan SKC cocok untuk berbagai aplikasi.
Keamanan SKC bergantung pada ketahanan algoritmik terhadap serangan kriptografi serta pengelolaan kunci rahasia yang tepat. Kriptosistem kunci simetris modern menggabungkan prinsip confusion, diffusion, dan keacakan, bersama dengan ukuran kunci yang memadai, untuk mencapai keamanan semantis. Pengelolaan kunci rahasia, meskipun penting, tidak dapat dicapai dengan SKC saja.
Memahami properti dan keterbatasan SKC akan memungkinkan pengembang untuk merancang, mengimplementasikan, dan menerapkan solusi teknologi informasi yang aman menggunakan pendekatan termasuk panjang kunci yang lebih panjang sesuai kebutuhan, dan penggunaan algoritma baru.
Kemajuan komputasi kuantum dan pembelajaran kuantum memperkenalkan dimensi baru ke kriptografi kunci simetris. Komputer kuantum berpotensi mengungkap keamanan yang diberikan oleh algoritma kunci simetris klasik, mendorong kebutuhan akan pendekatan kriptografi yang tahan kuantum untuk memastikan privasi dan perlindungan data dalam menghadapi lanskap teknologi yang terus berkembang.