Современные реалии таковы, что не каждый бизнес может себе позволить сайт, особенно стартующий бизнес. Поэтому выгодно воспользоваться конструктором сайтов, например filandor. Запуск сайта через несколько минут.

Практически все данные, отправляемые через Интернет сегодня, в будущем окажутся под угрозой, если будет создан достаточно большой и стабильный квантовый компьютер. Любой, кто собирает данные сейчас, может расшифровать их.
К счастью, есть решение: мы можем переключиться на т.н. постквантовый (PQ) криптография, который предназначен для защиты от атак квантовых компьютеров. После шестилетнего процесса отбора по всему миру в июле 2022 года NIST объявил, что стандартизирует Kyber, схему соглашения о постквантовом ключе. Стандарт будет готов в 2024 году, но мы хотим способствовать внедрению постквантовой криптографии.
Сегодня мы добавили поддержку X25519Kyber512Draft00 а также X25519Kyber768Draft00 соглашения о гибридных постквантовых ключах для ряда тестовых доменов, включая pq.cloudflareresearch.com.
Хотите бесплатно поэкспериментировать с постквантом на своем тестовом сайте? Почта [email protected] чтобы зарегистрировать свой тестовый веб-сайт, но прочитайте мелкий шрифт ниже.
Что значит включить пост-квант на вашем сайте?
Если вы зарегистрируете свой веб-сайт для постквантовой бета-версии, мы добавим поддержку этих двух дополнительных ключевых соглашений. рядом существующие классические схемы шифрования, такие как X25519. Если ваш браузер не поддерживает эти соглашения о постквантовом ключе (а на момент написания статьи они не поддерживались), ваш браузер продолжит работу с классически безопасным, но не квантово-устойчивым соединением.
Тогда как его протестировать?
Мы создали форк BoringSSL и Go с открытым исходным кодом, который поддерживает эти соглашения о постквантовом ключе. Имея их и зарегистрированный тестовый домен, вы можете проверить, как ваше приложение работает с постквантовым обменом ключами. Мы работаем над поддержкой большего количества библиотек и языков.
Что искать?
Kyber и классические соглашения о ключах, такие как X25519, имеют разные характеристики производительности: Kyber требует меньше вычислений, но имеет большие ключи и требует немного больше оперативной памяти для вычислений. Это могло бы очень ускорить соединение, если бы оно использовалось само по себе.
Однако мы не используем Kyber отдельно, а используем гибриды. Это означает, что мы делаем как X25519 а также Соглашение о ключе Kyber, так что соединение остается классически безопасным, даже если одно из них нарушено. Это также означает, что соединения будут немного медленнее. В наших экспериментах разница очень мала, но лучше проверить самому.
Мелкий шрифт
Поддержка постквантовой криптографии Cloudflare — это бета-версия сервиса, предназначенная только для экспериментального использования. Включение пост-кванта на вашем веб-сайте приведет к тому, что веб-сайт будет подчиняться условиям бета-сервисов Cloudflare и повлияет на другие сервисы Cloudflare на веб-сайте, как описано ниже.
Нет гарантий стабильности или поддержки
В ближайшие месяцы как Kyber, так и способ его интеграции в TLS изменятся по нескольким причинам, в том числе:
- В ближайшие месяцы в Kyber произойдут небольшие, но обратно несовместимые изменения.
- Мы хотим быть совместимыми с другими ранними последователями и соответствующим образом изменим нашу интеграцию.
- По мере того, как вместе с сообществом криптографов мы находим проблемы, мы будем добавлять обходные пути в нашу интеграцию.
Мы соответствующим образом обновим наши форки, но не можем гарантировать долгосрочную стабильность или постоянную поддержку. Поддержка PQ может стать недоступной в любой момент. Мы будем публиковать обновления на pq.cloudflareresearch.com.
Функции в зарегистрированных доменах
На данный момент мы запускаем зарегистрированные зоны в несколько иной инфраструктуре, для которой доступны не все функции, особенно QUIC.
С этим в сторону, это…
Время демонстрации!
СкучноSSL
С помощью следующих команд создайте нашу вилку BoringSSL и создайте TLS-соединение с pq.cloudflareresearch.com, используя скомпилированный bssl
инструмент. Обратите внимание, что мы не включаем соглашения о постквантовом ключе по умолчанию, поэтому вам необходимо пройти -curves
флаг.
$ git clone https://github.com/cloudflare/boringssl-pq
[snip]
$ cd boringssl-pq && mkdir build && cd build && cmake .. -Gninja && ninja
[snip]
$ ./tool/bssl client -connect pq.cloudflareresearch.com -server-name pq.cloudflareresearch.com -curves Xyber512D00
Connecting to [2606:4700:7::a29f:8a55]:443
Connected.
Version: TLSv1.3
Resumed session: no
Cipher: TLS_AES_128_GCM_SHA256
ECDHE curve: X25519Kyber512Draft00
Signature algorithm: ecdsa_secp256r1_sha256
Secure renegotiation: yes
Extended master secret: yes
Next protocol negotiated:
ALPN protocol:
OCSP staple: no
SCT list: no
Early data: no
Encrypted ClientHello: no
Cert subject: CN = *.pq.cloudflareresearch.com
Cert issuer: C = US, O = Let's Encrypt, CN = E1
Идти
Наш форк Go по умолчанию не включает соглашение о постквантовом ключе. Следующая простая программа Go включает PQ по умолчанию для пакета http и GET pq.cloudflareresearch.com.
package main
import (
"crypto/tls"
"fmt"
"net/http"
)
func main() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
CurvePreferences: []tls.CurveID{tls.X25519Kyber512Draft00, tls.X25519},
CFEventHandler: func(ev tls.CFEvent) {
switch e := ev.(type) {
case tls.CFEventTLS13HRR:
fmt.Printf("HelloRetryRequest\n")
case tls.CFEventTLS13NegotiatedKEX:
switch e.KEX {
case tls.X25519Kyber512Draft00:
fmt.Printf("Used X25519Kyber512Draft00\n")
default:
fmt.Printf("Used %d\n", e.KEX)
}
}
},
}
if _, err := http.Get("https://pq.cloudflareresearch.com"); err != nil {
fmt.Println(err)
}
}
Для запуска нам нужно скомпилировать наш форк Go:
$ git clone https://github.com/cloudflare/go
[snip]
$ cd go/src && ./all.bash
[snip]
$ ../bin/go run path/to/example.go
Used X25519Kyber512Draft00
На проводе
Так как это выглядит на проводе? С помощью Wireshark мы можем захватывать поток пакетов. Сначала не пост-квантовое соединение HTTP/2 с X25519:

