0 | 0 |
# entropy-mnemonics
|
1 | 1 |
|
2 | |
[![Build Status](https://travis-ci.org/NebulousLabs/entropy-mnemonics.svg?branch=master)](https://travis-ci.org/NebulousLabs/entropy-mnemonics)
|
3 | |
[![Documentation](https://img.shields.io/badge/docs-godoc-blue.svg)](https://godoc.org/github.com/NebulousLabs/entropy-mnemonics)
|
4 | |
|
5 | |
mnemonics is a golang package that converts byte slices into human-friendly
|
6 | |
phrases. The primary purpose is to assist with the generation of
|
7 | |
cryptographically secure passwords. The threshold for a cryptographically
|
8 | |
secure password is between 128 and 256 bits, which when converted to base64 is
|
9 | |
22-43 random characters. Random characters are both difficult to remember and
|
10 | |
subject to error when spoken or written down; slurring or sloppy handwriting
|
11 | |
can make it difficult to recover a password.
|
12 | |
|
13 | |
These considerations may seem strange to those who use password managers; why
|
14 | |
write down the password at all? The answer is: healthy paranoia. Retaining a
|
15 | |
physical copy of a password protects the user from disk failure and malware.
|
16 | |
|
17 | |
mnemonics solves these problems by converting byte slices into human-intelligible
|
18 | |
phrases. Take the following 128 bit example:
|
19 | |
|
20 | |
```
|
21 | |
Hex: a26a4821e36c7f7dccaa5484c080cefa
|
22 | |
Base64: ompIIeNsf33MqlSEwIDO+g==
|
23 | |
Mnemonic: austere sniff aching hiding pact damp focus tacit timber pram left wonders
|
24 | |
```
|
25 | |
|
26 | |
Though more verbose, the mnemonic phrase is less prone to human transcription errors.
|
27 | |
|
28 | |
The words are chosen from a dictionary of size 1626, such that a 12-word phrase
|
29 | |
corresponds to almost exactly 128 bits of entropy. Note that only the first few
|
30 | |
characters of each word need be unique; for the English dictionary, 3 characters
|
31 | |
are sufficient. This means that passphrases can be altered to make them more
|
32 | |
understandable or more easily memorized. For example, the phrase "austere sniff aching"
|
33 | |
could be changed to "austere sniff achoo" and the phrase would still decode correctly.
|
34 | |
|
35 | |
Full UTF-8 support is available for dictionaries, including input normalization
|
36 | |
for inputs with [canonical equivalence](https://en.wikipedia.org/wiki/Unicode_equivalence).
|
37 | |
|
38 | |
### Supported Dictionaries ###
|
39 | |
|
40 | |
+ English (prefix size: 3)
|
41 | |
+ German (prefix size: 4)
|
42 | |
+ Japanese (prefix size: 3)
|
|
2 |
This repository has moved to [GitLab](https://gitlab.com/NebulousLabs/entropy-mnemonics).
|