Kata PengantarTeks ini akan menjadi salah satu bab yang ditulis ulang untuk manual tentang perlindungan informasi dari Departemen Teknik Radio dan Sistem Kontrol, serta, dari kode pelatihan ini, Departemen Perlindungan Informasi MIPT (GU). Tutorial lengkap tersedia di github (lihat juga draft rilis ). Pada Habrir saya berencana untuk mengunggah potongan-potongan "besar" yang baru, pertama, untuk mengumpulkan komentar dan pengamatan yang bermanfaat, dan kedua, untuk memberi masyarakat lebih banyak bahan ikhtisar tentang topik yang berguna dan menarik. Bagian sebelumnya dari bab Protokol Kriptografi: 1 , 2 , 3
Seperti pencipta protokol tiga-pass dari bagian
sebelumnya , para penulis algoritma berikut menganggapnya bukan hanya konstruksi matematika yang menyediakan beberapa operasi dasar (misalnya, enkripsi kunci publik), tetapi mencoba membangun sistem distribusi kunci lengkap di sekitar satu atau dua formula. Beberapa konstruksi ini, yang telah diubah, digunakan hingga saat ini (misalnya, protokol Diffie-Hellman), beberapa dari mereka hanya tersisa dalam sejarah kriptografi dan perlindungan informasi.
Kemudian pada 1990-an, primitif asimetris matematis (enkripsi dan tanda tangan elektronik) dan protokol akan dipisahkan, primitif ini akan digunakan, yang akan diperlihatkan pada bagian protokol asimetris.
Diffie - Hellman Protocol
Algoritma kunci publik pertama diusulkan oleh Diffie dan Hellman pada tahun 1976, "Arah Baru dalam Kriptografi" (
Bailey Whitfield Diffie, Martin Edward Hellman, "Arah baru dalam kriptografi" ,
[Diffie, Hellman 1976] ). Protokol ini, yang juga bisa disebut
skema Diffie-Hellman , adalah yang pertama mengurangi persyaratan untuk saluran komunikasi untuk membangun koneksi yang aman tanpa bertukar kunci terlebih dahulu.
Protokol memungkinkan dua pihak untuk membuat kunci sesi umum menggunakan saluran komunikasi yang penyerang dapat dengarkan, tetapi dengan asumsi bahwa yang terakhir tidak dapat mengubah isi pesan.
Biarkan
- bilangan prima yang besar
- elemen primitif dari grup
,
, dan
,
dan
diketahui sebelumnya. Fungsi
kami menganggap searah, yaitu, menghitung fungsi dengan nilai argumen yang diketahui adalah tugas yang mudah, dan inversinya (menemukan argumen) dengan nilai fungsi yang diketahui sulit. (Fungsi terbalik
disebut fungsi logaritma diskrit. Saat ini tidak ada cara cepat untuk menghitung fungsi seperti itu untuk sederhana besar
.)
Protokol pertukaran terdiri dari tindakan berikut.
- Alice memilih secara acak
Alice \ to \ left \ {A = g ^ a \ bmod p \ right \} \ to Bob - Bob memilih secara acak
Bob menghitung kunci sesi
Bob \ ke \ kiri \ {B = g ^ b \ bmod p \ right \} \ untuk Alice - Alice menghitung
Dengan cara ini, kunci sesi rahasia bersama dibuat
. Karena pemilihan nilai acak
dan
dalam sesi baru, kunci sesi baru akan diterima.
Protokol hanya menyediakan generasi kunci sesi baru (target G10). Dengan tidak adanya pihak tepercaya ketiga, itu tidak memberikan otentikasi dari para pihak (tujuan G1), karena kurangnya bagian dengan konfirmasi kepemilikan kunci, tidak ada otentikasi kunci (tujuan G8). Tetapi, karena protokol tidak menggunakan kunci "master" yang panjang, kita dapat mengatakan bahwa protokol tersebut memiliki properti kerahasiaan langsung yang sempurna (sasaran G9).
Protokol hanya dapat digunakan dengan saluran komunikasi di mana cryptanalyst aktif tidak dapat melakukan intervensi. Jika tidak, protokol menjadi rentan terhadap "serangan tengah" sederhana.

