Sözlük / Geliştirici başvuru kaynağı
PP pki type
- PP pki type nedir?
- PP pki type, bir BIP70 ödeme talebinde satıcının onu nasıl imzaladığını belirten tek kelimelik dizeydi: none, SHA-256 ile x509 veya SHA-1 ile x509.
Tanımlandığı belge: BIP-70.
Bir şeyi imzalayan her protokol algoritmayı adlandırmak zorundadır ve bunu gönderenin denetlediği bir alanda adlandırmak, downgrade saldırılarının başladığı yoldur. BIP70 üç değer sunuyordu ve bunlardan biri, şartname yazılmadan önce yıllardır zayıf sayılıyordu. Tarayıcılar SHA-1 sertifikalarını Ocak 2017 itibarıyla tamamen kaldırdı ve ödeme protokolü hiçbir güncelleme yayımlamadı.
Nasıl çalışır
Durum: tarihsel. PP pki type, PaymentRequest içindeki 2 numaralı alandı, varsayılan değeri "none" dizesiydi ve 3 Haziran 2020 tarihli 0.20.0 sürümünden beri Bitcoin Core yazılımında yer almıyor.
Üç değer tanımlandı ve şartname dördüncüsüne yer bıraksa da hiçbir zaman dördüncü bir değer kaydedilmedi.
"none" imzalanmamış bir talep anlamına geliyordu. Sertifika alanı boş kalıyordu, imza alanı boş kalıyordu ve bir cüzdan tutarı ve hedefi gösterebiliyor ama hiçbir kimlik gösteremiyordu. Dolaşımdaki taleplerin çoğu tam olarak böyleydi.
"x509+sha256", satıcının tüm mesajı imza alanı boş bırakılmış halde serileştirdiği, sonucu SHA-256 ile özetlediği ve bu özeti ekli zincirdeki ilk sertifikaya ait özel anahtarla imzaladığı anlamına geliyordu.
"x509+sha1", SHA-256 yerine SHA-1 kullanılan aynı prosedür anlamına geliyordu.
Zayıf seçeneği sunmak işin ilginç kısmı. Gönderenin adlandırdığı algoritmayı ne olursa olsun kabul eden bir doğrulayıcı, yalnızca hâlâ kabul ettiği en kötü algoritma kadar güçlüdür; bu yüzden sonraki tasarımlar kabul edilebilir kümeyi mesajdan okumak yerine doğrulayan tarafta sabitler. SHA-1, 2013 yılında bile kötü bir adaydı. 2005 yılında kaba kuvvetten daha hızlı bir çakışma saldırısı yayımlandı ve NIST, 2013 sonrasında yeni dijital imza üretmek için SHA-1 kullanımını yasakladı. Sertifika otoriteleri 2015 sonunda SHA-1 sertifikası vermeyi bıraktı, Chrome 56 Ocak 2017 itibarıyla bunlara güvenmeyi bıraktı ve bir ay sonra tam bir kamuya açık çakışma gerçekleşti.
Nerede karşınıza çıkar
Bitcoin'in kendisi, gönderenin adlandırdığı imza algoritmasına karşı örneği sunar ve bunu akılda tutmakta yarar var.
Bir Bitcoin işlemi, imza algoritmasını onu doğrulayan hiç kimseyle asla müzakere etmez. Harcanan çıktı soruyu kesin olarak yanıtlar: Taproot öncesi bir çıktı secp256k1 üzerinde ECDSA ile kontrol edilir ve bir Taproot anahtarına ödeme yapan bir çıktı, Kasım 2021'de 709.632 numaralı blokta etkinleşen bir kural olan BIP340 uyarınca Schnorr ile kontrol edilir. Harcayan kişi kırılması daha ucuz bir şey öneremez, çünkü seçim bitcoinler alındığında sabitlenmiştir.
Bu fark, sertifika tabanlı bir katmanın Bitcoin'in üzerinde neden bu kadar kötü durduğunu açıklar. Mutabakat kuralları herkese aynı şekilde uygulanır ve yalnızca koordineli bir yükseltmeyle değişir; oysa bir algoritmayı adlandıran alan bir müzakeredir ve müzakereler downgrade edilir.
Yazılım yazmak yerine nereden satın alacağınızı seçiyorsanız, işe yarayan sürüm dar ama gerçektir. Eskimiş bir kriptografik seçeneği “uyumluluk için” canlı tutan bir platform, kolaylığı güvenliğe karşı nasıl tarttığını size söylüyor demektir ve bu yargı, sistemin inceleyemediğiniz parçaları için de geçerlidir.
PP pki type vs SSL imzası
PP pki type bir şemayı adlandırıyordu; SSL imzası onun çalıştırılmasının çıktısıydı. İkisini tek bir şey olarak ele almak eski BIP70 belgelerini kafa karıştırıcı hale getirir, çünkü bir talep bir tür adlandırıp hiç imza taşımayabilirdi; "none" tam olarak bunu anlatıyordu. Modern TLS aynı eşleştirmeyi korur, imza baytlarının yanında kaydedilen bir algoritma tanımlayıcısı bulunur, ancak bir istemci artık bir zamanlar geçerli olan her tanımlayıcıyı kabul etmez.