Autoryzacja Urzędu Certyfikacji (ang. Certification Authority Authorization – CAA) poprzez rekord DNS (ang. Domain Name System) to kolejny mechanizm zwiększający bezpieczeństwo Infrastruktury Klucza Publicznego, który staje coraz szerzej wykorzystywany. W poniższym wpisie przedstawie jak działa CAA i jakie niesie za sobą korzyści.
Certification Authority Authorization
Certification Authority Authorization (CAA) jest mechanizmem który pozwala właścicielowi danej domeny na określenie, który Urząd lub Urzędy Certyfikacji (CAs) mogą wystawiać certyfikaty SSL dla jego domeny. Całość realizowana jest poprzez rekord DNS nazwany właśnie CAA.
Jeżeli więc jesteś właścicielem domeny example.com możesz wskazać, że certyfikaty SSL dla niej wydawać może jedynie Urząd Certyfikacji A. Przykładowy wpis w strefie DNS może wtedy wyglądać tak:
$ORIGIN example.com CAA 0 issue "urzad-certyfikacji-a.com"
Dzięki temu w momencie, gdy ktoś inny niż Ty będzie próbował uzyskać certyfikat SSL w innym niż wskazanym przez Ciebie Urzędzie Certyfikacji zamówienie takie nie powinno zostać przetworzone poprawnie. Warunkiem jest jednak obustronne wsparcie dla CAA tj. oprócz klienta, musi to robić CA.
Działanie CAA można przedstawić za pomocą poniższego schematu:
- Żądanie o wydanie certyfikatu SSL dla domeny example.com trafia do CA.
- CA pobiera wartość rekordu CAA z DNS obsługującego domenę example.com i weryfikuje ją.
- CA podejmuje decyzje odnośnie wydania certyfikatu.
- Jeżeli rekord CAA uprawnia CA do wydawania certyfikatów dla domeny example.com wniosek certyfikacyjny jest przetwarzany dalej i certyfikat zostaje wydany.
- Jeżeli rekord CAA nie uprawnia CA do wydania certyfikatu dla domeny example.com żądanie jest odrzucane. CA może dodatkowo wysłać informacje o zaistniałym fakcie do właściciela domeny.
Zalety i wady CAA
Głównym celem i korzyścią płynącą z CAA jest zmniejszenie ryzyka błędnie wydanych certyfikatów. Dzięki CAA Urząd Certyfikacji ma możliwość zablokowania wydania certyfikatu SSL dla danej domeny w przypadku, gdy jej właściciel nie dał mu do tego uprawnień. Jedynie w sytuacji w której rekord CAA danej domeny wskazuje na Urząd Certyfikacji, który został wybrany także przez oszusta mechanizm CAA nie ma zastosowania. Z pewnością jednak w większości przypadków prób nadużyć, CAA pozwoli na zablokowanie wydania certyfikatu SSL nieuprawnionej osobie.
Jak mogliście już zauważyć na powyższym schemacie, CAA posiada możliwość informowania prawowitego właściciela domeny o próbie nadużycia z jej wykorzystaniem. Jest to możliwe poprzez wskazanie w odpowiednim polu rekordu DNS adresu e-mail lub web service na który CA mógłby wysłać taką informacje.
Warto zaznaczyć, że CAA nie ogranicza nas do wybrania jednego Urzędu Certyfikacji. Możliwe jest zdefiniowanie wielu CA, które będą mogły wystawiać certyfikaty SSL dla naszej domeny. Co ciekawe możliwe jest także niedawanie żadnemu CA uprawnień do tego.
W tym momencie chyba największą wadą CAA – która tak naprawdę nie jest wadą samego mechanizmu – jest to, że jego stosowanie nie jest obowiązkowe, a jedynie opcjonalne. Nie ma więc gwarancji na to, że CA będzie weryfikował rekord CAA podczas wydawania certyfikatu.
Mówiąc od wadach trzeba przypomnieć, że CAA opiera się na DNS, a ten jak wiadomo podatny jest m.in. na ataki typu spoofing. Tym samym więc możliwe jest sfałszywanie wartości rekordu CAA. Problem ten może zostać jednak praktycznie całkowicie wyeliminowany poprzez zastosowanie protokołu DNSSEC.
Sprawdzanie CAA może także nieznacznie wydłużyć proces wydawania certyfikatu. Jednak nie powinien być to raczej powód rezygnacji ze stosowania CAA. Narzut jest nieznaczny i niewspółmierny do korzyści jakie oferuje ten mechanizm.
Wsparcie dla CAA
Jak już wspominałem, stosowanie mechanizmu CAA nie jest obowiązkowe i w tej chwili niewiele Urządów Certyfikacji weryfikuje ten rekord DNS podczas procesu wydawania certyfikatów. Co więcej, wiele implementacji DNS nie obsługuje jeszcze rekordu CAA.
Jeżeli jednak chcielibyśmy dowiedzieć się czy dane CA wspiera CAA jest na to prosty sposób. Zgodnie z wymogami CABForum, do 15 kwietnia tego roku każdy Urząd Certyfikacji będący członkiem tego stowarzyszenia powinien w swoim Kodeksie Postępowania Certyfikacyjnego (ang. Certification Practice Statement – CPS) zawrzeć informacje o tym czy wspiera CAA – wystarczy więc tylko zapoznać się z Kodeksem interesującego nas CA.
Mechanizm CAA jest kolejnym obok m.in. Public Key Pinning czy Certificate Transparency, który pozwala na zwiększenie bezpieczeństwa całej Infrastruktury Klucza Publicznego. Miejmy więc nadzieję, że liczba Urzędów Certyfikacji ze wsparciem dla CAA będzie rosła z dnia na dzień.