Generátor pseudonáhodných čísel (PRNG)

  • Algoritmus, jehož výstupem je posloupnost, která sice ve skutečnosti není náhodná, ale která se zdá být náhodná, pokud útočníkovi nejsou známy některé parametry generátoru
  • Snadno realizovatelné
  • Rychlé
  • Výstup je ale předvídatelný

Lineární kongruenční generátor

  • Není kryptograficky bezpečný
  • ! Rovnice:
  • = posloupnost pseudonáhodných čísel
  • = modul (často mocnina 2)
  • = násobitel
  • = inkrement
  • = počáteční hodnota (seed)

Požadavky na kryptograficky bezpečné PRNG

  • Next-bit test
    • ! Je-li známo prvních bitů náhodné posloupnosti, neexistuje žádný algoritmus s polynomiální složitostí, který by dokázal předpovědět další, tedy . bit s pravděpodobností úspěchu
    • Tedy nejsem schopen z předchozích bitů vygenerovat další bit s pravděpodobností větší než 50%
  • State compromise
    • ! I když je zjištěn vnitřní stav generátoru (konečného automatu), ať už celý nebo jen z části, nelze zpětně zrekonstruovat dosavadní vygenerovanou náhodnou posloupnost
    • Navíc, pokud do generátoru za běhu vstupuje další entropie, nemělo by být možné předpovědět vnitřní stav v následujících iteracích

Realizace bezpečného PRNG

  • Bezpečná bloková šifra v režimu čítače (CTR)

    • Náhodně se zvolí klíč (seed)
    • Náhodně se zvolí hodnota čítače
    • Zvoleným klíčem se postupně šifrují hodnoty
    • Perioda -bitové blokové šifry je a nesmí dojít k vyzrazení klíče ani počáteční hodnoty čítače
  • Kryptograficky bezpečná hashovací funkce aplikovaná na čítač (CTR)

    • Náhodně se zvolí hodnota čítače
    • Postupně se hashuje
    • Opět nesmí dojít k vyzrazení počáteční hodnoty čítače
  • Proudové šifry

    • Jsou samy o sobě v zásadě PRNG, s jehož výstupem se XORuje plaintext
    • Např. RC4, Salsa20, ChaCha jsou generátory náhodných bitů
  • Algoritmy založené na teorii čísel

    • U kterých byl proveden alespoň nějaký důkaz bezpečnosti
  • Dále například Blum-Blum-Shub

  • Pro skutečnou bezpečnost je stejně nutné použít skutečně náhodný seed

  • ! Entropie výstupu PRNG je dána entropií seedu, algoritmus samotný nikdy nemůže entropii zvyšovat


Vytvořeno: 7. 8. 2024, 13:25
Poslední aktualizace: 7. 8. 2024, 13:25