Sözlük / Lightning ve katman 2
Körleştirilmiş yol
- Körleştirilmiş yol nedir?
- Körleştirilmiş yol, bir Lightning düğümüne giden ve alıcının her sıçramanın genel anahtarını ayarlanmış bir anahtarla değiştirdiği bir rotadır; böylece gönderen gerçek hedefi hiçbir zaman öğrenmez.
Alıcı yolu oluşturur ve dağıtır, böylece ödeyen yalnızca herkese açık bir tanıtım noktasına yönlendirir, ötesine geçmez. Bir BOLT 12 faturası, körleştirilmiş bir yol taşımıyorsa reddedilir ve körleştirilmiş sıçramalar, soğan paketinin sabit 1300 baytlık yükünü rotanın geri kalanıyla paylaşır. Bir Lightning hedefi yayımlarsanız, körleştirme düğüm kimliğinizi o hedefin dışında tutar.
Nasıl çalışır
Körleştirilmiş bir yol geriye doğru, ödeme yapan düğüm tarafından değil, kendisine ulaşılmasını isteyen düğüm tarafından inşa edilir.
Alıcı, kendisine giden gerçek bir rota ve rastgele bir kısa ömürlü anahtarla başlar; bu anahtardan, her sıçramanın bir sonrakini kendisine söylenmeden hesaplayabileceği biçimde düzenlenmiş bir yol anahtarları zinciri türetir. Her sıçrama sonunda alıcıyla bir ECDH sırrını paylaşır ve bu sırdan iki şey çıkar. Birincisi bir körleştirme faktörüdür, yani blinded_node_id metninin paylaşılan sır altındaki HMAC değeri; alıcı bu değeri o sıçramanın genel anahtarıyla çarpar. Sıçrama yine de sonuç için imza atabilir, çünkü aynı faktörü türetip kendi özel anahtarına uygular; ancak başka hiç kimse bu anahtarı yayımlanmış çizgeyle eşleştiremez. İkincisi bir şifreleme anahtarıdır; o sıçrama için küçük bir talimat öbeğini ChaCha20-Poly1305 ile tamamen sıfır nonce altında mühürlemeye yarar.
Yayımlanan şey kısadır: tanıtım noktası açıkça, bir başlangıç yol anahtarı, ardından her biri kendi mühürlü öbeğiyle eşleşen bir ayarlanmış anahtar listesi. Bir öbeğin içinde o sıçramanın okuduğu alanlar vardır: ödemenin nereye gittiğini gösteren short_channel_id veya next_node_id, uygulaması gereken ücret ve CLTV farkı için payment_relay, azami son kullanma süresi ve asgari HTLC boyutu için payment_constraints, dolgu ve son sıçramada bir path_id.
Bu tercihlerden üçü işlevsel değil savunma amaçlıdır. Her körleştirilmiş sıçramanın ücretini ve zaman kilidini ödeyen değil alıcı belirler, böylece arada bir düğüm rota ortasında fiyatını yükseltip hangi ödemelerin başarısız olduğunu izleyemez. Her öbeği tek bir uzunluğa doldurur ve attığı sahte sıçramalar ekleyebilir, böylece gerçek uzunluk biçimden okunamaz. Ve path_id özel veri barındırır, örneğin preimage değerini; böylece alıcı, bir saldırganın şüphelendiği her düğüme gönderdiği bir yolu kabul etmek yerine kendi kurduğu yolu doğrulayabilir.
BOLT 12 son bir kamuflaj parçası ekler. Bir fatura, körleştirilmiş sıçrama başına ücret yerine yol başına tam olarak tek bir blinded_payinfo taşır: milisatoshi cinsinden bir taban ücret, milyonda bir cinsinden oransal bir ücret, birleştirilmiş tek bir CLTV farkı, asgari ve azami HTLC boyutu ve bir özellik vektörü. Belirtilen gerekçe, sıçrama başına ayrıntının yolu ayırt eden bir düzensizliği kolayca açığa çıkaracağıdır.
Bitcoin satın alırken bu neden önemli
Körleştirilmiş yollar, Lightning ağının ortasının sizin hakkınızda ne öğrendiğini değiştirir ve kendi ilk sıçramanızın öğrendikleri konusunda hiçbir şeyi değiştirmez.
Rota körleştirme, tanıtım noktasından sonraki sıçramaları gizler ve cüzdanınızın bağlandığı düğüm hakkında hiçbir şey söylemez; tutarlarınızı ve hedeflerinizi gören düğüm de odur. 41 cüzdan incelememiz arasında 4,0 puan alan Phoenix bu konuda alışılmadık derecede dürüsttür: ACINQ şirketinin kendi SSS bölümü, cüzdanın barındırılan saklamalı bir cüzdana göre hiçbir gizlilik avantajı sunmadığını ve ACINQ şirketinin ödemelerin nihai hedefini ve tutarını bildiğini söyler. Ödediğiniz bir offer içindeki körleştirilmiş bir yol buna dokunmaz.
Saklama soruyu tamamen ortadan kaldırır. 2,7 puan alan ve uyarı işaretiyle işaretlenmiş olan Wallet of Satoshi, saklamalı modunda anahtarları kendisi tutar, yani bir ödemenin iki ucu da onun kayıtlarıdır; 23 Kasım 2023 tarihinde ABD'deki müşterilere hizmet vermeyi bıraktı ve o zamandan beri Avrupa Birliği genelinde saklamalı hizmeti kaldırdı. Ödeme sağlayıcının defterlerinden hiç ayrılmadığında sizin olan hiçbir şey körleştirilmez.
Körleştirmenin size bir şey kazandıracağı yer, para çekme işleminin kendisidir. Sıralamamızda 4,6 puanla en yüksek puanı alan Lightning odaklı platform Strike, transferlere kendisi hiçbir ücret eklemez ve sizin sağladığınız bir Lightning hedefine ödeme yapar. Ona bir BOLT 11 faturası verirseniz düğümünüzü de vermiş olursunuz: imza bir kurtarma kimliği taşır, dolayısıyla alacaklı anahtarı ondan geri elde edilebilir. Bir offer ise bunun yerine oraya bir tanıtım noktası koyar, ödeyenin bunu desteklediği her yerde.
Bedeli teşhis edilebilirliktir. Körleştirilmiş bir yol içindeki sıçramalar, hiçbir atıf verisi taşımayan hatalar döndürür ve tanıtım noktasına bir hatayı iletmeden önce rastgele bir gecikme eklemesi söylenir, böylece yoklama alıcının ne kadar uzakta olduğunu ölçemez. Bu yüzden körleştirilmiş bir hedefe başarısız olan bir para çekme işlemi size neredeyse hiçbir şey söylemez; platformu suçlamadan önce bunu kendi kontrolünüzdeki bir cüzdandan test edin.
Dave, Alice'e Bob ve Carol üzerinden bir yol verir
Lightning spesifikasyonu körleştirilmiş yol fikrini dört adla işler; bunu izlemek cebirden daha hızlıdır.
Dave, Alice onun olduğunu bilmeden ödeme almak ister. İki herkese açık düğüm, önce Bob sonra Carol üzerinden kendisine giden bir rota seçer ve yol anahtarları zincirini üçü de kendi anahtarını türetecek biçimde kurar. Ardından üç öbek mühürler: Bob'a Carol'a iletmesini söyleyen biri, Carol'a ona iletmesini söyleyen biri ve kendisi için üst veri ile path_id taşıyan biri. Son olarak Bob'u Bob prime, Carol'ı Carol prime ve Dave'i Dave prime yapan faktörleri türetir.
Alice üç satır alır: ilk düğüm Bob'tur, ilk yol anahtarı budur ve burada Bob prime, Carol prime, Dave prime dizisi her birinin karşısında mühürlü bir öbekle yer alır. Bob'a olağan herkese açık çizge üzerinden ulaşır ve bu bilinçlidir: spesifikasyon tanıtım noktasına giden körleştirilmemiş bir bacak önerir, çünkü bu aradaki düğümlerden hiçbir destek gerektirmez ve okuyabildiğiniz hatalar döndürür. Bob talimatını açar, yalnızca sıradakinin Carol olduğunu öğrenir ve türetilmiş yol anahtarını soğan paketiyle birlikte iletir. Carol bu anahtarı iki kez kullanır: bir kez Alice'in Carol'a değil Carol prime'a şifrelediği soğan paketini ayarlamak için, bir kez de kendi talimatını açmak için. Dave paketi son alır ve kabul etmeden önce path_id değerini kontrol eder.
Her birinin sonunda ne bildiğini sayın. Alice Bob'u bilir. Bob bir tanıtım noktası olduğunu ve sıradakinin Carol olduğunu bilir. Carol kendisinden körleştirilmiş bir ödemenin geçtiğini bilir ve Dave'in alıcı mı yoksa başka bir aktarıcı mı olduğunu ayırt edemez. Dave her şeyi bilir, çünkü onu kuran tek kişi odur.
Körleştirilmiş yol vs rota ipucu
Körleştirilmiş bir yol ile bir rota ipucu aynı soruyu yanıtlar, yani herkese açık çizgenin göremediği bir düğüme nasıl ulaşılacağını, ve bunu yaparken birbirine zıt miktarları açığa vurur.
Rota ipucu bir BOLT 11 faturasının r alanıdır ve düz metindir. Her girdi 264 bitlik bir genel anahtar, 64 bitlik bir kısa kanal kimliği, bir taban ücret, bir oransal ücret ve bir CLTV farkı taşır, hepsi açıkça, yani faturayı elinde tutan herkes hangi iyi bağlantılı düğüme bağlı olduğunuzu bilir. Körleştirilmiş bir yol tanıtım noktasını adlandırır ve sonra karanlığa gömülür: sonraki her sıçrama çizgede hiçbir şeyle eşleşmeyen ayarlanmış bir anahtardır ve ücretler ayrı ayrı değil birleştirilmiş olarak gelir. Körleştirilmiş yollar ayrıca rota ipuçlarının hiç üstlenmediği bir işi devralır, yani bir BOLT 11 faturasının payment_secret ve payment_metadata alanlarının yerine geçer.
Körleştirilmiş yol vs soğan yönlendirme
Soğan yönlendirme ödeyeni sıçramalardan gizler; körleştirilmiş bir yol ise alacaklıyı ödeyenden gizler.
Düz soğan yönlendirmede gönderen her sıçramayı herkese açık çizgeden seçer ve her sıçrama için bir şifreleme katmanı sarar, böylece hiçbir iletme düğümü kimin ödediğini ya da rotanın neresinde bulunduğunu öğrenmez. Gönderen yine de hedefin gerçek düğüm kimliği dahil tüm rotayı bilir; bu bir mağazaya ödeme yapmak için uygundur ve yeniden kullanılabilir bir hedef yayımlamak için işe yaramaz. Rota körleştirme eksik yarıyı hiçbir şeyin yerine geçmeden sağlar: körleştirilmiş bir yol üzerinden ödeme yine bir soğan paketidir ve körleştirme üstüne eklenen bir anahtar ayarıdır. İkisi birbirinden yeterince ayrılabilir, öyle ki gizliliği istemeyen bir alıcı yalnızca kendisini içeren tek sıçramalı bir yol kurabilir ve yine de düğüm kimliğini açığa vurabilir.