Pages:
Author

Topic: btcaddr.me - Bitcoin Address Identicon - page 2. (Read 7314 times)

legendary
Activity: 1050
Merit: 1003
November 05, 2012, 05:25:43 AM
#27

Interesting idea. I came across: http://robohash.org/ - cunicula you thought about something like this? Wink

The robohash robot is great. Optionally print out an image of the robot next to the identicon?

Users could check that the identicon maps to the robot and robots are easier to remember than patterns.

The robots would be good branding for bitcoin. It looks like robohash is open source.
full member
Activity: 125
Merit: 100
November 04, 2012, 04:12:25 PM
#26
1MB2HBuzi4LQ9XZwtQ3GzRGombGx72LUPZ


1F9UeZCMcSfdYpVwSFfbaWQxK4p7FER79k


 Wink


Not really familiar with github but here is the script I was using:

Code:
#!/usr/bin/perl

use Digest::SHA;$|=1;
open(VG, "./vanitygen -q -k 1 |");
while(){print $_;chomp($_);
  $msg=$_;if(/Address: (.*)/ig){$addr=$1;
    $hash=Digest::SHA::sha1_hex(Digest::SHA::sha1_hex($addr));
    $id=substr($hash,0,2);
    $id.=hex(substr($hash,2,1))%8;
    $id.=hex(substr($hash,3,1))%4;
    $id.=hex(substr($hash,4,1))%4;
    $id.=hex(substr($hash,5,1))%2;
    $id.=int(hex(substr($hash,6,1))/4);
    $id.=int(hex(substr($hash,8,1))/4);
    $id.=int(hex(substr($hash,10,1))/4);
    $id.=int(hex(substr($hash,12,1))/4);
    $id.=int(hex(substr($hash,14,1))/4);
    $id.=int(hex(substr($hash,16,1))/4);
    $id.=hex(substr($hash,18,1));
    print "Identicon: $id              \n";
    if($seen{$id} ne ''){
      print "Match found\n".$seen{$id}."\n$1\n";exit;
    }$seen{$id}=$1;
  }
}

That's picking 32 bits out of the hash for the identicon string, to add more bits and get more accurate I would add more bits on the end of the colors that are using just 2 bits per channel there.  Notice that it just checks for a match against any icon it has found so far, to match a particular one you would find an identicon string for it from the same bits and just search for that, to search an address prefix as well you can change the vanitygen argument.  I also was running on a machine with 8GB RAM, run at your own risk with more bits or less RAM when saving every result like this.
newbie
Activity: 14
Merit: 0
newbie
Activity: 14
Merit: 0
November 04, 2012, 03:18:26 PM
#24
Thank you for your comments, everyone! I would like to emphasize that the project is just a proposition made during one Saturday after ThePiachu master thesis inspired me. It wasn't well tested for colisions though. However, I'm happy that this thread is growing and ideas for upgrades appear.

mskwik, thank you for your tests. I didn't think your way: that when the project become popular people may rely mostly on identicon rather that prefix thus they may stop checking it. Now, identicon is made from string made from double sha1 on address. I'm not sure what can be done to make collisions rarer. Maybe you would like to push to github your code? Smiley

I realize this has no practical purpose, but can you make the identicon into something cute?

More broadly, if you could do QR codes that are shaped like bunny rabbits and pandas, then the whole QR scheme might become more interesting to 50% of the population.

That would be quite an interesting idea, although it would probably be way harder to implement than random geometric shapes...

Interesting idea. I came across: http://robohash.org/ - cunicula you thought about something like this? Wink
full member
Activity: 125
Merit: 100
November 04, 2012, 02:33:15 PM
#23
Replying to myself again Roll Eyes, but just for fun if we disregard prefix we can fairly easily match 32 bits:

1KbhFQVEUk8wMVtiuBURZAQ1PXnsDUqcag


1EEwcrjaJkWLLZDuZA2Rhob3aVM8NwY5tR



or 40 bits:

1NcE7wksPMcydG7bfsGsGdjf2ckzXSfw1R


1H26EaqCrbdHZk2SvqvZDfPHqYGbYqQsJj


Not going to try for 48 bits on the CPU, but with OpenCL code on a GPU it shouldn't be bad either.
full member
Activity: 125
Merit: 100
November 04, 2012, 01:24:04 PM
#22
So I did download the source and take a look at it.  Seems to me you would need to match about 32 bits to look fairly similar (like so someone may not notice if it had changed between site visits) up to about 48 bits to look fairly similar even comparing them side by side.  Mathematically this puts it roughly similar to checking 7 digits at the end of the address.

As a short example here's 12 bits matched which only takes a couple minutes (plus I skimped a little on the prefix):

1BoatSLRHtKNngkdXEeobR76b53LETtpyT


1BoaDLmiNMdQJKe34nbbvJDCqAmpD1adMN


I do like the idea, the human brain does seem to be wired to remember (and recognize if they change) colors and shapes better than random characters, just trying to quantify the results somewhat.
full member
Activity: 125
Merit: 100
November 04, 2012, 10:19:32 AM
#21
Hm, I always check the beginning and end of each address. Do I still need this?

That depends on how many characters you memorise. If it's about 10, you should be fine, otherwise creating a collision would take just a few bitcoins worth of hashing. You can read more about it in my master thesis around page 66 - https://bitcointalksearch.org/topic/my-bitcoin-master-thesis-88149 .

