Puncte:1

Contează Endianness în testul NIST SP800-22?

drapel cn

Sunt curios despre suita de teste Randomness.

Una dintre celebrele suite de teste ale aleatoriei, DIEHARDER, a spus că Endianness nu contează pentru un generator aleatoriu „BUN”.

Rețineți că acest lucru nu este același lucru cu scrierea numerelor brute în virgulă mobilă (care nu vor fi deloc aleatoare ca flux de biți) și că „endianitatea” unităților nu ar trebui să conteze pentru ipoteza nulă a unui generator „bun”, ca octeți aleatori. sunt aleatorii în orice ordine.

Doar o presupunere aproximativă, cred că nu există nicio diferență între Big-endian și Little-endian în testul de aleatorie. Deoarece testul de aleatorie se referă la numărarea numărului de 0 sau 1, verificarea modelului fluxului de biți etc. (am citit toată lucrarea, NIST SP800-22 revizuirea 1a.)

Dar nu există nici un document scris în NIST SP800-22 care să spună că „Endianness nu afectează scopul testului aleatoriu”.

Întrebare.

  1. Lipsește vreo parte care spune „Endianness nu contează” în hârtia NIST SP800-22?

  2. Pot testa Randomness fără să mă gândesc la Endianness?

De ce am primit această întrebare.

Există un bun exemplu de Fișier de intrare mai greu și fișierul de intrare NIST SP800-22 în data/data.pi cu caracter ASCII.

Și, de asemenea, am aflat că Dieharder citiți fișierul (ASCII) ca Little-Endian și NIST citiți fișierul (ASCII) ca Big-Endian. Puteți vedea în stackoverflow cum am aflat.

Cu toate acestea, din cauza Endianness, trebuie să fac două fișiere de ieșire. Unul este Big-Endian, iar celălalt este Little-Endian. Acest lucru ar putea fi pierdere de timp și memorie. Așa că mă întreb că „Contează Endianness în suita de teste NIST SP800-22?”

Puncte:1
drapel ng

Endianness¹ poate afecta rezultatul unui test de aleatorie și poate schimba un rezultat din trecere în eșec sau invers (aruncarea unei alte rulări a generatorului poate avea același efect, într-o măsură ceva mai mică). Cu toate acestea, dacă endianness semnificativ afectează rezultatul testului, apoi (presupunând că testul este corect și utilizat corect)

  • generatorul este stricat, deoarece una dintre versiunile to eșuează în mod semnificativ testul și orice schimb fix de biți la ieșirea unui generator care nu poate fi distins de aleatoriu produce un generator care nu poate fi distins de aleatoriu.
  • iar testul este sensibil la o reordonare minoră a intrării sale, ceea ce este un indiciu al unui test supraspecializat.

Sfatul meu este, prin urmare, să ignorați problema endianității în introducerea testelor de aleatorie.

Mai degrabă, puneți la îndoială motivația rulării Dieharder sau NIST SP800-22. Este obișnuit în documentele criptografice substandard, în special în cele care ilustrează vizual ceea ce face criptarea Lena. Dar succesul unui astfel de test nu este un argument sau (mai rău dovadă/demonstrație) a calității unei anumite criptări, sau PRNG, sau TRNG care încorporează o stare de postprocesare. În acest sens, o analiză a metodă utilizat în criptare, PRNG sau sursă+postprocesare a unui TRNG, este necesar.


¹ Acesta este marele-endian, ordinul little-endian sau alt-endian al biților în octeți, cuvinte sau numere întregi la ieșirea generatorului testat și/sau la intrarea programului de testare. De exemplu, funcția NIST Statistical Test Suite convertToBits (fișierul src/utilities.c Aici) convertește octeți în biți per convenție big-endian (contrar celei mai comune ordine în comunicare serială asincronă). Aia conteaza teoretic dacă o implementare a unui generator care este definit matematic pentru a scoate un flux de biți (de ex. A5-1) are producția trecută la acel test în modul octet pentru eficiență.

