SSL/TLS handshake step by step

Крайната цел на този handshake е да се договори т.н. session key между клиента и сървъра, който session key да се използва от тук нататък за криптиране на комуникацията между тях.

Другото уточнение е, че тук имаме т.н. „One-Way SSL“, тоест само сървъра се представя със сертификата си, не и клиента.

  1. The ‘client hello’ message: Клиентът изпраща „client hello“ съобщение към сървъра, което съобщение съдържа версията на SSL/TLS, която поддържа клиента, т.н. „cipher suites“ (алгоритмите), които поддържа, и рандъм стринг, т.н. „client random.“
  2. The ‘server hello’ message: Сървърът отговаря на клиента със т.н. „server hello“ съобщение, съдържащо сертификата му, избраният „cipher suite“ и т.н. „server random“ – рандъм стринг, генериран от сървъра.
  3. Authentication: Клиентът проверява сертификата на сървъра по Chain of trust
  4. The premaster secret: Ако всичко с идентичността на сървъра е ОК, клиентът генерира нов рандъм стринг, криптира го с public-a на сървъра и му го изпраща, това е т.н. „premaster secret„. Демек, казва му, „ОК, видях че си този, за който се представяш“.
  5. Private key used: Сървърът го декриптира със своя private ключ.
  6. Session keys created: Сега вече и клиентът и сървърът имат така да се каже, по един комплект от: рандъмите и на двамата както и „premaster secret“-а. Използвайки ги и двамата генерират т.н. „session key“ като и при двамата резултатът трябва да е еднакъв.
  7. Client is ready and Server is ready: Имайки този session key, двамата си изпращат един на друг стрингът „finished„, криптиран с него. Щом и двамата го декриптират и получат „finished„, значи и двамата имат еднакъв „session key„.
  8. Всяка комуникация между двамата вече ще е криптирана с този „session key„, което е Symmetric encryption.

Излиза че Asymmetric encryption се използва само по време на handshake, после всичко си е по Symmetric encription.

Kaкво е cipher suite?

Набор от encryption algorithms, които могат да се използват за установяване на сигурна връзка. По време на т.н. „SSL/TLS handshake“ една от задачите е избиране на алгоритъма, който ще се използва.

Литература:

https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *