Say Alice dan Peter masing-masing memiliki memory stick flash USB 4GB. Mereka bertemu dan menyimpan di kedua stik dua file bernama alice_to_peter.key
(2GB) dan peter_to_alice.key
(2GB) yang berisi bit yang dihasilkan secara acak. Mereka tidak pernah bertemu lagi, tetapi berkomunikasi secara elektronik. Alice juga memelihara variabel yang dipanggil alice_pointer
dan Peter mempertahankan variabel yang dipanggil peter_pointer
, yang keduanya awalnya diatur ke nol.
Ketika Alice perlu mengirim pesan kepada Peter, ia mengirim pesan ke ( n
byte byte pesan):
encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter
alice_pointer += length(encrypted_message_to_peter)
(dan untuk keamanan maksimum, bagian yang digunakan dari kunci dapat dihapus)
Peter menerima encrypted_payload_to_peter
, membaca alice_pointer
disimpan di awal pesan dan tidak:
message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
Dan untuk keamanan maksimum, setelah membaca pesan juga menghapus bagian kunci yang digunakan.
- EDIT: Sebenarnya langkah ini dengan algoritma sederhana ini (tanpa pemeriksaan integritas dan otentikasi) mengurangi keamanan, lihat Paŭlo Ebermann posting di bawah ini.
Ketika Peter perlu mengirim pesan ke Alice mereka melakukan sebaliknya, kali ini dengan peter_to_alice.key
dan peter_pointer
.
Dengan skema sepele ini, mereka dapat mengirim setiap hari selama 50 tahun ke depan 2GB / (50 * 365) = ~ 115kB data terenkripsi di kedua arah. Jika mereka membutuhkan lebih banyak data untuk dikirim, mereka dapat menggunakan kunci yang lebih besar, misalnya dengan HD 2TB hari ini (tombol 1TB) akan mungkin untuk bertukar 60MB / hari selama 50 tahun ke depan! Itu banyak data dalam praktiknya; misalnya, menggunakan kompresi itu lebih dari satu jam komunikasi suara berkualitas tinggi.
Sepertinya saya bahwa tidak ada cara bagi penyerang untuk membaca pesan terenkripsi tanpa kunci, karena bahkan jika mereka memiliki komputer yang sangat cepat, dengan kekerasan mereka bisa mendapatkan setiap pesan yang mungkin di bawah batas, tetapi ini adalah angka astronomi pesan dan penyerang tidak tahu yang mana dari mereka adalah pesan yang sebenarnya.
Apakah saya benar? Apakah skema komunikasi ini benar-benar aman? Dan jika aman, apakah ia memiliki namanya sendiri? Enkripsi XOR sudah terkenal, tapi saya mencari nama aplikasi praktis konkret ini menggunakan tombol besar di kedua sisi? Saya dengan rendah hati berharap bahwa aplikasi ini telah menemukan seseorang sebelum saya. :-)
Catatan: Jika benar-benar aman maka itu luar biasa, karena dengan perangkat penyimpanan besar berbiaya rendah saat ini, akan jauh lebih murah untuk melakukan komunikasi yang aman daripada dengan kriptografi kuantum yang mahal, dan ini memiliki keamanan yang setara!
EDIT:
Saya pikir ini akan lebih praktis di masa depan karena biaya penyimpanan berkurang.Itu dapat memecahkan komunikasi yang aman selamanya.Hari ini Anda tidak memiliki kepastian apakah seseorang berhasil menyerang cipher yang ada bahkan setahun kemudian dan membuat implementasinya yang sering mahal menjadi tidak aman. Dalam banyak kasus sebelum komunikasi terjadi, ketika kedua belah pihak bertemu secara pribadi, itulah saatnya untuk menghasilkan kunci. Saya pikir itu sempurna untuk komunikasi militer, misalnya antara kapal selam yang dapat memiliki HD dengan kunci besar, dan pusat militer dapat memiliki HD untuk setiap kapal selam. Bisa juga praktis dalam kehidupan sehari-hari, misalnya untuk mengontrol rekening bank Anda, karena ketika Anda membuat akun Anda bertemu dengan bank dll.