Python'ın e-pasaport sertifikalarında karşılaştığı ayrıştırma sorunu OpenSSL ile çözüldü
Öne çıkanlar
- Python cryptography kütüphanesi, katı ASN.1 kuralları nedeniyle üç ülkenin 6 resmi pasaport sertifikasını ayrıştıramadı.
- OpenSSL x509 ayrıştırıcısı söz konusu sertifikalardaki fazlalık baytları tolere ederek okuma işlemini tamamladı.
- csca-masterlist-tools aracı standart Python ayrıştırması başarısız olduğunda OpenSSL yedeğini devreye sokuyor.
Açık kaynaklı csca-masterlist-tools projesinin geliştiricisi, elektronik pasaport doğrulama altyapılarında kullanılan ICAO ve BSI Master List dosyalarını ayrıştıran yeni bir Python aracı yayımladı. Geliştirici, Almanya'nın yayımladığı güncel ana listedeki 581 sertifikayı incelerken standart Python cryptography kütüphanesinin altı resmi devlet sertifikasını reddettiğini tespit etti.
Python cryptography paketinde yer alan Rust tabanlı katı ASN.1 ayrıştırıcısı, imza algoritması tanımlayıcılarındaki fazlalık baytlar nedeniyle Avusturya, Birleşik Arap Emirlikleri ve Japonya'ya ait canlı pasaport kök sertifikalarını okuyamadı. Bu sertifikaların göz ardı edilmesi, ilgili ülkelerin pasaportlarının doğrulama süreçlerinde 'bilinmeyen sertifika sağlayıcısı' hatası vermesine yol açıyor. OpenSSL kütüphanesinin ise bu biçim bozukluklarını tolere ederek söz konusu sertifikaları başarıyla okuyabildiği görüldü.
Yayımlanan araç, katı DER ayrıştırma kuralları nedeniyle Python tarafından reddedilen sertifikalar için otomatik olarak OpenSSL x509 yedeğini devreye sokuyor. Geliştirici, tek dosyalık bu betiğin elektronik pasaportlardaki güven zincirini dışa aktarmak için PEM ve TSV formatlarında çıktı ürettiğini belirtti.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.