- Alice memilih secara acak
Alice \ to \ left \ {A = g ^ a \ bmod p \ right \} \ to Mellory ~ (Bob) - Mallory memilih secara acak
Mallory menghitung kunci sesi untuk saluran dengan Alice
Mellory ~ (Alice) \ ke \ kiri \ {M = g ^ m \ bmod p \ kanan \} \ ke Bob
Mellory ~ (Bob) \ ke \ kiri \ {M = g ^ m \ bmod p \ kanan \} \ ke Alice - Alice menghitung kunci sesi untuk saluran dengan Mallory (berpikir bahwa Mallory adalah Bob)
- Bob memilih secara acak
Bob menghitung kunci sesi untuk saluran dengan Mallory (berpikir bahwa Mallory adalah Alice)
Bob \ ke \ kiri \ {B = g ^ b \ bmod p \ right \} \ to Mellory ~ (Alice) - Mallory menghitung kunci sesi untuk saluran dengan Bob
Akibatnya, Alice dan Bob menerima kunci sesi baru, tetapi mereka tidak membangun saluran komunikasi "aman" satu sama lain, tetapi dengan penyerang yang sekarang memiliki kemampuan untuk menyampaikan atau mengubah semua pesan yang dikirimkan antara Alice dan Bob.
Protokol Diffie-Hellman berbeda dari kebanyakan protokol distribusi utama karena fakta bahwa ia tidak menggunakan primitif kriptografi lainnya (enkripsi, tanda tangan digital atau fungsi hashing), tetapi dalam arti tertentu merupakan kriptografi yang primitif untuk membangun protokol yang lebih kompleks. Ini memberikan generasi nomor acak dalam sistem terdistribusi tanpa pusat tepercaya. Selain itu, tidak ada pihak yang dapat memaksa pihak lain untuk menggunakan kunci sesi lama, tidak seperti, misalnya, protokol Yahalom.
Protokol dapat diubah sehingga alih-alih kelompok multiplikasi dari perkalian sederhana, gunakan grup aditif penambahan titik dari kurva elips. Dalam hal ini, para pihak masih akan memilih beberapa bilangan bulat acak, tetapi jangan menaikkan angka generator menjadi kekuatan, tetapi gandakan titik generator dengan angka yang diinginkan.
- Para pihak sepakat pada sekelompok titik kurva eliptik subkelompok sikliknya kekuatan dan generator kelompok (atau setidaknya subkelompok yang cukup besar dari grup )
- Alice memilih secara acak
Alice \ to \ left \ {A = a \ times G \ right \} \ to Bob - Bob memilih secara acak
Bob menghitung poinnya
Bob \ ke \ kiri \ {B = g \ kali G \ right \} \ ke Alice - Alice menghitung poinnya
Sebagai kunci sesi baru, para pihak dapat memilih, misalnya, koordinat pertama dari titik yang ditemukan
.
Protokol El Gamal
Protokol El-Gamal (
[ElGamal, 1984] ,
[ElGamal, 1985] ), karena distribusi awal kunci publik dari salah satu pihak, memberikan otentikasi kunci untuk sisi ini. Dapat dijamin bahwa hanya pemilik kunci pribadi yang sesuai yang dapat menghitung kunci sesi. Namun, konfirmasi penerimaan kunci (pemenuhan tujuan G1 dan G8) bukan bagian dari protokol.
- Alice dan Bob memilih opsi umum dan dimana Merupakan bilangan prima yang besar, dan - elemen bidang primitif .
Bob menciptakan sepasang kunci pribadi dan publik dan :
Kunci publik Itu adalah akses terbuka publik untuk semua pihak. Seorang cryptanalyst tidak dapat menggantikannya - substitusi akan terlihat. - Alice mengambil rahasia dan menghitung kunci sesi
Alice \ to \ left \ {g ^ x \ bmod p \ right \} \ to Bob
- Bob menghitung kunci sesi
Protokol tidak menjamin pemilihan kunci sesi baru di setiap sesi protokol (G10), dan penggunaan kunci "master"
untuk mentransfer kunci sesi memungkinkan penyerang menghitung semua kunci sesi dari sesi sebelumnya ketika kunci pribadi dikompromikan
(tujuan G9).
Protokol MTI / A (0)
Pada tahun 1986, C. Matsumoto (
Tsutomu Matsumoto ), I. Takashima (
Youichi Takashima ) dan H. Imai (
Hideki Imai ) mengusulkan beberapa algoritma, yang kemudian disebut keluarga protokol MTI (
[Matsumoto, Tsutomu, Imai 1986] ). Karena distribusi awal kunci publik dari kedua pihak, mereka memberikan otentikasi kunci implisit (target G7). Artinya, kunci sesi hanya dapat dijamin untuk diterima oleh pemilik kunci publik yang sesuai. Kami akan mempertimbangkan salah satu perwakilan keluarga ini - protokol MTI / A (0).
Sebelumnya, para pihak menyepakati parameter umum sistem.
dan
dimana
Merupakan bilangan prima yang besar, dan
- elemen bidang primitif
.
Masing-masing pihak (Alice dan Bob) menghasilkan sepasang kunci pribadi dan publik:
\ begin {array} {ll} Alice: & ~ a, ~~ K_A = g ^ a \ bmod p, \\ Bob: & ~ b, ~~ K_B = g ^ b \ bmod p. \\ \ end {array}
- Alice menghasilkan angka acak
Alice \ to \ left \ {g ^ {R_A} \ bmod p \ right \} \ to Bob - Bob menghasilkan angka acak
Bob menemukan kunci sesi
Bob \ ke \ kiri \ {g ^ {R_B} \ bmod p \ right \} \ ke Alice - Alice menghitung kunci sesi
Jika kunci publik
dan
cocokkan dengan kunci pribadi Anda
dan
, lalu kunci sesi dihitung oleh peserta yang cocok:
\ begin {array} {lll} (g ^ {R_A}) ^ b \ cdot K_A ^ {R_B} \ bmod p & = & g ^ {b R_A + a R_B} \ bmod p, \\ (g ^ { R_B}) ^ a \ cdot K_B ^ {R_A} \ bmod p & = & g ^ {a R_B + b R_A} \ bmod p. \ end {array}
Karena kompleksitas tugas logaritma diskrit, penyerang tidak akan dapat memperoleh
atau
dari pesan yang dikirimkan, dan publikasi awal kunci publik memastikan bahwa hanya pengguna yang sah yang menerima kunci sesi. Pilihan acak
dan
memastikan bahwa kedua pihak dapat memastikan untuk membuat kunci sesi baru di setiap sesi protokol.
Seperti perwakilan protokol cryptosystem lainnya, MTI tidak dikembangkan dengan mempertimbangkan kemungkinan kompromi kunci "master" tertutup.
dan
(tujuan G9).
Protokol Stasiun-ke-Stasiun
Protokol STS (
Station-to-Station ,
[Diffie, Oorschot, Wiener 1992] ) dimaksudkan untuk sistem komunikasi seluler. Ia menggunakan ide-ide protokol Diffie-Hellman dan kriptosistem RSA. Fitur protokol adalah penggunaan mekanisme tanda tangan elektronik untuk saling otentikasi para pihak.
Sebelumnya, para pihak menyepakati parameter umum sistem.
dan
dimana
Merupakan bilangan prima yang besar, dan
- elemen bidang primitif
.
Setiap sisi
dan
memiliki pasangan kunci jangka panjang: kunci pribadi untuk mendekripsi dan membuat tanda tangan elektronik
dan kunci publik untuk enkripsi dan verifikasi tanda tangan
.
\ begin {array} {ll} A: K_ {A, \ text {private}}, K_ {A, \ text {public}}: \ forall M: & \ text {Verifikasi} _A (M, S_A (M )) = true, \\ & D_A (E_A (M)) = M, \\ B: K_ {B, \ text {private}}, K_ {B, \ text {public}}: \ forall M: & \ text {Verify} _B (M, S_B (M)) = true, \\ & D_B (E_B (M)) = M. \\ \ end {array}
Dimana
itu adalah fungsi memeriksa tanda tangan elektronik pada kunci publik
, dan
- Fungsi dekripsi menggunakan kunci pribadi
.
Protokol terdiri dari empat lintasan, tiga di antaranya termasuk transmisi pesan (
[Cheryomushkin 2009] ).
- Alice mengambil nomor acak .
Alice \ ke \ left \ {A, m_A = g ^ {R_A} \ bmod p \ right \} \ to Bob - Bob mengambil nomor acak .
Bob menghitung kunci sesi .
Bob \ ke \ kiri \ {B, A, m_B = g ^ {R_B} \ bmod p, E_K (S_B (m_A, m_B)) \ kanan \} \ untuk Alice - Alice menghitung kunci sesi .
Alice memverifikasi tanda tangan di pesan .
Alice \ ke \ left \ {A, B, E_K (S_A (m_A, m_B)) \ right \} \ to Bob - Bob memverifikasi tanda tangan dalam pesan itu .
Protokol ini memberikan jaminan pembuatan kunci baru (G10), tetapi kerahasiaan langsung tidak sempurna (G9).
Seperti yang ditunjukkan oleh serangan Lowe 1996 (
[Lowe 1996] ), protokol tidak dapat menjamin otentikasi subyek (target G1), kunci (G7), dan bukti kepemilikan kunci sesi (G8). Meskipun penyerang tidak dapat memperoleh akses ke kunci sesi baru jika protokol tersebut hanya digunakan untuk mengotentikasi subjek, Alice dapat mengira penyerang untuk Bob.

