ANC 'Operation Vula' gizli şifreleme kodunu açığa çıkarmak için 30 yıllık ZIP parolası kırıldı
(blog.jgc.org)- 1991'de parolalı olarak saklanan ANC Operation Vula kaynak kodu ZIP'i çözüldü; böylece Güney Afrika'daki apartheid rejimine karşı kullanılan gizli iletişim kodunun yayımlanması mümkün oldu
- Bu kod, 1980'lerin sonunda ANC'nin Güney Afrika içindeki yeraltı ağını kurmak için kullanıldı; 8 bit bilgisayarlar, DTMF tonları, akustik kuplörler ve PowerBASIC ile tek kullanımlık ped şifrelemeli mesajlar alınıp gönderiliyordu
- Erken dönem PKZIP'in ZipCrypto yöntemi bilinen düz metin saldırılarına açıktı; bkcrack ile ZIP içindeki tahmin edilebilir 12 baytlık düz metin bulunarak anahtar kurtarıldı
- Saldırı, ALLBAS.ZIP içindeki sıkıştırılmamış Store girdisini, iç ZIP'in PK başlığını ve ilk dosya adı COMKEY.BAS'ı kullandı; 23 dakika sonra
98e0f009 48a0b11a c70f8499anahtarı elde edildi - Şifresi çözülen RANDOM.BAS ve TECOD.BAS, DOSBox'ta derlenip çalıştırıldı; rastgele veri üretimi, dosya şifreleme/çözme, RAM diski kullanımı ve kullanım sonrası anahtar malzemesini imha etme yöntemi doğrulandı
Operation Vula kodu neden kilitliydi
- Operation Vula, 1980'lerin sonunda ANC liderliğini ve malzemelerini Güney Afrika'ya sokmak ve ülke içindeki faaliyet unsurlarını birbirine bağlamak için yürütülen bir yeraltı ağı kurma operasyonuydu
- Güvenli iletişim için 8 bit bilgisayarlar, DTMF tonları, akustik kuplörler, çeşitli ekipmanlar ve PowerBASIC programlarıyla tek kullanımlık ped şifrelemeli mesajlar değiş tokuş ediliyordu
- Şifreleme sistemini ağırlıklı olarak geliştiren Tim Jenkin, özgün kodu Vulacode GitHub üzerinde yayımladı; ayrıntılı açıklama Talking To Vula.pdf dosyasında yer alıyor
- Kodun yayımlanmasının gecikmesinin doğrudan nedeni, 1991'de oluşturulan parolalı ZIP dosyasıydı
- Tim Jenkin, İngiltere'den ayrılıp Güney Afrika'ya dönerken tüm kaynak kodunu ZIP olarak paketleyip parola koydu
- Sonrasında Güney Afrika'da kodu açma ihtiyacı olmadı; birkaç yıl sonra tekrar açmaya çalıştığında parolayı hatırlayamadı
- Erişilebilen tek dosya çok erken bir sürümdü; geri kalanlar parola nedeniyle çıkarılamıyordu
Eski PKZIP dosyası ve bilinen düz metin saldırısı
- Teslim alınan dosyalar ALLBAS.ZIP ve CODMAY93.ZIP idi; ikisi de erken dönem PKZIP ile oluşturulmuş ve parolayla korunmuştu
- O dönemin ZIP biçimindeki ZipCrypto için bilinen düz metin saldırısı vardı ve açık kaynak uygulama bkcrack kullanılabiliyordu
- Bu saldırı, ZIP dosyasının içindeki bilinen bir konumda bulunan 12 baytlık düz metin tahmini gerektirir
- ALLBAS.ZIP içinde çeşitli
.BAS,.INC,.ZIP,.EXEdosyaları vardı ve bazı girdiler sıkıştırma yöntemi olarak Store gösteriyordu- Store girdileri zaten ikili oldukları için sıkıştırılmamış dosyalardı; bu yüzden sıkıştırma çıktısını eşleştirmeye gerek kalmadan düz metin tahmin edilebiliyordu
- ZIP dosyasının kendisi de Store girdisi olarak yer alıyordu; ZIP dosyaları başta PK başlığı taşıdığından düz metin adayı olmak için elverişliydi
Düz metin adayı bulma: iç ZIP'in ilk dosya adı
- Saldırının hedefi, ALLBAS.ZIP içinde bulunan iç ZIP dosyası OLDCOD.ZIP idi
- ZIP dosyasının başındaki PK başlığı, dosya adı uzunluğu ve ekstra alan uzunluğu gibi bilgileri içerdiğinden, ilk dosya adı bilinirse saldırı için gereken düz metin oluşturulabiliyordu
- Dosya adı en az 8 karakterse,
.BAS,.INCgibi uzantılarla birlikte dosya adı boyutu ve ekstra alan uzunluğu baytları eklenerek gerekli 12 bayt elde edilebilir - En kötü durumda büyük harf ve rakam kombinasyonlarıyla, en fazla 8 karakter ve uzantı biçimindeki dosya adları brute-force denenebilirdi; ancak pratikte buna gerek kalmadı
- Tim Jenkin'in OLDCOD.ZIP'in başka bir sürümü vardı ve içindeki ilk dosyanın COMKEY.BAS olduğunu söyleyebildi
bkcrack ile anahtar kurtarma
- COMKEY.BAS'ı düz metin adayı olarak vermek için basit bir Perl programı yazıldı ve saldırı
bkcrack -C ALLBAS.ZIP -c OLDCOD.ZIP -p ... -o 26 -j 8biçiminde çalıştırıldı - 23 dakika sonra bkcrack'in bulduğu anahtar şuydu
98e0f009 48a0b11a c70f8499
- Aynı anahtarla ALLBAS.ZIP çözülerek ALLBAS-DECRYPTED.ZIP oluşturuldu; aynı anahtar CODMAY93.ZIP üzerinde de çalıştı ve CODMAY93-DECRYPTED.ZIP üretildi
- Diğer iç ZIP dosyalarına aynı yöntemle saldırmak, yine başarısız olursa dosya adı brute-force denemek gibi alternatifler de vardı
- Daha sonra doğrulanan TECOD5.BAS adayı aynı anahtarı 38 saniyede buldu; uygun düz metin seçiminin saldırı hızını büyük ölçüde etkilediği görüldü
Şifresi çözülen kodu çalıştırma
- İki program DOSBox'ta PowerBASIC ile derlenip çalıştırıldı
- RANDOM.BAS: tek kullanımlık ped olarak kullanılacak rastgele sayı diski oluşturmak için kullanıldı
- TECOD.BAS: e-postayla gönderilecek mesajları şifrelemek ve çözmek için kullanıldı
- Derlenen kod ve oluşturulan çalıştırılabilir dosyalar jgc-vula-september-2024 içinde yer alıyor
- PowerBASIC Compiler Version 3.00b ile derlendi; TECOD.BAS 2.575 deyim ve 2.329 satır, RANDOM.BAS ise 2.194 deyim ve 1.940 satır olarak gösterildi
- RANDOM.EXE, rastgele veri üretimi için üç farklı türde rastgele sayı üretme algoritması kullanıyordu; bunlardan biri kullanıcının doğrudan girdiği rastgele anahtara dayanıyordu
- TECOD.EXE parola korumalıydı; bu sürümün gömülü parolası, kod içinde karakter sırası karıştırılarak saklanan TIMBOBIMBO idi
- Tim Jenkin bu parolayı basit ama obfuscate edilmiş biçimde programın içine koydu
- ANC'nin farklı üyelerine verilen program sürümlerinde parola farklıydı
- Kendisi çalıştırmak isteyenler için kılavuz TECOD_HLP.pdf içinde bulunuyor
Dönemin kullanım biçiminden ortaya çıkan ayrıntılar
- Örnek çalıştırma akışı, RANDOM.EXE ile anahtar için rastgele veriyi RANDATA.1 içine oluşturmak, PLAIN.TXT dosyasını şifreleyip PLAIN.BIN hâline getirmek ve ardından geri çözmek şeklindeydi
- Tüm şifreleme işlemleri RAM diski üzerinde yapılacak şekilde tasarlanmıştı
- Şifreleme örneğinde program dosyaları
TECOD.EXEveTECOD.CNFA: disketinde, anahtar dosyasını içeren veri diski B:'de, RAM diski ise R:'de bulunuyordu - Şifreleme aşamasında
RANDATA.1dosya adının SNUM olarak değiştirilmesi gerekiyordu; çözme aşamasında ise B:'dekiRANDATA.1dosyasının adının RNUM olması gerekiyordu - Programda kullanım sonrası anahtar malzemesini imha etme davranışı, üretilen rastgele bayt dağılımını kontrol etme ve RAM diski kullanımını vurgulama yer alıyordu
1 yorum
Hacker News yorumları
Vula ile ilgili ilginç olan şey, sistemin sonunda kullanılabilirlik eksikliği yüzünden çökmesi
Özgürlük için katil bir rejime karşı mücadele eden son derece adanmış aktivistler bile sistemi düzgün kullanamamış
Belgeleri şifrelemeden bırakmışlar, anahtarlara kolayca erişilebiliyormuş ve yazılım fazla zahmetli olduğu için bazı kritik iletişimler düz metin olarak gönderilmiş
PGP yapılandırmasının ve doğru kullanımının ne kadar baş ağrıttığını hepimiz biliyoruz; sonuçta güvenlik kullanılabilirliktir
Vula hakkında biraz daha yazdığım bir yazı: https://shkspr.mobi/blog/2014/01/the-hardest-problem-in-encr...
Kullanılabilirlik çoğu durumda güvenliği azaltma yönünde çalışır
Güvenlik amaçlı tek kullanımlık şifre defteri için kullanılan rastgele sayı üretecine baktım; Melissa O'Neil'in hoşuna giderdi herhalde. Neredeyse PCG gibi
PowerBASIC sisteminin
Randdoğrusal eşlenik üretecini (LCG) kullanarak yenirand1-3fonksiyon setinden birini seçiyor, bunların ikisi de farklı LCG'ler kullanıyorhttps://github.com/Vulacode/RANDOM/blob/d6a1a1d694b22e6a115b...
Sözde rastgele sayı üreteçleri sistem rastgele sayı üretecinden seed alıyor gibi göründüğü için, sonuçta sistem LCG'sinin ilk seed'ini geri kazanarak tek kullanımlık şifre defterini tersine mühendislikle çözmek mümkün olabilir
Sistem LCG'sinin seed boyutunu bilmiyorum ama 32 bit ise, seed durumunu dümdüz brute force edip sonuca entropi analizi uygulayarak bir saat içinde kırmak mümkün olabilir gibi geliyor
İlk kural “kendi şifreni tasarlama”dır ama 80'lerin sonunda havalı yeni teknolojilerle uğraşıyorsanız buna bir istisna gibi bakılmış olabilir
Güney Afrika'daki apartheid rejiminin çöküşü genel olarak oldukça ilginç. Bunun bu yönünü neredeyse hiç bilmiyordum
İlginç bir not olarak, BDS hareketi (boykot, yatırımların geri çekilmesi, yaptırımlar) burada başladı ve o dönemde çoğu kişi apartheid'ın asla bitmeyeceğini düşünüyordu
Ama uzun süre boyunca birçok baskı noktasından sürekli baskı uygulandı, bu da büyük bir stres yarattı ve sonunda çöküşe yol açtı
Bu işin bir Toshiba T-100 üzerinde yapılmış olması da ayrıca ilginç; harika bir bilgisayar
İlginç. Güney Afrika gerçekten çok şey yaşadı. Umarım bugünün GNU'su kıyamet saatini biraz geri alır
Tavsiyem Action Kommandant. Şehit ve Bonteheuwel'in gururu Ashley Kriel'in hayatına bir pencere açıyor
Ortaokul/lise İngilizce dersinde, 80'lerdeki gözetimden kaçıp Güney Afrika'dan Kanada'ya giden radikal bir öğretmen sayesinde Athol Fugard'ı tanıdım ve ufkum açıldı
Güney Afrika halkına da iyi şanslar diliyorum. Yetenekli insanları ve doğal zenginliği bol olan bir ülke çok daha iyisini hak ediyor. En azından ANC içindeki kemikleşmiş siyaset dönemi bitmiş gibi görünüyor
Brute force için Rust kodu: https://github.com/rhulha/ZipMcKracken
Operation Vula, 8 bit bilgisayarlar, DTMF tonları ve akustik kuplörler... İlginçCIA/NSA, Operation Vula'nın yerleşik DES'e sahip ticari Philips PX-1000 ile yürütüldüğünü sezmiş, Philips'e rüşvet vererek ürüne bir arka kapı ekletmiş: https://www.cryptomuseum.com/crypto/philips/px1000/
Arka kapılı DES yerine, bir kurye tarafından disketle her bir tarafa taşınan tek kullanımlık şifre defterleri kullanmış
Güney Afrika'da böyle bir disket ele geçirilse bile yalnızca ilgili alıcının mesajları açığa çıkardı ve zaten yakında fark edilmesi muhtemeldi
Ama tek kullanımlık şifre defteri anahtarlarını sözde rastgele sayı üreteci ile üretmek safça bir yaklaşım
Tek kullanımlık şifre defterinin olayı, gerçek güvenlik elde etmek için gerçekten rastgele anahtar kullanmaktır. Burada kullanılan türden anahtarlarla yalnızca seed'ler değiştirilseydi yerelde üretim yapılabilirdi; o zaman da kuryeleri riske atmaya gerek kalmazdı
Geliştiricinin kendi kendine öğrenmiş ve hatta bunu yaparken öğreniyor olması anlaşılır, ama gerçekten önemli sırlarla çalışan insanların bu tür hatalar yapmaması gerekir
Yine de büyük miktarda gerçek rastgelelik üretmek kolay değil. Sonuçta özel bir donanım cihazı yapmak gerekirdi ve ticari ekipmanların çoğu da muhtemelen kurcalanmış olurdu
“Eski” ZIP şifresini kırmanız gerekiyor ve arşivin içindeki birkaç karakteri biliyorsanız bundan daha iyisi yok: https://github.com/kimci86/bkcrack