Lewati ke konten utama

Bagian 7.1 Kriptografi Kunci Privat

Dalam sistem kriptografi berkunci tunggal atau sistem kriptografi kunci privat, kunci yang sama digunakan untuk mengenkripsi maupun mendekripsi pesan. Untuk mengenkripsi pesan teks terang, kita menerapkan suatu fungsi yang dirahasiakan pada pesan tersebut, misalkan \(f\text{.}\) Fungsi ini menghasilkan pesan terenkripsi. Jika bentuk terenkripsi dari pesan diketahui, kita dapat memperoleh kembali pesan semula dengan menerapkan transformasi invers \(f^{-1}\text{.}\) Transformasi \(f\) harus relatif mudah dihitung, demikian pula \(f^{-1}\text{;}\) namun, \(f\) harus sangat sulit ditebak dari contoh-contoh pesan tersandi yang tersedia.

Contoh 7.1.1.

Salah satu sistem kriptografi kunci privat yang paling awal dan terkenal adalah sandi geser yang digunakan oleh Julius Caesar. Mula-mula kita nyatakan alfabet dengan angka melalui \(\text{A} = 00, \text{B} = 01, \ldots, \text{Z} = 25\text{.}\) Fungsi enkripsinya adalah
\begin{equation*} f(p) = p + 3 \bmod 26; \end{equation*}
yaitu, \(A \mapsto D, B \mapsto E, \ldots, Z \mapsto C\text{.}\) Dengan demikian, fungsi dekripsinya adalah
\begin{equation*} f^{-1}(p) = p - 3 \bmod 26 = p + 23 \bmod 26\text{.} \end{equation*}
Misalkan kita menerima pesan terenkripsi DOJHEUD. Untuk mendekripsi pesan ini, mula-mula kita nyatakan pesan tersebut dengan angka:
\begin{equation*} 3, 14, 9, 7, 4, 20, 3\text{.} \end{equation*}
Selanjutnya, kita terapkan transformasi invers untuk memperoleh
\begin{equation*} 0, 11, 6, 4, 1, 17, 0\text{,} \end{equation*}
atau ALGEBRA. Perhatikan bahwa tidak ada sesuatu yang istimewa pada bilangan \(3\) maupun \(26\text{.}\) Kita dapat saja menggunakan alfabet yang lebih besar atau pergeseran yang berbeda.
Kriptanalisis membahas penguraian pesan yang diterima atau disadap. Metode dari peluang dan statistika sangat membantu dalam menguraikan pesan yang disadap; misalnya, analisis frekuensi karakter yang muncul dalam pesan tersebut sering memungkinkan pesan itu didekripsi.

Contoh 7.1.2.

Misalkan kita menerima pesan yang diketahui telah dienkripsi dengan transformasi geser pada huruf tunggal dari alfabet \(26\) huruf. Untuk mengetahui secara tepat transformasi geser yang digunakan, kita harus menghitung \(b\) dalam persamaan \(f(p) = p + b \bmod 26\text{.}\) Hal ini dapat dilakukan dengan analisis frekuensi. Huruf \(\text{E} = 04\) adalah huruf yang paling sering muncul dalam bahasa Inggris. Misalkan \(\text{S} = 18\) adalah huruf yang paling sering muncul dalam teks tersandi. Maka kita memiliki alasan kuat untuk menduga bahwa \(18 = 4 + b \bmod 26\text{,}\) atau \(b= 14\text{.}\) Oleh karena itu, fungsi enkripsi yang paling mungkin adalah
\begin{equation*} f(p) = p + 14 \bmod 26\text{.} \end{equation*}
Fungsi dekripsi yang bersesuaian adalah
\begin{equation*} f^{-1}(p) = p + 12 \bmod 26\text{.} \end{equation*}
Sekarang mudah untuk menentukan apakah dugaan kita benar.
Sandi geser sederhana merupakan contoh sistem kriptografi monoalfabetik. Dalam sandi semacam ini, satu karakter pada pesan tersandi mewakili tepat satu karakter pada pesan asli. Sistem kriptografi seperti ini tidak terlalu canggih dan cukup mudah dipecahkan. Bahkan, pada pergeseran sederhana seperti yang dijelaskan dalam Contoh 7.1.1, hanya ada \(26\) kemungkinan kunci. Mencoba semuanya akan cukup mudah dibandingkan menggunakan analisis frekuensi.
Mari kita selidiki sistem kriptografi yang sedikit lebih canggih. Misalkan fungsi enkripsinya diberikan oleh
\begin{equation*} f(p) = ap + b \bmod 26\text{.} \end{equation*}
Pertama-tama, kita perlu menentukan kapan fungsi dekripsi \(f^{-1}\) ada. Fungsi dekripsi tersebut ada apabila kita dapat menyelesaikan persamaan
\begin{equation*} c = ap + b \bmod 26 \end{equation*}
terhadap \(p\text{.}\) Berdasarkan Proposisi 3.1.4, hal ini dapat dilakukan tepat ketika \(a\) memiliki invers atau, secara ekuivalen, ketika \(\gcd( a, 26) =1\text{.}\) Dalam hal ini,
\begin{equation*} f^{-1}(p) = a^{-1} p - a^{-1} b \bmod 26\text{.} \end{equation*}
Sistem kriptografi seperti ini disebut sistem kriptografi afin.

