Puncte:1

Înțelegerea precisă a cheii publice din certificat

drapel cn

Certificatele sunt folosite foarte des în cripto. Din căutare, sunt un pic confuz ce exact este „cheia publică” din interiorul unui certificat în esență? Este întotdeauna un cheie de verificare a semnăturii, sau ar putea fi și cheie de criptare?

Din punctul meu de vedere, pentru certificatele CA rădăcină și intermediare, cheia publică este întotdeauna menită să fie cheia de verificare a semnăturii. Dar este valabil și pentru certificatul de frunză (entitate finală)?

Vă rugăm să adăugați link-uri către resurse autentice pentru a vă susține răspunsurile și pentru lecturi suplimentare.

Puncte:3
drapel my

Este întotdeauna o cheie de verificare a semnăturii sau ar putea fi și cheia de criptare?

Cheia publică frunză (adică cea deținută de entitatea finală) poate fi cu siguranță o cheie de criptare (sau, de altfel, o valoare publică de schimb de chei, cum ar fi partajarea cheii DH). Astfel de utilizări nu sunt chiar atât de exotice.

Curious avatar
drapel cn
Dacă este cu siguranță o cheie de criptare, atunci cum poate un lanț de încredere să procedeze cu asta? De exemplu, pagina Wikipedia (https://en.wikipedia.org/wiki/Root_certificate#/media/File:Chain_Of_Trust.svg) este atunci complet greșită, ca acolo „Cheia publică CA rădăcină” din „Certificat rădăcină”. „ este cheia de verificare a semnăturii (comparativ cu cheia de criptare), așa cum se arată clar de săgeata cu textul „Verifică semnătura”. La fel deține certificatul intermediar.
poncho avatar
drapel my
@Curious: editările mele îmi fac sensul mai evident?
Curious avatar
drapel cn
da, pentru a spune în cuvinte mai simple: sunteți de acord că cheia publică din certificatele rădăcină și intermediare este întotdeauna cheia de verificare a semnăturii, în timp ce cea din certificatul de entitate finală este cu siguranță o cheie de criptare (sau DH keyshare G^X). Mă puteți referi la o resursă autentică care afirmă asta într-un mod clar? Ați putea clarifica și „exotic”?
poncho avatar
drapel my
@Curious: de fapt, cheia publică a entității finale ar putea fi și o cheie de semnătură (și aceasta este de fapt destul de comună).
Curious avatar
drapel cn
Un pic confuz acum, dar pentru a-mi reformula concluzia: „cheia publică” în toate certificatele (adică rădăcină, intermediară, precum și entitate finală) este în mare parte cheie de verificare a semnăturii și, în unele cazuri, cheia publică la final- certificatul de entitate poate fi cheie de criptare (sau partajare a cheilor DH), nu? Din nou, mă poți trimite la o resursă autentică care afirmă asta într-un mod clar?
Puncte:2
drapel jp

Cheia publică dată într-un certificat de frunză poate fi potrivită pentru verificarea semnăturii, criptare, ambele sau niciuna (există și alte roluri posibile pentru o cheie). În general, certificatele vor include a extensia de utilizare a cheii și probabil și o extensie extinsă de utilizare a cheii, care specifică modul în care poate fi utilizată cheia.

Extensia de utilizare a cheii poate specifica oricare dintre acestea sau toate: digitalSignature, contentCommitment (similar cu digitalSignature, dar implicații diferite), keyEncipherment, dataEncipherment, keyAgreement, keyCertSign (un certificat CA l-ar avea pe acesta și probabil și altele) și cRLSign. Unul cu utilizarea keyAgreement poate avea, de asemenea, encipherOnly sau decipherOnly pentru a modifica asta.

De exemplu, am un certificat de e-mail (S/MIME) care are setați biții digitalSignature, keyEncipherment și dataEncipherment în extensia de utilizare a cheii. Aceasta înseamnă că cineva l-ar putea folosi pentru a verifica semnătura unui mesaj de e-mail pe care l-am trimis și, de asemenea, pentru a cripta un mesaj pentru mine (în general, prin criptarea unei chei simetrice aleatorii care ar fi folosită pentru a cripta mesajul real).

Pentru un alt exemplu, să presupunem că aveți un certificat care avea setat doar bitul keyAgreement în extensia de utilizare a cheii. Asta ar însemna că nu ar putea fi folosit nici pentru verificarea semnăturii sau criptare, dar numai pentru a negocia cheile prin ceva de genul algoritmului Diffie-Hellman.

BTW, utilizarea unei chei poate fi restricționată și în alte moduri. De exemplu, câmpul „algoritm” al unei chei de curbă eliptică este de obicei dat ca id-ecPublicKey (care nu impune restricții suplimentare), dar poate fi dat ca id-ecDH (înseamnă că poate fi utilizat numai pentru acordul cheii EC Diffie-Hellman ) sau id-ecMQV (ceea ce înseamnă că poate fi utilizat numai pentru acordul cheie EC Menezes-Qu-Vanstone).

Puncte:1
drapel in

Cred că ați înțeles corect până acum, dar cred că pot rezuma concis.

Autoritățile de certificare, fie că este vorba de autoritatea de certificare rădăcină sau orice sub-CA sunt folosite pentru a semna alte certificate. Deci, pentru a verifica o cale de încredere către un certificat de încredere - de obicei rădăcina - li se cere să aibă o cheie publică în ele care poate fi folosită pentru verificarea certificatelor pe care le au emis. Aceasta corespunde unui extensia de utilizare a cheii care indică o astfel de utilizare:

The keyCertSign bit este afirmat când cheia publică subiect este utilizat pentru verificarea semnăturilor pe certificatele cu cheie publică. Dacă keyCertSign bit este afirmat, apoi bitul cA în bază extensia constrângerilor (Secțiunea 4.2.1.9) TREBUIE de asemenea să fie afirmată.

The cRLSign bit este afirmat atunci când este utilizată cheia publică subiect pentru verificarea semnăturilor pe listele de revocare a certificatelor (de ex., CRL-uri, CRL-uri delta sau ARL-uri).

De obicei, ambele utilizări ale cheilor sunt activate în același timp, deoarece autoritatea de certificare este de obicei responsabilă pentru eliberarea certificatelor, dar și pentru revocarea acestora. Aceasta corespunde utilizării cheii publice pentru verificarea semnăturii certificatelor care au fost emise de autoritatea de certificare.


Certificatele Leaf pot fi folosite pentru orice, cu excepția certificatelor de semnare (prin definiție) și a CRL-urilor (prin practica obișnuită). Asta înseamnă că utilizarea cheii poate indica orice altceva. Desigur, cel tip a perechii de chei și a cheii publice ar trebui să fie astfel încât utilizarea cheii să poată fi îndeplinită:

Utilizarea cheii Pic Cheia publică trebuie să poată funcționa
semnatura digitala 0 Verificarea semnăturii
nonRepudierea 1 Verificarea semnăturii
keyEncipherment 2 Criptare (încapsulare sau împachetare cheie)
cifrarea datelor 3 Criptare (în mod obișnuit, încă încapsularea cheii pentru sistemele de criptare hibride)
KeyAgreement 4 Acord cheie (de exemplu, Diffie-Hellman)
keyCertSign 5 Verificarea semnăturii
cRLSign 6 Verificarea semnăturii
EncipherOnly 7 Criptare (încapsulare sau împachetare cheie)
descipherOnly 8 Criptare (încapsulare sau împachetare cheie)

Notă:

  • În TLS 1.3, cheia frunză este utilizată exclusiv pentru autentificarea entităților, care corespunde cu semnatura digitala.

Iată un tabel care indică modul în care anumite tipuri de chei pot fi utilizate.

Tip cheie Semnătură Încapsulare Acord cheie
chei RSA da da Nu
Cheile DH Nu Nu da
Cheile DSA da Nu Nu
Taste EC (curbe Koblitz și Prime) da Nu da
Ed25519 și Ed448 da Nu Nu
X25519 și X448 Nu Nu da

În cazul cheilor publice, acțiunile ar fi semnătură verificare și criptare pentru primele două utilizări.

Atât acordul cheie, cât și încapsularea cheii pot fi utilizate pentru stabilirea cheii. Cu toate acestea, dacă cheile fac parte dintr-un certificat persistent, atunci ele nu pot fi utilizate pentru confidențialitate, motiv pentru care acordul de cheie în, de ex. TLS 1.3 se realizează folosind chei efemere, iar cheile de semnare sunt folosite pentru autentificarea necesară a entității.

Algoritmii de acord cheie pot fi utilizați pentru a implementa schema de criptare integrată sau IES. Deci, orice pereche de chei de acord cu cheie poate fi utilizată indirect și pentru criptare.


Aceste tabele sunt conținut original; RFC-ul X.509 nu menționează în mod explicit că cheia publică ar trebui să fie compatibilă cu intenția indicată în utilizarea cheii - se pare că ar trebui să fie compatibilă.

Curious avatar
drapel cn
Acest lucru este într-adevăr concis. Puteți adăuga link-uri către tabel, citate etc. pentru a le citi în continuare?

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.