Mnemonički kod korisit se za pretvaranje nizova
znamenki u jednoznačno određene riječi engleskog jezika kako bi se
olakšalo njihovo zapisivanje, pamćenje i prenošenje drugim
osobama. Oni se koriste i u generiranju determinističkih novčanika.
Generiranje mnemoničkih kodova
Mnemonički kod mora enkodirati entropiju u grupama po
32 bita. Što je entropija veća, veća je i sigurnost, no rečenice
su dulje. Propručena veličina entropije (ENT) je 128 do 256 bitova.
Nakon generiranja entropije, generira se zaštitna suma
uzimajući prvih ENT/32 bitova od SHA256(ENT). Drugim riječima,
izračuna se broj grupa od 32 bita (ENT/32) te se zatim uzme toliko
bitova od SHA256 hasha entropije. Zaštitna suma doda se na kraj
generiranih bitova entropije.
Ti se bitovi zatim podijele u grupe duljine 11 bitova.
Svaka grupa predstavlja broj od 0 do 2047 koji predstavljaju indeks u
listi riječi. Te se grupe zatim pretvaraju u riječi i to je
generirani mnemonički kod.
Sljedeća tablica prikazuje odnos duljine entropije
(ENT), duljine zaštitne sume (CS) te duljine generiranog mnemoničkog
koda (MS) u riječima.
ENT |
CS |
ENT+CS |
MS |
128 |
4 |
132 |
12 |
160 |
5 |
165 |
15 |
192 |
6 |
198 |
18 |
224 |
7 |
231 |
21 |
256 |
8 |
264 |
24 |
Lista riječi
Idealna lista riječi ima sljedeće karakteristike:
a) Pametan izbor riječi (dovoljno je upisati prva četiri slova riječi da bi se ona jednoznačno odedila)
b) Izbjegavaju se slične riječi
c) Sortirana lista riječi
Sve riječi moraju biti kodirane u UTF-8 formatu. Ovdje je lista takvih riječi.
Korištenje mnemoničkog koda kao sjemena
Ako se generirani mnemonički kod želi koristit kao sjeme za hijerarhijski deterministički novčanik potrebno je koristiti funkciju PBKDF2. Mnemonički kod koristi se kao lozinka, salt je riječ “mnemonic” + lozinka, broj iteracija je 2048, a koristi se HMAC-SHA512.
Generiranje sjemena odvojeno je od generiranja koda.