Уже давно ходят слухи, что АНБ способно дешифровать значительную часть зашифрованного интернет-трафика. Этому есть косвенные свидетельства. В 2012 году некий сотрудник АНБ на условиях анонимности утверждал, что агентство добилось «прорыва в вычислениях», которые дают им «возможность взломать нынешнюю публичную криптографию». Документы Сноудена тоже указывают на некоторые исключительные возможности АНБ: из них следует, что агентство построило широкую инфраструктуру для перехвата и расшифровки VPN-трафика, и что оно вероятно обладает возможностью расшифровать по крайней мере часть HTTPS и SSH соединений по запросу.

Документы не дают понять, как такое возможно. 13 октября на конференции ACM CCS выступили известные криптографы Алекс Халдерман (Alex Halderman) и Надя Хенингер (Nadia Heninger) с докладом, в котором они предполагают, что решили эту таинственную загадку. Кстати, их работа признана лучшим докладом конференции.

По мнению специалистов, проблема в алгоритме Диффи-Хеллмана, который широко используется в интернете для обмена ключами при установке защищённого канала. Это краеугольный камень надёжной криптографической защиты. Он используется в VPN, HTTPS и многих других протоколах.

Протокол Диффи-Хеллмана позволяет двум и более сторонам получить общий секретный ключ, используя незащищённый от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования.

Проблема вот в чём. Если клиент и сервер обмениваются ключами по протоколу Диффи-Хеллмана, то изначально им нужно договориться о большом простом числе, которое используется для дальнейших вычислений. Казалось бы, нет проблем, если все будут использовать одно и то же число, и в реальности во многих приложениях жёстко зашиты такие числа. Но есть одна важная деталь. А что, если некий злоумышленник вложит гигантские средства, чтобы выполнить единственное вычисление и «взломать» конкретное простое число, а потом легко будет расшифровывать коммуникации всех, кто использует это число.

В своей работе Халдерман и Хенингер оценивают масштаб инвестиций. Для наиболее распространённого типа Диффи-Хеллмана (1024 бит) такой суперкомпьютер, сделанный на стандартном железе, будет стоить несколько сотен миллионов долларов. Он сможет взломать одно простое число примерно за год.

Есть ли смысл разведывательному агентству инвестировать такие деньги, чтобы обрабатывать по одному числу за год? Халдерман и Хенингер считают, что есть. Дело в том, что если взломать самое распространённое в реальных приложениях простое число, то вы сможете дешифровать две трети мирового VPN-трафика и получите доступ к четверти SSH-серверов!

Взлом второго по популярности числа даёт вам доступ к пассивной прослушке примерно 20% HTTPS-серверов из списка миллиона самых популярных сайтов.

Другими словами, однократные инвестиции в оборудование позволят расшифровать триллионы зашифрованных соединений.

Бюджет АНБ, несомненно, достаточен для этого.

Подробнее см. работу Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice.

