Post
Topic
Board Development & Technical Discussion
Re: easyseed(1) secure, multilanguage BIP 39 mnemonic seed phrase generator
by
Andre_Goldman
on 04/01/2018, 10:45:45 UTC
To celebrate the New Year, I have the gift of a hidden unstable, unsupported feature for you .onion-lovers.  Here is the address of Wikileaks (http://wlupld3ptjvsgwqw.onion/) encoded as an 8-word mnemonic phrase in 8 languages or writing systems:

Englishreal element glow tennis pluck museum hair shuffle
Chinese (Simplified)洁 爱 唱 仰 泪 吴 乎 怒
Chinese (Traditional)潔 愛 唱 仰 淚 吳 乎 怒
Frenchparole distance fautif sombre notoire loyal flairer ratisser
Italianretina erba idillio suonare potassio opposto india scuderia
Japaneseにもつ けろけろ しちりん ほめる とかす たんまつ しゃうん はんしゃ
Korean잠자리 반죽 상품 큰딸 이불 열차 선풍기 중반
Spanishpie dulce gimnasio tabla oscuro molde guerra repetir

What's the purpose of this feature? It seems (superficially) that there's no real-world use case.

Why, what’s the real-world use case of BIP 39<1>?  To ease human memorization, transcription, and communication of pseudorandom strings!

Bitcoin has been a leading innovator in the development of better ways for humans to interact with cryptographic gibberish.  With BIP 39 mnemonics, a mere mortal human can memorize a pseudorandom string, write it into a sealed Last Will and Testament in a manner easy to transcribe back into a computer—or if necessary, whisper it into somebody’s ear...

I should think that people may want to memorize, transcribe, speak, or whisper .onion addresses, too.

As an English speaker, which would you prefer to deal with in your capacity as not being carved out of silicon:  “wlupld3ptjvsgwqw” (ouch!), or “real element glow tennis pluck museum hair shuffle”?  Chinese people may prefer “潔 愛 唱 仰 淚 吳 乎 怒”.

For overlapping reasons, I have also been working on the application of BIP 173 Bech32 encoding for .onion address data (more).  That has the advantage of error correction, and a more compact format; different tools apply to distinct use cases.  Again, Bitcoin technical innovation opens new possibilities in other applications of cryptography.

I am also using these methods with PGP.  I’ve seen PGP mnemonics before, of course—but the mnemonic standard I recollect having seen many years ago used a 256-word (8-bit) alphabet<2>, rather than the 2048-word (11-bit) alphabets from BIP 39.  Thus, unnecessarily long word strings.  I am also working on a spec for what I call Bech32 “PGP Descriptors” to encode key fingerprint plus metadata.  See those ugly hexadecimal strings in my signature?  Bitcoin will provide a better way.

Meanwhile, for use in Bitcoin, I have almost completed full BIP 39 implementation in easyseed(1).  It would have been done yesterday; but for the missing final piece, generation of the output seed, I need means to perform the specified Unicode NFKD normalization without dragging in ugly dependencies.  The rest is trivial.

<1> It remeber me vaguely on some debate while the implementation of UTF-8 ( Ken Thompson and Rob Pike ) maybe there are some valuable lessons in computing history to remember...
<2> Regards to Bech32 I am trying to compile it on Visual Studio 2017 community edition using c +1+(https://i.imgur.com/yo5J4Q6.jpg jargon ... hang on (I am running out time) going to ed; this post again ... So I am not sure if it going to compile or not ...since there are some barvarian char set and maybe I only will see the out put at Oktoberfest. (pls relax this is a joke, when we'serious we ARE serious)