- ZIP kode sumber ANC Operation Vula yang disimpan dengan kata sandi sejak 1991 berhasil didekripsi, memungkinkan dirilisnya kode komunikasi rahasia yang digunakan untuk melawan rezim apartheid Afrika Selatan
- Kode ini digunakan pada akhir 1980-an untuk membangun jaringan bawah tanah ANC di dalam Afrika Selatan, dan bertukar pesan terenkripsi dengan one-time pad menggunakan komputer 8-bit, nada DTMF, acoustic coupler, dan PowerBASIC
- ZipCrypto pada PKZIP awal rentan terhadap serangan known-plaintext, dan kunci dipulihkan dengan bkcrack melalui pencarian plaintext 12 byte yang dapat diprediksi di dalam ZIP
- Serangan memanfaatkan entri Store yang tidak terkompresi di dalam ALLBAS.ZIP, header PK dari ZIP internal, serta nama file pertama COMKEY.BAS; setelah 23 menit diperoleh kunci
98e0f009 48a0b11a c70f8499 - RANDOM.BAS dan TECOD.BAS yang telah didekripsi dikompilasi dan dijalankan di DOSBox, sehingga terkonfirmasi cara pembuatan data acak, enkripsi/dekripsi file, penggunaan RAM disk, dan pemusnahan materi kunci setelah digunakan
Mengapa kode Operation Vula terkunci
- Operation Vula adalah operasi pada akhir 1980-an untuk menyelundupkan pimpinan ANC dan perlengkapan ke Afrika Selatan, serta membangun jaringan bawah tanah yang menghubungkan unsur-unsur aktivitas di dalam negeri
- Untuk komunikasi yang aman, mereka bertukar pesan terenkripsi one-time pad menggunakan komputer 8-bit, nada DTMF, acoustic coupler, berbagai perangkat, dan program PowerBASIC
- Tim Jenkin, pembuat utama sistem kriptografinya, merilis kode asli di Vulacode GitHub, dan penjelasan detailnya ada di Talking To Vula.pdf
- Alasan langsung mengapa rilis kode terlambat adalah sebuah file ZIP terenkripsi yang dibuat pada 1991
- Saat meninggalkan Inggris dan kembali ke Afrika Selatan, Tim Jenkin mengemas seluruh kode sumber ke dalam ZIP dan memasang kata sandi
- Setelah itu, di Afrika Selatan ia tidak perlu membuka kode tersebut, dan beberapa tahun kemudian ketika mencoba membukanya lagi, ia tidak ingat kata sandinya
- Satu file yang dapat diakses adalah versi yang sangat awal, sedangkan sisanya tidak bisa diekstrak karena kata sandi
File PKZIP lama dan serangan known-plaintext
- File yang diterima adalah ALLBAS.ZIP dan CODMAY93.ZIP; keduanya dibuat dengan PKZIP awal dan dilindungi kata sandi
- Pada format ZIP saat itu, ZipCrypto memiliki serangan known-plaintext, dan implementasi open source bkcrack dapat digunakan
- Serangan ini membutuhkan prediksi plaintext 12 byte pada posisi yang diketahui di dalam file ZIP
- ALLBAS.ZIP berisi beberapa file
.BAS,.INC,.ZIP,.EXE, dan sebagian entri ditandai dengan metode kompresi Store- Entri Store adalah file yang tidak dikompresi karena sudah berupa biner, sehingga plaintext bisa diprediksi tanpa harus mencocokkan hasil kompresi
- File ZIP itu sendiri juga dimasukkan sebagai entri Store, dan karena file ZIP memiliki header PK di awal, ia cocok dijadikan kandidat plaintext
Mencari kandidat plaintext: nama file pertama di ZIP internal
- Target serangan adalah file ZIP internal OLDCOD.ZIP yang berada di dalam ALLBAS.ZIP
- Header PK di awal file ZIP memuat panjang nama file, panjang extra field, dan sebagainya, sehingga jika nama file pertama diketahui, plaintext yang dibutuhkan untuk serangan dapat dibuat
- Jika nama file minimal 8 karakter, bersama ekstensi seperti
.BASatau.INC, ditambah byte ukuran nama file dan panjang extra field, 12 byte yang diperlukan bisa diperoleh - Dalam kasus terburuk, nama file berbentuk kombinasi huruf besar dan angka, maksimal 8 karakter beserta ekstensinya, juga bisa di-bruteforce, tetapi praktiknya tidak diperlukan
- Tim Jenkin memiliki versi lain dari OLDCOD.ZIP, dan dapat memberi tahu bahwa file pertama di dalamnya adalah COMKEY.BAS
Pemulihan kunci dengan bkcrack
- Untuk memasukkan COMKEY.BAS sebagai kandidat plaintext, sebuah program Perl sederhana ditulis, lalu serangan dijalankan dengan bentuk
bkcrack -C ALLBAS.ZIP -c OLDCOD.ZIP -p ... -o 26 -j 8 - Setelah 23 menit, kunci yang ditemukan bkcrack adalah sebagai berikut
98e0f009 48a0b11a c70f8499
- Dengan kunci yang sama, ALLBAS.ZIP didekripsi untuk membuat ALLBAS-DECRYPTED.ZIP, dan kunci yang sama juga bekerja pada CODMAY93.ZIP sehingga menghasilkan CODMAY93-DECRYPTED.ZIP
- Alternatif lain adalah menyerang file ZIP internal lain dengan cara yang sama, dan jika tetap gagal, mencoba bruteforce nama file
- Kandidat TECOD5.BAS yang diperiksa kemudian menemukan kunci yang sama hanya dalam 38 detik, menunjukkan bahwa pemilihan plaintext yang tepat sangat memengaruhi kecepatan serangan
Menjalankan kode yang telah didekripsi
- Dua program dikompilasi dengan PowerBASIC dan dijalankan di DOSBox
- RANDOM.BAS: digunakan untuk membuat disk angka acak untuk one-time pad
- TECOD.BAS: digunakan untuk mengenkripsi dan mendekripsi pesan yang akan dikirim lewat email
- Kode yang dikompilasi dan file executable yang dihasilkan ada di jgc-vula-september-2024
- Kompilasi dilakukan dengan PowerBASIC Compiler Version 3.00b; TECOD.BAS ditampilkan memiliki 2.575 statement dan 2.329 baris, sedangkan RANDOM.BAS memiliki 2.194 statement dan 1.940 baris
- RANDOM.EXE menggunakan tiga jenis algoritme pembangkit bilangan acak untuk menghasilkan data acak, salah satunya berbasis kunci acak yang dimasukkan langsung oleh pengguna
- TECOD.EXE dilindungi kata sandi, dan kata sandi bawaan versi ini adalah TIMBOBIMBO, yang disimpan di kode dengan urutan karakter diacak
- Tim Jenkin memasukkan kata sandi ini ke dalam program dengan cara sederhana tetapi diobfuskasi
- Kata sandinya berbeda untuk tiap versi program yang dibagikan kepada anggota ANC yang berbeda
- Manual untuk orang yang ingin menjalankannya sendiri ada di TECOD_HLP.pdf
Detail yang terungkap dari cara operasional saat itu
- Contoh eksekusi menunjukkan alur membuat data acak untuk kunci dengan RANDOM.EXE ke RANDATA.1, mengenkripsi PLAIN.TXT menjadi PLAIN.BIN, lalu mengembalikannya lagi
- Semua operasi kriptografi dirancang untuk dilakukan di RAM disk
- Dalam contoh enkripsi, file program
TECOD.EXEdanTECOD.CNFberada di floppy disk A:, disk data yang berisi file kunci berada di B:, dan RAM disk berada di R: - Pada tahap enkripsi, nama file
RANDATA.1harus diubah menjadi SNUM, sedangkan pada tahap dekripsiRANDATA.1di B: harus bernama RNUM - Program ini mencakup perilaku untuk memusnahkan materi kunci setelah digunakan, pemeriksaan distribusi byte acak yang dihasilkan, dan penekanan pada penggunaan RAM disk
1 komentar
Komentar Hacker News
Hal yang menarik dari Vula adalah kurangnya kegunaan sistem pada akhirnya menjadi penyebab kejatuhannya
Bahkan para aktivis yang sangat berdedikasi melawan rezim pembunuh demi kebebasan pun tidak bisa menggunakan sistem itu dengan benar
Dokumen dibiarkan tidak terenkripsi, kunci mudah didapat, dan perangkat lunaknya terlalu merepotkan sehingga sebagian komunikasi penting dikirim sebagai teks biasa
Kita semua tahu betapa merepotkannya menyiapkan dan menggunakan PGP dengan benar, dan pada akhirnya keamanan adalah kegunaan
Tulisan sedikit lebih panjang tentang Vula: https://shkspr.mobi/blog/2014/01/the-hardest-problem-in-encr...
Dalam kebanyakan kasus, kegunaan bekerja ke arah menurunkan keamanan
Saya melihat generator bilangan acak untuk one-time pad keamanan, dan Melissa O'Neil mungkin akan menyukainya. Hampir mirip PCG
Ia menggunakan generator kongruensial linear (LCG)
Randdari sistem PowerBASIC untuk memilih salah satu dari set fungsirand1-3baru, dan dua di antaranya menggunakan LCG yang berbedahttps://github.com/Vulacode/RANDOM/blob/d6a1a1d694b22e6a115b...
Karena generator pseudorandom tampaknya di-seed oleh generator acak sistem, pada akhirnya cukup memulihkan seed awal LCG sistem untuk merekayasa balik one-time pad
Saya tidak tahu ukuran seed LCG sistemnya, tetapi jika 32-bit, sepertinya status seed bisa saja di-brute-force lalu hasilnya dianalisis dengan analisis entropi dan mungkin dipecahkan dalam satu jam
“Jangan membuat cipher sendiri” adalah aturan pertama, tetapi dalam situasi akhir 80-an ketika berurusan dengan teknologi baru yang keren, itu mungkin tampak seperti pengecualian
Runtuhnya apartheid di Afrika Selatan secara keseluruhan cukup menarik. Saya hampir tidak tahu sisi seperti ini
Fakta menariknya, gerakan BDS (boikot, divestasi, sanksi) dimulai dari sini, dan pada saat itu banyak orang menganggap apartheid tidak akan pernah berakhir
Namun tekanan yang terus-menerus diberikan dalam waktu lama di berbagai titik tekan menciptakan stres besar, dan itulah yang mengarah pada keruntuhannya
Fakta bahwa pekerjaan ini dilakukan di Toshiba T-100 juga cukup menarik; komputer yang keren
Menarik. Afrika Selatan benar-benar telah melalui banyak hal. Semoga GNU saat ini bisa memutar mundur jam kiamat
Rekomendasi: Action Kommandant. Memberi sekilas gambaran tentang kehidupan Ashley Kriel, martir dan kebanggaan Bonteheuwel
Saat pelajaran bahasa Inggris di sekolah menengah, saya mengenal Athol Fugard lewat seorang guru radikal yang meninggalkan Afrika Selatan ke Kanada untuk menghindari pengawasan tahun 80-an, dan itu membuka wawasan saya
Semoga orang-orang Afrika Selatan juga beruntung. Negara dengan begitu banyak orang berbakat dan kekayaan alam seharusnya diperlakukan jauh lebih baik. Setidaknya tampaknya era politik kaku di dalam ANC sudah berakhir
Kode Rust untuk brute force: https://github.com/rhulha/ZipMcKracken
Operation Vula, komputer 8-bit, nada DTMF, acoustic coupler—menarikCIA/NSA mengetahui gelagat bahwa Operation Vula dijalankan dengan Philips PX-1000 komersial yang memiliki DES bawaan, lalu menyuap Philips untuk menanam backdoor pada produk tersebut: https://www.cryptomuseum.com/crypto/philips/px1000/
Alih-alih DES yang memiliki backdoor, ia menggunakan one-time pad yang dibawa awak pesawat dengan floppy ke masing-masing pihak
Sekalipun satu floppy seperti itu tertangkap di Afrika Selatan, hanya pesan untuk penerima tersebut yang akan terekspos, dan pada akhirnya kemungkinan akan segera terdeteksi
Namun membuat kunci one-time pad dengan generator pseudorandom adalah pendekatan yang naif
Inti one-time pad adalah memakai kunci yang benar-benar acak untuk memperoleh keamanan sejati. Dengan kunci seperti yang digunakan di sini, mereka sebenarnya bisa saja cukup menukar seed lalu membuatnya secara lokal, sehingga tidak perlu membahayakan awak pesawat
Saya paham pengembangnya belajar sendiri dan bahkan mempelajarinya sambil jalan, tetapi orang yang menangani rahasia sangat penting seharusnya tidak melakukan kesalahan seperti ini
Meski begitu, membuat bilangan acak sungguhan dalam jumlah besar juga tidak mudah. Pada akhirnya mungkin harus membuat perangkat keras sendiri, sementara sebagian besar peralatan komersial kemungkinan besar telah dimanipulasi
Jika Anda harus memecahkan kata sandi ZIP “lama” dan mengetahui beberapa karakter di dalam arsipnya, tidak ada yang lebih baik dari ini: https://github.com/kimci86/bkcrack