Kriptograpiya ng simetriko na susi
Sa araling ito, titingnan natin ang symmetric key cryptography na nagse-secure ng maraming data na naka-imbak at nagta-transmit dahil sa kahusayan nito.
Sa katapusan ng araling ito, natatalakay na natin ang:
- Ano ang symmetric key cryptography
- Mga halimbawa ng Python code na nagde-demonstrate ng paggamit ng symmetric key cryptography
- Pagtingin sa mga aplikasyon ng symmetric key cryptography
- Mga aplikasyon ng symmetric key cryptography
- Seguridad ng symmetric key cryptography
- Mga banta sa mga algorithm na ito mula sa parehong classical at quantum na mga computer
Introduksyon sa symmetric key cryptographyโ
Ang Symmetric key cryptography (SKC) ang pinakaluma at pinaka-intuitive na anyo ng cryptography. Sa SKC, ang kumpidensyal na impormasyon ay sine-secure sa pamamagitan ng symmetric key encryption (SKE), ibig sabihin, sa paggamit ng isang iisang secret key para sa parehong encryption at decryption.
Kasama sa SKC ang:
- Isang encryption function na nagko-convert ng ibinigay na plain text sa ciphertext gamit ang secret key
- Isang decryption function na nagba-baliktad ng operasyon sa pamamagitan ng pagko-convert ng ciphertext pabalik sa plain text gamit ang parehong secret key
Ang plain text ay maaaring maging anumang uri ng hindi naka-encrypt na data tulad ng natural na wika o binary code na ang nilalaman ng impormasyon ay sa prinsipyo ay direktang maa-access, samantalang ang ciphertext ay tumutukoy sa naka-encrypt na data na ang nilalaman ng impormasyon ay nilalayong hindi maa-access bago ang decryption.
Ang algorithm na naglalarawan ng encryption at decryption na mga operasyon gamit ang isang shared secret key ay tinatawag ding symmetric cipher.

