Langkau ke kandungan utama

Kriptografi kunci simetri

Dalam pelajaran ini kita akan melihat kriptografi kunci simetri yang melindungi sebahagian besar data yang disimpan dan dalam transit berkat kecekapannya.

Menjelang akhir pelajaran kita akan telah membincangkan:

  • Apa itu kriptografi kunci simetri
  • Contoh kod Python yang menunjukkan penggunaan kriptografi kunci simetri
  • Tinjauan aplikasi kriptografi kunci simetri
  • Aplikasi kriptografi kunci simetri
  • Keselamatan kriptografi kunci simetri
  • Ancaman terhadap algoritma-algoritma ini daripada komputer klasikal dan kuantum

Pengenalan kepada kriptografi kunci simetriโ€‹

Kriptografi kunci simetri (SKC) ialah bentuk kriptografi yang paling lama dan paling intuitif. Dengan SKC, maklumat sulit dilindungi melalui penyulitan kunci simetri (SKE), iaitu dengan menggunakan satu kunci rahsia tunggal untuk kedua-dua penyulitan dan penyahsulitan.

SKC melibatkan:

  • Fungsi penyulitan yang menukar teks biasa yang diberikan kepada ciphertext sambil menggunakan kunci rahsia
  • Fungsi penyahsulitan yang membalikkan operasi dengan menukar ciphertext kembali kepada teks biasa menggunakan kunci rahsia yang sama

Teks biasa boleh bermaksud apa-apa jenis data yang tidak disulitkan seperti teks bahasa semula jadi atau kod binari yang kandungan maklumatnya pada dasarnya boleh diakses secara langsung, manakala ciphertext merujuk kepada data yang disulitkan yang kandungan maklumatnya bertujuan untuk tidak boleh diakses sebelum penyahsulitan.

Algoritma yang menerangkan operasi penyulitan dan penyahsulitan menggunakan kunci rahsia bersama juga dipanggil sifer simetri.

Fig 1: Symmetric key encryption of a given plaintext to ciphertext and decryption back to plaintext using the same key.

Rajah 1. Penyulitan kunci simetri bagi teks biasa yang diberikan kepada ciphertext dan penyahsulitan kembali kepada teks biasa menggunakan kunci yang sama.

Sifat-sifat kriptosistem kunci simetriโ€‹

Kriptosistem kunci simetri mestilah memastikan sifat-sifat berikut untuk melindungi mesej โ€” sama ada data yang disimpan secara statik dan/atau komunikasi melalui saluran penghantaran tertentu:

  • Kerahsiaan: Merujuk kepada sifat bahawa kandungan maklumat mesej yang disulitkan dilindungi daripada akses tanpa kebenaran.
  • Integriti: Merujuk kepada sifat bahawa sebarang gangguan terhadap mesej yang disulitkan semasa penyimpanan atau penghantaran boleh dikesan.
  • Keaslian: Merujuk kepada sifat bahawa penerima mesej boleh mengesahkan identiti penghantar dan mengesan penyamaran oleh pihak yang tidak dibenarkan.

Tambahan pula, sifat-sifat ini hendaklah direalisasikan dalam persekitaran di mana algoritma atau sifer yang digunakan untuk penyulitan dan penyahsulitan mungkin bersifat awam dan di mana akses kepada kandungan maklumat mesej yang disulitkan dikawal secara eksklusif melalui akses kepada kunci rahsia.

Melaksanakan kriptosistem kunci simetri yang selamat oleh itu melibatkan dua tugas utama:

  1. Menggunakan algoritma penyulitan kunci simetri yang kukuh yang tahan terhadap serangan kriptografi.
  2. Memastikan kerahsiaan dalam pengedaran dan pengurusan kunci rahsia.

Dalam pelajaran ini, kita akan membincangkan aspek berkaitan dengan tugas pertama, yang merupakan kebimbangan utama teknologi SKC. Walau bagaimanapun, tugas kedua memerlukan penyelesaian yang berada di luar SKC itu sendiri dan akan diperkenalkan kemudian.

Ilustrasi penyulitan kunci simetri menggunakan Pythonโ€‹

Kita tunjukkan contoh mudah operasi encrypt dan decrypt menggunakan sifer anjakan Caesar yang klasikal dan Sistem Penyulitan Lanjutan (AES) yang moden, yang telah menjadi standard untuk penyulitan kunci simetri sejak tahun 2001. Pertama kita sediakan beberapa pustaka Python yang menyediakan sifer penyulitan kunci simetri yang diperlukan, kemudian tentukan teks biasa yang ingin disulitkan.

