По-прежнему в ходу RC4/3DES/TLS 1.0 и сертификаты на сотни лет. Анализ сотен миллионов SSL-рукопожатий
Если посмотреть на набор данных с 350 млн SSL-соединений, сразу возникает вопросов:
- кто выдал эти сертификаты
- какая там криптография
- каково их время жизни
Let's Encrypt выдал сертификаты почти для 30% доменов
Наш сервер (leebutterman.com) автоматически получает сертификаты Let's Encrypt — это самый популярный центр сертификации в интернете! Свыше 47 миллионов доменов защищены сертификатами Let's Encrypt, то есть почти 30% нашей выборки.
352,3 млн доменов смогли установить 158,7 млн соединений с указанием сертификата и эмитента. Первая десятка:
47,2 млн Let's Encrypt 28,9 млн DigiCert 13,8 млн Comodo 10,1 млн Google 7,2 млн GoDaddy 7,1 млн Sectigo 7,0 млн Cpanel 6,1 млн GlobalSign 3,4 млн CloudFlare0 2,5 млн Amazon 2,1 млн (анонимная самоподпись) 1,1 млн Plesk
В схеме zgrab это .data.tls.server_certificates.certificate.parsed.issuer_dn
, результаты можно воспроизвести с помощью zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_certificates.certificate.parsed.issuer_dn | sort | uniq -c zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_certificates.certificate.parsed.issuer_dn | sort | uniq -c zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_certificates.certificate.parsed.issuer_dn | sort | uniq -c
Срок действия сертификатов Let's Encrypt составляет три месяца, стимулируя регулярный цикл обновлений, но сегодня в интернете остаётся множество древних методов безопасности.
Почти три миллиона доменов с RC4 или 3DES
Из 160 млн соединений более 150 млн использовали эллиптические кривые, протокол Диффи — Хеллмана и AES. Следующим по популярности набором шифров стал RSA с RC4, а почти 1,8% соединений использовали RC4 или 3DES, и даже DES на шести доменах! (zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_hello.cipher_suite.name | sort | uniq -c zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_hello.cipher_suite.name | sort | uniq -c
)
120457325 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 16750820 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 13808304 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 2393679 TLS_RSA_WITH_RC4_128_SHA 1768423 TLS_RSA_WITH_AES_256_CBC_SHA 1653084 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 1397638 TLS_RSA_WITH_AES_128_CBC_SHA 373383 TLS_ECDHE_RSA_WITH_RC4_128_SHA 157929 TLS_RSA_WITH_3DES_EDE_CBC_SHA 17663 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 4041 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 2794 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 458 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 205 TLS_RSA_WITH_RC4_128_MD5 115 TLS_DH_RSA_WITH_AES_128_CBC_SHA 28 неизвестный 6 TLS_RSA_WITH_DES_CBC_SHA 1 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Обратите внимание, что последний Chrome не может принять RC4, но принимает 3DES (спасибо, badssl.com
!)
Более четырёх миллионов доменов с устаревшим TLS
По умолчанию пакет TLS в go не использует TLS 1.3 — кажется, что набор данных собирали с zgrab, который не использует TLS 1.3 (наверное, лучше обновить его к следующим запускам). Серверы большинства доменов использовали TLS 1.2, но более четырёх миллионов работают на TLS 1.0 (zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_hello.version.name | sort | uniq -c zcat 2019-08-01-ssl-*.gz | parallel --pipe jq -r .data.tls.server_hello.version.name | sort | uniq -c
).
154500876 TLSv1.2 4263887 TLSv1.0 19352 TLSv1.1 1781 SSLv3
TLS 1.0 до сих пор разрешён в Chrome.
Сотни тысяч сертификатов доменов истекают после 2099 года
В соответствии с лучшими практиками от Let’s Encrypt, срок службы SSL-сертификатов должен быть 90 дней.
Но лучшие практики не запрещают альтернативные практики!
Фото Рика Голдвасера из Флагстаффа, Аризона, США [CC BY 2.0], via Wikimedia Commons
В дикой природе встречаются сертификаты с тысячелетним сроком жизни, как эти остистые сосны.
Тысячи сертификатов истекают после 3000 года
Более 3000 сертификатов не истекают в этом тысячелетии. Свыше 8000 сертификатов истекают после 2200 года. Более 200 000 сертификатов — после 2100 года (более 1,5 млн — только в 2040-х годах!)
Так, в одном 2117 году истекает срок действия более 100 000 сертификатов, а в 3017-м — более тысячи. Возможно, именно в 2017 году что-то внушало доверие к долгоживущим сертификатам?
Миллионы сертификатов уже истекли
У почти 1,6 млн доменов сертификат истёк недавно (в июле, месяце сканирования). У почти 3,7 млн доменов сертификат истёк в 2019 году. Свыше 9,6 млн доменов работают с сертификатом, срок действия которого вышел в 2010-е годы!
Сотни обслуживаемых сертификатов ещё не действительны
Более того, у более ста тысяч сертификатов срок действия истекает до начала срока их действия!
Исследуйте сами
Дайте знать, что вы думаете! Проанализируйте этот набор данных и поделитесь результатами!
Автор: m1rko