Современные реалии таковы, что не каждый бизнес может себе позволить сайт, особенно стартующий бизнес. Поэтому выгодно воспользоваться конструктором сайтов, например 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 изменятся по нескольким причинам, в том числе:

  1. В ближайшие месяцы в Kyber произойдут небольшие, но обратно несовместимые изменения.
  2. Мы хотим быть совместимыми с другими ранними последователями и соответствующим образом изменим нашу интеграцию.
  3. По мере того, как вместе с сообществом криптографов мы находим проблемы, мы будем добавлять обходные пути в нашу интеграцию.

Мы соответствующим образом обновим наши форки, но не можем гарантировать долгосрочную стабильность или постоянную поддержку. Поддержка 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 есть некоторые различия, которые интересно сравнить.

Заглядывая вперед

Квантовое будущее уже здесь. В ближайшие годы Интернет перейдет на постквантовую криптографию. Сегодня мы предлагаем нашим клиентам инструменты, позволяющие получить преимущество и протестировать соглашения о постквантовом ключе. Мы рады услышать ваши отзывы: отправьте их по электронной почте на адрес [email protected].

Это всего лишь небольшой, но важный первый шаг. Мы продолжим наши усилия по переходу к безопасному и частному квантово-защищенному Интернету. Многое еще впереди — наблюдайте за этим пространством.