Transport Layer Security: відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Рядок 39:
=== Алгоритми обміну/узгодження спільного ключа ===
 
Перед тим, як розпочати захищений обмін інформацією, клієнт та сервер мають узгодити алгоритм шифрування та відповідний ключ. Це відбувається під час процедури "«рукостикання" -»&nbsp;— відкриття сеансу зв'язку. Такі алгоритми можуть бути використані для цього завдання: криптографічна система [[RSA]] (позначення TLS_RSA під час "«рукостискання"»), [[Протокол Діффі-Геллмана]] (TLS_DH), короткочасні (ефемерні) ключі Діффі-Геллмана (TLS_DHE), [[Протокол Діффі-Геллмана на еліптичних кривих]] (TLS_ECDH), короткочасні ключі за протоколом Діффі-Геллмана на еліптичних кривих (TLS_ECDHE), анонімний протокол Діффі-Геллмана (TLS_DH_anon),<ref name="RFC5246"/> [[TLS-PSK|попередньо узгоджений ключ]] (TLS_PSK)<ref name=RFC4279>{{cite web|title=RFC 4279: Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)|url=//tools.ietf.org/html/rfc4279|publisher=Internet Engineering Task Force|accessdate=9 September 2013|author=P. Eronen, Ed.}}</ref> та [[TLS-SRP|Secure Remote Password]] (TLS_SRP)<ref name=RFC5054>{{cite web|title=RFC 5054: Using the Secure Remote Password (SRP) Protocol for TLS Authentication|url=//tools.ietf.org/html/rfc5054|publisher=Internet Engineering Task Force|accessdate=December 21, 2014|author=D. Taylor, Ed.}}</ref>.
 
Алгоритми TLS_DH_anon та TLS_ECDH_anon не автентифікують сервер та клієнт, і тому вони можуть бути вразливими до атаки типу «[[Атака «людина посередині»|людина посередині]]» через що ними користуються не так часто. Лише алгоритми TLS_DHE та TLS_ECDHE пропонують [[Пряма таємність|пряму таємність]].
 
Використані під час рукостискання сертифікати з відкритими ключами можуть мати різну довжину і тому різну стійкість до атак. В липні 2013 року Google повідомила про припинення використання ключів довжиною 1024 біт, натомість надалі компанія буде використовувати ключі довжиною 2048 біт<ref>{{cite web|last=Gothard|first=Peter|title=Google updates SSL certificates to 2048-bit encryption|url=http://www.computing.co.uk/ctg/news/2285984/google-updates-ssl-certificates-to-2048bit-encryption|work=Computing|publisher=Incisive Media|accessdate=9 September 2013}}</ref>.
 
{{anchor|keyexchange-table}}
{| class="wikitable" style="text-align:center"
|+ Алгоритми обміну/узгодження спільного ключа
! Алгоритм !! SSL 2.0 !! SSL 3.0 !! TLS 1.0 !! TLS 1.1 !! TLS 1.2 !! TLS 1.3<br/><small>(проект)</small> !! Стан
|-
! {{Depends|[[RSA]]}}
| {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}} || rowspan="19"| Визначено для TLS 1.2 у відповідних RFC
|-
!{{Depends|[[Протокол Діффі-Геллмана|DH]]-[[RSA]]}}
| {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}}
|-
!{{Good|[[Протокол Діффі-Геллмана|DHE]]-[[RSA]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!{{Depends|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDH]]-[[RSA]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}}
|-
!{{Good|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDHE]]-[[RSA]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!{{Depends|[[Протокол Діффі-Геллмана|DH]]-[[DSA|DSS]]}}
| {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}}
|-
!{{Good|[[Протокол Діффі-Геллмана|DHE]]-[[DSA|DSS]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}}<ref>{{cite web|url=https://www.ietf.org/mail-archive/web/tls/current/msg17680.html|title=Consensus: remove DSA from TLS 1.3|date=September 17, 2015|author=Sean Turner}}</ref>
|-
!{{Depends|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDH]]-[[DSA на еліптичних кривих|ECDSA]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{N/A|Ні}}
|-
!{{Good|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDHE]]-[[DSA на еліптичних кривих|ECDSA]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!{{Depends|[[TLS-PSK|PSK]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Depends|[[TLS-PSK|PSK]]-[[RSA]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Good|[[Протокол Діффі-Геллмана|DHE]]-[[TLS-PSK|PSK]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Good|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDHE]]-[[TLS-PSK|PSK]] ([[#Пряма таємність|пряма таємність]])}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Depends|[[TLS-SRP|SRP]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Depends|[[Secure Remote Password protocol|SRP]]-[[Digital Signature Algorithm|DSS]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Depends|[[Secure Remote Password protocol|SRP]]-[[RSA]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
!{{Depends|[[Kerberos (протокол)|Kerberos]]}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
|-
! {{Bad|[[Протокол Діффі-Геллмана|DH]]-ANON (insecure)}}
| {{N/a|No}} || {{No|Yes}} || {{No|Yes}} || {{No|Yes}} || {{No|Yes}} ||
|-
! {{Bad|[[Протокол Діффі-Геллмана на еліптичних кривих|ECDH]]-ANON (небезпечно)}}
| {{N/a|No}} || {{N/a|No}} || {{No|Yes}} || {{No|Yes}} || {{No|Yes}} ||
|-
!{{Good|[[ГОСТ Р 34.10-2012|ГОСТ Р 34.10-94/34.10-2001]]<ref name=gostlink>[//tools.ietf.org/html/draft-chudov-cryptopro-cptls-04 draft-chudov-cryptopro-cptls-04 - GOST 28147-89 Cipher Suites for Transport Layer Security (TLS)]</ref>}}
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} ||
| Запропоновано в проектах наступних RFC
|}
 
== Використані алгоритми ==