# 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 menyulitkan dan menyahsulitkannya menggunakan dua kaedah penyulitan kunci simetri yang berbeza:

  1. Sifer anjakan Caesar yang klasikal
  2. Protokol Standard Penyulitan Lanjutan AES-256 yang moden

Sifer anjakan Caesar:โ€‹

Penyulitan anjakan Caesar melibatkan penentuan

  • Abjad aksara yang mungkin untuk dikodkan
  • Nilai anjakan yang boleh berada antara 0 (tidak disulitkan) dan panjang abjad. Kita anggap ini sebagai kunci.

Ia dikenali sebagai sifer penggantian monoalfabetik kerana setiap huruf teks biasa digantikan dengan huruf lain dalam ciphertext.

Dalam contoh ini kita akan menggunakan huruf kecil abjad.

Mari mulakan dengan persediaan.

# 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}")

Sulitkan teks biasa untuk mendapatkan ciphertext bagi sifer Caesar.

caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")

Nyahsulitkan ciphertext kembali kepada teks biasa asal menggunakan kunci yang sama yang digunakan untuk penyulitan.

caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")

Sifer standard penyulitan lanjutan (AES)โ€‹

Kita kini sulitkan teks biasa menggunakan AES, algoritma penyulitan kunci simetri yang popular.

Kita mulakan dengan mencipta kunci, dalam kes ini, rentetan rawak 16 huruf.

# 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 menyokong pelbagai mod operasi dan memerlukan kita menentukan yang mana satu hendak digunakan.

Kita pilih mod Cipher Block Chaining (CBC) yang disediakan oleh kelas modes.CBC daripada pustaka cryptography. Mod CBC AES menggunakan kerawakan untuk keselamatan tambahan. Ini memerlukan penentuan Vektor Permulaan (IV) yang rawak, juga dipanggil nonce. Kita akan gunakan rentetan rawak untuk ini juga, sama 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 boleh instantiasikan sifer AES bagi pihak penghantar mesej rahsia. Perhatikan bahawa vektor permulaan dihantar kepada kelas modes.CBC untuk menyediakan mod operasi CBC.

Kita kemudian akan menyulitkan teks biasa untuk dihantar.

# 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 menyahsulitkannya, mari kita instantiasikan sifer AES bagi pihak penerima. Perhatikan bahawa penerima yang dimaksudkan mempunyai akses kepada kedua-dua kunci rahsia dan vektor permulaan, 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 simetriโ€‹

Walaupun sifer klasikal seperti sifer Caesar telah lama tidak digunakan, kriptosistem simetri moden seperti AES digunakan dalam pelbagai aplikasi, termasuk:

  1. Penyulitan dan penyahsulitan data: SKC digunakan secara meluas untuk melindungi data sensitif, sama ada disimpan secara statik pada peranti atau dihantar melalui rangkaian. Contohnya termasuk melindungi kelayakan pengguna, menyulitkan mesej e-mel, dan mengamankan transaksi kewangan, antara lain.

  2. Komunikasi selamat: Protokol komunikasi biasa seperti SSL/TLS menggunakan gabungan penyulitan kunci simetri dan asimetri untuk memastikan kerahsiaan dan integriti data yang ditukar antara dua pihak. Mesej-mesej ini disulitkan dan dinyahsulitkan menggunakan penyulitan kunci simetri yang menggunakan kunci bersama. Kunci yang digunakan dalam penyulitan kunci simetri ditukar dengan selamat menggunakan penyulitan kunci asimetri yang menggunakan pasangan kunci awam-peribadi. Penyulitan kunci simetri jauh lebih pantas dan oleh itu boleh digunakan untuk penyulitan mesej bersaiz besar.

  3. Pengesahan keaslian: Dalam sesetengah tetapan, SKC digunakan melalui teknik seperti kod pengesahan mesej (MAC) dan MAC berkunci-cincang (HMAC) untuk mengesahkan keaslian dan integriti mesej, memastikan komunikasi tahan gangguan.

  4. Penyulitan fail dan cakera: Perisian penyulitan cakera penuh dan alat penyulitan fail menggunakan SKC untuk melindungi data sensitif yang disimpan pada cakera keras atau peranti storan mudah alih.

  5. Rangkaian peribadi maya: Teknologi VPN, yang bertujuan untuk menyediakan saluran komunikasi sulit bebas daripada penyadapan, boleh menggunakan penyulitan kunci simetri atau asimetri untuk menghubungkan pengguna jauh serta rangkaian korporat.

Pelbagai aplikasi di mana SKC digunakan memerlukan kriptosistem simetri memenuhi set kriteria tertentu.

