Data: 2016-03-29 22:32:12 | |
Autor: janek z pola | |
SSL - ktoĹ bÄdzie tak miĹy i przeĹoĹźy na chĹopski rozum? | |
Piotr Gałka wrote:
Zażarta dyskusja pod tematem "Ciekawe orzeczenie - bank ma oddać kasę" o OK. Bank przysyła certyfikat który zawiera: Dane banku i jego klucz publiczny, Teraz ogólnie się spotyka często łańcuch certyfikatów - tzn. masz certyfikat danego serwera (jego klucz publiczny) oraz klucze publiczne centrów certfikacji, które podpisały ten klucz publiczny. Możesz sobie taki program openssl pobrać i czarnym okienku zrobić polecenie: openssl s_client -connect mbank.pl:443 Dostaniesz tenże łańcuch: Certificate chain 0 s:/1.3.6.1.4.1.311.60.2.1.3=PL/businessCategory=Private Organization/serialNumber=0000025237/C=PL/postalCode=00-950/ST=mazowieckie/L=Warszawa/street=Senatorska 18/O=mBank S.A./OU=mBank/CN=www.mbank.pl i:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G3 1 s:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G3 i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 W outpucie będziesz miał też certyfikat tego serwera - zapisz sobie do jakiegoś pliku - np. ja sobie zapisałem do mbank.crt, potem takie polecenie: openssl x509 -in mbank.crt -noout -text Tam dostaniesz pełne dane certyfikatu: * CN - na jaką domenę jest ważny - oraz ogólnie nazwa tego certyfikatu * SAN - na jakie ewentualnie dodatkowe domeny jest ważny * Serial - numer seryjny certyfikatu w ramach danego klucza podpisującego * Issuer - kto podpisał - to jest ciąg znaków - nazwa klucza podpisującego * Validity - nie ważny przed data, nie ważny po dacie (dwie daty) * skrót klucza podpisującego - wiadomo kilka klucze może mieć tą samą nazwę * Public-Key - klucz publiczny będący esencją tego certyfikatu * Signature - podpis klucza podpisującego - czyli to, co uwiarygadnia cert * dodatkowo info o adresie listy odwołanych certyfikatów i ew. inne dane Chcę zweryfikować podpis - potrzebuję klucza publicznego tej organizacji. Ogólnie tak :D Dostaje od niej certyfikat, który zawiera jej dane i jej klucz publiczny, Dostajesz w zasadzie taką samą strukturę jak powyżej, tylko że jako CN nie jest podana już domena banku, tylko w cercie podpisującym cert banku jako CN jest podane to, co w cercie banku jest podane w polu "Issuer". Dodatkowo odcisk klucz publicznego (skrót) musi być taki sam - czyli to co w cercie banku jest podane jako "skrót klucza podpisującego" to w cercie podpisującym musi być rzeczywiście skrótem jego klucza publicznego.
Idziesz tą "drabinką" tak wysoko aż trafisz na taki certyfikat (dokładnie o takiej samej strukturze jak powyżej), któremu bezwarunkowo ufasz. Tak jak ktoś już tutaj napisał, te certy - znane jako RootCA - są zwykle zaszyte w sofcie komputera. Z tym są związane różne śmieszne historie: np. Lenovo dodawało do wszystkich sprzedawanych kompów jakieś swoje RootCA jako zaufane i serwowało reklamy po https w przeglądarce, deszyfrując pod spodem ruch https. Czyli po naszemu: robiło dokładnie to, co by robił złodziej bankowy, tylko że oni wstrzykiwali tam reklamy. Złodziej by wstrzykiwał jakiś komunikat typu "teraz podaj nam numer telefonu". Jak trafisz na zaufany cert w tym łańcuszku, to po pierwsze zwykle to będzie RootCA jakiegoś centrum certyfikacji, a po drugie to będzie jednocześnie prawie koniec drogi. Dodatkowo jest sprawdzana lista odwołanych certów - czyli CRL (trudno jasno ocenić czy nie można się pod to podszyć). Natomiast współczesne przeglądarki mają w sobie zaszyte skróty kluczy publicznych tych najbardziej popularnych witryn. Czyli nawet jak ktoś wstrzyknie Tobie trefne RootCA, to i tak przeglądarka się powinna zorientować w przypadku niektórych stron, że jest coś nie tak. Dodam tylko, że RootCA zwykle jest podpisane samo przez siebie, ale w sumie te czasy już minęły. Teraz jest tak, że RootCA jakie masz w systemie podane to jest tak naprawdę jakiś certyfikat podpisany jeszcze przez jakiś inny cert w danej firmie wystawcy - tzn. taki np. GeoTrust ma jakiś swój główny klucz prywatny, podpisuje tym swoje CA i odciski tego CA przesyła do firm, które produkują soft, żeby wrzuciły do przeglądarek.
Któremuś kluczowi publicznemu ufasz - tzn. w zasadzie któremuś certyfikatowi ufasz.
Tak. Wcześniej przesłane liczby losowe - a więc jawne (bo przed ustaleniem Kluczem sesji jest sekretna liczba. Powiedzmy wartość. Taka, żeby było ją trudno odgadnąć. Jak już wiesz, że ufasz danemu certowi, to wyciągasz z niego klucz publiczny i tą sekretną liczbę szyfrujesz tym kluczem. Serwer banku sobie odszyfrowuje i od tego momentu macie współdzieloną sekretną liczbę. Ona jest używana do symetrycznego szyfrowania (czyli szyfrowanie oraz deszyfrowanie za pomocą tego samego klucza) Wiadomo, że generator jest wystarczająco dobry? Nie wiadomo :D P.G. -- Wysłane z pola. |
|
Data: 2016-03-30 10:43:44 | |
Autor: Piotr Gałka | |
SSL - ktoś będzie tak miły i przełoży na chłopski rozum? | |
Użytkownik "janek z pola" <adres@email.pl> napisał w wiadomości news:ndeoob$fsh$1gioia.aioe.org... :(Wiadomo, że generator jest wystarczająco dobry? Wysłane z pola. Dzięki. Druknąłem sobie i wrzuciłem w miejsce, co mi się (obecnie) wydaje, że jak bym kiedyś szukał to znajdę :). P.G. |
|
Data: 2016-04-03 19:25:16 | |
Autor: Borys Pogoreło | |
SSL - ktoĹ bÄdzie tak miĹy i przeĹoĹźy na chĹopski rozum? | |
Dnia Tue, 29 Mar 2016 22:32:12 +0200, janek z pola napisał(a):
W outpucie będziesz miał też certyfikat tego serwera - zapisz sobie do jakiegoś pliku - np. ja sobie zapisałem do mbank.crt, potem takie polecenie: Można też kliknąć w kłódkę na pasku adresu przeglądarki i wyświetlić szczegóły certyfikatu, zamiast grepować kernele ;) -- Borys Pogoreło borys(#)leszno,edu,pl |