Rabu, 19 Desember 2012

Kriptografi Simetri


Kriptografi Simetris Sederhana


          Enkripsi Affine
Enkripsi yang digunakan Julius Caesar (Caesar cipher) menggunakan transformasi yang sederhana yaitu shift transformation. Pembahasan analisa statistik (lihat 2.3.2) menunjukkan bahwa shift transformation sangat rentan terhadap analisa frekuensi.  Untuk mencoba mempersulit analisa frekuensi, enkripsi affine menggunakan affine transformation, dengan rumus:

C ≡aP +b     (mod n)        untuk enkripsi,                  (4.1)
dan
P ≡a−1C−a−1b      (mod n)       untuk dekripsi.               (4.2)
Jadi kunci untuk enkripsi affine terdiri dari dua parameter: a dan b.  Agar a mempunyai inverse a−1, a harus mematuhi gcd(a, n) = 1 (lihat teorema 11).
     
Sebagai contoh dari enkripsi affine, mari kita ganti shift transformation yang digunakan Julius Caesar dengan affine transformation menggunakan pa-rameter a = 7, b = 12. Rumus untuk enkripsi menjadi:

C ≡7P +12     (mod 26).                               (4.3)
Nilai parameter a = 7 dapat digunakan karena gcd(7, 26) = 1, jadi a mempu-
nyai inverse a−1  dengan nilai 7−1  ≡ 15 (mod 26).  Oleh karena itu, rumus
dekripsi menjadi:

P ≡15C−15·12≡15C+2          (mod 26).                   (4.4)




Dengan rumus 4.3 sebagai rumus enkripsi, huruf "a" yang mempunyai kode
0 mempunyai kode acak 7 · 0 + 12 ≡ 12        (mod 26) yang merupakan kode
untuk huruf "m"; huruf "b" yang mempunyai kode 1 mempunyai kode acak
7·1+12 ≡ 19    (mod 26) yang merupakan kode untuk huruf "t"; dan seterusnya.
Tabel 4.1 menunjukkan tabel lengkap untuk enkripsi affine dengan parameter
a=7,b=      12 dan n = 26.

Huruf Asli     Kode Asli     Kode Acak    Huruf Acak
a                 0                 12                  m
b                 1                 19                  t
c                 2                  0                   a
d                 3                  7                   h
e                 4                 14                  o
f                  5                 21                  v
g                 6                  2                   c
h                 7                  9                   j
i                  8                 16                  q
j                  9                 23                  x
k                10                 4                   e
l                 11                11                  l
m                12                18                  s
n                13                25                  z
o                14                 6                   g
p                15                13                  n
q                16                20                  u
r                 17                 1                   b
s                18                 8                   i
t                 19                15                  p
u                20                22                  w
v                21                 3                   d
w                22                10                  k
x                23                17                  r
y                24                24                  y
z                25                 5                   f

Tabel 1.1: Tabel untuk contoh enkripsi affine

Tabel untuk enkripsi affine transformation menunjukkan bahwa sepasang huruf asli yang berurutan, sebagai contoh "c" dan "d", huruf acaknya ("a" dan "h") berjarak 7 (mod 26).  Ini menunjukkan mengapa gcd(a, n) = 1 diper-
lukan untuk enkripsi affine.  Jika gcd(a, n) = 1, seperti halnya dengan a = 7
dan n = 26, menambahkan a (mod n) secara berulang akan mengembalikan



