Sözlük / Adresler ve anahtarlar
Sertleştirilmiş türetme
Diğer adları: Hardened derivation.
- Sertleştirilmiş türetme nedir?
- Sertleştirilmiş türetme, her alt anahtar hesabına üst özel anahtarı verir; sızdırılmış bir genişletilmiş genel anahtarın altındaki dalı çözmesini engelleyen de budur.
Tanımlandığı belge: BIP-32.
BIP-32 ağacındaki her düğüm 4.294.967.296 alt düğüm üretebilir ve bu aralığın üst yarısı farklı davranır. 2.147.483.648 ve sonrasındaki endeksler sertleştirilmiştir, kesme işareti ya da h harfiyle yazılır ve hiçbir genel anahtar bunları türetemez. Bu kısıtlama bir eksiklik değil, özelliğin kendisidir.
Nasıl çalışır
Sertleştirilmiş ve normal türetme, aynı hash'e giren tek bir girdiyle ayrılır. İkisi de bir üst anahtarın zincir kodunu ve bir alt endeksi HMAC-SHA512'ye verir. Normal türetme, genişletilmiş genel anahtara sahip olan herkesin zaten bildiği üst genel anahtarı ekler. Sertleştirilmiş türetme bunun yerine, başına bir sıfır baytı eklenmiş üst özel anahtarı ekler; böylece hesap, sır olmadan yapılamaz.
Bunun nedeni, BIP-32'nin güvenlik notlarında açıkça belirttiği belirli bir zayıflıktır: bir üst genişletilmiş genel anahtarı ve ondan türeyen herhangi bir sertleştirilmemiş özel anahtarı bilmek, üst genişletilmiş özel anahtarı ve dolayısıyla o noktanın altındaki her anahtarı bilmekle eşdeğerdir. Ardındaki aritmetik basittir. Normal bir alt özel anahtar, üst anahtar artı genel bilgilerden hesaplanan bir değere eşittir; bu değeri çıkarmak üst anahtarı geri verir.
Sertleştirilmiş endeksler bu yolu kapatır. Onlar için genel bir türetme fonksiyonu yoktur, bu yüzden bir genişletilmiş genel anahtar sınırda durur. Bir hesabın sızdırılmış xpub'ı o hesabın geçmişini açığa çıkarır, üstündekini ya da yanındakini değil.
Nerede görülür
Sertleştirme, bir türetme yolundaki kesme işaretleri olarak görünür ve bunların nereye düştüğü bilinçli bir tasarım kararıdır.
Standart yerel SegWit yolu m/84'/0'/0'/0/0 biçimindedir. İlk üç düzey, yani amaç, coin türü ve hesap sertleştirilmiştir. Son iki düzey, yani zincir ve adres endeksi sertleştirilmemiştir. Bu ayrım tam da yalnızca izleme cüzdanını işler kılan şeydir: bir hesap genişletilmiş genel anahtarı, altındaki her alma ve para üstü adresini üretebilir; oysa aynı xpub'ı ele geçiren bir saldırgan ne ana anahtara doğru tırmanabilir ne de yana doğru m/84'/0'/1' yoluna geçebilir.
Gösterim hiçbir şeyi değiştirmeden farklılık gösterir. BIP-32 0' yazar, birçok araç 0h biçimini kabul eder ve Bitcoin Core dışa aktardığı tanımlayıcılarda h yazar çünkü JSON içinde kesme işaretinin kaçış karakteriyle yazılması gerekir. Sparrow cüzdanından Core uygulamasına kopyalanan bir yol h biçiminde yeniden yazılmış olarak geri gelir; bu insanları ilk seferde tedirgin eder ve tamamen görsel bir durumdur.
Pratik kural kısadır. Hesaba kadar her düzeyi sertleştirin, altındaki iki düzeyi yalnızca izleme araçları çalışmaya devam etsin diye sertleştirilmemiş bırakın ve tek bir sertleştirilmemiş alt özel anahtar dışa aktarmayı öneren her yazılımı bir kolaylık değil bir tehlike olarak görün, çünkü xpub'ınızla birleşen o dışa aktarma dalın tamamıdır.
Sertleştirilmiş türetme vs parola
Sertleştirilmiş türetme otomatiktir; BIP-39 parolası ise sizin seçtiğiniz bir sırdır. Bir cüzdanı sertleştirme yolları olarak birlikte anılırlar ve birbiriyle ilgisiz sorunları ele alırlar. Sertleştirme, bir ağacı dışarı sızmış bir genişletilmiş genel anahtara karşı korur ve her standart cüzdan bunu size sormadan zaten uygular. Parola ise ağaç hiç kurulmadan önce tohuma karıştırılan ek bir girdidir ve aynı on iki ya da yirmi dört kelimeden tamamen ayrı bir cüzdan üretir. Parolayı unutursanız bitcoinlere ulaşılamaz, çünkü hiçbir yerde kaydı yoktur. Sertleştirmeyi unutursanız hiçbir şey olmaz, çünkü buna zaten hiç siz karar vermediniz.