Toți algoritmii pe care i-ați menționat (HKDF și SHA-256) sunt pseudoaleatorii. În general, orice abordare pe care o veți folosi aici pentru a extinde unele numere cu adevărat aleatorii în alte secvențe este, de asemenea, pseudoaleatoare. Asta pentru că acești algoritmi sunt determiniști: dacă introduceți aceleași date (entropie), atunci veți obține aceleași rezultate.
Numerele aleatoare adevărate provin dintr-o sursă fizică și nu sunt deterministe. Acestea pot fi dezintegrare radioactivă, zgomot termic, oscilatoare care rulează liber sau alte tipuri de surse. Deoarece acestea nu produc neapărat un număr egal de unu și zero și eșecul nu este necunoscut, de obicei există un fel de filtrare și procesare, care poate fi un algoritm criptografic precum AES-CBC-MAC sau SHA-256 sau un fel de eliminarea sau reducerea părtinirii, cum ar fi XORing sau debiasarea Von Neumann, sau ambele.
Dacă ați folosit un TRNG și ați produs biți aleatori, ați putea să-i XOR cu mai mulți biți dintr-un TRNG și să obțineți aceeași securitate, dar ar fi o prostie pentru că folosiți de două ori mai mulți biți dintr-un TRNG pentru a nu câștiga securitate. În mod similar, puteți efectua adăugarea modulară pe octeți cu două valori TRNG, dar din nou aceasta are aceeași limitare. ȘI pe biți influențează ieșirea, astfel încât ar slăbi securitatea.
Deoarece orice algoritm de extindere a ieșirii unui TRNG va fi pseudoaleator în loc de cu adevărat aleatoriu, ceea ce propui, în esență, sună ca un cifr de flux cu o cheie pre-partajată bazată pe un TRNG. Cu toate acestea, asta e perfect ca design! Atâta timp cât alegeți un cifr de flux securizat, acesta este un design legitim și sigur. Cu toate acestea, cifrurile de flux nu sunt pad-uri unice și nu sunt sigure, dar sunt mult mai convenabile de utilizat în viața reală.
Dacă alegeți să urmați această abordare, vă recomand cu căldură să alegeți o bibliotecă existentă, bine concepută pentru a construi aceasta. TLS are suport pentru cheile pre-partajate și, desigur, există și alte biblioteci care pot face acest lucru și pentru mesaje.