Prinsip penyulitan kunci simetriโ€‹

Dalam bahagian ini, kita akan membincangkan beberapa prinsip asas yang mendasari keselamatan algoritma penyulitan kunci simetri.

Rintangan terhadap serangan kekerasan: Keperluan paling asas untuk keselamatan sifer penyulitan ialah saiz ruang kunci โ€” dengan kata lain, bilangan kunci tersendiri yang mungkin daripada mana seseorang yang menggunakan algoritma itu mungkin telah memilih โ€” adalah sangat besar.

Rintangan terhadap serangan kriptanalitik: Keperluan asas kedua untuk sifer, simetri atau sebaliknya, ialah ia boleh menghasilkan ciphertext yang secara maklumat tidak dapat ditafsir. Untuk tujuan ini, syarat perlu tetapi tidak mencukupi dari perspektif teori maklumat ialah ciphertext hendaklah dicirikan oleh entropi tinggi, menjadikannya tidak dapat dibezakan daripada teks rawak tanpa corak atau korelasi yang boleh dikesan. Dengan cara ini, penyerang tidak dapat memperoleh maklumat tentang teks biasa atau kunci rahsia dengan cuba menganalisis ciphertext menggunakan analisis frekuensi atau teknik statistik lain.

Rintangan terhadap bentuk umum serangan kriptanalitik yang cukup untuk memastikan keselamatan semantik diformalkan melalui konsep tidak dapat dibezakan. Walaupun terdapat beberapa variasi tidak dapat dibezakan dengan keperluan yang berbeza, kriptosistem simetri dianggap selamat secara semantik jika ia memenuhi kriteria Tidak Dapat Dibezakan di bawah Serangan Teks Biasa Terpilih (IND-CPA). Ini bermakna penyerang tidak dapat membezakan antara penyulitan dua mesej yang berbeza walaupun dibenarkan menghantar pelbagai teks biasa pilihan mereka kepada algoritma dan melihat ciphertext yang berkaitan.

Seperti yang akan kita pertimbangkan kemudian, IND-CPA biasanya memerlukan penggunaan kerawakan untuk memastikan bahawa setiap kali teks biasa tertentu disulitkan dengan kunci rahsia tertentu, ciphertext yang dihasilkan berbeza secara tidak dapat diramalkan bagi setiap penyulitan.

Mod kegagalan sifer klasikal: Sebelum kemunculan kriptografi moden pada tahun 1970-an, kebanyakan sifer klasikal yang digunakan secara praktikal gagal memenuhi satu atau kedua-dua keperluan di atas. Sebagai contoh, sifer penggantian awal seperti sifer anjakan Caesar monoalfabetik dicirikan oleh saiz ruang kunci yang kecil (lihat Jadual 1) dan ciphertext berentropi rendah, menjadikannya tidak selamat terhadap pelbagai serangan kriptanalitik seperti serangan kekerasan, analisis frekuensi, dan serangan teks-biasa-diketahui (KPT).

Sifer penggantian polialfabetik seterusnya seperti sifer Vigenรจre dan sifer mesin Enigma menampilkan saiz ruang kunci yang secara efektif besar, menjadikannya tahan terhadap serangan kekerasan, tetapi ia mudah diserang oleh analisis frekuensi dan serangan KPT masing-masing. Serupa dengan sifer penggantian, sifer transposisi klasik, yang menyusun semula huruf dalam mesej bukannya menggantikannya, juga terjejas oleh pelbagai serangan seperti anagramming, analisis statistik, kekerasan, dan serangan KPT, antara lain.

Secara teori, sifer penggantian polialfabetik yang dikenali sebagai pad satu kali (OTP) diketahui selamat secara kriptografi. OTP menampilkan kunci rahsia yang hendaklah (1) terdiri daripada huruf atau bit yang dipilih secara rawak, (2) sekurang-kurangnya sepanjang teks biasa asal, dan (3) digunakan hanya sekali. OTP tidak praktikal untuk aplikasi sebenar kerana jika kunci rahsia โ€” yang diperlukan sepanjang teks biasa dan hanya boleh digunakan sekali โ€” boleh dikongsi dengan selamat, maka teks biasa asal juga boleh. OTP sebaliknya menggambarkan kegunaan kerawakan dalam menghasilkan ciphertext yang selamat.

Penyerang yang cuba melaksanakan carian kekerasan melalui ruang kunci untuk mencari kunci yang menyahsulitkan mesej terpaksa melakukan bilangan operasi yang berkadar dengan saiz ruang kunci.

