Toggle theme
Kacper's Wiki
Narzędzia użytkownika
Toggle theme
Zaloguj
Narzędzia witryny
Szukaj
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Export to PDF
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
>
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
notatki:tls_1.2_explained
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Security: Schemat działania TLS 1.2 ====== {{.:pasted:20250522-112548.png}} **Transport Layer Security** <diagram><svg xmlns="http://www.w3.org/2000/svg" style="background: #ffffff; background-color: light-dark(#ffffff, #121212); color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="731px" height="621px" viewBox="-0.5 -0.5 731 621" content="<mxfile host="wiki.ostrowski.net.pl" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0" version="26.2.15"><diagram id="3w3lcbrK1tnA0iqcmklM" name="Page-1">7Vpbb6M6EP41SM1DIy6BJI+57Vba7jmrZqXzWDnggFVux5gm3V9/xmATbm1TQs9m21RqawYYm5n5Po/HVoxFsP9KUex9jxzsK7rq7BVjqei6Zpoj+MclT7lkYo5zgUuJIx46CNbkFxZCVUhT4uCk8iCLIp+RuCq0ozDENqvIEKXRrvrYNvKrvcbIxQ3B2kZ+U/oPcZgnvkIfH+Q3mLie7FmzpvmdDbIfXBqloehP0Y1t9pPfDpDUJT408ZAT7UoiY6UYCxpFLG8F+wX2uW2l2fL3vjxztxg3xSE75gU9f+ER+SmWI87GxZ6kLUiQGWvuscAHiQZNIVqSwAXVPtnAX9sn8T2ijDejIE4Zpgm0b1HMovhe0yd7+B3Godscohj1I6YM70siMeSvOAowo0/wiLg7FtYT0aVPxfWu5Csh8kpukjIkosMtFB8sBA1hpHaDGe9tsDWmYIj7Owiknq1m6TWzWU2zaXqL3TStB8OZrxsOwBDz5tbH+xlHMVgOh45oLm0fJQmxq5bNsIZ5HypcPWsl7FQA37RRyQZmiwmkjGIfMfJYpYk2s4gefkQERlK4QKtFrqHXLJtEKbWxeKuM25oiS3tFEUPUxayhKPNS8dlHOW7c4jjLB7vMIYotl2VmzwVJjMKKS61/U85kczvyI6oYM25Bd3MFY4VuVY3PCrwxGeRKxNNSrTaEewuf4OzLb2BYkewJBp13Vh0AiEuDqoUXj4FbtIGpqhJByCduyMMLusEwyDlHFIG5YCZuBMRxuI45xQn5hTaZPh5tMbduZm9zrphLkGyjkInZjMdASzxKGNRRW8xlQn9lPmhDszpUDW1SCQLttBiVj0TbbYJPjRrrAndOsDWU1megY+GuWa8o6g/uk98Gd53DPZ/+PgzcJQxOhvu1OtTqeL82zgjw0wvgm4AfGT0BvqGoP8DLTKIF8ccA3OdGvHYQfbjiWLdyiAvI66YxyFv8nm4IAig3Bu1kYHAykOMgUrrgWN0CWhkucQBp4YU2uig9p7a9fvUj3fgQgLr6DT8NzpNQJMw+PqFoR6xNPyGj9JVCNBT1yChti+TOjKKbZk4WI5FGaB0pZVSmlFRKi4QDMM/dvrc9FLpleklfpRf16oTvk9nRVIx/NO34fQ2aWxKXMMQ9swYmQiylb2HNMyXAghY+AQNeaiYtDGj2lVM1FPXIgM3lr9m2ulGXf/+1OlOc9VapOH+cta15Px3O6rVJs2umUa9NNhT1iLO2VWf3TGM0raxerI4TsdWaaBSFzBMSjbMkComej17SLHZcLjRR8pDVdTqu00RDUX80IR1V8tw421sQCFQXJPayefmdSpuNEuqWhCTxwOmtlcw/CP3PbkN+OPSPLuhvJuNWX+WIhqIe0d9cRk0q6Lcl+pMY2xcS6EACEhsff63Qsh3+83bNvT/MIIdCB1jgASvFCZ+Dr8A2rKubdh5heB0jm+vaURQ3qKPkJkhRX6CS40+M6EYVpMWxpRLZGG1sU5/KO520aU7abwVmUToUCFVfBuYpxckTlwzv/GWNlcVv/NS1ByEJnKeusU05HtUrPHQ5Ia98n8Qs24BZpPSRY2hJtluCr3m5JMhGvAKqDjDNqprX/HqxvFkNSqS9oUfuBh214Hqb+By5ubf8zDCnw+nUKn6qJD0e9QH55zcOGtXq7nuTuvxvml1DWJbxZinzwNLEJuypFMh3MEslTFnpCmQ1UwMiPiC0uJyBc/Ng5gF8t54NusQu+SRhp09fDLteznS2pfb/z5mX75hXgUgSKPyEs8JPCGe5Q5Lt1ahhtIkcbgyGghjntLkjMPWCxOMPBDhJkItL/PfHHpXpj6j0lyJmUj8peUTEwOXhSHaeNB7OvRur/wA=</diagram></mxfile>"><defs/><rect fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));" width="100%" height="100%" x="0" y="0"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="2"><g><image x="59.5" y="76.5" width="80" height="80" xlink:href="data:image/png;base64,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"/></g></g><g data-cell-id="3"><g><image x="609.5" y="46.5" width="120" height="110" xlink:href="data:image/png;base64,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"/></g></g><g data-cell-id="5"><g><path d="M 160.5 112 L 160.5 102 L 580.5 102 L 580.5 91.5 L 599.5 107 L 580.5 122.5 L 580.5 112 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="7"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 107px; margin-left: 388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><b><span style="color: light-dark(rgb(0, 157, 8), rgb(43, 178, 50));">1. Client Hello</span></b></div></div></div></foreignObject><text x="388" y="113" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">1. Client Hello</text></switch></g></g></g></g><g data-cell-id="6"><g><path d="M 589.5 162 L 589.5 172 L 169.5 172 L 169.5 182.5 L 150.5 167 L 169.5 151.5 L 169.5 162 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="8"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 165px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><b><span style="color: light-dark(rgb(0, 157, 8), rgb(43, 178, 50));">2. Server Hello</span></b></div></div></div></foreignObject><text x="400" y="171" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">2. Server Hello</text></switch></g></g></g></g><g data-cell-id="9"><g><path d="M 589.5 212 L 589.5 222 L 169.5 222 L 169.5 232.5 L 150.5 217 L 169.5 201.5 L 169.5 212 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="10"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 215px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><span style="color: light-dark(rgb(6, 0, 253), rgb(237, 237, 237));">3. <i>Certificate</i></span><i> </i>(Public Key)</div></div></div></foreignObject><text x="400" y="221" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">3. Certificate (Public Key)</text></switch></g></g></g></g><g data-cell-id="12"><g><path d="M 589.5 262 L 589.5 272 L 169.5 272 L 169.5 282.5 L 150.5 267 L 169.5 251.5 L 169.5 262 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="13"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 265px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><span style="color: light-dark(rgb(255, 4, 11), rgb(237, 237, 237));">4. <u>Server Key exchange</u></span> (<span style="color: light-dark(rgb(0, 19, 249), rgb(237, 237, 237));"><i>Digital Signature</i></span>)</div></div></div></foreignObject><text x="400" y="271" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">4. Server Key exchange (Digital Signature)</text></switch></g></g></g></g><g data-cell-id="15"><g><path d="M 589.5 312 L 589.5 322 L 169.5 322 L 169.5 332.5 L 150.5 317 L 169.5 301.5 L 169.5 312 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="16"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 315px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">5. Server Hello DONE</div></div></div></foreignObject><text x="400" y="321" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">5. Server Hello DONE</text></switch></g></g></g></g><g data-cell-id="18"><g><path d="M 160.5 372 L 160.5 362 L 580.5 362 L 580.5 351.5 L 599.5 367 L 580.5 382.5 L 580.5 372 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="19"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 367px; margin-left: 388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><span style="color: light-dark(rgb(249, 0, 6), rgb(237, 237, 237));">6. <u>Client Key exchange</u></span></div></div></div></foreignObject><text x="388" y="373" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">6. Client Key exchange</text></switch></g></g></g></g><g data-cell-id="21"><g><path d="M 160.5 422 L 160.5 412 L 580.5 412 L 580.5 401.5 L 599.5 417 L 580.5 432.5 L 580.5 422 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="22"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 417px; margin-left: 388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">7. Change Cipher <span style="color: light-dark(rgb(0, 157, 8), rgb(43, 178, 50));"><b>finished</b></span></div></div></div></foreignObject><text x="388" y="423" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">7. Change Cipher finished</text></switch></g></g></g></g><g data-cell-id="24"><g><path d="M 589.5 462 L 589.5 472 L 169.5 472 L 169.5 482.5 L 150.5 467 L 169.5 451.5 L 169.5 462 Z" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="25"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 465px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">8. Change cipher spec <span style="color: light-dark(rgb(0, 157, 8), rgb(43, 178, 50));"><b>finished</b></span></div></div></div></foreignObject><text x="400" y="471" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">8. Change cipher spec finished</text></switch></g></g></g></g><g data-cell-id="27"><g><rect x="220" y="7" width="350" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 348px; height: 1px; padding-top: 22px; margin-left: 221px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 37px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TLS 1.2 handshake </div></div></div></foreignObject><text x="395" y="33" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="37px" text-anchor="middle">TLS 1.2 handshake </text></switch></g></g></g><g data-cell-id="32"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 528px; margin-left: 350px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><span style="color: light-dark(rgb(255, 0, 0), rgb(255, 144, 144));"><span style="color: light-dark(rgb(255, 0, 6), rgb(237, 237, 237));"><span style="color: light-dark(rgb(255, 0, 0), rgb(255, 144, 144));"><u><span style="color: light-dark(rgb(255, 0, 6), rgb(237, 237, 237));">Shared Secret (e.g. Elliptic Curve Diffie-Hellman Ephemeral - ECDHE) <br /></span></u></span></span></span></div></div></div></foreignObject><text x="350" y="534" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">Shared Secret (e.g. Elliptic Curve Diffie-Hellman Ephemeral - ECDHE) 
</text></switch></g></g></g><g data-cell-id="33"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 568px; margin-left: 290px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><i><span style="color: light-dark(rgb(6, 26, 255), rgb(237, 237, 237));">Server Authenticity (e.g. Rivest–Shamir–Adleman - RSA)<br /></span></i></div></div></div></foreignObject><text x="290" y="574" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">Server Authenticity (e.g. Rivest–Shamir–Adleman - RSA)
</text></switch></g></g></g><g data-cell-id="34"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 608px; margin-left: 320px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 22px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><b><span style="color: light-dark(rgb(0, 157, 8), rgb(43, 178, 50));">Mechanism to make sure nobody tampered with the message </span></b></div></div></div></foreignObject><text x="320" y="614" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="22px" text-anchor="middle">Mechanism to make sure nobody tampered with the message </text></switch></g></g></g></g></g></g></svg></diagram> ====== TLS 1.2 Handshake ====== ==== 1. Client Hello ==== Klient inicjuje połączenie, wysyłając wiadomość **ClientHello**, która zawiera: * obsługiwaną wersję protokołu TLS * listę wspieranych zestawów szyfrów (cipher suites) * losowy ciąg bajtów (client random) * opcjonalne rozszerzenia, takie jak SNI (Server Name Indication) Celem tej wiadomości jest rozpoczęcie negocjacji parametrów bezpieczeństwa z serwerem. ==== 2. Server Hello ==== ([Microsoft Learn][1]) Serwer odpowiada wiadomością **ServerHello**, która zawiera:([Wikipedia][2]) * wybraną wersję protokołu TLS * wybrany zestaw szyfrów * losowy ciąg bajtów (server random) * opcjonalne rozszerzenia Ta wiadomość potwierdza wybór wspólnych parametrów bezpieczeństwa dla sesji. ==== 3. Certificate (Public Key) ==== Serwer przesyła swój certyfikat X.509 zawierający klucz publiczny. Klient wykorzystuje ten certyfikat do:([catchpoint.com][3]) * weryfikacji tożsamości serwera * uzyskania klucza publicznego do szyfrowania premaster secret([ManageEngine][4]) ==== 4. Server Key Exchange (Digital Signature) ==== W zależności od wybranego zestawu szyfrów, serwer może wysłać wiadomość **ServerKeyExchange**, która zawiera:([Wikipedia][2]) * dodatkowe parametry wymiany kluczy (np. dla DHE lub ECDHE)([Wikipedia][2]) * podpis cyfrowy tych parametrów Klient weryfikuje podpis, aby upewnić się, że parametry pochodzą od autoryzowanego serwera. ==== 5. Server Hello Done ==== ([Taro][5]) Serwer wysyła wiadomość **ServerHelloDone**, sygnalizując zakończenie swojej części negocjacji. Klient może teraz kontynuować proces handshake. ==== 6. Client Key Exchange ==== Klient generuje premaster secret i przesyła go do serwera w wiadomości **ClientKeyExchange**. W zależności od metody wymiany kluczy:([ManageEngine][4]) * dla RSA: premaster secret jest szyfrowany kluczem publicznym serwera([Cloudflare][6]) * dla DHE/ECDHE: klient przesyła swoje parametry wymiany kluczy([Taro][5]) Obie strony wykorzystują premaster secret oraz losowe wartości do obliczenia wspólnego master secret.([Wikipedia][2]) ==== 7. Change Cipher Spec ==== ([Fortinet Docs][7]) Klient wysyła wiadomość **ChangeCipherSpec**, informując serwer, że od tego momentu wszystkie wiadomości będą szyfrowane przy użyciu uzgodnionych parametrów.([takethenotes.com][8]) ==== 8. Finished ==== ([Fortinet Docs][7]) Klient wysyła wiadomość **Finished**, która jest pierwszą zaszyfrowaną wiadomością w sesji. Zawiera ona skrót wszystkich wcześniejszych wiadomości handshake, co umożliwia serwerowi weryfikację integralności i autentyczności negocjacji. Po otrzymaniu i weryfikacji wiadomości **Finished**, serwer również wysyła swoje wiadomości **ChangeCipherSpec** i **Finished**, kończąc proces handshake. Od tego momentu komunikacja między klientem a serwerem jest szyfrowana i bezpieczna. źródła: - https://learn.microsoft.com/en-us/windows/win32/secauthn/tls-handshake-protocol?utm_source=chatgpt.com "TLS Handshake Protocol - Win32 apps | Microsoft Learn" - https://en.wikipedia.org/wiki/Transport_Layer_Security?utm_source=chatgpt.com "Transport Layer Security - Wikipedia" - https://www.catchpoint.com/blog/wireshark-tls-handshake?utm_source=chatgpt.com "Dissecting TLS Using Wireshark" - https://www.manageengine.com/key-manager/information-center/what-is-ssl-tls-handshake.html?utm_source=chatgpt.com "What is SSL/TLS handshake? | TLS/SSL handshake protocol - ManageEngine Key Manager Plus" - https://www.jointaro.com/interview-insights/google/describe-ssl-key-exchange-in-tls/?utm_source=chatgpt.com "Describe SSL key exchange in TLS Interview Question for Google" - https://www.cloudflare.com/pl-pl/learning/ssl/what-happens-in-a-tls-handshake/?utm_source=chatgpt.com "What happens in a TLS handshake? | SSL handshake | Cloudflare" - https://docs.fortinet.com/document/fortimail/7.2.2/administration-guide/887607/how-tls-ssl-works?utm_source=chatgpt.com "How TLS/SSL works | FortiMail 7.2.2 | Fortinet Document Library" - https://takethenotes.com/ssl-tls/?utm_source=chatgpt.com "SSL/TLS - Unlocking The Secrets Of Secure Communication | Take The Notes" - https://www.rfc-editor.org/rfc/rfc5246?utm_source=chatgpt.com "RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2" - https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/?utm_source=chatgpt.com "What happens in a TLS handshake? | SSL handshake | Cloudflare" {{youtube>86cQJ0MMses?}}
notatki/tls_1.2_explained.txt
· ostatnio zmienione:
2025/05/22 11:28
przez
administrator
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Export to PDF
Do góry