TyeolRik avatar
drapel cn
Mulțumită sfatului tău, ```ignorați problema endianității```. Sunt de acord cu „analiza metodei, PRNG, este necesară” :)
Paul Uszak avatar
drapel cn
Sugerați eliminarea/modificarea bitului _"TRNG"_. Postprocesarea poate fi un extractor vN, CRC-16 sau o simplă multiplicare a matricei. Nu sunt necesare cripto-primitive și chiar periculoase. Un test de aleatorie este, prin urmare, arbitrul final și final pentru funcționarea corectă. Sugerez că singurele lucrări TRNG substandard sunt cele fără un test final de aleatorie. De aceea toate hârtiile decente le au la sfârșit.
Paul Uszak avatar
drapel cn
Nu poate afecta această suită specifică, deoarece SP800-22 nu folosește cuvinte.
fgrieu avatar
drapel ng
@Paul Uszak: vezi nota nouă ¹ scrisă după ultimul tău comentariu.
Paul Uszak avatar
drapel cn
Err, încă nu prea văd punctul tău de vedere. O trecere a testului ar avea loc cu o distribuție uniformă a biților setați în toți octeții, indiferent de caracterul de bit. Testul de trecere a datelor furnizate prin RS-232 ar arăta exact ca ieșirea `\dev\urandom`...
Puncte:0
drapel cn

Absolut nu.

Vă recomand să scrieți [sic] binare în Little-Endian.

Este irelevant pentru suita 800-22. Trebuie să luați în considerare ce înseamnă endian. Endianness este ordinea sau secvența de octeți ai a cuvânt a datelor digitale. Această suită nu folosește cuvinte. Folosește octeți.

Partea relevantă a documentației de testare este: -

5.4.1 Intrarea datelor Datele de intrare pot fi furnizate în unul din două moduri. Dacă utilizatorul are un program autonom sau un dispozitiv hardware care implementează un RNG, utilizatorul poate dori să construiască cât mai multe fișiere de lungime arbitrară după cum se dorește. Fișierele ar trebui să conțină secvențe binare stocate fie ca caractere ASCII constând din zerouri și unu, fie ca date binare în care fiecare octet conține opt biți în valoare de 0âs și 1âs. NIST Statistical Test Suite poate apoi examina independent aceste fișiere.

și din suita de teste în sine: -

   Format fișier de intrare:
    [0] ASCII - O secvență de 0 și 1 ASCII
    [1] Binar - Fiecare octet din fișierul de date conține 8 biți de date

   Selectați modul de introducere:  

Deci vezi că endianitatea nu are nicio relevanță. Nu se așteaptă numere întregi scurte/lungi și nici numere în virgulă mobilă. Alte apartamente ar putea totuși. Fie introduceți un octet de date ASCII pentru 0 și 1, sau introduceți (se speră) biți distribuiți uniform în octeți.


Notă: Nu sunteți un expert în codificarea UTF, dar puteți genera caractere ASCII cu codare forțată non UTF-8. Asta ar putea cauza toate testele cuFormat fișier de intrare: [0] ASCII a esua.

TyeolRik avatar
drapel cn
Eu nu cred acest lucru. Răspunsul tău este despre ASCII, dar Endianness este un lucru diferit cu ASCII. După cum puteți vedea în suita de teste NIST, există fișierul ```data/data.pi``` care este, de exemplu. Și există 0 și 1, binare codificate ASCII. Dar când convertiți aceste date în octeți (fișier binar) Datele ar trebui să fie diferite, deoarece Endianness este despre „modul de a scrie binare”. Deci, mă tem că răspunsul tău este irelevant. Dar vă mulțumesc pentru interes și discuție :)
Paul Uszak avatar
drapel cn
@TyeolRik Vă dați seama că liniile lui `data/data.pi` nu sunt numere întregi? Există doar zerouri și unu, cu câteva întreruperi de linie pentru a face să arate frumos. Prin urmare, răspunsul meu (în opinia mea) este perfect.
TyeolRik avatar
drapel cn
// Mi-e teamă, dar ```data/data.pi``` nu este numere întregi. Conform [această pagină](https://www.exploringbinary.com/pi-and-e-in-binary/), PI, 3.142592...., este ```11.00100100001111...``` în Binar. Și fișierul ```data/data.pi``` este, de asemenea, ```11.00100100001111...```. Deci, cred că binarele din ```data/data.pi``` sunt doar PI, nu numere întregi. :)
TyeolRik avatar
drapel cn
Hopa! Scuze că am înțeles greșit cuvintele tale. (Datorită scurtului meu de engleză) Suntem pe pagină. Vă mulțumim pentru sfatul care este adăugat. ```scrierea binarelor în Little-Endian```

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.