Parola korumalı ZIP arşivleri, hassas belgelerden kötü amaçlı yazılım örneklerine ve hatta kötü amaçlı dosyalara (yani e-postalardaki kimlik avı “faturaları”) kadar dosya gruplarını sıkıştırmanın ve paylaşmanın yaygın yoludur.
Ancak, şifreli bir ZIP dosyasının, ZIP ayıklandığında her ikisinin de aynı sonucu vermesiyle iki doğru parolaya sahip olmasının mümkün olduğunu biliyor muydunuz?
İki şifreli bir ZIP dosyası
Arseniy SharoglazovPositive Technologies’de bir siber güvenlik araştırmacısı olan Positive Technologies’de hafta sonu, şifre korumalı bir ZIP dosyası oluşturduğu basit bir deneyi paylaştı. x.zip.
Sharoglazov’un ZIP’sini şifrelemek için seçtiği şifre bir oyundu. 1987 vuruşu bu popüler bir teknoloji memesi haline geldi:
Nev1r-G0nna-G2ve-Y8u-Up-N5v1r-G1nna-Let-Y4u-D1wn-N8v4r-G5nna-D0sert-Sen
Ama araştırmacı gösterdi yani çıkarırken x.zip tamamen farklı bir şifre kullanarak hiçbir hata mesajı almadı.
Aslında, farklı parolanın kullanılması, orijinal içeriği bozulmadan ZIP’nin başarılı bir şekilde çıkarılmasıyla sonuçlandı:
pkH8a0AqNbHcdw8GrmSp

