Generátor náhodných hesel

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Hrací kostky jako jednoduchý hardwarový generátor náhodných čísel (používá např. metoda diceware). Generátor náhodných hesel je počítačový program, nebo hardwarové zařízení, které má vstup z náhodných nebo pseudo-náhodných čísel, ze kterých generátor vytvoří heslo. Náhodná hesla mohou být generována manuálně, pomocí jednoduchých zdrojů náhodnosti (mince, kostky), nebo mohou být generována pomocí počítače. Přikladem reálného využití hracích kostek jako hardwarového generátoru je diceware, což je metoda pro vytváření kvalitních heslových frází (varianta hesel).

Na internetu je spousta míst, kde lze získat „náhodné“ heslo, ale protože je generování náhodnosti složité, tak tyto programy nemusí produkovat skutečně náhodný výstup. Navíc není důležité generovat perfektně náhodná hesla, nýbrž hesla která lze jen těžko uhodnout (mnoho hesel z generátoru náhodných písmen bude snadno uhodnutelných). +more V kryptografii je nutné používat pečlivě navržené algoritmy, tzv. CSPRNGS: cryptographically secure pseudorandom number generators (kryptograficky bezpečné (pseudo)náhodné generátory čísel).

Nativní přístup

Zde jsou dvě ukázky za využití standardních programových knihoven:

C

#include #include #include

int main(void) { /* Length of the password */ unsigned short int length = 8;

/* Seed number for rand */ srand((unsigned int) time(0) + getpid);

/* ASCII characters 33 to 126 */ while(length--) { putchar(rand % 94 + 33); srand(rand); }

printf("\n");

return EXIT_SUCCESS; }

V tomto případě je využita standardní C funkce rand, což je generátor pseudo-náhodných čísel.

PHP

function pass_gen($length = 8) { $pass = array; for ($i = 0; $i

Silnější metody

Existují různé metody pro generování silných šifrovaných bezpečnostních náhodnější hesel. Na Unix platformách /dev/random a /dev/urandom jsou běžně používané a to buď programově nebo s nějakým spojením s programem jako je makepasswd. +more Programátoři ve WINDOWS mohou použít z knihovny Microsoft CryptoAPI funkci CryptGenRandom. Programovací jazyk Java obsahuje třídu s názvem SecureRandom. Další možností je odvodit náhodnost měřením nějakého vnějšího jevu jako je načasování vstupu uživatelské klávesnice. Mnoho počítačových systémů již má vytvořenou aplikaci (standardní název APG) k provádění FIPS 181. FIPS 181 - automatický generátor hesel. Popisuje změnu náhodných bitů do nějakým způsobem vyslovitelných „slov“ vhodná pro hesla.

Bash

Zde je ukázkový kód, který používá /dev/urandom generování hesla s jednoduchou Bash funkcí. Funkce má délku hesla jako parametr nebo využije délku 16 znaků jako výchozí.

function mkpw { tr -dc '[:graph:]'

Není vhodné pro dlouhé kryptografé klíče, nebo tam kde je vyžadována vysoká úroveň bezpečnosti.

Java

Zde je ukázkový kód který využívá SecureRandom a generuje 10místné hexadecimální číslo.

String[] symbols = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; int length = 10; Random random = SecureRandom.getInstanceStrong; // as of JDK 8, this should return the strongest algorithm available to the JVM StringBuilder sb = new StringBuilder(length); for (int i = 0; i

Python

Jazyk Python obsahuje třídu SystemRandom, která získává náhodné bity na Unixových systémech z /dev/urandom (Linux a Mac OS X) a v systému Windows je použit CryptGenRandom. Následující jednoduchý příklad ukazuje použití této třídy:

#. /usr/bin/python2 import random, string myrg = random. +moreSystemRandom length = 10 # Chcete-li non-anglicke znaky, vyjmete [0:52] alphabet = string. letters[0:52] + string. digits pw = str. join(myrg. choice(alphabet) for _ in range(length)) print pw.

Perl

Tento příklad využívá Crypt::Random::Source modul k nalezení silných náhodných čísel.

use Crypt::Random::Source qw(get_strong);

while(length($out)

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top