2009-07-06 28 views
14

Pytanie dla wszystkich ekspertów SSL tam:Uwierzytelnianie SSL przez porównanie odcisku palca certyfikatu?

Mamy wbudowane urządzenie z małym serwerem sieciowym i możemy zainstalować na nim własne certyfikaty samopodpisane SSL. Klient jest napisany w .NET (ale to nie ma znaczenia).

Jak mogę uwierzytelnić urządzenie w .NET? Czy wystarczy porównać odcisk palca certyfikatu ze znanym wpisem w bazie danych?

Rozumiem, że odcisk palca to skrót całego certyfikatu, w tym klucz publiczny. Urządzenie, które będzie moim urządzeniem, może oczywiście wysłać ten sam certyfikat publiczny, ale nie może znać klucza prywatnego, prawda?

Czy muszę zbudować własny łańcuch zaufania, utworzyć własny certyfikat główny urzędu certyfikacji, podpisać certyfikat serwera WWW i zainstalować go na kliencie?

Odpowiedz

4

To, co proponujesz, jest w zasadzie w porządku. Jest on na przykład używany podczas key signing parties. Uczestnicy zazwyczaj wymieniają po prostu swoje nazwisko i odciski palców swoich kluczy publicznych i upewniają się, że osoba na przyjęciu naprawdę jest tym, za kogo się podaje. Po prostu weryfikacja odcisków palców jest znacznie łatwiejsza niż weryfikacja długiego klucza publicznego.

Innym przykładem jest tak zwana self certifying file system. Tutaj ponownie tylko skróty kluczy publicznych są wymieniane za pośrednictwem bezpiecznego kanału. (Tj. Te skróty są osadzone w adresach URL). W tym schemacie klucze publiczne nie muszą być wysyłane w bezpieczny sposób. Odbiornik musi jedynie sprawdzić, czy skrót kluczy publicznych ma odpowiedniki skrótów osadzonych w adresach URL. Oczywiście odbiorca musi również upewnić się, że te adresy URL pochodzą z zaufanego źródła.

Ten schemat i to, co proponujesz, są prostsze niż korzystanie z urzędu certyfikacji. Ale jest wada. Musisz upewnić się, że twoja baza danych z hasłami jest autentyczna. Jeśli twoja baza danych jest duża, może to być trudne. Jeśli używasz urzędów certyfikacji, musisz tylko upewnić się, że klucze główne są autentyczne. Zwykle upraszcza to znacząco zarządzanie kluczami i jest oczywiście jednym z powodów, dla których programy oparte na CA są bardziej popularne niż np. samocertyfikujący system plików wymieniony powyżej.

+1

Skalowalność jest naprawdę dobrym powodem dla PKI, dzięki! – chris166

+0

Przyjemny sposób rysowania analogii między sprawdzaniem odcisków palców i podpisywaniem kluczy. Oporność skrótów SHA-1 na zderzenia odgrywa ważną rolę w obu zdarzeniach. –

3

W ten sam sposób nie należy i nie należy uznawać dwóch obiektów za równe tylko dlatego, że ich kody skrótu są zgodne, nie należy uznawać certyfikatu za autentyczny tylko dlatego, że jego odcisk palca pojawia się na liście "znanych" odciski palców certyfikatów ".

Zderzenia są faktem z algorytmami hashowania, nawet tymi dobrymi, i powinieneś wystrzegać się możliwości, że zmotywowany atakujący może wytworzyć nieuczciwy certyfikat z dopasowanym hasłem linii papilarnych. Jedynym sposobem zabezpieczenia się przed tym jest sprawdzenie ważności samego certyfikatu, tj. Sprawdzenie łańcucha zaufania, co sugerujesz w swoim ostatnim wyciągu.

+5

Huh? Kryptograficzne funkcje mieszające, takie jak SHA1, zostały zaprojektowane w taki sposób, że nie można znaleźć dwóch danych wejściowych, które są mieszane z tym samym wyjściem. Dlatego jeśli ich hash jest zgodne, można bezpiecznie założyć, że dane wejściowe są równe. Dlatego też można bezpiecznie założyć, że zmotywowany atakujący NIE może wytworzyć dwóch certyfikatów z pasującymi hasłami (co najmniej tak długo, jak skrót nie jest zepsuty). Samo sprawdzenie samego certyfikatu z podpisem własnym nie wystarczy. Musisz zaufać kluczowi podpisującemu. – Accipitridae

+4

Zderzenia * są * faktem z algorytmami mieszającymi. Pomimo tego, że niektóre z tych algorytmów zostały zaprojektowane zgodnie z najlepszymi intencjami, MD5 został już zdetronizowany, a SHA-1 również ma słabe strony. Zobacz http://www.crn.com/security/212700354 i http://www.rsa.com/rsalabs/node.asp?id=2834. Uważam, że lepiej jest dokładnie sprawdzić certyfikat i nie polegać tylko na odciskach palców. –

+5

... a aby sprawdzić ważność podpisu, najpierw haszuj swoje dane, a następnie sprawdź, czy jest to ta sama wartość skrótu, która została podpisana. Dlatego jeśli weryfikujesz podpis cyfrowy, to w rzeczywistości opierasz się na odporności na atak twojego algorytmu skrótu. – Accipitridae

1

Skrót:

Dobrze teoretycznie wtedy zrobić dokładnie to, co robi Certificate Authority dla Ciebie. Więc powinno być dobrze.

Longer:

Kiedy Certificate Authority podpisuje żądania klucza publicznego/certyfikat/świadectwo, że nie podpisze całych danych certyfikatów. Ale tylko obliczona wartość mieszająca wszystkich danych certyfikatu. Dzięki temu podpis jest mały.

Jeśli nie chcesz ustanowić własnego urzędu certyfikacji lub użyć komercyjnego/bezpłatnego - , porównując odcisk palca z zaufanym, uzyskasz drugą najbardziej godną zaufania konfigurację. Najbardziej godnym zaufania rozwiązaniem byłoby porównanie całego certyfikatu, ponieważ chroni on także przed atakami typu "hash collision".

Tak jak inni użytkownicy tutaj stwierdzili, należy upewnić się, że zastosowano bezpieczny/bezpieczny algorytm mieszający. SHA-1 nie jest już bezpieczny.

bardziej szczegółowe informacje na ten temat:

Powiązane problemy