Stream Cipher vs Block Cipher | State Cipher vs Block Cipher
Sa cryptography, Stream ciphers at Block ciphers ay dalawang encryption/decryption algorithm na kabilang sa pamilya ng simetriko key cipher. Karaniwan ang isang cipher ay kumukuha ng isang plain-text bilang input at gumagawa ng isang ciphertext bilang output. Ang mga block cipher ay nag-e-encrypt ng fixed-length na block ng mga bit gamit ang isang hindi nagbabagong pagbabago. Ang mga stream cipher ay nag-e-encrypt ng mga stream ng mga bit na may iba't ibang haba at gumagamit ng iba't ibang pagbabago sa bawat bit.
Ano ang Stream Cipher?
Ang mga stream cipher ay nabibilang sa pamilya ng mga simetriko na key cipher. Pinagsasama ng mga stream cipher ang mga plain-text bit na may pseudorandom cipher bits stream gamit ang XOR (eksklusibo-o) na operasyon. Ang mga stream cipher ay nag-e-encrypt ng mga plain-text na digit nang paisa-isa na may iba't ibang pagbabago para sa magkakasunod na mga digit. Dahil ang pag-encrypt ng bawat digit ay nakasalalay sa kasalukuyang estado ng cipher engine, ang mga stream cipher ay kilala rin bilang mga state cipher. Karaniwan, ang mga solong bit/bit ay ginagamit bilang mga solong digit. Upang maiwasan ang mga alalahanin sa seguridad, dapat itong tiyakin na ang parehong panimulang estado ay hindi ginagamit nang higit sa isang beses. Ang pinakamalawak na ginagamit na stream cipher ay RC4.
Ano ang Block Cipher?
Ang block cipher ay isa pang simetriko na key cipher. Ang mga block cipher ay gumagana sa mga bloke (mga grupo ng mga bit) na may nakapirming haba. Gumagamit ang mga block cipher ng nakapirming (hindi nagbabago) na pagbabago para sa lahat ng digit sa block. Halimbawa, kapag ang isang x-bit block plain-text (kasama ang isang secret key) ay ibinigay bilang input sa block cipher engine, ito ay gumagawa ng kaukulang x-bit block ng ciphertext. Ang aktwal na pagbabago ay nakasalalay sa lihim na susi. Katulad nito, binabawi ng decryption algorithm ang orihinal na x-bit block ng plaintext gamit ang x-bit block ng ciphertext at ang secret key sa itaas bilang input. Kung sakaling ang input na mensahe ay masyadong mahaba kumpara sa laki ng block, ito ay hahati-hatiin sa mga bloke at ang mga bloke na ito ay (indibidwal) na mai-encrypt gamit ang parehong key. Gayunpaman, dahil ginagamit ang parehong key, ang bawat paulit-ulit na sequence sa plain-text ay nagiging parehong paulit-ulit na sequence sa cipher-text, at maaari itong magdulot ng mga alalahanin sa seguridad. Ang mga sikat na block cipher ay ang DES (Data Encryption Standard) at AES (Advanced Encryption Standard).
Ano ang pagkakaiba ng Stream Cipher at Block Cipher?
Bagama't parehong kabilang ang mga stream cipher at block cipher sa pamilya ng mga simetriko na encryption cipher, may ilang pangunahing pagkakaiba. Ang mga block cipher ay nag-e-encrypt ng mga nakapirming haba na mga bloke ng mga bit, habang ang mga stream cipher ay pinagsama ang mga plain-text na bit na may pseudorandom cipher bits stream gamit ang XOR operation. Kahit na ang mga block cipher ay gumagamit ng parehong pagbabago, ang mga stream cipher ay gumagamit ng iba't ibang mga pagbabago batay sa estado ng engine. Ang mga stream cipher ay karaniwang gumagana nang mas mabilis kaysa sa mga block cipher. Sa mga tuntunin ng pagiging kumplikado ng hardware, ang mga stream cipher ay medyo hindi gaanong kumplikado. Ang mga stream cipher ay ang karaniwang kagustuhan kaysa sa mga block cipher kapag ang plain-text ay available sa iba't ibang dami (halimbawa, isang secure na koneksyon sa wifi), dahil ang mga block cipher ay hindi maaaring gumana nang direkta sa mga bloke na mas maikli kaysa sa laki ng block. Ngunit kung minsan, ang pagkakaiba sa pagitan ng mga stream cipher at block cipher ay hindi masyadong malinaw. Ang dahilan ay, kapag gumagamit ng ilang partikular na mode ng pagpapatakbo, maaaring gamitin ang block cipher upang kumilos bilang stream cipher sa pamamagitan ng pagpayag dito na i-encrypt ang pinakamaliit na unit ng data na available.