14.4.1. Concepte: încredere, chei și formatul fișierelor

Înainte de orice comenzi, trei elemente de context care se aplică tuturor celorlalte pagini din această secțiune.

14.4.1.1. Modele de încredere

O conexiune TLS poate oferi trei niveluri crescătoare de garanție:

  • Doar criptare – traficul este criptat, dar niciuna dintre părți nu dovedește cine este. Ușor de configurat (fără validarea certificatelor), dar vulnerabil la un atac de tip man-in-the-middle. Folosește-l doar pentru testare locală.

  • Autentificarea serverului – clientul verifică certificatul serverului față de un certificat de încredere (modelul HTTPS familiar). OpenMV Cam poate acționa fie ca client (verificând un server la distanță), fie ca server (prezentându-și propriul certificat).

  • Autentificare reciprocă (mTLS) – ambele capete prezintă și verifică certificate. Folosit acolo unde serverul trebuie de asemenea să fie sigur de identitatea clientului.

14.4.1.2. Alegerea unui tip de cheie

Build-ul mbedTLS al camerei acceptă ECDSA pe curbele prime NIST/SEC și RSA. Există trei modalități practice de a crea o cheie; este recomandat ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) – aproximativ 128 de biți de securitate cu o cheie de 256 de biți. Chei și semnături minuscule și, de departe, cel mai rapid handshake dintre opțiunile acceptate pe un Cortex-M (operațiile pe curbe eliptice sunt mult mai ieftine decât operațiile cu cheie privată RSA). Acceptat universal de partenerii TLS. Acesta este cel mai bun echilibru între securitate, viteză, utilizarea RAM/memorie flash și compatibilitate pe un dispozitiv încorporat, motiv pentru care este alegerea implicită aici.

  • ECDSA P-384 (secp384r1) – aproximativ 192 de biți de securitate. Tot pe curbe eliptice, deci rezonabil de eficient, dar mai mare și mai lent decât P-256 pentru o marjă de securitate de care implementările IoT tipice nu au nevoie. Folosește-l doar dacă un certificat cu durată lungă de viață sau o cerință de conformitate o impune.

  • RSA-2048 – aproximativ 112 biți de securitate. Compatibil universal, inclusiv cu parteneri foarte vechi, dar cheile și certificatele RSA sunt mult mai mari, iar operațiile cu cheie privată RSA (efectuate de partea care prezintă certificatul) sunt cea mai lentă și cea mai consumatoare de memorie opțiune pe un microcontroler. Folosește-l doar atunci când un partener nu poate folosi ECDSA.

Notă

Cheile Ed25519 / Curve25519 nu sunt acceptate. Build-ul mbedTLS al OpenMV Cam nu activează EdDSA sau Curve25519, așa că un certificat sau o cheie Ed25519 va eșua la încărcare sau la handshake. Folosește una dintre cele trei opțiuni de mai sus.

14.4.1.3. Formatul fișierelor: folosește DER

Build-ul mbedTLS folosit de OpenMV Cam nu include parsarea PEM, așa că camera citește certificate și chei doar în formă DER (codificarea binară). Majoritatea instrumentelor emit implicit forma PEM (text base64), așa că fiecare fișier destinat camerei este mai întâi convertit în DER – fiecare rețetă din această secțiune se încheie cu acel pas de conversie. Vei avea nevoie de:

  • O cheie privată – păstrată secretă, folosită de partea care prezintă un certificat.

  • Un certificat – partea publică, prezentată celeilalte părți în timpul handshake-ului.

  • Un certificat CA / de încredere – certificatul pe care partea care verifică îl încarcă pentru a decide dacă partenerul este de încredere. Pentru o configurație autosemnată, acesta este pur și simplu certificatul propriu al partenerului.