Ines Carvajal Gallardo
Download
Report
Transcript Ines Carvajal Gallardo
Inés Carvajal Gallardo
Salts
Nonces
Sessie-keys
Random priemgetallen
“The generation of random numbers is too
important to be left to chance”
Uniform gedistribueerd
Statistisch onafhankelijk
Voor de waarnemer
Deterministisch
Periodiek
Onveilig
Efficiënt
Mersenne Twister
Linear Shift Feedback Register
𝑥𝑛+1 = (𝑘 ∗ 𝑥𝑛 + 𝑎 ) 𝑚𝑜𝑑 𝑚
𝑥0 ‘seed value’
Voorbeeld: 𝑥0 = 𝑎 = 𝑘 = 7, 𝑚 = 10
7, 6, 9, 0, 7, 6, 9, 0, …
Klasse Random
𝑥0 = 48 bits
Periode gelijk aan m als:
m, a: relatief priem
(k-1) deelbaar door alle priemfactoren van m
Als 4 | m, dan 4 | (k -1)
Dus: m groot kiezen!
Onveilig in cryptografie
LCG op zichzelf niet sterk
Sterk maken door goede a, k, m
Gebruikt de kloktijd als seed-value
2 instanties op hetzelfde moment gemaakt:
dezelfde random numbers
Random numbers
Geen patronen, compleet veilig
Niet-deterministisch
Iets anders dan een formule…
Fysische processen
Radioactief verval, toetsaanslagen
▪ Let op betrouwbaarheid
Niet-fysische processen
Dobbelsteen, loten trekken
Atmospheric noise
Meten met radio
Variaties digitaliseren
PHP rand() on Windows
random.org
Efficiëntie
Minder bits per seconde
Andere mogelijkheid als seed-values voor PRNG’s
Meetapparatuur
Vrij ingewikkeld voor goede resultaten
Veilige PRNG
Extra eisen aan veiligheid
Gebruik van entropie
Maat van onwillekeurigheid
Theoretisch en empirisch
Chi-squared Test
Seriële Test
SRNG moet voldoen aan de next-bit test
“Gegeven k bits, k+1ste bit niet in polynomiale tijd te
berekenen met meer dan 50% kans op slaging.”
Cryptographically secure RNG
Onderliggende PRNG
Interne staat willekeurig houden
Entropie
Veel gebruikt: SHA1PRNG, gebaseerd op het
SHA1 message digest algoritme
OS verzamelt constant entropie
Entropy pool
Entropie kan ook van buiten komen
Bijvoorbeeld random.org
SecureRandom kan bij de entropie
Entropie vermindert
Windows: CryptoAPI
CryptGenRandom() call
Thread-id
Proces-id
Performance-data van CPU
Counter-data
Tick-count sinds de laatste boot
Linux
dev/random en dev/urandom
Muisactiviteit
Toetsenbord
Data van I/O-operaties
Data van Interrupts
Veilig
2
𝑥𝑛+1 = 𝑥𝑛 𝑚𝑜𝑑 𝑚
m is een Blum-integer
Even moeilijk als factorisatie
Dus even veilig als bijv. RSA
▪ (Zegt niet heel veel)
Nadeel: traag
Gebruik voor cryptografie geen PRNG
Dus niet Random!
Gebruik een SRNG of zelfs TRNG
Dus wel SecureRandom!
TRNG erg langzaam
SRNG’s voldoen aan veiligheidseisen