It is however better than checking an equivalent number of characters just at the beginning since it includes the checksum part of the address.  It could be just as good as checking the identicon depending on how many bits you would need to get a similar-looking identicon.  Both the address checksum and the identicon are based on parts of a hash of the address, it's not clear without examining the identicon source further how many bits you would need to generate another that looks "close enough".
sr. member
Activity: 444
Merit: 307
November 04, 2012, 09:33:53 AM
#20
I realize this has no practical purpose, but can you make the identicon into something cute?

More broadly, if you could do QR codes that are shaped like bunny rabbits and pandas, then the whole QR scheme might become more interesting to 50% of the population.

That would be quite an interesting idea, although it would probably be way harder to implement than random geometric shapes...
legendary
Activity: 1246
Merit: 1016
Strength in numbers
November 04, 2012, 06:04:37 AM
#19
I realize this has no practical purpose, but can you make the identicon into something cute?

More broadly, if you could do QR codes that are shaped like bunny rabbits and pandas, then the whole QR scheme might become more interesting to 50% of the population.

Lol.

"Mom can you send me lunch money? I'm the panda with crossed eyes holding a rainbow in its LEFT hand."
legendary
Activity: 1050
Merit: 1003
November 04, 2012, 05:41:43 AM
#18
I realize this has no practical purpose, but can you make the identicon into something cute?

More broadly, if you could do QR codes that are shaped like bunny rabbits and pandas, then the whole QR scheme might become more interesting to 50% of the population.
sr. member
Activity: 444
Merit: 307
November 04, 2012, 05:35:18 AM
#17
It seems it helps in cases where someone expects to be paying an address they have already paid, but the address has somehow been swapped out with the malicious one. If the site that was compromised is also serving the icon could that not also be swapped out for one that doesn't actually match? To guard against that the payer would need to personally check, is that what is intended?

If the image was swapped as well, then the website owner could recognize it as not being theirs (lets hope). If the original image is left, the sender can recognise it doesn't match up.

Hm, I always check the beginning and end of each address. Do I still need this?

That depends on how many characters you memorise. If it's about 10, you should be fine, otherwise creating a collision would take just a few bitcoins worth of hashing. You can read more about it in my master thesis around page 66 - https://bitcointalksearch.org/topic/my-bitcoin-master-thesis-88149 .



Also from other news, this topic is also available on Reddit:
http://www.reddit.com/r/Bitcoin/comments/12ktos/bitcoin_address_identicon_topic_a_solution/
legendary
Activity: 1246
Merit: 1016
Strength in numbers
November 04, 2012, 03:59:02 AM
#16
I think it could work as a browser plugin, where when you mouse over an address, you would see the identicon. This would allow the user to verify quickly, but not rely on the security of the site.

So, you see the correct icon for the attacker's address.  Nothing gained.

Seems like it is only relevant when paying an address you have seen before. An optional warning in a client like "You are trying to pay an address that may look like one you have payed before, BUT YOU HAVE NEVER PAID THIS ADDRESS BEFORE. Proceed?" might accomplish this better.
legendary
Activity: 3010
Merit: 1031
RIP Mommy
November 04, 2012, 03:38:18 AM
#15
Hm, I always check the beginning and end of each address. Do I still need this?
kjj
legendary
Activity: 1302
Merit: 1026
November 04, 2012, 01:46:42 AM
#14
I think it could work as a browser plugin, where when you mouse over an address, you would see the identicon. This would allow the user to verify quickly, but not rely on the security of the site.

So, you see the correct icon for the attacker's address.  Nothing gained.
hero member
Activity: 588
Merit: 500
firstbits.com/1kznfw
November 04, 2012, 01:40:32 AM
#13
I think it could work as a browser plugin, where when you mouse over an address, you would see the identicon. This would allow the user to verify quickly, but not rely on the security of the site.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
November 03, 2012, 07:40:41 PM
#12
This is interesting.

It seems it helps in cases where someone expects to be paying an address they have already paid, but the address has somehow been swapped out with the malicious one. If the site that was compromised is also serving the icon could that not also be swapped out for one that doesn't actually match? To guard against that the payer would need to personally check, is that what is intended?

Another solution that came to me (inspired by etotheipi) is to generate a visually distinctive address (etotheipi used an address with only capital letters). I think there are probably a lot of ways to make an address visually striking. Now that alone would not work because making another one that is striking in the same way would cost the same as the original on average, but if people remember the feel of the address plus the first 5 characters or so (which the original address producer can just let be random) then matching it would be about 58^5 times harder for an attacker.

What are some cheap but striking patterns?

An unusualy high number of triplets? (1j4U666mJJJw3QD7gggrHHH2rynFEcAAA)
A lot of numbers?
No letters or numbers with curves?
Only capitals and numbers?
full member
Activity: 165
Merit: 100
November 03, 2012, 06:10:16 PM
#11
Hmm, this is neat! Kind of a way to side-step Zooko's triangle
newbie
Activity: 14
Merit: 0
legendary
Activity: 1204
Merit: 1002
RUM AND CARROTS: A PIRATE LIFE FOR ME
November 03, 2012, 02:27:37 PM
#9
You can use it will litecoin addresses too (even there's "btc" in domain name). To be honest, you can use it with any string as there is no input validation. It just takes a string do sha1 twice and make identicon from it.

Is it open source? If not- is there an API that other sites could provide the service as well through you?
newbie
Activity: 14
Merit: 0
November 03, 2012, 02:25:19 PM
#8
You can use it will litecoin addresses too (even there's "btc" in domain name). To be honest, you can use it with any string as there is no input validation. It just takes a string do sha1 twice and make identicon from it.
Pages:
Jump to: