SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Random numbers
Hashes
Cryptography for Software and Web Developers
Part 4: randomness, hashing, tokens
Hanno B¨ock
2014-05-28
1 / 13
Random numbers
Hashes
Bad random numbers
Random fails
Example: Factoring RSA keys
Good / bad randomness
In security (not just crypto) we often need random numbers
Examples: CSRF-tokens, one-time-action tokens, password
salts, key generation, ...
There’s even crypto out there that needs good random
numbers to run or it’ll completely break: DSA, ECDSA (but
better avoid that).
Good randomness is hard
2 / 13
Random numbers
Hashes
Bad random numbers
Random fails
Example: Factoring RSA keys
Good / bad randomness
OS or programming language default random functions often
not secure random numbers.
Rounding problems, conversion problems can reduce space of
possible random numbers vastly.
2008 Debian OpenSSL bug.
PRNGs need a seed or they don’t work.
NSA managed to make a backdoored RNG an official
standard and payed RSA Inc. 10 Million $ to make it the
default in BSAFE
No way to test random numbers reliably.
3 / 13
Random numbers
Hashes
Bad random numbers
Random fails
Example: Factoring RSA keys
Good / bad randomness
An RSA public key consists of an exponent e and a modulus
N which is the product of two primes
If you know the primes you can get the private key
What happens if we have two RSA keys with a shared prime,
e. g. N1 = p ∗ q1, N2 = p ∗ q2? You can break this key with
the greatest common divisor algorithm.
Some people tried this with lots of SSH and TLS keys and
found over 50 embedded devices that created such factorable
keys. [url]
Linux seed sources: HD timings, keyboard strokes, mouse
movements. Embedded devices often have no HD, no
keyboard, no mouse.
4 / 13
Random numbers
Hashes
Bad random numbers
Random fails
Example: Factoring RSA keys
Good / bad randomness
PHP good: openssl random pseudo bytes(), PHP bad:
mt rand(), rand(), uniqid()
JavaScript good: window.crypto.getRandomValues(), bad:
Math.random() (only latest browser support
window.crypto.getRandomValues())
/dev/urandom is good if it is properly seeded. For embedded
devices: Better create the keys on a desktop PC.
5 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
So many people have wrong ideas about hashes...
Completely typical situation: I write about cryptographic
hashes, people in the comments discuss about password
hashes and salting
Hashes used in many contexts: error detection (CRC32),
signatures (SHA256, SHA516), passwords (bcrypt, scrypt)
If you use a hash function you need to know what it should do
6 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
CRC32: Very fast, no security at all
Reliably detects errors, but trivial to construct another input
for an existing hash
Usable only for errors and if no attacker is involved (e. g.
error detection on hard disks or file comparison over otherwise
secure network connections).
7 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
Cryptographic hashes need to be collision resistant and
preimage resistant
Collision: It should be practically impossible to create two
different inputs with same hash
Preimage: It should be practically impossible to create an
input for a given hash value.
Used in many places, e. g. signatures
Some crypto protocols need hashes and don’t have collision
resistance requirement (e. g. HMAC), but that’s usually not
something that should bother you
8 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
In 2004/2005 big breakthroughs on hash attacks, mostly the
work of a Chinese team led by Wang Xiaoyun.
Most important results: practical collision attacks on MD5,
almost practical attacks on SHA1
2008: MD5 attack on RapidSSL leads to fake CA, 2012:
Flame worm uses MD5 attack to create rogue code signing
cert
SHA-2 functions (SHA256, SHA512) considered safe today,
SHA-3 will come soon.
9 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
Idea: We don’t save passwords, we just save hashes so if our
database gets stolen the attacker has no direct access to the
passwords
Attackers can brute force
Salting makes it harder
Security requirements for password hashes completely different
from cryptographic hash functions
Collision resistance doesn’t matter, they should ideally not be
fast
10 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
glibc uses several iterations of cryptographic hashes (default
SHA512) and a salt.
bcrypt and scrypt are functions designed to be password
hashes. bcrypt is designed to be slow, scrypt is designed to be
slow and use lots of memory.
There’s a Password Hashing Competition (PHC), results
expected in 2015.
11 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
The importance of secure password hashing is IMHO vastly
overstated.
glibc-type SHA512, bcrypt, scrypt are all ”good enough”, just
make sure you have a salt.
Password hashing only gives you a tiny little bit of extra
protection if your database gets stolen. But if that happens
you’re screwed anyway.
Make sure nobody steals your database. That’s much more
important.
12 / 13
Random numbers
Hashes
Simple hashes
Cryptographic hashes
Problems with MD5, SHA1
Passwords
Password hash functions
A note on password hashes
Sources
Factorable RSA keys https://factorable.net/
http://media.ccc.de/browse/congress/2012/
29c3-5275-en-facthacks_h264.html
Password Hashing Competition
https://password-hashing.net/
13 / 13