Figure 1. Symmetric key encryption ng ibinigay na plain text sa ciphertext at decryption pabalik sa plain text gamit ang parehong key.
Mga katangian ng symmetric key cryptosystemsโ
Ang isang symmetric key cryptosystem ay dapat tiyaking ang mga sumusunod na katangian upang ma-secure ang mga mensahe โ kapwa statically na naka-imbak na data at/o mga komunikasyon sa ibang transmission channel:
- Confidentiality: Tumutukoy sa katangian na ang nilalaman ng impormasyon ng mga naka-encrypt na mensahe ay protektado mula sa hindi awtorisadong pag-access.
- Integrity: Tumutukoy sa katangian na anumang pagbabago ng mga naka-encrypt na mensahe habang naka-imbak o nagta-transmit ay maaaring matukoy.
- Authenticity: Tumutukoy sa katangian na ang tumatanggap ng mensahe ay maaaring mag-verify ng pagkakakilanlan ng nagpadala at matukoy ang pagpapanggap ng hindi awtorisadong partido.
Bukod pa rito, ang mga katangiang ito ay dapat maisagawa sa isang setting kung saan ang mga algorithm o cipher na ginagamit para sa encryption at decryption ay maaaring publiko at kung saan ang pag-access sa nilalaman ng impormasyon ng mga naka-encrypt na mensahe ay kinokontrol lamang sa pamamagitan ng access sa secret key.
Kaya naman ang pag-implement ng isang secure na symmetric key cryptosystem ay may dalawang pangunahing gawain:
- Paggamit ng isang matibay na symmetric key encryption algorithm na lumalaban sa mga cryptographic attack.
- Pagtitiyak ng confidentiality sa pamamahagi at pamamahala ng mga secret key.
Sa araling ito, tatalakayin natin ang mga aspetong nauugnay sa unang gawain, na siyang pangunahing alalahanin ng SKC technology. Ang pangalawang gawain, gayunpaman, ay nangangailangan ng mga solusyon na nasa labas ng SKC mismo at ipapakilala sa ibang pagkakataon.
Ilustrasyon ng symmetric key encryption gamit ang Pythonโ
Nagpapakita tayo ng simpleng halimbawa ng encrypt at decrypt na mga operasyon gamit ang klasikal na Caesar shift cipher at ang modernong Advanced Encryption System (AES), na naging standard para sa symmetric key encryption mula noong 2001. Una, mag-se-setup tayo ng ilang Python library na nagbibigay ng kinakailangang symmetric key encryption ciphers, at pagkatapos ay ide-define ang plain text na nais nating i-encrypt.
# 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}")
Makikita natin kung paano ito i-encrypt at i-decrypt gamit ang dalawang magkaibang symmetric key encryption na pamamaraan:
- Ang klasikong Caesar shift cipher
- Ang modernong Advanced Encryption Standard AES-256 protocol
Caesar shift cipher:โ
Ang Caesar shift encryption ay kinabibilangan ng pagde-define ng
- Isang alphabet ng mga posibleng character na i-e-encode
- Isang shift value na maaaring mula 0 (hindi naka-encrypt) hanggang sa haba ng alphabet. Ito ang itinuturing nating key.
Kilala ito bilang monoalphabetic substitution cipher dahil bawat letra ng plain text ay pinapalitan ng iba sa ciphertext.
Sa halimbawang ito, gagamitin natin ang lowercase na mga letra ng alphabet.
Magsimula tayo sa pag-setup ng mga bagay.
# 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}")
I-encrypt ang plain text upang makuha ang ciphertext para sa Caesar cipher.
caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")
I-decrypt ang ciphertext pabalik sa orihinal na plain text gamit ang parehong key na ginamit sa encryption.
caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")
Advanced encryption standard (AES) cipherโ
Ie-encrypt na natin ngayon ang plain text gamit ang AES, isang popular na symmetric key encryption algorithm.
Magsisimula tayo sa paglikha ng key, sa kasong ito, isang random na 16-letter na string.
# 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}")
Sumusuporta ang AES ng maraming operating mode at kinakailangan nating tukuyin kung alin ang gagamitin.
Pinili natin ang Cipher Block Chaining (CBC) mode na ibinibigay ng modes.CBC class ng cryptography library. Ang CBC mode ng AES ay gumagamit ng randomness para sa karagdagang seguridad. Nangangailangan ito ng pagtukoy ng random na Initialization Vector (IV), na tinatawag ding nonce. Gagamit tayo ng random na string para rito, gaya ng ginawa natin para sa key.
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}")
Maaari na nating i-instantiate ang isang AES cipher para sa nagpapadala ng secret na mensahe. Tandaan na ang initialization vector ay ipinasa sa modes.CBC class upang i-set up ang CBC mode ng operasyon.
Ie-encrypt na natin ang plain text na ipapadala.
# 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}")
Upang i-decrypt ito, i-instantiate natin ang isang AES cipher para sa tumatanggap. Tandaan na ang intended na tumatanggap ay may access sa parehong secret key at initialization vector, ngunit ang huli ay hindi kinakailangang maging secret.
# 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}")
Mga aplikasyon ng symmetric key cryptographyโ
Habang ang mga klasikal na cipher tulad ng Caesar cipher ay matagal nang hindi ginagamit, ang mga modernong symmetric cryptosystem tulad ng AES ay naka-deploy sa malawak na hanay ng mga aplikasyon, kabilang ang:
-
Data encryption at decryption: Malawakang ginagamit ang SKC upang protektahan ang sensitibong data, maging ito ay statically na naka-imbak sa isang device o nagta-transmit sa network. Kabilang sa mga halimbawa ang pagprotekta ng mga user credential, pag-encrypt ng mga email message, at pag-secure ng mga financial transaction, bukod sa iba pa.
-
Secure na komunikasyon: Ang mga karaniwang communication protocol tulad ng SSL/TLS ay gumagamit ng kombinasyon ng symmetric at asymmetric key encryption upang matiyak ang confidentiality at integrity ng data na pinapalitan ng dalawang partido. Ang mga mensaheng ito ay naka-encrypt at dine-decrypt gamit ang symmetric key encryption na gumagamit ng shared key. Ang key na ginagamit sa symmetric key encryption ay secure na pinapalitan gamit ang asymmetric key encryption na gumagamit ng public-private key pair. Ang symmetric key encryption ay mas mabilis at samakatuwid ay magagamit para sa encryption ng malalaking mensahe.
-
Pag-verify ng authenticity: Sa ilang setting, ginagamit ang SKC sa pamamagitan ng mga teknik tulad ng message authentication codes (MACs) at keyed-hash MACs (HMAC) upang ma-verify ang authenticity at integrity ng mga mensahe, na tinitiyak ang tamper-resistant na komunikasyon.
-
File at disk encryption: Ang full-disk encryption software at mga file encryption tool ay gumagamit ng SKC upang protektahan ang sensitibong data na naka-imbak sa mga hard disk o portable storage device.
-
Virtual private networks: Ang VPN na mga teknolohiya, na naglalayong magbigay ng kumpidensyal na mga channel ng komunikasyon na malaya sa eavesdropping, ay maaaring gumamit ng symmetric o asymmetric key encryption upang ikonekta ang mga remote user pati na rin ang mga corporate network.
Ang iba't ibang hanay ng mga aplikasyon kung saan naka-deploy ang SKC ay nangangailangan na ang mga symmetric cryptosystem ay tumugon sa isang tiyak na hanay ng pamantayan.
Mga prinsipyo ng symmetric key encryptionโ
Sa seksyong ito, tatalakayin natin ang ilan sa mga pangunahing prinsipyo na sumasailalim sa seguridad ng symmetric key encryption algorithms.
Paglaban sa brute force attack: Ang pinakapangunahing kinakailangan para sa seguridad ng isang encryption cipher ay ang laki ng key space โ sa madaling salita, ang bilang ng posibleng magkakaibang key na maaaring piliin ng gumagamit ng algorithm โ ay napakalaki.
Paglaban sa cryptanalytic attack: Ang pangalawang pangunahing kinakailangan para sa isang cipher, symmetric man o hindi, ay kayang mag-generate ng mga ciphertext na informationally inscrutable. Para sa layuning ito, ang isang kinakailangan ngunit hindi sapat na kundisyon mula sa perspektiba ng information theory ay ang mga ciphertext ay dapat may mataas na entropy, na ginagawa silang hindi makilala mula sa random na teksto na walang makikitang pattern o correlation. Sa ganitong paraan, walang makukuhang impormasyon ang attacker tungkol sa plain text o secret key sa pamamagitan ng pag-analyze ng ciphertext gamit ang frequency analysis o iba pang mga istatistikal na teknik.
Ang paglaban sa mga pangkalahatang anyo ng cryptanalytic attack na sapat upang matiyak ang semantic security ay pinapormal sa pamamagitan ng konsepto ng indistinguishability. Bagama't may ilang variant ng indistinguishability na may magkakaibang kinakailangan, ang isang symmetric cryptosystem ay itinuturing na semantically secure kung natutugunan nito ang pamantayan ng Indistinguishability under Chosen Plain Text Attack (IND-CPA). Ibig sabihin nito, hindi makikilala ng attacker ang pagkakaiba ng mga encryption ng dalawang magkaibang mensahe kahit payagan siyang magpadala ng maraming plain text na kanyang pinili sa algorithm at makita ang katumbas na mga ciphertext.
Gaya ng isasaalang-alang natin sa ibang pagkakataon, ang IND-CPA ay karaniwang nangangailangan ng paggamit ng randomness upang matiyak na sa bawat pag-encrypt ng ibinigay na plain text gamit ang ibinigay na secret key, ang resultang ciphertext ay hindi mahuhulaan na magkakaiba sa bawat encryption.
Mga failure mode ng mga klasikal na cipher: Bago ang pagdating ng modernong cryptography noong 1970s, karamihan sa mga klasikal na cipher na ginagamit sa praktika ay hindi nakatupad sa isa o pareho sa mga kinakailangan sa itaas. Halimbawa, ang mga maagang substitution cipher tulad ng monoalphabetic na Caesar shift cipher ay may parehong maliit na key space size (tingnan ang Table 1) at mababang entropy na ciphertext, na ginagawa silang hindi secure laban sa iba't ibang mga cryptanalytic attack tulad ng brute force attack, frequency analysis, at known-plain-text (KPT) attack.
Ang mga sumunod na polyalphabetic substitution cipher tulad ng Vigenรจre cipher at ang Enigma machine cipher ay may epektibong malalaking key space size, na ginagawa silang lumalaban sa brute force attack, ngunit sila ay vulnerable sa frequency analysis at KPT attack, ayon sa pagkakabanggit. Katulad ng substitution cipher, ang classic transposition ciphers, na nagre-rearrange ng mga letra sa mensahe sa halip na palitan ang mga ito, ay nakompromiso rin ng iba't ibang attack tulad ng anagramming, statistical analysis, brute force, at KPT attack, bukod sa iba pa.
Sa teorya, ang isang polyalphabetic substitution cipher na kilala bilang one-time pad (OTP) ay kilala bilang cryptographically secure. Ang OTP ay may secret key na dapat (1) binubuo ng mga random na piniling letra o bit, (2) hindi bababa sa haba ng orihinal na plain text, at (3) isang beses lang gamitin. Hindi praktikal ang OTP para sa aktwal na mga aplikasyon dahil kung ang secret key โ na kinakailangang kasing haba ng plain text at isang beses lang magagamit โ ay maaaring secure na i-share, gayundin ang orihinal na plain text. Sa halip, ini-illustrate ng OTP ang kahalagahan ng randomness sa pag-generate ng mga secure na ciphertext.
Ang isang attacker na sumusubok mag-implement ng brute force search sa key space upang makahanap ng key na mag-de-decrypt ng mensahe ay kailangang magsagawa ng bilang ng mga operasyon na proporsyonal sa laki ng key space.
Kaya naman, ang malaking key space size ay nagbibigay ng paglaban sa mga brute force attack sa pamamagitan ng pagpapahirap na hindi na magagawa sa computationally. Ang Table 1 ay naglilista ng mga key space size ng ilang kilalang cipher.
Table 1: Mga key space size ng ilang symmetric cipherโ
| Cipher | Key length | Key space size |
|---|---|---|
| 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 |
| Ang mga modernong symmetric key encryption scheme ay malaking bahagi na nasosolusyunan ang mga limitasyon ng mga klasikal na cipher. Gumagawa sila ng ciphertext na lumalaban sa cryptanalysis at may malalaking key space size habang mas practically efficient kaysa sa isang OTP. |
Block ciphers: Isang klase ng mga modernong cipher โ tulad ng DES at AES โ ay nakakamit ang seguridad sa pamamagitan ng pagsasama ng mga prinsipyo ng confusion at diffusion na orihinal na ipinakilala ni Claude Shannon. Tinatalakay natin ang mga konseptong ito sa setting kung saan ang mga encryption scheme ay gumagana sa binary na representasyon ng mga mensahe:
-
Confusion: Ang confusion ay ang katangian kung saan ang bawat bit sa ciphertext ay nakadepende sa maraming bit ng secret key. Tinitiyak nito na ang maliit na pagbabago sa secret key ay nagbabago ng halos lahat ng bit ng ciphertext, na iniligaw ang relasyon sa pagitan ng ciphertext at ng secret key.
-
Diffusion: Ang diffusion ay ang katangian kung saan ang pag-flip ng isang bit sa plain text ay dapat mag-modify ng humigit-kumulang kalahati ng mga bit sa ciphertext at vice versa. Ang diffusion ay nagtatago ng mga istatistikal na relasyon sa pagitan ng plain text at ciphertext. Ang mga cipher na may sapat na diffusion ay natutugunan ang tinatawag na avalanche criterion ng cryptography.
Ang mga block cipher ay nag-iimplement ng confusion at diffusion gamit ang mga cryptographic structure na kilala bilang substitution-permutation networks (SPNs) na gumagana sa mga discrete block ng data. Ang isang SPN ay tumatanggap ng block ng plain text at ng secret key bilang input at nagsasagawa ng tinukoy na bilang ng rounds ng mga transformation upang makabuo ng ciphertext block. Ang bawat round ay binubuo ng magkapalit na mga mathematical structure na kilala bilang substitution boxes (S-boxes) at permutation boxes (P-boxes) o katumbas na mga operasyon.
Ang mga ito ay nag-iimplement ng mga kumplikadong nonlinear at linear na transformation sa mga input block, na humahantong sa avalanche effects sa ciphertext.
Ang mga SPN ay dinisenyo sa paraang ang pagdaragdag ng bilang ng rounds ay karaniwang nagpapataas ng seguridad ng cipher. Humahantong ito sa konsepto ng security margin. Security margin: Ang security margin ng isang ibinigay na SPN-based cryptographic cipher ay ang pagkakaiba sa pagitan ng bilang ng rounds sa kumpletong implementasyon ng cipher at ng pinakamataas na bilang ng rounds na kilalang maaaring basagin gamit ang pinakamagaling na kilalang real-world attack.
Halimbawa, kasalukuyang ang pinakamagaling na kilalang faster-than-brute-force na mga attack laban sa AES-256 ay maaaring basagin hanggang 9 rounds sa kabuuang 14 rounds sa buong cipher kapag ginamit sa standard mode na kilala bilang Electronic Codebook (ECB) mode. Kaya naman, kasalukuyan ang security margin ng AES-256 ay 5 rounds.
Stream ciphers: Bilang alternatibo sa mga block cipher, ang mga modernong cryptologist ay nagdisenyo rin ng practically secure na stream ciphers tulad ng Chacha20. Ang mga cipher na ito ay gumagamit ng randomness bilang pangunahing bahagi ng kanilang disenyo at gumagana sa mga pseudorandom na keystreams ng mga bit sa halip na mga discrete block ng data.
Alinsunod dito, pinagsasama ng mga stream cipher ang isang secret key at isang initialization vector (IV) upang mag-seed ng isang pseudorandom random number generator (PRNG) upang makabuo ng keystream ng mga random na bit na pagkatapos ay pinagsasama sa ibinigay na plain text upang makabuo ng ciphertext. Sa ganitong kahulugan, ang mga stream cipher ay katulad ng isang one-time pad (OTP) ngunit may mas maikling secret key length at reusable key, na ginagawa silang mas praktikal. Gayunpaman, sa parehong dahilan, hindi sila nagga-guarantee ng perpektong lihim, hindi tulad ng OTP.
Semantic security: Tinatapos natin ang subsection na ito sa pamamagitan ng pagbabalik sa konsepto ng semantic security o IND-CPA level security na ipinakilala sa itaas. Ang mga pangunahing operasyon na ini-implement ng block ciphers tulad ng S-box at P-box ay deterministic. Ibig sabihin nito na sa standard operating mode tulad ng ECB, ang isang ibinigay na plain-text key pair ay palaging nagbubunga ng parehong ciphertext, isang sitwasyon na vulnerable sa chosen-plain-text attack.
Upang makamit ang IND-CPA level security, ang mga block cipher ay kailangang gumana sa isang mode na gumagamit ng randomness na ipinakilala sa pamamagitan ng pseudorandom na initialization vector (IV) na may karagdagang kinakailangan na walang dalawang encryption operation ang gumagamit ng parehong key-IV pair. Ang AES ay sumusuporta ng ilang mode ng operasyon, tulad ng cipher block chaining (CBC), na IND-CPA secure. Ang katulad na kinakailangan ay nag-aapply din sa mga stream cipher kung saan ang parehong key-IV pair ay hindi dapat gamitin upang i-seed ang PRNG nang higit sa isang beses kung nais ang IND-CPA.
Mga popular na symmetric key algorithmโ
Matapos ipakilala ang ilang pangunahing prinsipyo ng SKC, naglilista tayo ngayon ng ilang popular na symmetric key algorithm upang mag-illustrate ng iba't ibang diskarte na ginagamit sa mga modernong cryptosystem. Ang parehong modernong block cipher at stream cipher ay ginagamit sa iba't ibang konteksto gaya ng inilarawan sa ibaba.
-
Advanced Encryption Standard: Ang AES, na ipinakilala na sa itaas, ay kasalukuyang de facto standard para sa SKC dahil sa seguridad, kahusayan, at katangian ng performance nito. Ang AES ay may fixed na key size na 128, 192, at 256 bits at gumagamit ng multiround na substitution-permutation network (SPN). Ang AES ay kilalang lumalaban sa malawak na hanay ng mga cryptanalytic attack. Ang AES ay inihayag bilang Federal Information Processing Standard (FIPS) para sa symmetric key encryption sa United States noong 2001.`
-
Data Encryption Standard (DES) at Triple Data Encryption Standard (3DES): Ang DES ay isang block cipher na orihinal na inimbento ni Horst Feistel at mga kasamahan sa IBMยฎ noong 1970s at gumamit ng SPN na may medyo maikling 56-bit key. Ang DES ay inangkop bilang isang FIPS para sa symmetric key encryption sa United States hanggang sa huli ng 1990s nang ipakita na ito ay maaaring basagin gamit ang brute force attack na may specialized hardware dahil sa maliit na key space size nito. Pagkatapos, ang 3DES ay ipinakilala bilang kapalit at nag-aapply ng DES algorithm nang tatlong beses gamit ang magkakaibang key, na nagpapataas ng key length sa 168 bits. Gayunpaman, ang 3DES ay malaking bahagi na napalitan ng AES.
-
Blowfish at Twofish: Ang Blowfish at ang kahalili nito, ang Twofish, ay mga block cipher na iminungkahi ni cryptographer Bruce Schneier noong 1990s. Ang Blowfish at Twofish ay nagpapahintulot ng variable na key length na hanggang 448 bits at 256 bits ayon sa pagkakabanggit, na nag-aalok ng kaunting flexibility sa tradeoff sa pagitan ng seguridad at performance. Hindi tulad ng AES, mayroon din silang key-dependent na S-boxes. Ang Twofish ay isa sa mga finalist sa NIST competition upang piliin ang Advanced Encryption Standard ngunit sa huli ay hindi napili. Ang parehong algorithm ay kasalukuyang itinuturing na secure.
-
Rivest Ciphers (RC2, RC4, RC5, at RC6): Ang Rivest Cipher (RC) na pamilya ng symmetric key algorithm ay dinisenyo ni Ron Rivest simula noong 1980s. Ang RC2 ay isang maagang 64-bit block cipher samantalang ang RC4 ay stream cipher na malawakang ginagamit sa mga security protocol na nauugnay sa web-traffic dahil sa pagiging simple at bilis nito. Wala sa dalawa ang kasalukuyang itinuturing na secure. Ang RC5 at RC6 ay SPN based na mga block cipher na dinisenyo na may nako-customize na block size, key size, at bilang ng rounds. Katulad ng Twofish sa itaas, ang RC6 ay finalist sa NIST AES competition at itinuturing na secure.
-
Salsa20 at ChaCha20: Ang Salsa20 at ChaCha20 ay tumutukoy sa magkaugnay na pamilya ng mga stream cipher na dinisenyo ni cryptographer Daniel Bernstein noong 2000s. Ang Salsa20 ay bahagi ng eSTREAM European Union cryptographic validation project na profile-1 portfolio. Ang ChaCha20, isang modification ng Salsa20, ay dinisenyo upang mapataas ang diffusion na katangian at performance. Kasalukuyan, ang ChaCha20 ay itinuturing na secure at nag-aalok ng mas magandang performance kapag walang dedicated na AES hardware acceleration. Kaya naman, ang ChaCha20 ay ginagamit sa ilang setting tulad ng network protocol tulad ng QUIC at mga mobile device na may ARM-based CPU.
Mga bentahe ng symmetric key cryptographyโ
Matapos ibalangkas ang mga katangian ng symmetric key cryptosystem at ilan sa mga prinsipyong sumasailalim sa kanilang pagbuo, naglilista tayo ngayon ng ilan sa mga pangunahing bentahe ng SKC kumpara sa asymmetric key cryptography. Ang huli ay tatalakayin sa mga susunod na aralin.
-
Bilis at kahusayan: Ang mga symmetric key algorithm ay mas angkop para sa pag-encrypt ng malalaking dami ng data o para sa paggamit sa real-time na mga sitwasyon ng komunikasyon dahil sa pangkalahatan ay mas mabilis at mas kaunti ang kinakailangang resource kaysa sa kanilang mga asymmetric na katapat. Ang mga SKC algorithm tulad ng AES ay linear na nag-scale sa laki ng plain text at hindi kinasasangkutan ng algebraically intensive na mga mathematical operation. Tingnan ang Tomoiaga et al. para sa detalyadong pagsusuri ng performance na katangian ng AES.
-
Scalability: Dahil sa medyo mababang computational overhead, ang mga symmetric key algorithm ay mahusay na nag-scale sa bilang ng mga gumagamit at dami ng data na ine-encrypt.
-
Pagiging simple: Ang mga symmetric encryption protocol ay kadalasang mas madaling i-implement at maintindihan kumpara sa asymmetric key approach, na ginagawa silang kaakit-akit para sa mga developer at gumagamit.
Mga hamon at limitasyon ng symmetric key cryptographyโ
Sa kabila ng mga bentahe, ang symmetric key cryptography ay mayroon ding ilang hamon at limitasyon:
-
Pamamahagi at pamamahala ng key: Sa SKC, ang parehong nagpapadala at tumatanggap ng mensahe ay dapat may access sa parehong key, na dapat panatilihing kumpidensyal mula sa mga hindi awtorisadong partido. Kung ang key ay kahit paano ay na-intercept o nakompromiso ng ikatlong partido, mawawala rin ang seguridad ng naka-encrypt na data. Ang secure na pamamahagi at pamamahala ng secret key ay samakatuwid isang malaking hamon. Gayunpaman, ang solusyon sa hamong ito ay nasa labas ng SKC mismo.
-
Kawalan ng non-repudiation: Ang Non-repudiation ay tumutukoy sa kakayahang patunayan na isang partikular na partido ang nagpadala ng mensahe. Sa SKC, dahil parehong key ang ginagamit para sa encryption at decryption, hindi posibleng matukoy kung aling partido ang lumikha ng isang partikular na ciphertext. Sa kaibahan, ang asymmetric key cryptography ay nagbibigay ng non-repudiation sa pamamagitan ng paggamit ng digital signature.
Upang matugunan ang mga hamong ito, ang symmetric key cryptography ay kadalasang ginagamit kasama ng asymmetric key cryptography. Halimbawa, madalas gamitin ang asymmetric key encryption upang secure na maipadala ang medyo maikling shared secret key sa pagitan ng nagpapadala at tumatanggap. Ito ay nagbibigay-daan sa kasunod na paggamit ng symmetric key encryption upang maipadala ang mas malalaking data at mensahe nang mahusay.
Quantum computing at symmetric key encryption: Mga panganib at pagpapagaanโ
Ang quantum cryptography ay nag-aalok ng isang promising na landas para sa pagpapagaan ng panganib sa digital age, kung saan ang pag-angkop ng quantum-safe na mga produkto ay handang mag-secure ng ating impormasyon laban sa lumalaking banta ng mga pagsulong sa quantum computing.
Sa sumusunod, tatalakayin natin ang mga panganib na dulot ng mga quantum computer sa symmetric key encryption scheme na ipinakilala sa naunang seksyon at ibabalangkas ang ilang posibleng landas sa pagpapagaan ng mga panganib.
Mga quantum cryptographic attackโ
May dalawang magkaibang klase ng quantum na banta sa mga tradisyonal na cryptographic algorithm:
-
Quantum brute force attacks: Tumutukoy ito sa mga sitwasyon kung saan ginagamit ng attacker ang isang quantum computer upang mag-execute ng specialized na quantum algorithm upang magsagawa ng brute force search sa key space ng isang symmetric cipher. Ang pinaka-relevanteng quantum primitive para sa pagpapagana ng ganitong uri ng attack ay ang Grover's algorithm.
-
Quantum cryptanalytic attacks: Tumutukoy ito sa mga sitwasyon kung saan ang mga quantum computer ay naka-deploy upang mag-execute ng mga cryptanalytic attack na naglalayong mabawi ang secret key o plain text sa mas mahusay na paraan kaysa sa brute force search. Ang posibilidad ng pag-execute ng matagumpay na quantum cryptanalytic attack ay nakadepende sa maraming salik na may kinalaman sa mathematical structure ng cipher na ina-analyze pati na rin ang mga potensyal na kahinaan sa partikular na implementasyon.
Mga estratehiya sa pagpapagaan ng panganib para sa quantum attackโ
Bago natin talakayin ang mga estratehiya sa pagpapagaan ng panganib para sa quantum attack, ipakilala natin ang konsepto ng security level ng isang cryptographic cipher:
Security level ay isang sukatan ng kahirapan ng pagbasag ng isang cipher na sinusukat sa bilang ng mga computational operation na kakailanganin ng isang matagumpay na pagbasag ng cipher.
Karaniwang ipinapahayag ang security level sa bits; ibig sabihin, sa pangkalahatan, ang isang cipher ay nag-aalok ng N-bit security kung nangangailangan ito ng na mga operasyon upang basagin ito. Sa mga classical computer, kung ipapalagay na ang isang symmetric cipher ay kung hindi man ay cryptographically secure, ang security level ay halos kasingkahulugan ng key length.
Halimbawa, ang security level ng AES-128, na may 128-bit key, ay karaniwang itinuturing na 128 bits dahil kakailanganin nito na humigit-kumulang 2 na mga operasyon para sa isang attacker na gumagamit ng classical computer upang subukan ang lahat ng posibleng 128-bit key sa key space.
Brute force attack at pagpapagaanโ
Panganib ng quantum brute force attack: Ang isang quantum brute force attack ay nagbabago ng assessment sa itaas dahil ang Grover's algorithm ay nagbibigay-daan sa isang attacker na may angkop na quantum computer na mag-search sa key space ng isang cipher na quadratically na mas mabilis kaysa sa anumang classical computer.
Halimbawa, ang parehong brute force attack sa AES-128 gamit ang Grover's algorithm ay maaaring makamit sa 2 na mga operasyon lamang. Kaya naman ang security level ng AES-128 ay bumababa mula 128 bits sa 64 bits kapag nahaharap sa isang quantum adversary na nagpapatakbo ng Grover search. Dahil ang computational power ay tradisyonal na lumalaki nang exponentially sa paglipas ng panahon, kasalukuyang ang security level na 64 bits ay itinuturing na insecure, na nangangahulugang kapag naisagawa na ang mga sapat na kakayahang quantum computer, kailangan nang iwan ang AES-128.
Ang parehong uri ng kalkulasyon ay nag-aapply sa iba pang symmetric block o stream cipher kung saan ang security level para sa ibinigay na key length ay epektibong hati sa kalahati ng Grover's algorithm.
Pagpapagaan ng panganib ng quantum brute force attack: Ang mga konsiderasyong ito sa itaas ay nagpapahiwatig na ang isang halatang paraan upang labanan ang quantum brute force attack ay ang hindi bababa sa pagdoble ng minimum na key length na ginagamit para sa symmetric key encryption.
Kaya naman, upang matiyak ang 128-bit security laban sa quantum brute force attack, gagamit lang ng mga cipher tulad ng AES-256 o ChaCha20 na gumagamit ng 256-bit key. Ito ay itinuturing na secure dahil kahit sa mga quantum computer, ang pagsasagawa ng 2 na mga operasyon upang basagin ang mga cipher ay hindi magagawa sa nakikitang hinaharap.
Bagama't theoretically na simple, ang iminungkahing solusyon na ito ng pagdoble ng key size ay hindi walang gastos, dahil ang mas mahabang key size ay nagpapahiwatig ng karagdagang computational cost para sa routine na encryption-decryption task, kasama ang mas mabagal na performance, mas maraming kinakailangang memory, at karagdagang paggamit ng enerhiya.
Mga cryptanalytic attack at pagpapagaanโ
Panganib ng quantum cryptanalytic attacks: Ang panganib sa mga symmetric key cryptosystem na dulot ng quantum cryptanalytic attack ay kasalukuyang aktibong pinag-aaralan ng mga cryptographer. Ang kombinasyon ng classical at quantum computing ay potensyal na nagpapalawak ng hanay ng mga tool na magagamit ng mga attacker upang suriin ang mga kahinaan sa mathematical structure ng mga cipher, at malawak na hanay ng bagong quantum cryptanalytic attacks ang kasalukuyang iminumungkahi. Kabilang dito ang mga quantizations ng mga kilalang klasikal na teknik tulad ng linear at differential cryptanalysis pati na rin ang mga bagong attack mode na walang classical na katapat.
Ang isang kamakailang quantum cryptanalytic study ng Advanced Encryption Standard (AES) ay natuklasan na ang cipher ay nanatiling lumalaban sa iba't ibang kilalang quantum cryptanalytic attacks at patuloy na nagpapakita ng sapat na post-quantum security margin. Gayunpaman, natuklasan ng ilang pag-aaral na ang iba't ibang symmetric cipher na itinuturing na classically secure ay madaling nakompromiso ng tinatawag na quantum chosen plain text attack. Kaya naman, mga bagong primitive para sa symmetric key encryption na partikular na dinisenyo para sa post-quantum era ay iminungkahi na rin.
Pagpapagaan ng panganib ng quantum cryptanalytic attacks: Dahil ang quantum cryptanalysis bilang disiplina ay nasa simula pa lamang, maaaring ang post-quantum symmetric cryptography ay dadaan sa mabilis na ebolusyon habang lumilitaw ang mga bagong quantum cryptanalytic attack at habang iminumungkahi at sinusuri ang mga bagong cipher na lumalaban sa mga ito. Kaya naman, ang pinakamahusay na estratehiya upang mapagaan ang panganib ng quantum cryptanalytic attack sa nakikitang hinaharap ay ang cryptographic agility (o crypto-agility). Ang crypto-agility ay tumutukoy sa kakayahan ng isang information system na mabilis at madaling mag-angkop ng mga alternatibong cryptographic primitive nang walang nakakaabala na pagbabago sa imprastraktura ng sistema.
Ang crypto-agility ay nangangailangan ng kakayahang palitan ang mga lipas na algorithm na ginagamit para sa encryption, decryption, digital signature, o iba pang mga cryptographic function nang may kaunting effort at disruption. Ang mga crypto-agile system ay magiging mahusay na nakaposisyon upang pamahalaan ang transition sa post-quantum symmetric key cryptography.
Buodโ
Ang symmetric key cryptography ay nagbibigay ng matibay at mahusay na mga solusyon para sa pag-secure ng digital na impormasyon. Ang pagiging simple ng paggamit ng parehong key para sa parehong encryption at decryption ay nagbibigay-daan sa mataas na performance at scalability, na ginagawang angkop ang SKC para sa malawak na hanay ng mga aplikasyon.
Ang seguridad ng SKC ay umaasa sa algorithmic na paglaban sa mga cryptographic attack pati na rin sa wastong pamamahala ng secret key. Ang mga modernong symmetric key cryptosystem ay pinagsasama ang mga prinsipyo ng confusion, diffusion, at randomness, kasama ang sapat na key size, upang makamit ang semantic security. Ang pamamahala ng secret key, bagama't mahalaga, ay hindi makakamit gamit ang SKC lamang.
Ang pag-unawa sa mga katangian at limitasyon ng SKC ay magbibigay-daan sa mga developer na magdisenyo, mag-implement, at mag-deploy ng mga secure na information technology solution gamit ang mga diskarte kabilang ang mas mahabang key size kung kinakailangan, at ang paggamit ng mga bagong algorithm.
Ang pagsulong ng quantum computing at quantum learning ay nagpapakilala ng bagong dimensyon sa symmetric key cryptography. Ang mga quantum computer ay may potensyal na sirain ang seguridad na ibinibigay ng mga klasikal na symmetric key algorithm, na nag-uudyok sa pangangailangan para sa quantum-resistant na mga cryptographic approach upang matiyak ang privacy at proteksyon ng data sa harap ng nagbabagong technological landscape.