eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plFinanseGrupypl.biznes.bankiSSL - ktoś będzie tak miły i przełoży na chłopski rozum?Re: SSL - ktoś będzie tak miły i przełoży na chłopski rozum?
  • Data: 2016-03-29 22:32:12
    Temat: Re: SSL - ktoś będzie tak miły i przełoży na chłopski rozum?
    Od: janek z pola <a...@e...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Piotr Gałka wrote:

    > Zażarta dyskusja pod tematem "Ciekawe orzeczenie - bank ma oddać kasę" o
    > bezpieczeństwie transakcji skłoniła mnie do zapytania o prawdopodobnie coś
    > podstawowego.
    > Przyznam, że liczę na odpowiedź od Sebastiana.
    >
    > Chciałbym ogarnąć ogólnie SSL. Jak szukam to są opisy albo za proste - nie
    > dające mi odpowiedzi na moje wątpliwości, albo tak zawikłane, że
    > odstraszają od próby przebrnięcia (przy notorycznym braku czasu na to).
    >
    > Ja to rozumiem tak. Chcę (mój komputer chce) ustanowić sesję z bankiem.

    OK.

    > Bank przysyła certyfikat który zawiera: Dane banku i jego klucz publiczny,
    > wszystko podpisane kluczem prywatnym przez jakąś organizację. Zawiera
    > jeszcze coś istotnego?

    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=Priv
    ate
    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,
    > wszystko podpisane przez kogoś innego jego kluczem prywatnym.
    > Aby to zweryfikować potrzebuję klucza publicznego tego kogoś innego. itd.

    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.

    >
    > Kiedy i jak ten proces się kończy?

    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.

    >
    > Opis na Wiki "Zasada działania SSL" jest tak napisany, jakby problem
    > weryfikacji dostarczonego klucza publicznego nie istniał.
    > Czego nie wiem?

    Któremuś kluczowi publicznemu ufasz - tzn. w zasadzie któremuś certyfikatowi
    ufasz.

    >
    > Jak już załóżmy mam klucz publiczny banku i wiem, że nie jest to jakaś
    > podróba to dalej z opisu na Wiki wynika, że do ustalenia klucza sesji
    > brane są dwie liczby losowe przesłane wcześniej przez mój komputer i
    > serwer banku oraz jakiś ustalony przez mój komputer klucz, który jest
    > podpisywany kluczem publicznym banku i wysyłany do banku.

    Tak.

    > Wcześniej przesłane liczby losowe - a więc jawne (bo przed ustaleniem
    > sesji). Czyli jedyną tajną rzeczą na tym etapie jest ten wylosowany przez
    > komputer klucz.

    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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1