Since encrypted private key (BIP 38 which usually used by paper wallet) is possible, i wonder if encrypted mnemonic is technically possible?
Under the hood I don't see that much difference.
BIP38 takes as input a key (practically a 256 bit data) and a password, then extends the password and uses it as AES key, builds a block based on that "data" and encrypts it. Finally returns the 256 bit result with a special encoding (base58). So all the steps could be the same except the data part which is the entropy (that user knows as mnemonic).
I don't know of any proposals but you could do a very similar thing:
- Instead of the private key you use the "entropy" here*.
- Get a password, extend it like BIP38.
- Create the AES block (XOR of key and extended password), like BIP38
- Perform the encryption same as BIP38
- Encode the result using your favorite encoding technique.
* I have to think more about the case when entropy is not 256 bit (in user's eye, the mnemonic length is anything except 24).
Example:
mnemonic: hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length
entropy: 68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c
address at m/44'/0'/0'/0/0: 18CquoRzbEYzK9LaNigoukKj4z3cY6Gy9g
scrypt salt (first 4 byte of double SHA256 of address): 579a20b9
scrypt key (an example password): 0x010203
AES encrypted result: c7f4f0da86146cf6f6147963423a7b99b78e2b4b614c1d7c34cba972ef419b2a
Now that you have your encrypted result you can encode it however you like, for example the same base58 technique used in BIP38 or the same encoding technique used in BIP39 to convert an entropy to a mnemonic:
6PYPJnPZPszy1fUjw6WnBCrCxDWMkafLy2pe7CpyJghivSXF2nd2m2DjXr
or:
side pole cute around egg kiwi success monkey globe balcony page cricket jump between collect civil buddy ticket cream fancy confirm patch hole fantasy
Disclaimer: I am using my own code not any library or online tool so the results may contain errors, some parts of my code such as BIP38 aren't fully tested. This is posted as an example to show the similarity of the techniques.