BleepingComputer, farklı ZIP programları kullanarak deneyi başarıyla yeniden oluşturabildi. ikisini de kullandık p7zip (macOS için 7-Zip eşdeğeri) ve adı verilen başka bir ZIP yardımcı programı Çek.
Araştırmacının ZIP arşivi gibi, bizimki de yukarıda bahsedilen daha uzun şifre ile oluşturuldu ve AES-256 şifreleme modu etkinleştirilmiş.
ZIP, daha uzun parolayla şifrelenirken, her iki parolanın kullanılması da arşivi başarıyla çıkardı.
Bu nasıl mümkün olabilir?
Meraklı bir okuyucu olan Sharoglazov’un demosuna yanıt veren, rafa önemli bir soru sordu, “Nasıl????”
twitter kullanıcısı Unblvr gizemi çözmüş gibi görünüyor:
AES-256 modu etkinken parola korumalı ZIP arşivleri üretirken, ZIP formatı aşağıdakileri kullanır: PBKDF2 algoritma ve şifreyi hash eder şifre çok uzunsa kullanıcı tarafından sağlanır. Araştırmacı, çok uzun derken, 64 bayttan (karakter) daha uzun demek istiyoruz, diye açıklıyor.
Kullanıcının seçtiği şifre yerine (bu durumda “Nev1r-G0nna-G2ve-…”) bu yeni hesaplanan karma, dosyanın gerçek parolası olur.
Kullanıcı dosyayı çıkarmaya çalıştığında ve 64 bayttan uzun bir parola girdiğinde (“Nev1r-G0nna-G2ve-… “), kullanıcının girdisi bir kez daha ZIP uygulaması tarafından özetlenecek ve doğru parolayla karşılaştırılacaktır (bu, artık bir karmadır). Bir eşleşme, başarılı bir dosya çıkarımına yol açacaktır.
Bu örnekte kullanılan alternatif parola (“pkH8a0AqNbHcdw8GrmSp“) aslında daha uzun parolaların ASCII temsilidir. SHA-1 karma.
“Nev1r-G0nna-G2ve-…” için SHA-1 sağlama toplamı = 706b4838613041714e62486364773847726d5370.
Bu sağlama toplamı dönüştürülmüş ASCII’ye şunu üretir: pkH8a0AqNbHcdw8GrmSp
Ancak, bir dosyayı şifrelerken veya şifresini çözerken, karma işleminin yalnızca parolanın uzunluğu 64 karakterden fazlaysa gerçekleştiğini unutmayın.
Başka bir deyişle, daha kısa parolalar, ZIP’nin sıkıştırılmasının veya sıkıştırılmasının açılmasının her iki aşamasında da hash edilmeyecektir.
Bu yüzden uzun olanı seçerken “Nev1r-G0nna-G2ve-… ” dize şifreleme aşamasında parola olarak, ZIP programı tarafından ayarlanan gerçek parola etkin bir şekilde bu dizenin (SHA1) karmasıdır.
Şifre çözme aşamasında, “Nev1r-G0nna-G2ve-…,” hash edilecek ve önceden saklanan şifreyle (SHA1 hash’i olan) karşılaştırılacaktır. Ancak, şifre çözme aşamasında daha kısa olan “pkH8a0AqNbHcdw8GrmSp” şifresinin girilmesi, uygulamanın bu değeri doğrudan depolanan şifreyle karşılaştırmasını sağlayacaktır (yani, yine SHA1 karma).
bu HMAC çarpışmaları Wikipedia’daki PBKDF2’nin alt bölümü, ilgilenen okuyuculara biraz daha teknik bilgi sağlar.
Girişte, “PBKDF2, HMAC’yi sözde rastgele işlevi olarak kullanırken ilginç bir özelliğe sahiptir. Her bir çiftte çarpışmalarla herhangi bir sayıda farklı parola çiftini önemsiz bir şekilde oluşturmak mümkündür”, diye belirtiyor.
“Sağlanan bir parola, temel alınan HMAC karma işlevinin blok boyutundan daha uzunsa, parola önce bir özette önceden karma oluşturulur ve bunun yerine bu özet parola olarak kullanılır.”
Ancak, aynı ZIP için iki olası parolanın olması, bir güvenlik açığını temsil etmemektedir, çünkü “parolanın karmasını oluşturmak için yine de orijinal parolayı bilmek gerekir”, giriş ayrıca açıklıyor.
Mükemmel bir şifreye ulaşmak
Burada dikkat edilmesi gereken ilginç bir önemli husus, her SHA-1 karmasının ASCII temsillerinin alfanümerik olması gerekmediğidir.
Diğer bir deyişle, bu deney sırasında ZIP dosyamız için aşağıdaki şifreyi seçtiğimizi varsayalım. Şifre 64 bayttan uzun:
Bl33pingC0mputer-Sh0w-M3-H0W-t0-pR0Duc3-an-eNcRyPT3D-ZIP-En basit şekilde dosya
SHA-1 sağlama toplamı şu şekilde çıkıyor: bd0b8c7ab2bf5934574474fb403e3c0a7e789b61
Ve bu sağlama toplamının ASCII temsili anlamsız bir bayt kümesine benziyor – araştırmacı tarafından deneyi için oluşturulan alternatif parola kadar zarif değil:

BleepingComputer, Sharoglazov’a SHA-1 sağlama toplamı ASCII gösteriminin temiz, alfasayısal bir dize verecek şekilde olacağı bir parolayı nasıl seçebildiğini sordu.
Araştırmacı, BleepingComputer’a “Bu yüzden hashcat kullanıldı” diyor.
Açık kaynak şifre kurtarma aracının biraz değiştirilmiş bir sürümünü kullanarak, hashcataraştırmacı mükemmel bir parolaya ulaşana kadar alfasayısal karakterler kullanarak “Senden Asla Vazgeçmeyeceğim…” dizesinin varyasyonlarını oluşturdu.
“Test ettim Nev0r, Nev1r, Nev2r vesaire… Ve ihtiyacım olan şifreyi buldum.”
Ve Sharoglazov, kabaca “Senden Asla Vazgeçmeyeceğim…” gibi bir parolaya bu şekilde ulaştı, ancak SHA-1 sağlama toplamının ASCII temsili, düzgün bir alfasayısal dizedir.
Çoğu kullanıcı için, parola seçimi ile parola korumalı bir ZIP dosyası oluşturmak yeterli olacaktır ve tüm bilmeleri gereken de budur.
Ancak maceracı olmaya karar verirseniz, bu deney, korunan sırrınız için iki parolaya sahip olmak gibi, şifreli ZIP’leri çevreleyen birçok gizemden birine bir göz atmanızı sağlar.