- İlk 1 milyon web sitesinin incelenmesinde 1.024 bitin altında DKIM açık anahtarı olan 1.700’den fazla kayıt bulundu ve deney, redfin.com’un 512 bit RSA DKIM anahtarının gerçekten kötüye kullanılıp kullanılamayacağını doğruladı
- DKIM kaydındaki
petiketi çözülerek RSA modülünve açık üse=65537elde edildi, ardından modül CADO-NFS ile çarpanlarına ayrıldı - Hetzner’in 8 dedicated vCPU, 32GB RAM sunucusunda yaklaşık 86 saatte
n, iki asal sayıpveqolarak ayrıldı ve buna dayanarak RSA özel anahtarı yeniden oluşturuldu - Yeniden oluşturulan özel anahtarla
security@redfin.comgönderen adresli e-postalar imzalandığında Gmail ve Outlook bunları reddetti, ancak Yahoo Mail, Mailfence ve Tutadkim=passdöndürdü - redfin.com’un
p=reject; pct=100DMARC politikası altında DKIM doğrulamasının geçmesi, DMARC doğrulamasının da geçmesi anlamına geldiğinden, e-posta sağlayıcılarının 1.024 bitin altındaki RSA DKIM imzalarını reddetmesi gerekiyor
Hâlâ kalan 512 bit DKIM anahtarı sorunu
- İlk 1 milyon web sitesindeki SPF, DKIM, DMARC kayıtları araştırmasında uzunluğu 1.024 bitin altında olan 1.700’den fazla açık DKIM anahtarı bulundu
- 1.024 bitin altındaki RSA anahtarları güvenli kabul edilmiyor ve DKIM’de bunların kullanımı 2018 tarihli RFC 8301 sonrasında kullanım dışına çıkarılması tavsiye edilen durumda
- Deneyin hedefi,
key1._domainkey.redfin.comüzerinde bulunan 512 bit RSA açık anahtarıydı - Amaç, yalnızca açık anahtardan özel anahtarı geri üretip e-postaları alan adının gerçek göndericisinden geliyormuş gibi imzalamanın mümkün olup olmadığını doğrulamaktı
- Ayrıca Gmail, Outlook.com ve Yahoo Mail gibi büyük e-posta sağlayıcılarının kısa anahtarlarla oluşturulan DKIM imzalarını kabul edip etmediği de test edildi
DKIM açık anahtarından RSA bileşenlerinin çıkarılması
- DKIM kaydının
petiketinde açık anahtar, önce ASN.1 DER biçiminde kodlanmış, ardından tekrar Base64 ile kodlanmış halde bulunur - Python’daki
Crypto.PublicKey.RSA.import_keyile açık anahtar okunarak RSA bileşenleri çıkarıldı- Modül
n:10709580243955269690347257968368575486652256021267387585731784527165077094358215924099792804326677548390607229176966588251215467367272433485332943072098119 - Açık üs
e:65537
- Modül
CADO-NFS ile modülün çarpanlara ayrılması
- RSA özel anahtarını oluşturmak için modül
n’in iki asal sayıpveqçarpımı olarak ayrıştırılması gerekiyor - Çarpanlara ayırma için CADO-NFS kullanıldı
- CADO-NFS, büyük tamsayıların çarpanlara ayrılmasında kullanılan Number Field Sieve (NFS) algoritmasının bir uygulamasıdır
- Yerel bilgisayarı günlerce meşgul etmemek için Hetzner bulut sunucusu kiralandı
- Sunucu özellikleri: 8 dedicated vCPU, AMD EPYC 7003 serisi, 32GB RAM
- İşletim sistemi Ubuntu
- İş için yeterli belleği sağlamak amacıyla 32GB swap eklendi
- Modül
n,cado-nfs.pyaracına verilerek çarpanlara ayırma işlemi başlatıldı - Tüm işlem 8 vCPU’lu sunucuda yaklaşık 86 saat sürdü ve
nşu iki asal sayıya ayrıldıp = 97850895333751392558280999318309697780438485965134147739065017624372104720767q = 109447953515671602102748820944693252789237215829169932130613751100276125683257
- Daha güçlü bir sunucu veya birden fazla sisteme dağıtılmış çalışma ile süre kısaltılabilir; CADO-NFS dağıtık çalışmayı da kolaylaştırıyor
RSA özel anahtarının yeniden oluşturulması
p,qveeelde edildikten sonra Python ve PyCryptodome ile RSA özel anahtarı oluşturuldu- Hesaplamada şu değerler ve adımlar kullanıldı
n = p * qphi = (p-1) * (q-1)d = inverse(e, phi)RSA.construct((n, e, d, p, q))
- Sonuç PEM biçiminde bir RSA özel anahtarıydı ve test e-postalarını imzalamak için OpenDKIM yapılandırmasına entegre edildi
E-posta sağlayıcılarına göre DKIM doğrulama sonuçları
- Yeniden oluşturulan özel anahtar OpenDKIM’e eklenerek
security@redfin.comFROM adresiyle test e-postaları çeşitli e-posta barındırma hizmetlerine gönderildi - Sağlayıcıların çoğu 512 bit anahtarı güvensiz sayarak DKIM imzasını reddetti, ancak üçü
dkim=passdöndürdü - Sağlayıcılara göre sonuçlar şöyleydi
- Gmail: FAIL
- Outlook: FAIL
- Yahoo Mail: PASS
- Zoho: FAIL
- Fastmail: FAIL
- Proton Mail: FAIL
- Mailfence: PASS
- Tuta: PASS
- GMX: FAIL
- OnMail: FAIL
- redfin.com,
v=DMARC1;p=reject;pct=100;...biçiminde geçerli bir DMARC kaydına sahip - redfin.com için DKIM doğrulamasının geçmesi, DMARC doğrulamasının da geçmesi anlamına geldi ve BIMI gereksinimlerini de karşıladı
Maliyet ve operasyonel önlemler
- 30 yıl önce 512 bit RSA açık anahtarını kırmak süper bilgisayar düzeyinde bir işti, ancak bugün bu işlem bir bulut sunucusunda 8 ABD dolarının altında gerçekleştirilebiliyor
- 16 çekirdek veya daha fazlasına sahip güçlü bir ev bilgisayarı varsa bu işlem daha hızlı ve daha ucuza da yapılabilir
- 512 bit veya 768 bit DKIM anahtarlarını kullanmaya devam etmek için bir neden yok; e-posta sağlayıcıları 1.024 bitin altındaki RSA anahtarlarıyla oluşturulan DKIM imzalarını otomatik olarak reddetmeli
- Yahoo, Mailfence ve Tuta’ya deney sonuçları ve öneriler iletildi
- Alan adı sahipleri DNS yapılandırmalarındaki eski DKIM kayıtlarını kontrol etmeli
- DKIM kaydındaki
petiketi, Base64 karakter sayısı sayılarak kolayca kontrol edilebilir - 1.024 bit RSA açık anahtarı Base64 olarak en az 216 karakter uzunluğundadır
- DKIM kaydındaki
1 yorum
Hacker News yorumları
14 yıl önce bile 512 bit DKIM RSA anahtarlarını kırmak mümkündü: https://blog.jgc.org/2010/06/facebooks-dkim-rsa-key-should-b...
Kısa anahtarlar DKIM imzalarının uzun süre kanıt olarak kalmamasını sağladığı için, daha sonra bir e-postanın gerçekten gönderilip gönderilmediğini kanıtlamayı zorlaştıran inkâr edilebilirliği koruyabileceği düşünülüyordu.
Elbette çoğu şirketin kısa anahtar kullanma nedeninin bu olduğu anlamına gelmiyor; sadece kısa anahtarların tamamen kötü olmadığı yönünde bir hava vardı.
DKIM inkâr edilebilirliği kişisel olarak uzun süredir kafamı kurcalayan bir konu [1]; bu tür kısa anahtarlar açıkça çözüm değil, ama bunu DKIM etrafındaki karmaşık düşünce biçiminin ve topluluğun tüm e-posta imza sistemlerinin sonuçlarını kabullenmek istememesinin bir sonucu olarak görüyorum.
[1] https://blog.cryptographyengineering.com/2020/11/16/ok-googl...
https://www.wired.com/2012/10/dkim-vulnerability-widespread/
Kabaca 14 yıl içinde birkaç haftadan 8 saate düşmüş diyebiliriz.
Eğlencesine denemek isterseniz 4096 bit DKIM anahtarı oluşturabilirsiniz.
Çevrimiçi DKIM/SPF denetleyicileri yalnızca DNS'e bakınca her şeyin doğru olduğunu söyler, ama test e-postası başarısız olur.
STATUS: Fail,DKIM: Pass,SPF: Passgibi harika bir açıklama gösterir.DKIM kaydında 2048 bitten büyük anahtar kullanmak izin verilen ve geçerli bir şeydir; ancak doğrulayıcıların 2048 bitten büyük anahtarları mutlaka işlemesi gerekmiyordu.
Bunu yaşayarak öğrenirken biraz saç kaybettim.
İlginç şekilde siteler üç öğenin de doğru ve geçerli olduğunu söylerken e-posta başarısız sayılır.
Muhtemelen DNS kaydı kontrolünü ve e-posta doğrulamasını farklı yazılımlar yaptığı içindir.
Doğrulayıcıların 512 bitten 2048 bite kadar anahtarlara sahip imzaları doğrulayabilmesi gerektiği, daha büyük anahtarları da doğrulayabileceği belirtiliyor.
Bir yıl önce bu konuda yüksek lisans tezi yazdım; bugün büyük e-posta sağlayıcılarının hepsi 4096 biti destekliyordu, bazıları 16384 bite kadar da destekliyordu.
Neden tüm kriptografide genel olarak anahtar boyutlarını çok daha fazla artırmadığımızı merak ediyorum.
Çözüm olmasa bile zaman kazandıran bir önlem gibi görünüyor.
İşlem performansı hızla artıyor, kuantum bilgisayar konusu da sürekli gündeme geliyor; buna rağmen herkes yerinde sayıyor gibi.
Elbette büyük anahtarların hesaplama maliyeti daha yüksek, ama bizim de hesaplama kaynaklarımız arttığına göre bunları sadece saldırıda değil savunmada da kullanmamız gerekmez mi?
İstemci tarafında TLS 1.2 yerine TLS 1.3'ü zorunlu kılmak gibi basit bir şey bile birçok şeyi bozuyor; HN sitesi de buna dahil.
Bu sayılar cihaz teknolojisi düzeyiyle değil, termodinamiğin izin verdiği maksimumlarla ilgili.
Sonuç olarak AES-256 veya RSA-4096'yı kaba kuvvetle kırmak fiziksel olarak imkânsız.
1024 bit anahtarlar birçok kripto sisteminde 10 yılı aşkın süredir aşamalı olarak kaldırılıyor.
Geride kalmış tek tük bir istisna dışında durum bu; 2048 bit anahtarları tehdit eden tek şey kuantum bilgisayar, o da RSA'nın kendisini tehdit ediyor.
İlerleme doğrusal olmadığı için 1024 zayıfladı diye 2048'in de mekanik olarak yakında çökeceği anlamına gelmez; 1024'e karşı bile bugün pratik saldırı yapmak kolay değil.
DKIM istisnalardan biri.
DKIM tarafında Ed25519'un yaygın benimsenmesini bekliyoruz; bu olursa birçok sıkıntı çözülecek.
Genellikle bu acı hizmet işletmecisine değil doğrudan kullanıcıya yansır; model de kullanıcının çok şikâyet edip işletmecinin ilgilenmesini ummaya dayanır.
Ama kullanıcıların, güvenlik gibi küçük bir şeyin satışa engel olmasını önleyen bir rakibe geçme ihtimali de yüksek.
Aslında “zaten yaptığımız şeyi neden yapmıyoruz?” diye sormak gibi.
CADO-NFS kullanırsanız şaşırtıcı derecede kolay yapılabiliyor.
Birkaç hafta önce iş nedeniyle masaüstü bilgisayarımla 512 bit RSA DKIM anahtarını çarpanlarına ayırdım; yalnızca 28 saat sürdü.
Spesifik olarak AMD Zen 5 9900X'ti.
Ne yazık ki 1024 bit anahtarlar hobi düzeyinde bir çabayla hâlâ zor, ama 2010'da 768 bit anahtarı çarpanlarına ayıran ölçekte bir akademik projeyle mümkün olabilir: https://eprint.iacr.org/2010/006.pdf
Dün Bank of America’dan hesap ayarıyla ilgili bir sorun hakkında e-posta aldım
Yeni bir hesap açtığım doğruydu; e-posta da bunu, şirket adını vb. biliyordu
Hiç bağlantı yoktu, yalnızca BofA’nın işletme numarasını aramam söyleniyordu; BofA web sitesinden numarayı doğruladığımda aynıydı, ben de aradım
Ama e-postayı neden aldığımı ya da hesapta ne sorun olduğunu kimse söyleyemedi; müşteri temsilcisi bu e-postanın gönderim kaydını da bulamadı
Bu e-postanın Bank of America’dan geldiğinden %100 eminim
Kimlik avı unsuru yoktu; bağlantı da yoktu, kötü niyetli bir telefon numarası da yoktu
SPF, DKIM ve DMARC’nin hepsi Google’ın ARC-Authentication-Results kayıtlarında geçti; DKIM anahtarı da 2048 bitti
Bank of America’dan araştırmasını istedim; “muhtemelen kimlik avı mesajıydı” deyip kimlik avına karşı dikkat edilmesi gerekenlerle ilgili bir bağlantı gönderdiler
Büyük olasılıkla hesap oluşturma sırasında tutarlılık kontrolünü fazla erken çalıştıran bir sistemin e-posta üretmesinden ibaret basit bir hataydı
Ama onlar “kimlik avı” dedikleri için tüm materyali ekleyip CTO’ya FedEx ile gönderdim
İki ihtimal var: Ya DKIM anahtarı sızdı ve derhal kamuya açık bir uyarı yayımlamaları gerekiyor ya da beceriksiz çalışanlar ve BT sistemleri beni oradan oraya koşturup bir saatimi boşa harcadı
Her iki durumda da eksiksiz bir inceleme ve çözüm istiyorum
Bazı DNS sağlayıcıları berbat; yalnızca 1024 bit uzunluğunda anahtarlara kadar ayarlamaya izin veriyor
Örneğin wordpress.com böyle
Referans olarak, kırılan son RSA sayısı RSA-250, yani 829 bitti ve 2020’de 2700 çekirdek-yıl sürdü [1]
Buna karşılık RSA-155, yani 512 bit, daha 1999’da çarpanlarına ayrılmıştı
Tehlikeli bir durumda değil
[1]: https://sympa.inria.fr/sympa/arc/cado-nfs/2020-02/msg00001.h...
Gerekçesi yeterli güvenlik seviyesi sağlamaması
NSA’i durduracak düzeyde değil ama DKIM’in birden fazla koruma katmanından biri olduğu düşünülürse spam gönderenleri durdurmak için yeterli görünüyor
TXT kayıt boyutunda bir sınır mı var, yoksa DKIM’e benzeyen TXT kayıtlarını özellikle ayrıştırmaya çalışıp başarısız olunca eklemeyi mi reddediyorlar, merak ediyorum
İyi bir gösterim için 512 bit anahtarı kırmak, daha önce yapılmış olsa bile çok değerli bir güvenlik araştırmasıdır
“Hâlâ 512 bit kullanan yerlerin listesi burada, geçiş yapmaları gerekiyor” diye bunu kamuya açıklamak da meşrudur
Ama üretimdeki gerçek dünya anahtarını doğrudan kırmak bana kişisel olarak etik sınırı aşmak gibi geliyor ve rahatsız edici
Avukat değilim ama suç da olabilir gibi görünüyor; biraz gereksiz de duruyor
Orijinal metinde
now no longer availableifadesini aramanız yeterliGenelde çevrimiçi bir sistemin savunmasız olduğunu gösterirken iyi niyetle zafiyet yeniden üretilir, araştırma belgelenir ve inceleme istenir
Bir kriptografik sistemi kırmak da olsa, kilitli bir oyun konsolunda rastgele kod çalıştırma elde etmek de olsa, oy verme makinesinin verilerinin değiştirilebildiğini kanıtlamak da olsa, Google Meet Soru-Cevap yorumlarının düzenlenebildiğini göstermek de olsa süreç aynıdır
Sadece savunmasız olduğunu söylerseniz görmezden gelinebilir; savunmasız olduğunu söyleyip kanıtlarsanız görmezden gelmek zorlaşır
Buna sektör standardı bir açıklama süresi ekleyip yaklaşık 60 gün boyunca iletişim kurmaya çalıştıktan sonra zafiyeti açıklayacağınızı söylerseniz, görmezden gelme alanı fiilen ortadan kalkar
Bu yalnızca matematiktir
Bu matematiğe dayanarak dolandırıcılık yapmak ya da belirli bir yargı alanındaki yasaları ihlal eden e-postalar göndermek yasa dışıdır
Esas mesele matematik değil, eylem ve niyettir
Birinin aptalca bir şey yaptığını işaret etmek de yasa dışı değildir; ama onlar hayatınızı zorlaştırmaya çalışabilir
“Bir hatanın istismar edilebilir olduğunu göstermek sorun değil ama kavram kanıtı kodu yazmak çizgiyi aşar” gibi
Sorun şu ki, gerçekten mümkün olduğunu göstermediğiniz sürece çoğu kişi güvenlik araştırmasını dinlemiyor
Bunun yerine, DKIM RFC’sini düzgün izlemeyen 10 büyük e-posta sağlayıcısından 3’ü, yani Yahoo, Tuta, Mailfence, bildirimden sonra açıklandı
Hover ile DNS yönetimini bırakmak zorunda kalmamın nedeni buydu
255 karakterden uzun TXT kayıtlarını desteklemiyor ve Hover’da bölünmüş kayıtların çalıştığına dair bir örnek de bulamadım
Sonunda Digital Ocean kullanmaya başladım
Bu sorun bir 10 yıl daha sürecekse eliptik eğri kriptografisinin standart hâline gelmesini isterim
“Çoğu sağlayıcı 512 bit anahtarı doğru şekilde güvensiz olarak tanımlayıp DKIM imzasını reddetti, ancak üç büyük sağlayıcı — Yahoo Mail, Mailfence, Tuta — dkim=pass bildirdi” kısmında, Google’ın gerçekten DKIM imzası güvensiz olduğu için mi başarısız olduğunu, yoksa SPF başarısızlığı yüzünden mi başarısız olduğunu merak ediyorum
dkim=policy (weak key)sonucuyla başarısız oldu“Doğrulayıcılar, 1024 bitten küçük RSA anahtarı kullanan imzaları geçerli imza olarak kabul etmemelidir” şartının aynısı
512 bit sayısının büyük mü küçük mü olduğu, bunun simetrik şifreleme mi yoksa asimetrik şifreleme mi olduğuna bağlıdır
Asimetrik şifrelemenin her zaman simetrik şifrelemeden 8 kat daha zayıf olduğu varsayılabilir
DKIM asimetrik bir yöntem olduğu için 512 bit DKIM, simetrik hash ölçütünde 64 bite karşılık gelir ve çoktan kırılmış sayılacak bir düzeydedir
160 bit SHA-1 bile kırılmış kabul edilir
512 bit SHA-3 ile benzer güçte bir DKIM için en az 4096 bit gerekir; yine de bu, SHA-3'ün yeniden gönderim saldırılarını azaltma tekniklerini kapsadığı anlamına gelmez
E-posta başlığına imza ekleyip bunu doğrulayan bir standarttır
Ne yazık ki DKIM yalnızca
rsa-sha1versa-sha256imzalarını destekler: https://datatracker.ietf.org/doc/html/rfc6376/#section-3.3DKIM'in revize edilip Ed25519 veya benzeri imzalara izin vermesi iyi olurdu
Örneğin 224 bit ECC, kabaca 2048 bit RSA'ya benzer
İkisi de asimetrik yöntemlerdir
Buna karşılık asimetrik eliptik eğri, simetrik şifreleme olan AES'e benzer güçtedir
Elbette kuantum bilgisayarlara karşı savunmasızdır