Puncte:3

Sunt permise algoritmilor non-FIPS să se execute într-un sistem compatibil FIPS?

drapel cn

Dacă o bucată de software rulează în modul FIPS și utilizează module criptografice certificate FIPS, este permisă executarea oricăror algoritmi non-FIPS chiar dacă securitatea sistemului nu depinde în mod unic de aceștia?

Exemplu: să presupunem că aveți un sistem care schimbă două perechi de chei ECDH: o pereche de chei curve25519 și o pereche de chei NIST P-384. Acordul cheii este realizat folosind ambele perechi de chei și apoi secretele rezultate sunt concatenate și hashing cu SHA-384.

Din punct de vedere criptografic, nu văd o problemă, deoarece rezultatul SHA-384(K0 | K1) este la fel de puternic ca și cea mai puternică curbă. Acest lucru se datorează faptului că SHA-384(un secret | o valoare cunoscută) este un secret, ceea ce înseamnă că, dacă un atacator sparge, spune curve25519, tot nu ar ști rezultatul acelui secret hașat cu un alt secret pe care nu îl cunoaște.

Întrebarea mea este dacă FIPS permite acest lucru sau dacă trebuie să execute doar cod și algoritmi certificati de FIPS. Ați putea considera secretul partajat calculat de curba25519 o „sare” sau ceva de genul?

Editare: considerați că rezultatul acordului non-FIPS cu de ex. Curve25519 ar putea fi amestecat cu secretul „oficial” ca sare de ex. HMAC-SHA384 (sare, cheie).

Puncte:4
drapel my

De fapt, curve25519 este pe drumul său spre aprobarea FIPS (NIST SP 800-186), dar nu despre asta întrebi.

Pentru a răspunde la întrebarea dvs., da, NIST a declarat că permit algoritmul neaprobat în paralel cu schimbul de chei preferat. În momentul de față, procesul lor oficial aprobat ar necesita procesarea cotei cheie neaprobate diferit de cea aprobată; cu toate acestea, ei notează că acest lucru se va schimba în următoarea versiune a NIST SP 800-56C.

Declarația lor reală (din https://csrc.nist.gov/Projects/post-quantum-cryptography/faqs) care este aplicabilă mai mult decât doar criptografia postcuantică (au fost eliminate unele texte care dădeau exemple postcuantice):

Este posibil ca un mod hibrid de stabilire a cheilor să fie efectuat într-un mod de operare aprobat de FIPS 140? (adăugat pe 28.01.20)

Un mod hibrid de stabilire a cheii... este definit aici ca fiind o schemă de stabilire a cheii care este o combinație de două sau mai multe componente care sunt ele însele scheme criptografice de stabilire a cheilor. Proprietatea dorită este că cheile derivate printr-o schemă hibridă de stabilire a cheilor rămân sigure dacă cel puțin una dintre schemele componente este sigură...

Standardele actuale NIST... pot găzdui mai multe construcții de stabilire a cheilor hibride în „modul FIPS”, așa cum este definit în FIPS 140. De exemplu, să presupunem că valoarea Z este un secret partajat care a fost generat într-o criptografică aprobată de NIST. schemă și că o valoare T este generată sau distribuită prin alte scheme(e)... Următoarele sunt modalități diferite de a încorpora valoarea T în procedura de derivare a cheii pentru a realiza un mod hibrid care este permis de standardele actuale:

Pentru orice metodă de derivare a cheii într-un singur pas care este specificată în SP 800-56C, o intrare definită ca SuppPrivInfo poate fi inclusă într-un câmp FixedInfo (opțional) și T poate fi inclus în acel câmp. În oricare dintre metodele cheie de derivare specificate în SP 800-56C, fie într-o etapă sau extracție-apoi-expansiune, valoarea T poate fi inclusă în câmpul de sare. În plus, NIST intenționează să încorporeze o construcție hibridă mai curată și, prin urmare, preferabilă, într-o viitoare revizuire a SP 800-56C:

În oricare dintre metodele de derivare a cheilor specificate în SP 800 - 56C, revizuirea ar permite ca o concatenare a lui Z și T, de exemplu, Z||T, să servească drept secret partajat în loc de Z. Acest lucru ar necesita inserarea lui T în codificarea schemei și codul de validare FIPS 140 ar putea fi necesar să fie modificate.

drapel cn
Se pare că răspunsul este probabil da, atunci, atâta timp cât derivarea cheii finale se face în conformitate cu ceea ce doresc ei și folosind un hash/KDF compatibil cu FIPS.
poncho avatar
drapel my
@AdamIerymenko: este corect, iar NIST caută să aprobe construcții la fel ca $\operatorname{SHA384}( K_0 \mathbin\| K_1 )$
Puncte:1
drapel mc

Când spui FIPS în acest context, presupun că te referi la FIPS 140, dacă este corect, atunci există situații limitate în care poți folosi algoritmi aprobați non-FIPS și să fii totuși compatibil cu FIPS.

Aruncă o privire la Ghid de implementare, există o secțiune „Exemple de scenarii de algoritmi criptografici neaprobați permise în modul FIPS”. Nu cred că exemplul dvs. îndeplinește niciunul dintre cele trei scenarii prezentate în document.

drapel cn
„Utilizarea unui algoritm aprobat, neaprobat sau proprietar într-un scop care nu este relevant pentru securitate sau este redundant pentru un algoritm criptografic aprobat”? Ce se întâmplă dacă rezultatul unui schimb de chei străin este considerat suplimentar sau o „sare” într-o funcție de derivare a cheilor?
Swashbuckler avatar
drapel mc
@AdamIerymenko Nu sunt familiarizat cu toate directivele NIST pentru astfel de algoritmi, dar cred că nu va fi compatibil FIPS. Pentru ceva de genul PBKDF2, sarea ar trebui să fie dintr-un RNG aprobat de FIPS, deci cu siguranță nu este conform în acest caz. Ar trebui să citiți documentul NIST pentru specificul KDF care vă interesează și să vedeți ce scrie.
Swashbuckler avatar
drapel mc
Orice este suplimentar, dar care este legat de securitate, este puțin probabil să fie compatibil FIPS. Filosofia este că orice nu este compatibil cu FIPS este text simplu, așa că dacă considerați că suplimentul este text simplu și este încă sigur, atunci probabil că este ok.
drapel cn
Consultați de fapt [secțiunea 8.2 aici](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf). „Această recomandare nu necesită utilizarea unei valori de sare selectată aleatoriu. În special, dacă nu există mijloace de a selecta o valoare de sare și de a o împărtăși cu toți participanții în timpul unei tranzacții de stabilire a cheii, atunci această recomandare specifică că o valoare predeterminată șirul de octeți implicit (de exemplu, cu zero) să fie utilizat ca valoare de sare." Poate fi în regulă pentru HMAC (sare, cheie) în care secretul partajat C25519 ECDH (sau un hash al acestuia) este folosit ca sare. Va întreba în jur.

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.