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