Oleh itu, saiz ruang kunci yang besar memberikan rintangan terhadap serangan kekerasan dengan menjadikannya tidak boleh dilaksanakan secara komputasi. Jadual 1 menyenaraikan saiz ruang kunci beberapa sifer yang terkenal.

Jadual 1: Saiz ruang kunci beberapa sifer simetriโ€‹

SiferPanjang kunciSaiz ruang kunci
Caeser shift1alphabet-size
Vigenerenalphabet-sizen^\mathrm{n}
One-time-padplaintext-lengthalphabet-sizeplaintextโˆ’length^\mathrm{plaintext-length}
DES56256^\mathrm{56}
AES-1281282128^\mathrm{128}
AES-1921922192^\mathrm{192}
AES-2562562256^\mathrm{256}
ChaCha202562256^\mathrm{256}
Skim penyulitan kunci simetri moden sebahagian besarnya mengatasi had sifer klasikal. Ia menghasilkan ciphertext yang tahan terhadap kriptanalisis dan menampilkan saiz ruang kunci yang besar sambil juga jauh lebih cekap secara praktikal berbanding OTP.

Sifer blok: Satu kelas sifer moden โ€” seperti DES dan AES โ€” mencapai keselamatan dengan menggabungkan prinsip kekeliruan dan peresapan yang pada asalnya diperkenalkan oleh Claude Shannon. Kita bincangkan konsep-konsep ini dalam tetapan di mana skim penyulitan bekerja dengan perwakilan binari mesej:

  • Kekeliruan: Kekeliruan ialah ciri di mana setiap bit dalam ciphertext bergantung kepada pelbagai bit kunci rahsia. Ia memastikan bahawa perubahan kecil pada kunci rahsia mengubah hampir semua bit ciphertext, mengaburkan hubungan antara ciphertext dan kunci rahsia.

  • Peresapan: Peresapan ialah ciri di mana membalikkan satu bit dalam teks biasa hendaklah mengubah kira-kira separuh bit dalam ciphertext dan sebaliknya. Peresapan menyembunyikan hubungan statistik antara teks biasa dan ciphertext. Sifer dengan peresapan yang mencukupi memenuhi apa yang dikenali sebagai kriteria avalanche kriptografi.

Sifer blok melaksanakan kekeliruan dan peresapan menggunakan struktur kriptografi yang dikenali sebagai rangkaian penggantian-permutasi (SPN) yang beroperasi pada blok data diskret. SPN menerima blok teks biasa dan kunci rahsia sebagai input dan melakukan bilangan pusingan transformasi yang ditentukan untuk menghasilkan blok ciphertext. Setiap pusingan terdiri daripada struktur matematik berselang-seli yang dikenali sebagai kotak penggantian (S-box) dan kotak permutasi (P-box) atau operasi yang setara.

Ini masing-masing melaksanakan transformasi tak linear dan linear yang kompleks pada blok input, membawa kepada kesan avalanche dalam ciphertext.

SPN direka bentuk sedemikian rupa sehingga meningkatkan bilangan pusingan biasanya meningkatkan keselamatan sifer. Ini membawa kepada konsep margin keselamatan. Margin keselamatan: Margin keselamatan sifer kriptografi berasaskan SPN yang diberikan ialah perbezaan antara bilangan pusingan dalam pelaksanaan penuh sifer dan bilangan maksimum pusingan yang diketahui boleh dipecahkan menggunakan serangan dunia sebenar terbaik yang diketahui.

Sebagai contoh, pada masa ini serangan lebih-pantas-daripada-kekerasan terbaik yang diketahui terhadap AES-256 boleh memecahkan sehingga 9 pusingan daripada jumlah 14 pusingan dalam sifer penuh apabila digunakan dalam mod standard yang dikenali sebagai mod Electronic Codebook (ECB). Oleh itu, pada masa ini margin keselamatan AES-256 ialah 5 pusingan.

Sifer strim: Sebagai alternatif kepada sifer blok, kriptologi moden juga telah mereka bentuk sifer strim yang selamat secara praktikal seperti Chacha20. Sifer ini menggunakan kerawakan sebagai bahagian asas reka bentuknya dan beroperasi pada aliran kunci pseudorawak bit bukannya blok data diskret.

Oleh itu, sifer strim menggabungkan kunci rahsia dan vektor permulaan (IV) untuk memulakan penjana nombor rawak pseudorawak (PRNG) untuk menghasilkan aliran kunci bit rawak yang kemudian digabungkan dengan teks biasa yang diberikan untuk menghasilkan ciphertext. Dalam pengertian ini, sifer strim serupa dengan pad satu kali (OTP) tetapi menampilkan panjang kunci rahsia yang lebih pendek dan kunci yang boleh digunakan semula, yang menjadikannya lebih praktikal. Walau bagaimanapun, atas sebab yang sama, mereka tidak menjamin kerahsiaan sempurna, tidak seperti OTP.

