190 likes | 394 Views
Inés Carvajal Gallardo. Random Number Generators. Waarom random?. Salts Nonces Sessie- keys Random priemgetallen “The generation of random numbers is too important to be left to chance”. Wat is random?. Uniform gedistribueerd Statistisch onafhankelijk Voor de waarnemer.
E N D
InésCarvajalGallardo Random Number Generators
Waarom random? • Salts • Nonces • Sessie-keys • Random priemgetallen “The generation of random numbers is too important tobeleftto chance”
Wat is random? • Uniform gedistribueerd • Statistisch onafhankelijk • Voor de waarnemer
Pseudo-random: prng • Deterministisch • Periodiek • Onveilig • Efficiënt • Mersenne Twister • LinearShift Feedback Register
LCG: Lineaire congruentie generator • ‘seedvalue’ • Voorbeeld: 7, 6, 9, 0, 7, 6, 9, 0, … • Klasse Random = 48 bits
LCG: Lineaire congruentie generator 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!
Klasse Random • 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
True random number generators • Random numbers • Geen patronen, compleet veilig • Niet-deterministisch • Iets anders dan een formule…
True random number generators • Fysische processen • Radioactief verval, toetsaanslagen • Let op betrouwbaarheid • Niet-fysische processen • Dobbelsteen, loten trekken
random.org • Atmosphericnoise • Meten met radio • Variaties digitaliseren random.org PHP rand() on Windows
Nadelen van TRNG’s • Efficiëntie • Minder bits per seconde • Andere mogelijkheid als seed-values voor PRNG’s • Meetapparatuur • Vrij ingewikkeld voor goede resultaten
Secure random number generators • Veilige PRNG • Extra eisen aan veiligheid • Gebruik van entropie • Maat van onwillekeurigheid
Statistische Tests • 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.”
SecureRandom • Cryptographically secure RNG • Onderliggende PRNG • Interne staat willekeurig houden • Entropie • Veel gebruikt: SHA1PRNG, gebaseerd op het SHA1 messagedigest algoritme
Entropie • OS verzamelt constant entropie • Entropy pool • Entropie kan ook van buiten komen • Bijvoorbeeld random.org • SecureRandom kan bij de entropie • Entropie vermindert
Bronnen voor Entropie Windows:CryptoAPI CryptGenRandom() call • Thread-id • Proces-id • Performance-data van CPU • Counter-data • Tick-count sinds de laatste boot
Bronnen voor Entropie Linux dev/random en dev/urandom • Muisactiviteit • Toetsenbord • Data van I/O-operaties • Data van Interrupts
BlumBlumShub • Veilig • mis een Blum-integer • Even moeilijk als factorisatie • Dus even veilig als bijv. RSA • (Zegt niet heel veel) • Nadeel: traag
Conclusie • 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