ML-DSA-87 anahtar türetme
Durum: kanonik türetme kararlıdır. Hiyerarşik türetme bir taslaktır:
uygulamalar nihai hale gelmeden önce değişebilir ve onunla türetilen anahtarlar
diğer anahtarlar gibi zincirde kaydedilmelidir. Kaynak:
spec/hd-derivation-draft.md.
Kanonik türetme (kararlı)
QoreChain cüzdanları ve QoreChain SDK'sı, BIP-39 mnemonic'inden ve hesap adresinden hesap başına bir ML-DSA-87 anahtarı türetir:
seed = SHAKE256( UTF-8( "qorechain:pqc:v1|" + bech32_address + "|" + mnemonic ), 32 bytes )
(pk, sk) = ML-DSA-87.KeyGen_internal(seed)
bech32_address, hesabınqor1biçimidir (bir0xadresi önce aynı 20 bayta dönüştürülür).mnemonic, kanonik biçimdeki ifadedir: tek boşlukla ayrılmış küçük harfli İngilizce sözcükler; öncesinde ve sonrasında hiçbir şey yok. Uygulamalar başka bir yazımı sessizce normalleştirmek yerine reddetmelidir; çünkü farklı bir dizge farklı bir anahtar üretir.- Anahtar adrese bağlıdır: aynı mnemonic her hesap için farklı bir anahtar verir.
Bu türetmeyi kullanan bir cüzdan, QoreChain cüzdanlarının oluşturduğu hesaplar için zaten kayıtlı olan anahtarla imzalar.
Hiyerarşik türetme (taslak)
Tek bir tohumdan, adrese bağlamadan birden fazla kuantum sonrası anahtara ihtiyaç duyan cüzdanlar içindir. ML-DSA'nın açık (public) alt anahtar türetmesi yoktur; bu yüzden her yol parçası sertleştirilmiştir.
Yapı, kendi ana anahtar dizgisiyle SLIP-0010'dur:
I = HMAC-SHA512(key = "qorechain-mldsa87-seed", data = seed)
k = I[0..32], c = I[32..64]
for each index i (all >= 2^31):
I = HMAC-SHA512(key = c, data = 0x00 || k || ser32(i))
k = I[0..32], c = I[32..64]
(pk, sk) = ML-DSA-87.KeyGen_internal(k)
seed, 64 baytlık BIP-39 tohumudur (mnemonic artı isteğe bağlı parola) ya da 16 ile 64 bayt arası herhangi bir tohumdur.- Varsayılan yol
m/44'/118'/{account}'/0'/0'biçimindedir. - Sertleştirilmemiş herhangi bir parça içeren bir yol reddedilir.
Bunun nihai hale gelmesinden önceki açık noktalar: yolda kullanılacak coin türü,
zincirdeki anahtar rotasyonuyla (MsgRotatePQCKey) etkileşim ve bir tohumdan
kuantum sonrası anahtar türeten diğer ekosistemlerle uyum.
Test vektörleri
vectors/qoresign-v1.json, canonical, hd ve hdRejected alanları. Bkz.
Test vektörleri.