I COULD unhash an address... If I knew the SHA256 and the key... Yeah, thanks, krist.ceriat.net for not providing the SHA's and the keys.
Let's say the account with password "a", has an address "kxxk8invlf" and a privatekey "9c61cce6bae9ac864b60238532ac8ce1a73006d943b44e060259e50363f4aebd-000" which is 68 characters long.
The hash stored in the database is sha256("address..privatekey"), you know the address, but you still need to figure out the privatekey.
Is it me or you are claiming to be able to crack a 68 characters long password?
Spoiler
If BitCoin uses sha for mining, does it mean it has detected a ton of collisions, since there are possibly millions of users producing billions of hashes per second?
If BitCoin uses sha for mining, does it mean it has detected a ton of collisions, since there are possibly millions of users producing billions of hashes per second?
I highly doubt it, 2^256 is still a very gigantic amount.
There must have been some collisions that were discovered. And how else are rainbow tables created?
no as soon as a collision is detected in a hash algo it's ditched. that's what happened to md5 and sha-1
rainbow tables are basically just a huge list of precomputed hashes. they are built from password lists, word dictionaries, all strings from a to z, etc. they take a huge amount of time to generate though
using a salt pretty much completely voids the application of a rainbow table since the hash is different to your input string, and thus you pretty much just have to go for brute force
thus if anyone ever gets access to the krist database, they'll have to manually crack each one still
It's not necessary as soon as there's a collision.
Having a collision that produce the same hash with different input is just incredibly lucky, but that doesn't necessary mean any weakness.
Finding a flaw in the collision resistance of an algo though is a big deal, example MD5 which attacks can find a collision with 2^18 time rather than 2^64, which runs in less than a seconds on modern hardware, MD4 which can have collision in less than 2 steps (collisions being as cheap as verifying it).
These attacks aren't a way of reversing a hash back to its original input, meaning that collisions doesn't really matter for password storage, you can generate a different password with the same hash, but you won't recover the real password as easily.
Collisions are much more a big deal for file integrity, or by example, certificate signature, by which you can make your own malicious certificate, and make it have the same hash signature as a legitimate signed certificate.
tl;dr, collision isn't a big deal for password storage or mining, since your resulted input might not even be the original password, or in a valid format for mining.
I COULD unhash an address... If I knew the SHA256 and the key... Yeah, thanks, krist.ceriat.net for not providing the SHA's and the keys.
Let's say the account with password "a", has an address "kxxk8invlf" and a privatekey "9c61cce6bae9ac864b60238532ac8ce1a73006d943b44e060259e50363f4aebd-000" which is 68 characters long.
The hash stored in the database is sha256("address..privatekey"), you know the address, but you still need to figure out the privatekey.
Is it me or you are claiming to be able to crack a 68 characters long password?
Spoiler
If BitCoin uses sha for mining, does it mean it has detected a ton of collisions, since there are possibly millions of users producing billions of hashes per second?
Right now, the bitcoin network is mining at about 1.2 exahashes per second. There's two SHA hashes in a bitcoin mining hash, so we're lookingat 2,400,000,000,000,000,000 hashes every second. The number of possible SHA hashes is 2^256 - 115,792,089,237,316,195,423,570,985,008,6i'm gonna stop there, it's a really big number. Even with a computers mankind will ever create, and all the energy of the sun - the sun would die out before there is a SHA-256 collision, and it will remain secure until either computers are made of something other than matter or occupy something other than space.
That means that we would need 2^195 seconds (because log(2,2400000000000000000) = 61,... and 256-61 = 195), which is 5*1058 seconds. This is 1.59 * 1051 years. This is 1.13 * 1041 times the age of the universe, which is about 14*109 years old. A lot!
In comparison, there are 1082 atoms in the universe, while there are 2256 = 1078 possible SHA 256 outputs. (Square that to get the SHA 512 outputs.) This means that if every atom mined at the speed of 1/104 hashes per second, we would exhaust all the possibilities in one second. However that is never going to happen, so rest in peace weak password users.
But either way, it's unlikely that the Krist database will be downloadable, since we're no longer using SQLite, which means we would need to dump the db periodically.
To follow this up, I am planning on writing a DB dumper that will make a data.db containing all non-sensitive info at 0:00 GMT daily. Edit: I'm doing this now.
ry00000, on 23 February 2016 - 01:09 PM, said:
I COULD unhash an address... If I knew the SHA256 and the key... Yeah, thanks, krist.ceriat.net for not providing the SHA's and the keys.
You can unhash an address? Yeah, right. You could rainbow table it for sure, but we store them salted so good luck using a rainbow table too.
Edit 2: I had a second look at your message, and it's absolutely hilarious how BS it is. First of all, why do you need the SHA-256 AND the key? The SHA-256 is pretty much just sha256(address + privatekey), so the key is just enough. Address generation has nothing to do with the stored SHA-256, it is purely an extra measure against collisions.
Addresses are generated based on the privatekey, and will collide. This means that you can mine addresses. This is most likely what you think you can do. Addresses are generated using SHA-256 and a little bit of fairy dust (and 3d6 quality code). It should be noted that SHA-256 is a cryptographic hash function, and it is one-way. This means you cannot unhash. You can however mine for the target string and hope that you eventually get it. Rainbow tables make this easy as they come with pre-prepared input and outputs, but are invalidated when salts are thrown into the mix. If you have enough computational power, you can easily mine for any address you wish. However, as Lignum stated, you will need to mine for the exact privatekey used now.
ry00000, on 23 February 2016 - 01:09 PM, said:
Yeah, thanks, krist.ceriat.net for not providing the SHA's and the keys.
What the hell? Were you dropped on the head as a child? Did you seriously think that any of us would be stupid enough to literally give you the privatekeys and/or hashes? Please take a good look in a mirror and reconsider your life. Thank you.
I didn't know it was so secure. It's Minecraft, stop being secure!
Someone's started mining as "kristisgay." That makes me wonder what happens in the event of an address collision with two different private keys. Is it treated as the same address? Are "private keys" even stored?
Someone's started mining as "kristisgay." That makes me wonder what happens in the event of an address collision with two different private keys. Is it treated as the same address? Are "private keys" even stored?
Since very recently, hashes of private keys are stored so that collisions aren't a problem. Before that, private keys did not touch the database at all, hashed or not.
Also, it is quite unlikely that anyone actually has the private key to that address.
I'm in the range of KILO hashes a second. I was faster with my CPU.
You didn't follow the mining instructions then. They tell you how to get better speeds. Even integrated graphics will easily beat most CPU-only miners if set up properly.
Someone's started mining as "kristisgay." That makes me wonder what happens in the event of an address collision with two different private keys. Is it treated as the same address? Are "private keys" even stored?
I explained this a few posts back. Recently we updated the security model, so even if somebody finds two privatekeys that belong to the same address, the database will only allow the first discovered one to be used. For example, with the address kfe3c3qz4w there are two found KristWallet privatekeys:
KSTcollision-n=6085997
KSTcollision-n=7770485
If we convert these to pure Krist privatekeys, we get these:
When an API call is made that has anything to do with the address's privatekey (/login, transaction creation, name registration etc), the privatekey is bound to that address. From then on, only that privatekey will work with it. For example, if someone makes a transaction from kfe3c3qz4w using the privatekey 66e8d0a..., it will bind said privatekey to the address. Then, if someone tries to make a transaction from kfe3c3qz4w using the privatekey 245ab5ea..., they will get an "access denied" error.
While this does not prevent address collisions, it prevents wallet collisions. To view the full implementation of the storage, you can view the source code. The relevant file is src/addresses.js, lines 39 to 77.