Suatu penyerangan pasif atas
cryptosystem adalah semua metode untuk mengungkapkan informasi tentang
plaintext dan ciphertextnya dengan tanpa mengetahui kunci. Secara matematis :
Diberikan fungsi F, G, dan H yang
terdiri dari n variabel.
Diberikan sistem enkripsi E.
Diberikan suatu distribusi plaintext dan kunci.
Suatu penyerangan atas E dengan
menggunakan G dengan mengasumsikan F membagi H dengan probabilitas p adalah
suatu algoritma A dengan sepasang input f,g dan satu buah output h sedemikian
hingga terdapat probabilitas p atas h = H(P1, …, Pn),
jika kita memiliki f = F(P1, …, Pn) dan g = G(EK(P1),
…, EK(Pn)). Perlu diperhatikan bahwa probabilitas ini tergantung
pada distribusi vektor-vektor (K,P1,…,Pn)
.
Penyerangan akan merupakan suatu
trivial bila terdapat probabilitas paling sedikir p untuk h = H(P1,
…, Pn) jika f = F (P1,…,Pn) dan g = G (C1,…,Cn).
Di sini C1,…,Cn terletak pada ciphertext yang mungkin,
dan tidak memiliki hubungan tertentu dengan P1,…,Pn.
Dengan kata lain, suatu serangan akan merupakan trivial bila ia tidak
benar-benar menggunakan enkripsi EK(P1),…,EK(Pn).
Dengan merumuskan penyerangan secara
matematis, kita dapat secara tepat memformulasikan dan bahkan membuktikan
pernyataan bahwa suatu cryptosystem itu kuat. Kita katakan, sebagai contoh,
bahwa suatu cryptosystem adalah aman terhadap seluruh penyerangan pasif jika
sembarang penyerangan nontrivial terhadapnya tidak praktis. Jika kita dapat
membuktikan pernyataan ini maka kita akan memiliki keyakinan bahwa cryptosystem
kita akan bertahan terhadap seluruh teknik cryptanalytic pasif. Jika kita dapat
mereduksi pernyataan ini hingga pada beberapa masalah yang tidak terpecahkan
maka kita masih tetap memiliki keyakinan bahwa cryptosystem kita tidak mudah
dibuka.
Ciphertext-only attack
Dengan menggunakan notasi di atas,
suatu ciphertext-only attack adalah suatu penyerangan dengan F adalah
konstanta. Diberikan hanya beberapa informasi G(EK(P1),..EK(Pn))
tentang n ciphertext, penyerangan harus memiliki kesempatan menghasilkan
beberapa informasi H(P1,…,Pn) tentang plaintext.
Penyerangan akan merupakan suatu trivial bila ia hanya menghasilkan H(P1,…,Pn)
ketika diberikan G(C1,…,Cn) untuk C1,…,Cn
acak.
Sebagai contoh, misalkan G ( C ) = C
dan misalkan H(P) adalah bit pertama P. Kita dapat secara mudah menulis suatu
penyerangan, pendugaan, yang menduga bahwa H(P) adalah 1. Penyerangan ini adalah
trivial karena tidak menggunakan ciphertext, probabilitas keberhasilannya
adalah 50 %. Di lain pihak, terdapat penyerangan atas RSA yang memproduksi satu
bit informasi tentang P, dengan probabilitas keberhasilan 100 %, menggunakan C.
Jika diberikan suatu C acak maka tingkat kesuksesan turun menjadi 50%. Inilah
yang disebut penyerangan nontrivial.
Known-plaintext attack
Penyerangan known-plaintext klasik
memiliki F(P1,P2) = P1, G(C1,C2) =
(C1,C2), dan H(P1,P2) tergantung
hanya pada P2. Dengan kata lain, bila diberikan dua ciphertext C1
dan C2 dan satu dekripsi P1, penyerangan known-plaintext
seharusnya menghasilkan informasi tentang dekripsi P2.
Brute-force attack
Umpamakan penyerangan known-plaintext
berikut. Kita diberikan sejumlah plaintext P1,…,Pn-1 dan
ciphertext C1,…,Cn-1. Kita juga diberikan sebuah
ciphertext Cn. Kita jalankan seluruh kunci K. Bila kita temukan K sedemikian
sehingga EK(P1) = Ci untuk setiap IK(Cn).
Jika n cukup besar sehingga hanya
satu kunci yang bekerja, penyerangan ini akan sukses untuk seluruh input yang
valid pada setiap waktu, sementara ia akan menghasilkan hasil yang tepat hanya
sekali untuk input acak. Penyerangan ini adalah nontrivial, masalahnya ia
sangat lambat bila terdapat banyak kemungkinan kunci.