Bitcoin Forum
July 16, 2019, 11:56:35 PM *
News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: [UPDATED] Bitduino: Generate bitcoin addresses randomly using Arduino  (Read 3615 times)
jujugoboom
Sr. Member
****
Offline Offline

Activity: 383
Merit: 250


View Profile
December 23, 2014, 02:51:52 AM
Last edit: February 05, 2015, 03:32:35 AM by jujugoboom
 #1

https://github.com/jujugoboom/Bitduino



I am proud to share with you what I have been working on.

This is code that works with a computer and an arduino board to generate bitcoin addresses. It uses a random number generated from hardware on the arduino and uses that to generate a bitcoin address.

This is my first bitcoin code ever and I hope you guys enjoy it. If anyone that has experience with arduino or python wants to help, message me.

A reminder that the actual addresses are converted and stored on your computer so they are only as secure as your computer, but I am looking into generating and storing on arduino.

If you enjoy please let me know and if you have any questions or complaints just tell me. Thanks.

EDIT: This now includes a more secure entropy library that has been tested and shown to be random. The program also now stores private keys in the EEPROM of the arduino. It stores it from address 0-31. If you run the Random Address sketch, this overwrites any private keys currently stored on the arduino. The Read EEPROM sketch can be used to write the private key to a serial monitor, or to the generate.py script. This is the program you should have loaded on your arduino if you want to use the same address over and over. Also added a seperate generate.py file that only generates the public key. This makes sure that the private key is never written to your computer. Please leave feedback here, or feel free to e-mail me at jujugoboom@gmail.com.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1563321395
Hero Member
*
Offline Offline

Posts: 1563321395

View Profile Personal Message (Offline)

Ignore
1563321395
Reply with quote  #2

1563321395
Report to moderator
1563321395
Hero Member
*
Offline Offline

Posts: 1563321395

View Profile Personal Message (Offline)

Ignore
1563321395
Reply with quote  #2

1563321395
Report to moderator
stevep
Newbie
*
Offline Offline

Activity: 30
Merit: 0



View Profile
December 23, 2014, 10:38:06 AM
 #2

I created an arduino based paper wallet printer just over a year ago.

https://www.youtube.com/watch?v=f7y_emuo68g

https://github.com/spearson78/paperwallet

In the end the arduino was just too slow so I had to switch to an arm chip for the final self contained prototype.

http://blog.bitfrore.com/

https://github.com/bitfrore/bitfrore
JohnLight95
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 23, 2014, 10:08:31 PM
 #3

I usually just use my arduino as a breakout for RX, TX but actually having a good use for it is really interesting, I will certainly give this a shot. Thanks for the good work.
jujugoboom
Sr. Member
****
Offline Offline

Activity: 383
Merit: 250


View Profile
December 24, 2014, 01:11:56 AM
 #4

To test the rng, I am running it on a loop right now to generate 100,000 private keys. When it finishes in a few days, I will upload the results to pastebin and put them here for everyone to see and test.
JohnLight95
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 24, 2014, 01:28:41 AM
 #5

To test the rng, I am running it on a loop right now to generate 100,000 private keys. When it finishes in a few days, I will upload the results to pastebin and put them here for everyone to see and test.

Looking forward to those results Smiley
benjamindees
Legendary
*
Offline Offline

Activity: 1330
Merit: 1000


View Profile
December 25, 2014, 04:36:59 PM
 #6

I like this idea.  But I'm a bit disappointed that you didn't take the advice in your Reddit thread seriously.  Polling an analog input for random numbers can be compromised by the presence of EM radiation, depending on the environment.  Your testing the code by generating 100,000 keys would only verify your particular environment, at that particular time.

Since all this code does is act as a source of randomness, don't you think you should look into adding some other sources, or some improvement?  There are much better sources of entropy on an Arduino than the one you are using.

My other advice is, before releasing a version of this capable of storing Bitcoin keys, please look into enabling the appropriate Arduino memory protection lock bits described in section 27 of the atmega328p datasheet.

Civil Liberty Through Complex Mathematics
jujugoboom
Sr. Member
****
Offline Offline

Activity: 383
Merit: 250


View Profile
December 26, 2014, 10:40:46 PM
Last edit: December 27, 2014, 04:01:27 AM by jujugoboom
 #7

I like this idea.  But I'm a bit disappointed that you didn't take the advice in your Reddit thread seriously.  Polling an analog input for random numbers can be compromised by the presence of EM radiation, depending on the environment.  Your testing the code by generating 100,000 keys would only verify your particular environment, at that particular time.

Since all this code does is act as a source of randomness, don't you think you should look into adding some other sources, or some improvement?  There are much better sources of entropy on an Arduino than the one you are using.

My other advice is, before releasing a version of this capable of storing Bitcoin keys, please look into enabling the appropriate Arduino memory protection lock bits described in section 27 of the atmega328p datasheet.

Thanks for finding that library. I will definitely work with that. I am fairly new to this as I said and was looking for some direction. I am downloading the library right now and will update the github in the next few hours. I apologize for not immediately fixing the complaints in the reddit thread, I have been working on it in my free time. I was working on implementing a hardware rng option, and was trying to find all the parts for one in my area. I do appreciate the library that can be used without any addons. As I said in the readme on the github, I was aware that the library I was using was flawed, and that people should use other means for storing large amounts of bitcoins, but I released this because I wanted everyone to see.

If anyone did want to see, the 100,000 addresses finished generating and here they are https://mega.co.nz/#!U4JThZII!hd-fjZ6rKVb2aGEj515fcXEZI9OF_ZyWdXGSGtdDiSw. I want to emphasize again do NOT use these keys for any bitcoin storage. ONLY for testing purposes.  


EDIT: ADDED ENTROPY LIBRARY. MUCH MORE SECURE AND RANDOM NOW.
btc_enigma
Hero Member
*****
Offline Offline

Activity: 648
Merit: 502


View Profile
January 09, 2015, 12:38:51 PM
 #8

Is this safe to use  ? ... I have a arduino lying around waiting to be put to use

jujugoboom
Sr. Member
****
Offline Offline

Activity: 383
Merit: 250


View Profile
February 05, 2015, 03:33:03 AM
 #9

New update with lots of new features.
Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!