Keselamatan semantik: Kita simpulkan subseksyen ini dengan kembali kepada konsep keselamatan semantik atau keselamatan peringkat IND-CPA yang diperkenalkan di atas. Operasi asas yang dilaksanakan oleh sifer blok seperti S-box dan P-box adalah deterministik. Ini bermakna dalam mod operasi standard seperti ECB, pasangan kunci-teks-biasa yang diberikan sentiasa menghasilkan ciphertext yang sama, suatu keadaan yang terdedah kepada serangan teks-biasa-terpilih.

Untuk mencapai keselamatan peringkat IND-CPA, sifer blok perlu beroperasi dalam mod yang menggunakan kerawakan yang diperkenalkan melalui vektor permulaan (IV) pseudorawak dengan keperluan tambahan bahawa tiada dua operasi penyulitan menggunakan pasangan kunci-IV yang sama. AES menyokong beberapa mod operasi, seperti penggabungan blok sifer (CBC), yang selamat IND-CPA. Keperluan serupa juga berlaku untuk sifer strim di mana pasangan kunci-IV yang sama tidak boleh digunakan untuk memulakan PRNG lebih daripada sekali jika IND-CPA dikehendaki.

Setelah memperkenalkan beberapa prinsip asas SKC, kita kini senaraikan beberapa algoritma kunci simetri yang popular untuk menggambarkan pelbagai pendekatan yang dikejar dalam kriptosistem moden. Sifer blok dan sifer strim moden kedua-duanya digunakan dalam konteks yang berbeza seperti yang digambarkan di bawah.

  1. Standard Penyulitan Lanjutan: AES, yang telah diperkenalkan di atas, pada masa ini merupakan standard de facto untuk SKC berkat ciri keselamatan, kecekapan, dan prestasinya. AES menampilkan saiz kunci tetap 128, 192, dan 256 bit dan menggunakan rangkaian penggantian-permutasi (SPN) berbilang pusingan. AES diketahui tahan terhadap pelbagai serangan kriptanalitik. AES diumumkan sebagai Standard Pemprosesan Maklumat Persekutuan (FIPS) untuk penyulitan kunci simetri di Amerika Syarikat pada tahun 2001.`

  2. Standard Penyulitan Data (DES) dan Standard Penyulitan Data Tiga (3DES): DES adalah sifer blok yang pada asalnya dicipta oleh Horst Feistel dan rakan sekerja di IBMยฎ pada tahun 1970-an dan menggunakan SPN dengan kunci 56-bit yang agak pendek. DES telah diterima pakai sebagai FIPS untuk penyulitan kunci simetri di Amerika Syarikat sehingga hujung 1990-an apabila ia terbukti boleh dipecahkan menggunakan serangan kekerasan dengan perkakasan khusus disebabkan saiz ruang kuncinya yang kecil. Selepas itu, 3DES diperkenalkan sebagai pengganti dan menerapkan algoritma DES tiga kali dengan kunci berbeza, meningkatkan panjang kunci kepada 168 bit. Namun begitu, 3DES sebahagian besarnya digantikan oleh AES.

  3. Blowfish dan Twofish: Blowfish dan penggantinya, Twofish, adalah sifer blok yang dicadangkan oleh kriptografer Bruce Schneier pada tahun 1990-an. Blowfish dan Twofish membenarkan panjang kunci berubah-ubah sehingga 448 bit dan 256 bit masing-masing, menawarkan fleksibiliti dalam pertukaran antara keselamatan dan prestasi. Tidak seperti AES, keduanya juga menampilkan S-box yang bergantung kepada kunci. Twofish adalah salah satu finalis dalam pertandingan NIST untuk memilih Standard Penyulitan Lanjutan tetapi akhirnya tidak dipilih. Kedua-dua algoritma pada masa ini dianggap selamat.

  4. Sifer Rivest (RC2, RC4, RC5, dan RC6): Keluarga algoritma kunci simetri Rivest Cipher (RC) direka bentuk oleh Ron Rivest bermula pada tahun 1980-an. RC2 adalah sifer blok 64-bit awal manakala RC4 adalah sifer strim yang digunakan secara meluas dalam protokol keselamatan berkaitan trafik web kerana kesederhanaan dan kecepatannya. Keduanya pada masa ini tidak dianggap selamat. RC5 dan RC6 adalah sifer blok berasaskan SPN yang direka bentuk dengan saiz blok, saiz kunci, dan bilangan pusingan yang boleh disesuaikan. Seperti Twofish di atas, RC6 adalah finalis dalam pertandingan NIST AES dan dianggap selamat.

  5. Salsa20 dan ChaCha20: Salsa20 dan ChaCha20 merujuk kepada keluarga sifer strim yang berkaitan yang direka bentuk oleh kriptografer Daniel Bernstein pada tahun 2000-an. Salsa20 adalah sebahagian daripada portfolio profil-1 projek pengesahan kriptografi Kesatuan Eropah eSTREAM. ChaCha20, pengubahsuaian Salsa20, direka bentuk untuk meningkatkan ciri-ciri peresapan dan prestasi. Pada masa ini, ChaCha20 dianggap selamat dan menawarkan prestasi lebih baik tanpa pecutan perkakasan AES khusus. Oleh itu, ChaCha20 digunakan dalam tetapan tertentu seperti protokol rangkaian seperti QUIC dan peranti mudah alih dengan CPU berasaskan ARM.

Kelebihan kriptografi kunci simetriโ€‹

Setelah menggariskan sifat-sifat kriptosistem kunci simetri dan beberapa prinsip yang mendasari pembangunannya, kita kini senaraikan beberapa kelebihan utama SKC berbanding kriptografi kunci asimetri. Yang terakhir akan dibincangkan dalam pelajaran seterusnya.

  1. Kelajuan dan kecekapan: Algoritma kunci simetri lebih sesuai untuk menyulitkan jumlah data yang besar atau untuk digunakan dalam senario komunikasi masa nyata kerana mereka umumnya lebih pantas dan kurang memerlukan sumber berbanding rakan asimetri mereka. Algoritma SKC seperti AES berskala secara linear dengan saiz teks biasa dan tidak melibatkan operasi matematik yang intensif secara aljabar. Lihat Tomoiaga et al. untuk ulasan terperinci ciri prestasi AES.

  2. Kebolehan skala: Berkat overhed komputasi yang agak rendah, algoritma kunci simetri berskala dengan baik dengan bilangan pengguna dan jumlah data yang disulitkan.

  3. Kesederhanaan: Protokol penyulitan simetri sering lebih mudah dilaksanakan dan difahami berbanding pendekatan kunci asimetri, menjadikannya menarik bagi pembangun dan pengguna.

Cabaran dan had kriptografi kunci simetriโ€‹

Walaupun terdapat kelebihan, kriptografi kunci simetri juga mempunyai beberapa cabaran dan had:

  1. Pengedaran dan pengurusan kunci: Dalam SKC, kedua-dua penghantar dan penerima mesej mesti mempunyai akses kepada kunci yang sama, yang mesti dirahasiakan daripada pihak yang tidak dibenarkan. Jika kunci entah bagaimana dipintas atau dikompromikan oleh pihak ketiga maka keselamatan data yang disulitkan juga hilang. Pengedaran dan pengurusan kunci rahsia yang selamat oleh itu merupakan cabaran utama. Walau bagaimanapun, penyelesaian kepada cabaran ini berada di luar SKC itu sendiri.

  2. Kekurangan penafian: Penafian merujuk kepada keupayaan untuk membuktikan bahawa pihak tertentu telah menghantar mesej. Dalam SKC, kerana kunci yang sama digunakan untuk kedua-dua penyulitan dan penyahsulitan, tidak mungkin untuk menentukan pihak mana yang telah mencipta ciphertext tertentu. Sebaliknya, kriptografi kunci asimetri menyediakan penafian melalui penggunaan tandatangan digital.

Untuk menangani cabaran-cabaran ini, kriptografi kunci simetri sering digunakan bersama-sama dengan kriptografi kunci asimetri. Sebagai contoh, seseorang sering menggunakan penyulitan kunci asimetri untuk menghantar kunci rahsia bersama yang agak pendek dengan selamat antara penghantar dan penerima. Ini membolehkan penggunaan seterusnya penyulitan kunci simetri untuk menghantar data dan mesej yang jauh lebih besar dengan cekap.

Pengkomputeran kuantum dan penyulitan kunci simetri: Risiko dan mitigasiโ€‹

Kriptografi kuantum menawarkan jalan yang menjanjikan untuk mitigasi risiko dalam era digital, dengan penerimaan pakai produk selamat kuantum bersedia untuk melindungi maklumat kita terhadap ancaman kemajuan pengkomputeran kuantum yang mendekat.

Dalam apa yang berikut, kita bincangkan risiko yang ditimbulkan oleh komputer kuantum kepada skim penyulitan kunci simetri yang diperkenalkan dalam bahagian sebelumnya dan gariskan beberapa laluan yang berpotensi untuk mengurangkan risiko.

Serangan kriptografi kuantumโ€‹

Terdapat dua kelas ancaman kuantum yang berbeza terhadap algoritma kriptografi tradisional:

  1. Serangan kekerasan kuantum: Ini merujuk kepada situasi di mana penyerang menggunakan komputer kuantum untuk melaksanakan algoritma kuantum khusus untuk menjalankan carian kekerasan melalui ruang kunci sifer simetri. Primitif kuantum yang paling relevan untuk membolehkan jenis serangan ini ialah algoritma Grover.

  2. Serangan kriptanalitik kuantum: Ini merujuk kepada situasi di mana komputer kuantum digunakan untuk melaksanakan serangan kriptanalitik yang bertujuan untuk mendapatkan semula kunci rahsia atau teks biasa dengan cara yang lebih cekap daripada carian kekerasan. Kemungkinan melaksanakan serangan kriptanalitik kuantum yang berjaya bergantung kepada banyak faktor yang berkaitan dengan struktur matematik sifer yang dianalisis serta kelemahan yang berpotensi dalam pelaksanaan tertentu.

Strategi mitigasi risiko untuk serangan kuantumโ€‹

Sebelum kita membincangkan strategi mitigasi risiko untuk serangan kuantum, mari kita perkenalkan konsep tahap keselamatan sifer kriptografi:

Tahap keselamatan adalah ukuran kesukaran memecahkan sifer yang diukur dari segi bilangan operasi komputasi yang diperlukan untuk memecahkan sifer dengan berjaya.

Biasanya, tahap keselamatan dinyatakan dalam bit; iaitu, secara umum, sifer menawarkan keselamatan N-bit jika ia memerlukan O(2N)\mathcal{O}(2^{N}) operasi untuk memecahnya. Pada komputer klasikal, dengan mengandaikan sifer simetri selamat secara kriptografi sebaliknya, tahap keselamatan secara kasar sinonim dengan panjang kunci.

Sebagai contoh, tahap keselamatan AES-128, yang menampilkan kunci 128-bit, umumnya dianggap 128 bit kerana ia memerlukan sekitar 2128^{128} operasi bagi penyerang yang menggunakan komputer klasikal untuk mencuba semua kunci 128-bit yang mungkin dalam ruang kunci.

Serangan kekerasan dan mitigasiโ€‹

Risiko serangan kekerasan kuantum: Serangan kekerasan kuantum mengubah penilaian di atas kerana algoritma Grover membolehkan penyerang dengan komputer kuantum yang sesuai untuk mencari ruang kunci sifer lebih pantas secara kuadratik berbanding mana-mana komputer klasikal.

Sebagai contoh, serangan kekerasan yang sama pada AES-128 dengan algoritma Grover berpotensi dicapai dengan hanya 264^{64} operasi. Oleh itu, tahap keselamatan AES-128 dikurangkan daripada 128 bit kepada 64 bit apabila berhadapan dengan musuh kuantum yang menjalankan carian Grover. Memandangkan kuasa pengkomputeran secara tradisinya telah berkembang secara eksponen dengan masa, pada masa ini tahap keselamatan 64 bit dianggap tidak selamat, yang bermakna setelah komputer kuantum yang cukup berkemampuan direalisasikan, AES-128 terpaksa ditinggalkan.

Jenis pengiraan yang sama berlaku untuk sifer blok atau strim simetri lain di mana tahap keselamatan untuk panjang kunci yang diberikan secara efektif dihalving oleh algoritma Grover.

Mitigasi risiko serangan kekerasan kuantum: Pertimbangan di atas menunjukkan bahawa cara yang jelas untuk menentang serangan kekerasan kuantum adalah dengan sekurang-kurangnya menggandakan panjang kunci minimum yang digunakan untuk penyulitan kunci simetri.

Oleh itu, untuk memastikan keselamatan 128-bit berkaitan serangan kekerasan kuantum, seseorang hanya perlu menggunakan sifer seperti AES-256 atau ChaCha20 yang menggunakan kunci 256-bit. Ini dianggap selamat kerana walaupun dengan komputer kuantum, melakukan 2128^{128} operasi untuk memecahkan sifer adalah tidak boleh dilaksanakan dalam masa terdekat.

Walaupun secara teori mudah, penyelesaian yang dicadangkan ini untuk menggandakan saiz kunci tidak tanpa kos, kerana saiz kunci yang lebih panjang membawa kos komputasi tambahan untuk tugas penyulitan-penyahsulitan rutin, bersama-sama dengan prestasi yang lebih perlahan, keperluan memori yang lebih besar, dan penggunaan tenaga tambahan.

Serangan kriptanalitik dan mitigasiโ€‹

Risiko serangan kriptanalitik kuantum: Risiko terhadap kriptosistem kunci simetri yang ditimbulkan oleh serangan kriptanalitik kuantum pada masa ini sedang diteliti secara aktif oleh kriptografer. Gabungan pengkomputeran klasikal dan kuantum berpotensi meluaskan set alat yang tersedia kepada penyerang untuk menyelidik kelemahan dalam struktur matematik sifer, dan pelbagai jenis baru serangan kriptanalitik kuantum sedang dicadangkan pada masa ini. Ini termasuk kuantisasi teknik klasikal yang diketahui seperti kriptanalisis linear dan pembezaan serta mod serangan baru tanpa rakan klasikal.

Kajian kriptanalitik kuantum terbaru tentang Standard Penyulitan Lanjutan (AES) mendapati bahawa sifer kekal tahan terhadap pelbagai serangan kriptanalitik kuantum yang diketahui dan terus menunjukkan margin keselamatan pasca-kuantum yang mencukupi. Walau bagaimanapun, beberapa kajian mendapati bahawa pelbagai sifer simetri yang dianggap selamat secara klasikal mudah dikompromikan oleh apa yang dikenali sebagai serangan teks biasa terpilih kuantum. Oleh itu, primitif baru untuk penyulitan kunci simetri yang direka bentuk khusus untuk era pasca-kuantum juga telah dicadangkan.

Mitigasi risiko serangan kriptanalitik kuantum: Memandangkan kriptanalisis kuantum sebagai satu disiplin masih dalam peringkat awal, mungkin kriptografi simetri pasca-kuantum akan mengalami evolusi pesat apabila serangan kriptanalitik kuantum baru timbul dan apabila sifer baru yang tahan terhadapnya dicadangkan dan dinilai. Oleh itu, strategi terbaik untuk mengurangkan risiko serangan kriptanalitik kuantum dalam masa terdekat ialah ketangkasan kriptografi (atau crypto-agility). Ketangkasan kriptografi merujuk kepada keupayaan sistem maklumat untuk menerima pakai primitif kriptografi alternatif dengan cepat dan mudah tanpa perubahan yang mengganggu pada infrastruktur sistem.

Ketangkasan kriptografi memerlukan keupayaan untuk menggantikan algoritma lapuk yang digunakan untuk penyulitan, penyahsulitan, tandatangan digital, atau fungsi kriptografi lain dengan usaha dan gangguan yang minimum. Sistem yang tangkas secara kriptografi akan berada dalam kedudukan yang baik untuk menguruskan peralihan kepada kriptografi kunci simetri pasca-kuantum.

Ringkasanโ€‹

Kriptografi kunci simetri menyediakan penyelesaian yang kukuh dan cekap untuk melindungi maklumat digital. Kesederhanaan menggunakan kunci yang sama untuk kedua-dua penyulitan dan penyahsulitan membolehkan prestasi tinggi dan kebolehan skala, menjadikan SKC sesuai untuk pelbagai aplikasi.

Keselamatan SKC bergantung kepada rintangan algoritma terhadap serangan kriptografi serta pengurusan kunci rahsia yang betul. Kriptosistem kunci simetri moden menggabungkan prinsip-prinsip kekeliruan, peresapan, dan kerawakan, bersama-sama dengan saiz kunci yang mencukupi, untuk mencapai keselamatan semantik. Pengurusan kunci rahsia, walaupun penting, tidak dapat dicapai dengan SKC sahaja.

Memahami sifat dan had SKC akan membolehkan pembangun untuk mereka bentuk, melaksanakan, dan menggunakan penyelesaian teknologi maklumat yang selamat menggunakan pendekatan termasuk saiz kunci yang lebih panjang jika diperlukan, dan penggunaan algoritma baru.

Kemajuan pengkomputeran kuantum dan pembelajaran kuantum memperkenalkan dimensi baru kepada kriptografi kunci simetri. Komputer kuantum berpotensi untuk mengurai keselamatan yang disediakan oleh algoritma kunci simetri klasikal, mendorong keperluan untuk pendekatan kriptografi tahan kuantum bagi memastikan privasi dan perlindungan data dalam menghadapi landskap teknologi yang berkembang.

Source: IBM Quantum docs โ€” updated 25 Mac 2026
English version on doQumentation โ€” updated 7 Mei 2026
This translation based on the English version of approx. 27 Mac 2026