GNU/Linux >> Znalost Linux >  >> Linux

Je rand z /dev/urandom bezpečný pro přihlašovací klíč?

Krátká odpověď je ano. Dlouhá odpověď je také ano. /dev/urandom poskytuje data, která jsou vzhledem k existující technologii nerozeznatelná od skutečné náhodnosti. Získání "lepší" náhodnosti než /dev/urandom poskytuje nemá smysl, pokud nepoužíváte jeden z mála "informačně teoretických" kryptografických algoritmů, což není váš případ (to byste věděli).

Manuál pro urandom je poněkud zavádějící, pravděpodobně přímo nesprávné, když naznačuje, že /dev/urandom může "docházet entropie" a /dev/random by měl být upřednostňován; jediný okamžik, kde je /dev/urandom možná naznačovat bezpečnostní problém kvůli nízké entropii je během prvních okamžiků nové, automatické instalace OS; pokud se stroj nabootoval do bodu, kdy začal vykazovat nějakou síťovou aktivitu, pak nashromáždil dostatek fyzické náhodnosti, aby poskytl náhodnost dostatečně vysoké kvality pro všechna praktická použití (zde mluvím o Linuxu; na FreeBSD je ten momentální okamžik nepatrné slabost se vůbec nevyskytuje). Na druhou stranu /dev/random má tendenci se blokovat v nevhodnou dobu, což vede k velmi reálným a nepříjemným problémům s použitelností. Nebo, abych to řekl méně slovy:použijte /dev/urandom a buď šťastný; použijte /dev/random a omlouvám se.

(Upravit: tato webová stránka vysvětluje rozdíly mezi /dev/random a /dev/urandom zcela jasně.)

Pro účely vytvoření „cookie“:takový soubor cookie by měl být takový, aby žádní dva uživatelé nesdíleli stejný soubor cookie a že je výpočetně nemožné, aby kdokoli „uhádl“ hodnotu existujícího souboru cookie. Sekvence náhodných bajtů to dělá dobře za předpokladu, že používá náhodnost odpovídající kvality (/dev/urandom je v pořádku) a že je dostatečně dlouhá . Obecně platí, že pokud máte méně než 2 uživatelů (n =33 pokud by váš systém mohla používat celá populace Země), pak sekvence n+128 bity jsou dostatečně široké; nemusíte ani kontrolovat kolizi s existujícími hodnotami:za svého života ji neuvidíte. 161 bitů se vejde do 21 bajtů.

jsou některé triky, které jsou proveditelné, pokud chcete kratší cookies a přesto se chcete vyhnout hledání kolizí ve vaší databázi. Ale to by pro soubor cookie nemělo být nutné (předpokládám webový kontext). Nezapomeňte také zachovat důvěrnost svých souborů cookie (tj. použít protokol HTTPS a nastavit příznaky cookie „secure“ a „HttpOnly“).


Ano, je to skvělý způsob.

@Thomasovo vysvětlení to trefuje. A má naprostou pravdu, když kritizuje /dev/urandom manuálová stránka. Na místě.

Ale přeskočte "kontrolu, zda již existuje". Ta kontrola je zbytečná. To se nestane. (Pravděpodobnost, že k tomu dojde, je nižší než pravděpodobnost, že vás zasáhne blesk – vícekrát – ve stejný den.)


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Jak kódovat base64 /dev/random nebo /dev/urandom?

  1. DD z /dev/zero do /dev/null...co se vlastně stane

  2. RdRand z /dev/random

  3. Jak Linux používá /dev/tty a /dev/tty0

  1. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  2. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  3. Rozdíly mezi /dev/sda a /dev/sda1