Это обычное рукопожатие TLS 1.3: клиент отправляет ClientHello с общим ключом X25519, который помещается в один пакет. Взамен сервер отправляет свой собственный 32-байтовый общий ключ X25519. Он также отправляет различные другие сообщения, такие как цепочка сертификатов, для которой требуется всего два пакета.
Давайте проверим Кибер:

Как видите, ClientHello немного больше, но все же помещается в один пакет. Ответ теперь занимает три пакета вместо двух из-за большего общего доступа к серверу.
Под капотом
Хотите добавить поддержку клиентов самостоятельно? Мы используем гибрид X25519 и Kyber версии 3.02. Мы пишем детали последнего в версии 00 этого проекта CRFG IETF, отсюда и название. Мы используем групповые идентификаторы TLS 0xfe30
а также 0xfe31
за X25519Kyber512Draft00 а также X25519Kyber768Draft00 соответственно.
Между нашими форками Go и BoringSSL есть некоторые различия, которые интересно сравнить.
- Наш форк Go использует нашу быструю реализацию Kyber, оптимизированную для AVX2, от CIRCL. Напротив, наш форк BoringSSL использует более простую переносимую эталонную реализацию. Без оптимизации AVX2 легче оценить. Минус в том, что он медленнее. Не ошибитесь: это все еще очень быстро, но вы можете проверить себя.
- Наш форк Go отправляет только один общий ключ. Если сервер не поддерживает его, он ответит сообщением HelloRetryRequest, и клиент переключится на тот, который сервер поддерживает. Это добавляет туда и обратно.
Наш форк BoringSSL, с другой стороны, отправит два общих ключа: постквантовый гибридный и классический (если классическое соглашение о ключах все еще включено). Если сервер не распознает первый, он сможет использовать второй. Таким образом, мы избегаем двустороннего обмена, если сервер не поддерживает соглашение о постквантовом ключе.
Заглядывая вперед
Квантовое будущее уже здесь. В ближайшие годы Интернет перейдет на постквантовую криптографию. Сегодня мы предлагаем нашим клиентам инструменты, позволяющие получить преимущество и протестировать соглашения о постквантовом ключе. Мы рады услышать ваши отзывы: отправьте их по электронной почте на адрес [email protected].
Это всего лишь небольшой, но важный первый шаг. Мы продолжим наши усилия по переходу к безопасному и частному квантово-защищенному Интернету. Многое еще впереди — наблюдайте за этим пространством.