Ana içeriğe geç

BIP39 Nedir?

Bugün güncellendi

BIP-39 spesifikasyonu öncelikle deterministik cüzdanları, akılda kalıcı kelime öbekleri (menemonikler) kullanarak üretme algoritmasını ve sürecini açıklar.

Spesifikasyon iki ana bölümden oluşur:

  1. Menemoniklerin nasıl üretileceği.

  2. Üretilen menemoniklerin ikili bir tohum (seed) haline nasıl dönüştürüleceği.

Aşağıda, bu iki bölümü ayrı ayrı açıklayarak deterministik cüzdanların nasıl üretildiğine bakacağız.

Menemonik Üretimi

Menemonik üretimi için algoritmik süreç şöyledir:

Süreç şu adımları izler:

  1. 128 ila 256 bit arasında rastgele bir dizi (entropy) oluşturun (adım boyutu 32 bit).

  2. Önceki adımda oluşturulan rastgele dizinin SHA256 karmasını alın ve bu karma değerinin ilk N bitini (entropy uzunluğu / 32, örneğin 128 bit ise N = 4) rastgele dizinin Sağlama Toplamı (Checksum) olarak kullanın.

  3. Sağlama Toplamını, ilk adımda oluşturulan rastgele dizinin sonuna ekleyin; şekildeki örnek için bu, 128 + 4 = 132 bitlik bir dizi oluşturur.

  4. Önceki adımdaki rastgele diziyi 11 bitlik segmentlere ayırın (bölün); 128 bitlik entropy uzunluğuna sahip bir dizi için 12 segment (132 / 11 = 12) üretilir.

  5. Bu noktada, 11 bitlik her bir segment değerini önceden tanımlanmış 2048 kelimelik bir sözlüğe eşleyin.

  6. Kesme sırasına göre oluşturulan kelime grubu menemoniktir.

Menemoniklerden Tohum (Seed) Oluşturma

Menemonik oluşturulduktan sonra, PBKDF2 algoritmasını kullanarak tohum oluşturabiliriz.

PBKDF2 iki parametre gerektirir: bir menemonik ve bir tuz (salt). Tuzun amacı, kırma işlemlerini daha zor hale getirmektir ve BIP-39'da tohumları korumak için ek bir güvenlik faktörü olarak şifre (passphrase) ekleyebiliriz.

"PBKDF2, RSA Laboratories'in Kamu Anahtarı Şifreleme Standartları (PKCS) serisinin bir parçasıdır,
özellikle PKCS #5 v2.0, İnternet Mühendisliği Görev Gücü'nün RFC 2898'i olarak da yayınlanmıştır."

Yukarıdaki menemonik oluşturma işlemini takiben, tohum oluşturma algoritmasını gösteren aşağıdaki diyagramı inceleyin.

  • PBKDF2'nin ilk parametresi yukarıda oluşturulan menemoniktir.

  • PBKDF2'nin ikinci parametresi tuzdur (salt). Bu genellikle bir dize ve isteğe bağlı olarak kullanıcı tarafından sağlanan şifre dizesinin bir birleşiminden oluşur.

  • PBKDF2, 2048 karma işlemi kullanarak 512 bitlik bir değer üreten HMAC-SHA512 algoritmasını kullanır.

Tohumdan HD Cüzdan Üretimi

Yukarıda oluşturulan tohum, HD cüzdanın Kök Tohumu (Root Seed) olarak kullanılacaktır ve herhangi bir HD cüzdanın Kök Tohumu, tüm HD cüzdanını yeniden oluşturabilir.

generate-hd-master-key.jpeg

Kök Tohumu HMAC-SHA512 algoritmasına girdi olarak vermek, 512 bitlik bir karma elde etmemizi sağlar. Bu karmaların sol 256 biti Ana Özel Anahtar (Master Private Key) ve sağ 256 biti de Ana Zincir Kodu (Master Chain Code) olarak kullanılır. Ardından, Ana Özel Anahtar 'm' kullanılarak Ana Genel Anahtar (Master Public Key) (264 bit) üretilebilir.

Yukarıdaki şekilde görüldüğü gibi, HD anahtar aşağıdaki parametreler kullanılarak oluşturulur.

  • Ana Özel Anahtar veya Ana Genel Anahtar; (her ikisi de sıkıştırılmamış 256 bitlik ECDSA anahtarlarıdır).

  • 256 bitlik Ana Zincir Kodu.

  • 32 bitlik bir tamsayı olan indeks numarası.

Ek olarak, yukarıdaki süreç özyinelemelidir ve şekildeki Alt Özel Anahtar (Child Private Key) bir sonraki seviyede Ana Özel Anahtar (Parent Private Key) olarak kullanılabilir.

(Ana Genel Anahtar, Ana Zincir Kodu, İndeks Numarası) değerlerini HMAC-SHA512 algoritmasına girerek alt anahtarlarımızı üretebiliriz ve aynı seviyedeki birden fazla alt anahtar üretmek için İndeks Numarasını ayarlayabiliriz.

Genişletilmiş Anahtar (Extended Key) Hakkında

Bu anahtar türetme fonksiyonu tek yönlü olduğundan, tüm alt anahtarlar ebeveyn anahtarlarını veya aynı seviyedeki kardeş anahtarları türetmek için kullanılamaz. Yalnızca ebeveyn anahtarı ve ebeveyn zincir kodu (Ebeveynin Ebeveyn seviyesi anahtarından ve zincir kodundan üretilir) tüm alt anahtarları ve alt zincir kodlarını türetmek ve ardından ilgili alt genel anahtarları ve işlem imzalama adreslerini oluşturmak için kullanılabilir.

Anahtar ve Zincir Kodunun birleşimi genişletilmiş anahtar olarak adlandırılır ve genişletilmiş anahtar, oradan aşağıya doğru tüm dalları oluşturmak için kullanılabilir.

Genişletilmiş anahtarda sağlanan anahtar ya bir özel anahtar ya da bir genel anahtar olabilir. Zincir kodu ile birlikte Genişletilmiş Özel Anahtar ve Genişletilmiş Genel Anahtar olarak adlandırılır ve sırasıyla (k, c) ve (K, c) olarak gösterilir; burada genel anahtar K = point(k).

Genişletilmiş özel anahtardan genişletilmiş genel anahtarı türetebiliriz, ancak tersi mümkün değildir. Bu nedenle, bazı işlem senaryolarında (örneğin e-ticaret), ödeme almak için her işlem için yeni bir genel anahtar ve adres oluşturulabilirken, genişletilmiş özel anahtar işlemleri güvenli bir şekilde çevrimdışı imzalamak için bir kağıt cüzdanda veya donanım cüzdanda saklanabilir. Görülebileceği gibi, genişletilmiş genel anahtarın güvenliği nispeten yüksektir ve aşağıdaki diyagram, alt özel anahtar türetmek ve alt genel anahtar üretmek için genişletilmiş ebeveyn genel anahtarının iletim mekanizmasını göstermektedir:

Bu cevap sorunuzu yanıtladı mı?