Contoh 7.1.3.

Perhatikan sistem kriptografi afin \(f(p) = ap + b \bmod 26\text{.}\) Agar sistem ini bekerja, kita harus memilih \(a \in {\mathbb Z}_{26}\) yang memiliki invers. Hal ini hanya mungkin jika \(\gcd(a, 26) = 1\text{.}\) Dengan memperhatikan fakta tersebut, kita ambil \(a = 5\) karena \(\gcd(5, 26) = 1\text{.}\) Mudah dilihat bahwa \(a^{-1} = 21\text{.}\) Oleh karena itu, kita dapat mengambil fungsi enkripsi \(f(p) = 5p + 3 \bmod 26\text{.}\) Dengan demikian, ALGEBRA dienkripsi menjadi \(3, 6, 7, 23, 8, 10, 3\text{,}\) atau DGHXIKD. Fungsi dekripsinya adalah
\begin{equation*} f^{-1}(p) = 21 p - 21 \cdot 3 \bmod 26 = 21 p + 15 \bmod 26\text{.} \end{equation*}
Sistem kriptografi akan lebih aman jika sebuah huruf teks tersandi dapat mewakili lebih dari satu huruf teks terang. Sebagai contoh sistem kriptografi jenis ini, yang disebut sistem kriptografi polialfabetik, kita akan memperumum sandi afin dengan menggunakan matriks. Gagasannya bekerja kurang lebih seperti sebelumnya; namun, alih-alih mengenkripsi satu huruf pada satu waktu, kita akan mengenkripsi pasangan huruf. Kita dapat menyimpan pasangan huruf \(p_1\) dan \(p_2\) dalam sebuah vektor
\begin{equation*} {\mathbf p} = \begin{pmatrix} p_1 \\ p_2 \end{pmatrix}\text{.} \end{equation*}
Misalkan \(A\) adalah matriks \(2 \times 2\) yang memiliki invers dan entri-entrinya berada dalam \({\mathbb Z}_{26}\text{.}\) Kita dapat mendefinisikan fungsi enkripsi dengan
\begin{equation*} f({\mathbf p}) = A {\mathbf p} + {\mathbf b}\text{,} \end{equation*}
dengan \({\mathbf b}\) sebagai vektor kolom tetap dan operasi matriks dilakukan dalam \({\mathbb Z}_{26}\text{.}\) Fungsi dekripsinya haruslah
\begin{equation*} f^{-1}({\mathbf p}) = A^{-1} {\mathbf p} - A^{-1} {\mathbf b}\text{.} \end{equation*}

Contoh 7.1.4.

Misalkan kita ingin mengenkripsi kata HELP. Untai angka yang bersesuaian adalah \(7, 4, 11, 15\text{.}\) Jika
\begin{equation*} A = \begin{pmatrix} 3 & 5 \\ 1 & 2 \end{pmatrix}\text{,} \end{equation*}
maka
\begin{equation*} A^{-1} = \begin{pmatrix} 2 & 21 \\ 25 & 3 \end{pmatrix}\text{.} \end{equation*}
Jika \({\mathbf b} = ( 2, 2)^\transpose\text{,}\) maka pesan kita dienkripsi menjadi RRGR. Huruf R yang terenkripsi mewakili lebih dari satu huruf teks terang.
Analisis frekuensi masih dapat dilakukan pada sistem kriptografi polialfabetik, karena kita memahami dengan baik bagaimana pasangan huruf muncul dalam bahasa Inggris. Pasangan th cukup sering muncul; sedangkan pasangan qz tidak pernah muncul. Untuk mencegah dekripsi oleh pihak ketiga, kita harus menggunakan matriks yang lebih besar daripada matriks dalam Contoh 7.1.4.