kita ke bilangan semula (sebut saja x) setelah n kali dan sedikitnya n kali penambahan:
x+an≡x    (mod n) dan x + an ≡ x    (mod n) untuk 0 < n < n.
Akibatnya semua bilangan bulat 0 ≤ y < n akan "dikunjungi" setelah menam-
bahkan a secara berulang sebanyak n kali.  Jadi banyaknya kode acak yang 
digunakan sama dengan banyaknya kode asli, oleh sebab itu setiap kode asli
mempunyai kode acak sendiri. Jadi setiap kode acak dapat didekripsi dengan 
unik.
Akan tetapi, jika d = gcd(a, n) = 1, maka:
x+a(n/d)≡x   (mod n) dan x + an ≡ x    (mod n) untuk 0 < n < n/d,
jadi hanya ada n/d bilangan yang dikunjungi, tidak semua bilangan y dengan 0≤y kode acak yang digunakan merupakan kode acak untuk lebih dari satu kode
asli, tepatnya sebanyak d kode asli mempunyai kode acak yang sama. Jadi kode acak tidak dapat didekripsi dengan unik (penjelasannya secara matematis, ini disebabkan a tidak mempunyai inverse). Sebagai contoh, jika a = 8, b = 12 dan n=26, maka setiap kode acak mempunyai d=gcd(8,26)=2 kode asli, kode
acak 12 ("m") mempunyai dua kode asli: 0 ("a") dan 13 ("n"). Jadi huruf "m"
sebagai huruf acak tidak dapat didekripsi dengan unik. Untuk a = 8, b = 12
dan n = 26, hanya bilangan genap yang lebih kecil dari 26 digunakan sebagai
kode acak. Bilangan ganjil tidak dikunjungi, jadi tidak digunakan sebagai kode 
acak. Akibatnya hanya ada 13 kode acak yang digunakan.
Kembali ke enkripsi affine transformation dengan parameter a = 7, b = 12 dan n = 26.  Mari kita coba lakukan analisa frekuensi terhadap naskah acak yang kita enkripsi dengan affine transformation dan kita bandingkan dengan analisa sebelumnya terhadap shift transformation (lihat 2.3.2).
Naskah Asli     Jangan rahasiakan pesan ini!
Naskah Acak    Xmzcmz bmjmiqmemz noimz qzq!

Tabel 4.2: Enkripsi dengan affine transformation
Dengan shift transformation, untuk setiap percobaan kita mencari satu parameter kunci menggunakan satu persamaan, jadi untuk setiap percobaan kita pasangkan satu kode asli dengan satu kode acak yang sesuai berdasarkan statistik dari pengamatan empiris.  Strategi pencarian adalah menggunakan
pasangan dimana karakter aslinya mempunyai statistik penggunaan terbesar.
Karena affine transformation menggunakan dua parameter, setiap perco-baan kita harus mencari kedua parameter sedikitnya menggunakan dua persa-maan dengan dua pasangan. Strategi pencarian adalah dengan mencoba dua



pasangan dimana dua karakter aslinya merupakan dua karakter dengan statistik penggunaan terbesar.
Untuk contoh diatas, dengan perumpamaan urutan tiga besar untuk penggunaan huruf dalam bahasa Indonesia adalah "A", "N" dan kemudian "I", kita coba dahulu pasangkan "A" dengan "M" dan "N" dengan "Z" untuk mendapatkan dua persamaan:
12 ≡ a · 0 + b   (mod 26)
dan
25 ≡ a · 13 + b   (mod 26).
Dengan mengurangkan persamaan pertama dari persamaan kedua, kita hilangkan b mendapatkan:
13 ≡ a · 13   (mod 26).
Akan tetapi karena 13 tidak mempunyai inverse (karena 13 membagi 26), kita harus membagi persamaan dengan 13 menjadi:
1≡a·1      (mod 2),
yang berarti a adalah bilangan ganjil.  Kita dapat mencoba setiap bilangan ganjil 0 < a < 26 untuk mencari hasil yang cocok, akan tetapi mungkin kita tidak sabar untuk melakukan hal itu.
Sebagai alternatif, kita dapat lanjutkan analisa frekuensi dengan mencoba huruf dengan statistik penggunaan terbesar nomor tiga.  Kita pasangkan "I"
dengan "Q", menggantikan persamaan pertama. Jadi dua persamaan yang kita gunakan adalah:
16 ≡ a · 8 + b   (mod 26)
dan
25 ≡ a · 13 + b   (mod 26).
Kita kurangkan persamaan pertama dari persamaan kedua mendapatkan:
9≡a·5       (mod 26).
Jadi a ≡ 9 · 5−1 ≡ 9 · 21 ≡ 7     (mod 26), dan b ≡ 16 − (7 · 8) ≡ 12     (mod 26).
Dengan percobaan ini kita dapatkan parameter a = 7 dan b = 12.
Contoh diatas menunjukkan bahwa, dengan affine transformation, dua pasangan tidak selalu menghasilkan nilai parameter secara langsung. Kadang kita harus mencoba pasangan lain. Analisa frekuensi terhadap enkripsi affine memang lebih sulit dibandingkan analisa frekuensi terhadap enkripsi yang menggunakan shift transformation, namun analisa frekuensi terhadap enkripsi affine masih tergolong mudah untuk dilakukan.


0 komentar:

Posting Komentar