Mais conteúdo relacionado

Mais de hannob

SSL, X.509, HTTPS - How to configure your HTTPS server
SSL, X.509, HTTPS - How to configure your HTTPS serverSSL, X.509, HTTPS - How to configure your HTTPS server
SSL, X.509, HTTPS - How to configure your HTTPS server
hannob
 

Mais de hannob (8)

Crypto workshop part 3 - Don't do this yourself
Crypto workshop part 3 - Don't do this yourselfCrypto workshop part 3 - Don't do this yourself
Crypto workshop part 3 - Don't do this yourself
 
Crypto workshop part 1 - Web and Crypto
Crypto workshop part 1 - Web and CryptoCrypto workshop part 1 - Web and Crypto
Crypto workshop part 1 - Web and Crypto
 
How broken is TLS?
How broken is TLS?How broken is TLS?
How broken is TLS?
 
Papierlos
PapierlosPapierlos
Papierlos
 
Gehackte Webapplikationen und Malware
Gehackte Webapplikationen und MalwareGehackte Webapplikationen und Malware
Gehackte Webapplikationen und Malware
 
SSL, X.509, HTTPS - How to configure your HTTPS server
SSL, X.509, HTTPS - How to configure your HTTPS serverSSL, X.509, HTTPS - How to configure your HTTPS server
SSL, X.509, HTTPS - How to configure your HTTPS server
 
Stromsparen
StromsparenStromsparen
Stromsparen
 
Wirtschaftswachstum, klimawandel und Peak Oil
Wirtschaftswachstum, klimawandel und Peak OilWirtschaftswachstum, klimawandel und Peak Oil
Wirtschaftswachstum, klimawandel und Peak Oil
 

Último

一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
ydyuyu
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
pxcywzqs
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
Asmae Rabhi
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
ydyuyu
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptx
galaxypingy
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
ayvbos
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Monica Sydney
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
gajnagarg
 

Último (20)

一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac RoomVip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptx
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
 

Crypto workshop 4 - Hashing, Tokens, Randomness

  • 1. Random numbers Hashes Cryptography for Software and Web Developers Part 4: randomness, hashing, tokens Hanno B¨ock 2014-05-28 1 / 13
  • 2. Random numbers Hashes Bad random numbers Random fails Example: Factoring RSA keys Good / bad randomness In security (not just crypto) we often need random numbers Examples: CSRF-tokens, one-time-action tokens, password salts, key generation, ... There’s even crypto out there that needs good random numbers to run or it’ll completely break: DSA, ECDSA (but better avoid that). Good randomness is hard 2 / 13
  • 3. Random numbers Hashes Bad random numbers Random fails Example: Factoring RSA keys Good / bad randomness OS or programming language default random functions often not secure random numbers. Rounding problems, conversion problems can reduce space of possible random numbers vastly. 2008 Debian OpenSSL bug. PRNGs need a seed or they don’t work. NSA managed to make a backdoored RNG an official standard and payed RSA Inc. 10 Million $ to make it the default in BSAFE No way to test random numbers reliably. 3 / 13
  • 4. Random numbers Hashes Bad random numbers Random fails Example: Factoring RSA keys Good / bad randomness An RSA public key consists of an exponent e and a modulus N which is the product of two primes If you know the primes you can get the private key What happens if we have two RSA keys with a shared prime, e. g. N1 = p ∗ q1, N2 = p ∗ q2? You can break this key with the greatest common divisor algorithm. Some people tried this with lots of SSH and TLS keys and found over 50 embedded devices that created such factorable keys. [url] Linux seed sources: HD timings, keyboard strokes, mouse movements. Embedded devices often have no HD, no keyboard, no mouse. 4 / 13
  • 5. Random numbers Hashes Bad random numbers Random fails Example: Factoring RSA keys Good / bad randomness PHP good: openssl random pseudo bytes(), PHP bad: mt rand(), rand(), uniqid() JavaScript good: window.crypto.getRandomValues(), bad: Math.random() (only latest browser support window.crypto.getRandomValues()) /dev/urandom is good if it is properly seeded. For embedded devices: Better create the keys on a desktop PC. 5 / 13
  • 6. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources So many people have wrong ideas about hashes... Completely typical situation: I write about cryptographic hashes, people in the comments discuss about password hashes and salting Hashes used in many contexts: error detection (CRC32), signatures (SHA256, SHA516), passwords (bcrypt, scrypt) If you use a hash function you need to know what it should do 6 / 13
  • 7. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources CRC32: Very fast, no security at all Reliably detects errors, but trivial to construct another input for an existing hash Usable only for errors and if no attacker is involved (e. g. error detection on hard disks or file comparison over otherwise secure network connections). 7 / 13
  • 8. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources Cryptographic hashes need to be collision resistant and preimage resistant Collision: It should be practically impossible to create two different inputs with same hash Preimage: It should be practically impossible to create an input for a given hash value. Used in many places, e. g. signatures Some crypto protocols need hashes and don’t have collision resistance requirement (e. g. HMAC), but that’s usually not something that should bother you 8 / 13
  • 9. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources In 2004/2005 big breakthroughs on hash attacks, mostly the work of a Chinese team led by Wang Xiaoyun. Most important results: practical collision attacks on MD5, almost practical attacks on SHA1 2008: MD5 attack on RapidSSL leads to fake CA, 2012: Flame worm uses MD5 attack to create rogue code signing cert SHA-2 functions (SHA256, SHA512) considered safe today, SHA-3 will come soon. 9 / 13
  • 10. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources Idea: We don’t save passwords, we just save hashes so if our database gets stolen the attacker has no direct access to the passwords Attackers can brute force Salting makes it harder Security requirements for password hashes completely different from cryptographic hash functions Collision resistance doesn’t matter, they should ideally not be fast 10 / 13
  • 11. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources glibc uses several iterations of cryptographic hashes (default SHA512) and a salt. bcrypt and scrypt are functions designed to be password hashes. bcrypt is designed to be slow, scrypt is designed to be slow and use lots of memory. There’s a Password Hashing Competition (PHC), results expected in 2015. 11 / 13
  • 12. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources The importance of secure password hashing is IMHO vastly overstated. glibc-type SHA512, bcrypt, scrypt are all ”good enough”, just make sure you have a salt. Password hashing only gives you a tiny little bit of extra protection if your database gets stolen. But if that happens you’re screwed anyway. Make sure nobody steals your database. That’s much more important. 12 / 13
  • 13. Random numbers Hashes Simple hashes Cryptographic hashes Problems with MD5, SHA1 Passwords Password hash functions A note on password hashes Sources Factorable RSA keys https://factorable.net/ http://media.ccc.de/browse/congress/2012/ 29c3-5275-en-facthacks_h264.html Password Hashing Competition https://password-hashing.net/ 13 / 13