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