Fixarea TLS și accesul prin VPN răspund la întrebări diferite
O fixare limitează cărui server îi acordă încredere aplicația; politica VPN decide cine ajunge în rețea. Niciuna nu acoperă autorizarea sau un dispozitiv pierdut.
Puneți o aplicație mobilă privată în spatele unui VPN și o persoană rezonabilă va întreba dacă mai are nevoie de fixarea certificatelor. Întrebarea sună ca o alegere între două controale echivalente, și de fapt este o întrebare despre două porți diferite. VPN-ul decide dacă acest dispozitiv poate folosi deloc calea; aplicația decide dacă serverul atins este cel așteptat. Răspundeți la ambele separat și proiectarea devine mai simplă.
Două porți, două întrebări
Admiterea în rețea privește clientul: este acest dispozitiv înregistrat, este acreditarea lui validă și permite politica accesul pe această cale? Încrederea aplicației privește serverul: a ajuns conexiunea la un serviciu cu o identitate pe care aplicația o acceptă? Aceste răspunsuri vin din sisteme diferite, eșuează din motive diferite și sunt reparate de echipe diferite. O strângere de mână VPN poate reuși în timp ce aplicația vorbește cu un certificat expirat din spatele perechii. O aplicație fixată perfect poate rămâne inaccesibilă pentru toți, pentru că dispozitivul nu a ajuns niciodată în rețea.
Cele două se adună. Renunțarea la una elimină un control; adăugarea celeilalte nu o înlocuiește.
Ce limitează de fapt o fixare
O fixare îngustează mulțimea identităților de server pe care aplicația le va accepta, de obicei numind o cheie publică sau un hash de certificat în loc să aibă încredere în fiecare lanț pentru care un depozit ar garanta. Este o restricție suprapusă validării obișnuite, nu un substitut al acesteia. Validarea obișnuită răspunde dacă un lanț este de încredere; fixarea răspunde dacă este lanțul pe care îl așteaptă această aplicație. O implementare care sare peste primul pas nu a câștigat securitate, doar noutate.
Obiectul fixat diferă între platforme, așa că singur cuvântul spune foarte puțin. Copierea unui hash din depozitul de încredere al unui produs și tratarea lui ca același lucru într-o aplicație mobilă este o greșeală obișnuită și tăcută.
Fixarea pe platformă este o configurație, nu o politică
Android expune fixarea prin configurația sa de securitate a rețelei, unde un set de fixări păstrează amprente ale unei chei publice, iar lanțul trebuie să conțină cel puțin una dintre ele. Acel fișier este pentru fiecare aplicație și cere o modificare deliberată a compilării. iOS nu are un mecanism de manifest echivalent, așa că fixarea trăiește acolo în codul propriu de evaluare a încrederii al aplicației.
Deoarece mecanismul diferă, cerința trebuie scrisă pentru fiecare platformă. O politică ce spune fixați certificatul fără a numi platforma nu este aplicabilă.
Rotația decide dacă fixarea supraviețuiește
Partea grea nu este prima versiune, ci reînnoirea certificatului de după ea. O politică de încredere restrictivă respinge o cheie nouă legitimă la fel de ferm ca pe cea a unui atacator.
Două mecanisme fac rotația suportabilă: o fixare de rezervă în care se are încredere deja înainte de a fi necesară, și o dată de expirare pe setul de fixări, astfel încât aplicarea să înceteze în loc să blocheze aplicația. Ambele sunt decizii de politică, iar expirarea în special este o reducere deliberată a securității, nu un temporizator inofensiv. Numiți cine controlează compilarea aplicației, punctul final TLS și reînnoirea certificatului, și aduceți-i într-un singur proces de schimbare. Dacă sunt trei echipe diferite, fixarea va provoca în cele din urmă o întrerupere pe care nimeni nu a planificat-o.
Un dispozitiv pierdut este a treia problemă
Revocarea unei acreditări VPN nu încheie neapărat o sesiune a aplicației, iar o fixare de server nu face absolut nimic pentru un telefon în mâna altcuiva. Blocarea dispozitivului, stocarea acreditărilor, durata sesiunii și revocarea de la distanță sunt decizii separate cu proprietari separați. Plierea lor în discuția despre fixare garantează că niciuna nu va fi proiectată.
Testați patru relații în loc de cea pe care o vedeți: serverul și operația prevăzute, un cont care ar trebui refuzat, o identitate de server care ar trebui respinsă și rotația planificată. Un VPN funcțional exersează doar prima. Notați ce a dovedit fiecare test, pentru că următoarea persoană va presupune că un tunel verde înseamnă că toate patru au trecut.