Комментарии (37)


  1. roboq6
    15.10.2015 19:22
    -15

    Казалось бы, нет проблем, если все будут использовать одно и то же число, и в реальности во многих приложениях жёстко зашиты такие числа.


    Спрашивается, зачем тратить столько времени и ресурсов на брутфорс этого числа, если его можно просто выдрать из кода программ которые его используют? Даже если программа проприетарная, то наверняка дизассемблирование дешевле обойдется.


    1. Scratch
      15.10.2015 19:38
      +4

      Брутфорс не числа (оно не секретное) а параметров, которые с помощью этого числа получаются


      1. roboq6
        15.10.2015 19:42
        +4

        Похоже я плохо понимаю как происходит использование простого числа в по протоколу Диффи-Хеллмана. Не могли бы описать?

        Я просто думал, что простое число выполняет функцию ключа.


        1. prishelec
          15.10.2015 19:59

          Тоже сильно заинтересовало это число:
          Вот понятно описано: https://ru.wikipedia.org/wiki/Протокол_Диффи_—_Хеллмана


        1. grokinn
          15.10.2015 20:14
          +10

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


          1. a5b
            16.10.2015 04:15
            +48

            К сожалению, для протокола Диффи — Хеллмана в поле вычетов по модулю (mod p) размером 512 (1024) бита возможно слишком много различных пар ключей (более чем порядка 2^500 и 2^1000 пар). Подобные объемы информации находятся далеко за физическими пределами хранения информации (Limits to computation) и за пределами вычислимости (Transcomputational problem — более 2^310 операций).

            В частности, заметно более простая задача полного перебора 2^256 ключей (для симметричного 256-битного алгоритма, например, AES-256) потребовала бы по принципу Ландауэра (при необратимых вычислениях) потребления энергии, превышающей энерговыделение нескольких миллионов сверхновых: everything2.com/title/Thermodynamics+limits+on+cryptanalysis

            ...brute force attacks against 256-bit keys will be infeasible until computers are built from something other than matter and occupy something other than space". ---Bruce Schneier in Applied Cryptography
            … Even sucking all the energy from a supernova would be just enough to pass through all states of a 219-bit counter… As long as computers are made of matter, 256-bit keys will be secure against brute-force. Except of course… if we break the second law of thermodynamics :-).


            В обсуждаемой же работе weakdh.org/imperfect-forward-secrecy-ccs15.pdf Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice // CCS’15, October 12–16, 2015, Denver, Colorado, USA. ACM 978-1-4503-3832-5/15/10. DOI: dx.doi.org/10.1145/2810103.2813707
            речь идет о намного более практичной атаке на проблему дискретного логарифирования (дано ключ y = g^a mod p; заранее известны g и p, получен y, найти a) с помощью лучших методов решета числового поля (number field sieve, GNFS). В данных методах требуется очень большой объем вычислений для каждого модуля p, но большая часть вычислений не зависит от конкретных ключей (см precomputation из Figure 1 статьи):
            With state-of-the-art number field sieve algorithms, computing a single discrete log is more difficult (примерно в 10 раз сложнее) than factoring an RSA modulus of the same size. However, an adversary who performs a large precomputation for a prime p can then quickly calculate arbitrary discrete logs in that group, amortizing the cost over all targets that share this parameter. Although this fact is well known among mathematical cryptographers, it seems to have been lost among practitioners deploying cryptosystems.

            Авторами статьи был проведен предварительный расчет для трех 512-битных простых модулей (в т.ч. два из набора DHE_EXPORT), на что потребовалось 7 дней: выбор и просеивание полиномов на 2-3 тысячах ядер Sandy Bridge (8+21 тыс ядро-часов; 3 + 15 часов, идеально распараллеливается) и решение линейной системы (60 тысяч ядро-часов; пять суток на кластере из 36 машин с 2x8-core E5-2650 + Infiniband FDR, с параллельностью уже хуже). Результатом расчета для каждого модуля стали 2.5 ГБ чисел.
            Затем авторы продемонстрировали решение задачи логарифмирования для ключей в этих полях на машине с 2-мя 18-ядерными Intel Xeon E5-2699 и 128 ГБ ОЗУ, в среднем за 70 секунд на ключ (от 34 до 206 секунд).

            Для 768- и 1024-битного модуля они оценивают время предварительных вычислений в 8 тысяч ядро-лет и 10 миллионов ядро-лет соответственно, а время логарифмирования отдельных ключей — в 2 и 30 суток. При этом линейная система будет уже не из 2 миллионов строк как для 512 бит, а уже из 150 миллионов для 768 бит и 5.2 миллиардов для 1024 бит. Столь большие системы еще не решали, и по самым грубым оценкам их решение может потребовать сотен лет работы крупнейших суперкомпьютеров США (Titan имеет 300 тыс ядер и стоил ~$100 млн).


            1. GAS_85
              16.10.2015 13:30
              +12

              Это тот самый случай, когда комментарий лучше статьи.


      1. NeoCode
        15.10.2015 19:54

        Я кстати после прочтения статьи тоже хотел написать, что не проще ли дизассемблировать приложения и извлечь оттуда эти числа. Из текста статьи следует, что секретным является именно число. Я ничего не понимаю в криптографии, но интуитивно понятно, что тут какая-то недосказанность. Если число не секретное, какие секретные параметры могут с его помощью получаться?


        1. Scratch
          15.10.2015 20:21
          +3

          После прочтения статьи достаточно взглянуть на имя автора и понять, что это очередная туфта.
          Вот описание

          А весь смысл в том, что эти простые числа много где одинаковые по умолчанию (их довольно долго нужно генерить, чтобы этот процесс был прозрачным при установке) и если взломают закономерность, на них основанную, то все сгенеренные ключевые пары можно будет отправить в помойку.

          Так что нет, АНБ ничего еще не скомпрометировало, просто очередная желтизна


          1. dom1n1k
            16.10.2015 01:16
            +1

            Нет, комментарий выше правильно излагает суть
            geektimes.ru/post/264040/#comment_8838450


    1. Dragonim
      16.10.2015 10:22
      +2

      Вот очень понятное описание алгоритма Диффи-Хеллмана

      https://youtu.be/vFjq9pID4-E


  1. Scratch
    15.10.2015 19:37

    Вы про дефолтные параметры в серверах типа apache/nginx? Так ssllabs уже давным давно ругается на них, это не новость


  1. EvilGenius18
    15.10.2015 20:08
    +1

    А почему бы не увеличить длину с 1024 бит до 4096 бит? Кто-нибудь может подскажет, помогло ли бы это защитить протокол от взлома даже при использовании супер-компьютера?
    Или Почему бы не сделать двойную систему шифрования
    Шифрование протокола шифрования, так сказать

    image


    1. grokinn
      15.10.2015 20:18
      +4

      Сделать то можно что угодно, проблема в том что существует множество серверов и ПО, которые используют алгоритм в текущей реализации и изменить это даже при всем желании быстро нельзя, не говоря уже о том, что АНБ будет противодействовать таким новациям, по крайней мере для американских компаний, на которые оно может оказать давление.


    1. 6opoDuJIo
      16.10.2015 01:50
      +3

      В некоторых странах максимальная длинна ключа ограничена законодательно. Т.о. использование длинного ключа будет нелегальным.


      1. vlreshet
        16.10.2015 10:46
        +3

        Очень странные законы существуют в нашем мире, оказывается. То есть если я возьму рецепт куриного пирога, потом порешаю над ним очень сложную математику (зашифрую в 4096 бит), и кину итог другу Ивану — то я стану преступником?


        1. roboq6
          16.10.2015 11:31
          +2

          Наоборот, закон очень логичный. Ведь если шифрование будет слишком надежным, то даже товарищи из КГБ не смогут взломать ваш шифр. Хорошо если это рецепт куринного пирога, а вдруг это план путча/революции против власть имущих?


          1. vlreshet
            16.10.2015 12:29
            +4

            Но погодите, шифрование и нужно чтобы никто не мог прочитать мою информацию, разве нет? Откуда мне знать что нет таких же умных товарищей как товарищи из КГБ, которые тоже смогут сломать мой шифр? Почему вообще я должен думать о том что кому-то будет сложно меня взломать?


            1. roboq6
              16.10.2015 12:40

              По идее Ваше шифрование должно быть достаточно стойким, чтобы противостоять атакам криминальных элементов и нечистых на руку конкурентов, но при этом достаточно слабым для КГБ/ФСБ и т.д. То есть, выражаясь фигурально у Вас должна быть достаточно крепкая дверь, чтобы предотвратить проникновение бандитов, но при этом НЕ настолько крепкая, чтобы предотвратить доступ агентов ФСБ.


              1. Digwener
                16.10.2015 13:29
                +3

                Это при условии, что в АНБ/ФСБ нет недобросовестных сотрудников, которые могут использовать данные, к которым имеют доступ, в личных и преступных целях. Ну и что недобросовестным не становится всё государство.


                1. 6opoDuJIo
                  17.10.2015 03:53

                  Так уж получилось что некоторые инстанции являются доверительными. В противном случае, ничего не работало-бы вообще.


              1. zagayevskiy
                16.10.2015 13:52

                Знаете, если так рассуждать, то обвинять АНБ в том, что оно скомпрометировало протокол, вообще глупо.


              1. vlreshet
                16.10.2015 14:26
                +1

                Нет, это я прекрасно понимаю. Вопрос в другом — а почему я должен ставить недостаточно крепкую дверь для агентов ФСБ? Почему я впринципе не могу делать со своей информацией всё что хочу? Если злоумышленники захотят — они будут использовать и 4096 бит, им всё равно уже, они и так преступники. А мне почему нельзя?


                1. roboq6
                  16.10.2015 14:51
                  +2

                  а почему я должен ставить недостаточно крепкую дверь для агентов ФСБ?

                  Потому что те люди, которые контролируют государство, так хотят. Захотят — сошлют Вас в Гулаг как врага народа. Захотят — кожу живьем сдерут.

                  Почему они этого хотят? Сложный вопрос, для этого нужен контекст. Они могут боятся исламского терроризма,
                  они могут бояться восстания народных масс. Если они и есть народные массы, то демагоги могли промыть им мозги, что их безопасности что-то угрожает, хотя на самом деле всё ОК.

                  Если злоумышленники захотят — они будут использовать и 4096 бит, им всё равно уже, они и так преступники.


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


                  1. vlreshet
                    16.10.2015 15:01
                    -2

                    С последним аргументом соглашусь. Что-то похожее говорят при обсуждении легализации оружия — что сейчас человек с пистолетом но не в форме — это почти полюбом преступник, а при легализации все будут с пушками и преступникам будет куда легче.


                  1. Athari
                    16.10.2015 16:23

                    Уже самим использованием более мощной защиты они будут выдавать себя с головой.

                    Не уверен, что такое уж большое палево, учитывая массовое распространение паранойи среди гиков после откровений Сноудена.


                    1. roboq6
                      16.10.2015 16:37

                      А у них своя логика: используешь слишком сильную криптографию? Значит тебе есть что скрывать от НАС.
                      А если используешь просто так, то получишь от нас за это тумак, ибо нефиг.


    1. Nagg
      16.10.2015 21:32
      +2

      С 4096 просядет конкретно перфоманс. Гугл вон долго тянул с переходом на 2048 из-за этого.


  1. GamePad64
    15.10.2015 20:26
    +15

    ИМХО, каждый tls-сервер должен самостоятельно генерировать параметры DH. Это же так просто:

    openssl dhparam -out dhparam.pem 4096
    
    Всего одна команда, и все АНБ идут в известном направлении.


    1. Lamaster
      15.10.2015 23:15

      Вот, кстати, тоже сильно удивился этому. Какой смысл в DH, если параметры генерации ключа уже зашиты…


      1. GAS_85
        16.10.2015 13:33

        Ответ — лень.


    1. ankh1989
      16.10.2015 09:47
      +3

      Только не в неизвестном направлении. Они идут жаловаться тем кто пишет законы и те запрещают использование слов «openssl» и «dhparam» в комбинации с числами больше 512 на одной строке. Большие фирмы против закона не попрут, а значит практически весь трафик будет уязвим перед АНБ. Впрочем, судя по всему, они уже давно так сделали — см. законы об ограничении длины ключа шифрования.


  1. Ivan_83
    16.10.2015 01:44
    +8

    Желтина!
    Протокол не скомпрометирован, скомпрометированы те идиоты кто им не умеет пользоваться.

    Это в первую очередь касается https: там практически не используется эллиптическая крипто (должно быть в сертификатах) а админы нихрена не понимают и не перегенируют ничего.
    SSH: касается виндузятников, потому что в виндовых клиентах нет эллиптической крипты (кроме тератерм).

    Всех кто юзают эллиптическую крипту это не касается: см Elliptic curve Diffie–Hellman (ECDH) — там вообще нет никаких чисел, стороны обмениваются публичными ключами и всё. Эти публичные ключи умножаются на секретные ключи и обе стороны получают общий секретный ключ.
    Тоже самое примерно и в Curve25519.


    1. chaynick
      16.10.2015 11:49
      +3

      Человек читает ализара и удивляется желтизне?


    1. makkarpov
      16.10.2015 12:32
      +1

      Там есть набор стандартных кривых, которыми (и только ими) тоже пользуются все:

      openssl ecparam -list_curves
      


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


    1. bootch
      16.10.2015 13:36

      Это в первую очередь касается https: там практически не используется эллиптическая крипто (должно быть в сертификатах) а админы нихрена не понимают и не перегенируют ничего.

      Можете пояснить что и на каком этапе нужно перегенерировать? Или кинуть «правильный» мануал, с описанием всех шагов?


      1. lexore
        16.10.2015 14:35

        Вот документация: wiki.mozilla.org/Security/Server_Side_TLS
        А вот даже готовый генератор конфигов: mozilla.github.io/server-side-tls/ssl-config-generator