I am sceptical about online generators. How could I generate a IOTA seed safely offline? Does it need to be on a specific format?
9 Answers
What is my seed?
Think about your seed as the combined username and password that grants access to your bank account. If anyone obtains your seed, they can login and access your funds.
Seed: You must generate a random 81 character seed using only A-Z and the number 9. It is imperative that your seed be an 81 character random assortment of A-Z and 9. Use one of the options below to generate your seed:
Depending on your operating system, you can use onboard tools to generate such a seed:
Linux - Terminal: https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal
cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}
Mac - Terminal: https://en.wikipedia.org/wiki/Terminal_(macOS)
cat /dev/urandom |LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1
Windows/Linux -- with Keypass on PC:
A helpful guide for generating a secure seed on KeePass can be found here.
Windows - PowerShell command? The PowerShell method has been demonstrated to be insecure. Do not use it.
With Dice: Dice Roll Template
If you don't know how to run the above commands, then you can try a seed generator:
Open this page in your browser -->
https://ipfs.io/ipfs/QmdqTgEdyKVQAVnfT5iV4ULzTbkV4hhkDkMqGBuot8egfA (based on knarz.github.io/seedgen)
Turn off your Internet connection (go offline)
Follow the instructions on the page to generate a seed
Once a seed is generated, change a few of the generated letters (as an extra security precaution)
Save your new seed in a secure location (example: a secure password manager, such as KeePass)
-
2Can you elaborate on "The PowerShell method has been demonstrated to be insecure. Do not use it." Commented Nov 28, 2017 at 22:52
-
1Hi Scott - it was found that the powershell method seems to be not fully random, and is more likely to give out certain outputs. People trying to exploit this have a list of common seeds that it gives out, and will be likely to check those and empty you out if you use it.– aboose ♦Commented Nov 29, 2017 at 0:25
-
1To expand on aboose's response, it was because the PowerShell script that people were using contained the
Get-Random
command. This command is not intended to generate cryptographically secure randomness as it has just 2,147,483,647 starting states/seeds. So all an attacker needed to do was run through all 2^31-1 of these seeds to find all IOTA seeds generated by it.– LaurenceCommented Nov 29, 2017 at 19:07 -
Method with Keypass on PC is valid also on Linux platform with KeePass 2.X. Commented Jan 10, 2018 at 11:30
IOTA's development team has explicitly recommended only two seed generation methods. They are:
- /dev/urandom (available on Linux/MaxOS)
- Keepass' password generator
The first option may be too outlandish for most. If you prefer a point-and-click solution, you'll want to go with Keepass -- a popular & trusted password manager with a vetted generation engine. Here's a step-by-step:
- Install & open Keepass v2.x
- Add a new entry & select the password generator
- Configure the generator for IOTA seeds (note the additional entropy selection)
- Collect additional entropy (this adds to the already secure algorithm by customizing it)
- Save your entry and backup Keepass' database file
-
1Nice tutorial with pictures! I also can recommend using Keepass 2. You also can safe your seed safe in there. I'm also using the Auto-Type funcionality and the Two-Channel Auto-Type Obfuscation. Highly recommended!– SleeveCommented Nov 30, 2017 at 21:38
Until there's an inbuilt generator in the official wallet, you gotta be really careful. One of the best ways is to download KeePass and generate a 81 character string using only A-Z and the number 9. Then for additional safety, change manually 5-10 characters.
Make sure they are a random assortment of letters A-Z and the number 9.
You can generate in terminal with Mac or linux using these commands on iotasupport: https://iotasupport.com/gui-newseed.shtml
in linux:
$ cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}
on a mac:
$ cat /dev/urandom |LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1
Keep in mind AAAAA... or ABCDEFG... etc will likely be compromised.
I would suggest the good old "Random Hat"
Your SEED must be generated using only uppercase A to Z and the number 9
Process:
1.Take a piece of paper write the alphabet and number 9 like this: ABCDEFGHIJKLMNOPQRSTUVXYZ9
2.Cut each character with a scissor. Take a hat and put all character folded in there.
3.Mix them up and extract one piece of paper. That's the first character of your SEED.
4.Put the piece of paper back in the hat, mix again and extract the next SEED character.
5.Do this until you have an 81 character string. There you have it a random SEED that was never generated online or on a computer and can't be possibly spied upon.
Please read through this entire post/document before making any changes to your machine or executing any commands. You can safely generate a seed offline using one of the following commands on your respective operating system.
Disconnect from the internet. Remove Ethernet cables, check WiFi, Bluetooth and all possible connectivity to be entirely certain you are actually offline.
Linux Terminal
cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}
macOS Terminal
cat /dev/urandom |LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1
Windows (PowerShell is not recommended!)
- Visit this page prior to disconnecting from the internet.
- Confirm you are disconnected from the internet, try visiting this link, and it should fail to load. (I would try other sites too, to be safe)
- Follow the instructions that the seed generator asks you to.
- Change a few of the characters generated with a new value using A through Z or 9 as a precaution.
What now?
Make a copy of your seed and store it in a very safe place. If you lose it you will lose any and all IOTA you've stored on that seed. One of the safest ways of storing your seed is printing it out and storing it in a safe place offline. If you must store it digitally, then I recommend using KeePass to secure the seed.
The IOTA Wallet does not appear to support offline address generation yet.
You must generate a random 81 character seed using only A-Z and the number 9. It is imperative that your seed be an 81 character random assortment of A-Z and 9.
-
Thanks, I found this code: cat /dev/urandom |LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1– MahusCommented Nov 28, 2017 at 19:53
You should be skeptical! Always use a trusted source for your seed generation.
The seed syntax is as follows:
Seed: You must generate a random 81 character seed using only A-Z and the number 9. It is imperative that your seed be an 81 character random assortment of A-Z and 9.
Here is the official link for seed generation: https://matthewwinstonjohnson.gitbooks.io/iota-guide-and-faq/getting-started/dl-wallet/what-is-my-seed.html
You have several options available for offline seed generation, usually through the terminal.
However, you could just as easily use this method:
If you don't know how to run the above commands, then you can try a seed generator:
- Open this page in your browser --> https://ipfs.io/ipfs/QmdqTgEdyKVQAVnfT5iV4ULzTbkV4hhkDkMqGBuot8egfA (based on knarz.github.io/seedgen)
- Turn off your Internet connection (go offline)
- Follow the instructions on the page to generate a seed
- Once a seed is generated, change a few of the generated letters (as an extra security precaution)
- Save your new seed in a secure location (example: a secure password manager, such as KeePass)
Done.
For web developers with local web server. I added password encryption and decryption for another layer of security. So, that one can store the seed encrypted in a text file.
https://github.com/blumanski/iota-seed-encrypter-generator-decrypter
I lost myself iotas through a seed generator scam, that's why I created this one.
Edit: The codebase is PHP and the license is MIT. The seed is generated using the RandomLib library
-
Please include some information about your project. E.g. that it's PHP, what license and so on.– HelmarCommented Jan 11, 2018 at 9:05