Sözlük / Cüzdanlar ve saklama
HD cüzdan çekirdeği (seed)
Diğer adları: kök çekirdek.
- HD cüzdan çekirdeği (seed) nedir?
- HD cüzdan çekirdeği (seed), BIP-32'nin bir cüzdanın ana anahtarını ve zincir kodunu üretmek üzere tek bir hash fonksiyonuna verdiği ham ikili sayıdır, 128 ile 512 bit arasındadır.
Tanımlandığı belge: BIP-32.
Cüzdanlar kelimelerden söz eder çünkü insanlar kelimeleri elle kopyalayabilir, ancak BIP-32 asla kelimeleri görmez. Bir bayt dizisini alır ve "Bitcoin seed" sabit metniyle anahtarlanmış tek bir HMAC-SHA512 turunda bir ana anahtar üretir. Kelimeler, bu bayt dizisinin yaygın bir kodlamasıdır ve kullanımdaki tek kodlama da değildir.
Nasıl çalışır
BIP-32, 128 ile 512 bit arasında bir çekirdek belirtir, 256 önerir ve bu bitlerin nereden geldiğine dair hiçbir şey söylemez. Çekirdek, mesaj olarak HMAC-SHA512'ye girer; anahtar olarak "Bitcoin seed" ASCII dizisi kullanılır. Fonksiyon 64 bayt döndürür. Soldaki 32 bayt ana özel anahtar olur; sağdaki 32 bayt ana zincir kodu olur, yani sızdırılan bir alt anahtarın kardeşlerini açığa çıkarmasını engelleyen ek sırdır. Bir cüzdandaki her şey, her hesap, her adres, her para üstü çıktısı, benzer bir hash'in bir indeks numarasıyla tekrarlanmasıyla bu çiftten türer.
Spesifikasyon, pratikte hiç gerçekleşmeyen bir uç durum içerir. Soldaki bu 32 bayt sıfır olarak ya da secp256k1 eğrisinin mertebesine eşit veya ondan büyük bir değer olarak çıkarsa çekirdek geçersizdir ve cüzdan yeniden denemek zorundadır. Olasılık kabaca 2 üzeri 127'de birdir, bu nedenle hiçbir uygulama buna hiç rastladığını bildirmemiştir.
Bitlerin nereden geldiği ayrı bir katmandır ve birkaç cevabı vardır. BIP-39, anımsatıcıyı PBKDF2 üzerinden geçirerek her zaman tam olarak 512 bit üretir. Electrum kendi ifadesini farklı bir tuzla PBKDF2 üzerinden geçirir ve hiçbir BIP-39 aracının aynı kelimelerden asla yeniden üretemeyeceği bir çekirdek elde eder. Bir cüzdan ayrıca 256 biti doğrudan bir donanım rastgele sayı üretecinden alıp hiç ifade göstermeyebilir; Bitcoin Core de bunu yapar.
Gidişatın yönü önemlidir. Kelimeler çekirdeğe dönüşür; çekirdek kelimelere dönüşmez. Bir cüzdan yalnızca ham değeri tuttuğunda, hiçbir yazılım onun için bir anımsatıcı yazdırmaz; bu yüzden “çekirdeği” dışa aktarmak, onu üreten ifadeyi saklamanın yerini tutmaz.
Nerede görülür
Bitcoin Core yazılımına bir cüzdanı sorduğunuzda, herhangi bir ifade yerine bir hdseedid, yani çekirdeğin bir parmak izi bildirir, çünkü Core BIP-39'u hiç uygulamamıştır. 0.17.0 sürümünde eklenen sethdseed RPC'si eski tip bir cüzdana belirli bir çekirdek kurabiliyordu ve betimleyici cüzdanlar yeni oluşturulan cüzdanlar için Bitcoin Core 23.0 sürümünde varsayılan hale geldi.
Geliştirici belgeleri, açıkça göründüğü diğer yerdir. Hem BIP-32 hem de BIP-39, çekirdeği onu üreten anımsatıcının yanında 128 onaltılık karakter olarak gösteren test vektörleri yayımlar; bu, ikisinin farklı nesneler olduğunun mevcut en açık gösterimidir.
Bunun pratikte can yaktığı an araçlar arasında geçiş yapmaktır. Coldcard cihazının çekirdek yedekleri ve çeşitli geliştirici araçları dahil bazı cüzdanlar ve spesifikasyonlar, kelimeler yerine ham değeri içe veya dışa aktarır. Ham bir çekirdeği anımsatıcı bekleyen bir araca vermek veya bunun tersini yapmak ya bir hata üretir ya da daha kötüsü, geçerli ama boş bir cüzdan üretir. Herhangi bir şeyi yapıştırmadan önce bir alanın hangi katmanı istediğini kontrol edin.
HD cüzdan çekirdeği vs kurtarma ifadesi
Çekirdek bir sayıdır; ifade o sayıyı yazmanın bir yoludur. İkisini ayrı tutmak, aksi halde sihir gibi görünen birkaç şeyi açıklar. İsteğe bağlı bir parola (passphrase) eklemenin kelimelerinize dokunmadan çekirdeği değiştirmesinin nedeni budur. Electrum ifadesinin ve bir BIP-39 ifadesinin ikisinin de on iki İngilizce kelime olup yine de farklı cüzdanlar açabilmesinin nedeni budur. Ve “çekirdek içe aktarma” diye reklam yapan bir cüzdanın bir anımsatıcı, bir onaltılık dizi veya genişletilmiş bir özel anahtar anlamına gelebilmesinin nedeni budur, yani yalnızca bir takma adı paylaşan ve başka hiçbir şeyi paylaşmayan üç girdi.