Sözlük / Düğümler ve yazılım
BIP-324 şifreli taşıma
Diğer adları: v2 transport.
- BIP-324 şifreli taşıma nedir?
- BIP-324 şifreli taşıma, Bitcoin'in eşler arası bağlantı protokolünün 2. sürümüdür; iki düğüm arasında alınıp verilen her mesajı şifreler ve bağlantıyı dinleyen biri için rastgele veriden ayırt edilemez hale getirir.
Tanımlandığı belge: BIP-324.
BIP-324 destekleyen iki düğüm, herhangi bir Bitcoin mesajı gönderilmeden önce geçici bir anahtar takası yapar ve ardından her mesajı ChaCha20Poly1305 ile sarar. Şartname 10 Temmuz 2024 tarihinde final olarak işaretlendi ve bir düğüm desteğini NODE_P2P_V2 hizmet bayrağıyla, yani 11 numaralı bit ile duyurur. Varlıklarınızla ilgili hiçbir şey değişmez: değişen şey, pasif bir gözlemcinin düğümünüzün aktardığı işlemleri artık okuyamamasıdır.
Nasıl çalışır
BIP-324, eskiden bir Bitcoin bağlantısını açan sabit sihirli baytların yerine hiçbir tanınabilir biçimi olmayan bir akış koyar.
Dışarı arayan taraf tek kullanımlık bir secp256k1 anahtarı üretir ve genel anahtarının 64 baytlık ElligatorSwift kodlamasını gönderir. Hile bu kodlamadadır: sıradan bir genel anahtar eğri noktası olarak tanımlanabilirken her 512 bitlik dizi geçerli bir ElligatorSwift kodlamasıdır, dolayısıyla açılış baytları istatistiksel olarak yalnızca gürültüdür. Ardından iki taraftan herhangi biri, çöp (garbage) adı verilen en fazla 4095 baytlık keyfi dolgu ekleyebilir; böylece bir bağlantının tam olarak 64 baytla başlaması gerekmez. İki uç da X-only ECDH çalıştırır ve sonucu HKDF-SHA256 üzerinden geçirerek dört şifreleme anahtarı, iki 16 baytlık çöp sonlandırıcı ve bir oturum kimliği türetir.
Bu açılış baytları, takasın açık olarak gönderilen tek parçasıdır. Sonlandırıcılardan sonra hatta giden her şey pakettir. Bir paket, 3 baytlık şifreli bir uzunluk alanından ve ardından 1 baytlık bir başlığı ve içeriği kapsayan bir ChaCha20Poly1305 şifreli metninden oluşur; maliyeti, yükün üzerine 20 bayttır. Bu başlığın en üstteki biti yoksayma bitidir ve onu taşıyan paket bir yemdir: alıcı paketin şifresinin çözüldüğünü doğrular ve sonra onu atar; bir düğümün, gerçek bir mesajın gönderildiği anı gizlemek için trafiğine dolgu ekleyebilmesi bu sayede mümkün olur. Anahtarlar her 224 pakette bir ileri doğru sıçrar; bu aralık, yalnızca 20 dakikalık pingler gönderen neredeyse boş bir bağlantının kabaca her 3,11 günde bir anahtar yenilemesi için seçilmiştir ve bir oturuma ileriye dönük gizlilik kazandıran da bu sıçramadır.
Tasarım, karşı tarafta kimin olduğunu kanıtlamanın bilinçli olarak gerisinde kalır. Sertifika yoktur ve kimlik yoktur, bu yüzden kararlı bir ortadaki adam saldırganı hâlâ iki düğümün arasına yerleşebilir. Yapamadığı şey, orada ucuza ya da görünmez biçimde oturmaktır: oturum kimliği anahtar takasından çıkar ve oturum kimliklerini birbirine okuyan iki operatör, arada biri olduğunda her seferinde farklı değerler görür.
Nerede görülür
BIP-324 blok zincirinde hiçbir iz bırakmaz, dolayısıyla göründüğü tek yer çalışan iki düğümün arasıdır.
Destek, adres dedikodusunda eşlerin addr ve addrv2 mesajlarından öğrendiği NODE_P2P_V2 bayrağıyla duyurulur. Bu bayraklar güvenilmeyen aktarıcılardan geçer ve birbirine OR ile birleştirilir, bu yüzden yanlış bir duyuru mümkündür ve BIP, hemen bağlantısı kesilen bir v2 istemcisini aynı eşle v1 üzerinden yeniden denemeye teşvik eder. Diğer yönde, bir v2 düğümü gelen v1 bağlantılarını bilerek kabul etmeye devam eder; bu, ağın birbirine ulaşamayan iki yarıya bölünmesini önlemek içindir.
İkinci görünür etki daha kısa mesajlardır. 1. sürüm her komut adına 12 ASCII bayt harcıyordu; 2. sürüm, şimdiye kadar tanımlanmış 28 mesaj tipine birer baytlık kimlikler verir, böylece inv tek bayt 14 olur ve getblocktxn 10 olur; kısa kimlik kullanan her mesaj v1 biçiminden 3 bayt daha ucuza gelir. Atanmış kimliği olmayan her şey, bir sıfır baytı ve ardından eski ASCII adından oluşan 13 baytlık bir kodlamaya geri döner, böylece hiçbir şey kaybolmaz.
Şartname Deployed durumunu taşır, test vektörleri ve yalnızca gösterim amaçlı bir saf Python referans uygulaması sunar ve hâlâ düzenlenmektedir: 30 Ocak 2026 tarihli 1.0.2 sürümü, diğer BIP'lerin ana belgeyi düzenlemeden kimlik talep edebilmesi için yardımcı bir dosyaya bir mesaj tipi kimlik tablosu ekledi. Başlık ayrıca BIP-324'ün BIP-151 yerine geçtiğini kaydeder.