- Alice mengambil nomor acak .
Alice \ ke \ left \ {A, m_A = g ^ {R_A} \ bmod p \ right \} \ to Mellory ~ (Bob)
- Mellory \ ke \ left \ {M, m_A \ right \} \ ke Bob
- Bob mengambil nomor acak .
Bob menghitung kunci sesi .
Bob \ ke \ kiri \ {B, M, m_B, E_K (S_B (m_A, m_B)) \ kanan \} \ ke Mellory
- Mellory ~ (Bob) \ ke \ left \ {B, A, E_K (S_B (m_A, m_B)) \ right \} \ ke Alice
- Alice menghitung kunci sesi .
Alice memverifikasi tanda tangan di pesan .
Alice \ ke \ left \ {A, B, E_K (S_A (m_A, m_B)) \ right \} \ to Mellory ~ (Bob)
Setelah berhasil menyelesaikan protokol, Alice yakin bahwa dia berbicara dengan Bob.
Seperti semua "cryptosystem-protocols" lainnya, protokol Station-to-Station didasarkan pada beberapa sumber informasi eksternal tentang kunci publik dari para peserta, tanpa mempertanyakan kebenaran dan keandalan sumber ini. Yang, dalam kasus umum, salah. Jika informasi tentang kunci peserta perlu diterima secara eksternal pada setiap sesi protokol (misalnya, jika ada banyak peserta dan tidak ada kemungkinan untuk mengingat kunci semua), maka saluran untuk mendapatkan kunci publik akan menjadi tujuan utama dari cryptanalyst aktif untuk protokol yang dipertimbangkan. Cara melindungi diri Anda dari penggunaan kriptografi asimetris primitif ini ada di bagian selanjutnya.
Sastra
- [Diffie, Hellman 1976] Diffie W., Hellman ME Arah baru dalam kriptografi // Teori Informasi, Transaksi IEEE aktif. - 1976. - November - t. 22, No. 6. - hal. 644-654. - ISSN 0018-9448. - DOI: 10.1109 / TIT.1976.1055638.
- [ElGamal, 1984] El Gamal T. A Cryptosystem Kunci Publik dan Skema Tanda Tangan Berdasarkan Logaritma Diskrit // Prosiding CRYPTO 84 tentang Kemajuan dalam Kriptologi. - Santa Barbara, California, AS: Springer-Verlag New York, Inc., 1985 .-- hlm. 10-18. - ISBN 0-387-15658-5. - URL: dl.acm.org/citation.cfm?id=19478.19480 .
- [ElGamal, 1985] El Gamal T. Sebuah cryptosystem kunci publik dan skema tanda tangan berdasarkan logaritma diskrit // Transaksi IEEE tentang Teori Informasi. - 1985. - Juli. - t. 31, No. 4. - hal. 469-472. - DOI: 10.1109 / TIT.1985.1057074.
- [Matsumoto, Tsutomu, Imai 1986] Matsumoto T., Takashima Y., Imai H. Sedang mencari sistem distribusi publickey yang cerdas // Trans. Inst. Elektron Komunal. Eng Jpn. Sekte E. T. 69. masalah 2. - 02.1986. - dengan 99-106.
- [Diffie, Oorschot, Wiener 1992] Diffie W., PC Van Oorschot, Otentikasi Wiener MJ
dan pertukaran kunci terotentikasi // Desain, Kode, dan Kriptografi. - 1992. - Juni. - t. 2, No. 2. - hal. 107-125. - ISSN 1573-7586. - DOI: 10.1007 / BF00124891. - [Lowe 1996] Lowe G. Beberapa serangan baru terhadap protokol keamanan // CSFW '96 Prosiding lokakarya IEEE ke-9 tentang Yayasan Keamanan Komputer. βWashington, DC, AS: IEEE Computer Society, 1996. - hlm. 162.
- [Cheremushkin 2009] Cheremushkin A. V. Protokol kriptografi: sifat dasar dan kerentanan // Matematika Diskrit Terapan. - 2009. - November - masalah. 2. - hal. 115-150. - URL: cyberleninka.ru/article/n/kriptograficheskieprotokoly-osnovnye-svoystva-i-uyazvimosti.pdf .
Kata penutupPenulis akan berterima kasih atas komentar faktual dan lainnya pada teks.