The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В socat выявлен потенциальный бэкдор, позволяющий воссоздать ключи шифрования

03.02.2016 12:13

В socat, расширенном варианте утилиты netcat, выявлена проблема безопасности, ставящая под сомнение надёжность устанавливаемых защищённых соединений. В задействованной в socat реализации протокола Диффи—Хеллмана (Diffie-Hellman) в качестве параметров инициализации были заданы значения неизвестного происхождения, не относящиеся к простым числам.

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

Параметры инициализации в socat были изменены в январе 2015 года на основании патча от стороннего пользователя под именем Zhigang Wang. Предлогом внесения изменений были проблемы с работой в режиме FIPS, требующие наличия 1024-битного набора данных инициализации, в то время как в socat использовались 512-битные параметры. Не исключается, что целью данного изменения была интеграция бэкдора и параметры специально были подобраны для предоставления атакующему возможности расчёта закрытого ключа, используемого для шифрования канала связи.

  1. Главная ссылка к новости (http://arstechnica.com/securit...)
  2. OpenNews: Определён универсальный пароль для входа на межсетевые экраны Juniper ScreenOS
  3. OpenNews: Возможный сценарий успешной атаки АНБ на алгоритм Диффи-Хеллмана
  4. OpenNews: Новая атака на TLS, позволяющая откатиться к уязвимым методам шифрования
  5. OpenNews: Компрометация SSL сертификатов из-за уязвимости, обнаруженной в пакете Debian OpenSSL
  6. OpenNews: Опубликован прототип бэкдора в генераторе псевдослучайных чисел Dual_EC_DRBG, входившем в стандарт NIST
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43807-backdoor
Ключевые слова: backdoor, crypt
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:42, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    безруких упырей, хардкодящих параметры инициализации диффихельмана, надо гнать в шею ссаными тряпками
     
     
  • 2.2, Аноним (-), 12:51, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Но других то нет...
     
     
  • 3.46, GrammarNarziss (?), 22:01, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "других-то", позорище
     

  • 1.3, Annimzus (ok), 12:55, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ключевое слово "выявлен"
     
     
  • 2.4, Аноним (4), 13:18, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ключевой вопрос: "почему не выявили, когда принимали патч? там всего три правки!"
     
     
  • 3.5, Annimzus (ok), 13:27, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ключевой вопрос: а мне по чем знать ?
     
  • 3.6, . (?), 13:47, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > ключевой вопрос: "почему не выявили, когда принимали патч? там всего три правки!"

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

    Они всего лишь научились кое-как использовать стандартные библиотеки для получения работающей (не совсем, иначе патч бы не понадобился) программы, решающей актуальные _им_ задачи.
    Сделайте лучше - будут пользоваться вашей.

     
     
  • 4.22, bugiman (?), 15:47, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Читаем между строк:
    > Некорректные значения инициализации могли быть подобраны умышленно для предоставления скрытой возможности восстановления секретного ключа

    Не думайте, что умнее всех или кто-то глупее вас, просто были заинтересованные люди вот именно в такой реализации.

     
     
  • 5.30, chinarulezzz (ok), 18:34, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Не приписывайте злому умыслу то, что вполне можно объяснить глупостью.
     
     
  • 6.31, Andrey Mitrofanov (?), 18:53, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не приписывайте злому умыслу то, что вполне можно объяснить глупостью.

    Не-е-ет! Злой Умысел именно так и хотел бы, чтобы мы думали!!  ><>>>

     
     
  • 7.34, chinarulezzz (ok), 21:29, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Не приписывайте злому умыслу то, что вполне можно объяснить глупостью.
    > Не-е-ет! Злой Умысел именно так и хотел бы, чтобы мы думали!!  
    > ><>>>

    https://youtu.be/7edeOEuXdMU?t=8s

     
  • 3.44, КО (?), 11:31, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ты навскидку знаешь все 1024 битные простые числа?
     

  • 1.7, Аноним (-), 14:07, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Попридержите коней. Не все знают, но большие простые числа для нужд криптографии на самом деле "скорее всего простые" т. е. простые с большой вероятностью.
    Выбирается случайное число к которому переменяются тесты простоты
    https://en.wikipedia.org/wiki/Fermat_primality_test
    https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_te
    ни один из которых не дает 100%
    Детерминированный тест простоты(дающий 100%) для таких чисел может занимать годы.
    Вот правительственные требования Digital Signature Standard (DSS):
    http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf
     
     
  • 2.9, Аноним (-), 14:18, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Попридержите коней. Не все знают, но большие простые числа для нужд криптографии
    > на самом деле "скорее всего простые" т. е. простые с большой
    > вероятностью.
    > Выбирается случайное число к которому переменяются тесты простоты
    > https://en.wikipedia.org/wiki/Fermat_primality_test
    > https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_te
    > ни один из которых не дает 100%
    > Детерминированный тест простоты(дающий 100%) для таких чисел может занимать годы.
    > Вот правительственные требования Digital Signature Standard (DSS):
    > http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf

    случайное, у каждого своё, фиг знает простое ли, но проходящее тесты число и захардкоденное это одно и то же?

     
     
  • 3.11, Аноним (-), 14:22, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это socat, который является расширением netcat,который является расширением telnet. Это не клиент банка.  
     
     
  • 4.20, Аноним (-), 15:22, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Это socat, который является расширением netcat,который является расширением telnet. Это
    > не клиент банка.

    любая хрень, из которой можно сделать клиент банка, обязательно станет им

     
  • 2.15, Аноним (-), 14:44, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для чисел порядка 2^1024 один из лучших на сегодня алгоритмов AKS подтвердит простоту за ~ 840 лет
    Распространенный алгоритм Miller-Rabin покажет простоту подобного числа с высокой вероятностью менее чем за 0.3 секунды.
    http://maths-people.anu.edu.au/~brent/pd/comp4600_primality.pdf
    В итоге, все пользуются числами которые не гарантированно простые и иногда палка таки стреляет.
     
     
  • 3.48, Аноним (-), 16:47, 05/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > за ~ 840 лет

    И что, неужели никто не пробовал запустить проект по поиску гарантированно простых чисел по аналогии с SETI@home?

     
     
  • 4.50, mmv (?), 00:54, 19/03/2017 [^] [^^] [^^^] [ответить]  
  • +/

    Вроде как такой проект уже работает
    https://en.wikipedia.org/wiki/Great_Internet_Mersenne_Prime_Search
     
     
  • 5.51, mmv (?), 00:58, 19/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Вроде как такой проект уже работает
    > https://en.wikipedia.org/wiki/Great_Internet_Mersenne_Prime_Search

    Упс. Это не те простые числа.

     

  • 1.8, Аноним (-), 14:13, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    +       Socat did not work in FIPS mode because 1024 instead of 512 bit DH prime
    +       is required. Thanks to Zhigang Wang for reporting and sending a patch.
    Gerhard Rieger тут не причем, так ему и поверили. Хорошо хоть не Ivan Petrov выбрал, а то русский след и санкции.
     
  • 1.10, Аноним (-), 14:19, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Криптографическое ПО, все же, должны писать люди с соотв. профильным образованием. Или тут сознательная "глупость"?

    Дык, его еще и поблагодарили:

    http://repo.or.cz/socat.git/commitdiff/281d1bd6515c2f0f8984fc168fb3d3b91c20bd
    > +       Socat did not work in FIPS mode because 1024 instead of 512 bit DH prime

    +       is required. Thanks to Zhigang Wang for reporting and sending a patch.

    Простые числа? Не, не слышал. Главное - длина!

    >Thanks to Zhigang Wang for reporting and sending a patch.

     
     
  • 2.13, Аноним (-), 14:30, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Криптографическое ПО, все же, должны писать люди с соотв. профильным образованием. Или
    > тут сознательная "глупость"?

    Как, например, OpenSSL?

     
  • 2.35, Аноним (-), 21:58, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    обязателно с лицензиями фсб, фстэк, с должностью в профильном фгуп нии и подпиской о невыезде на 10 лет. Только этой "разработкой" никто в своём уме добровольно пользоваться не будет
     

  • 1.16, Нанобот (ok), 14:57, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >целью данного изменения была интеграция бэкдора

    а теперь, дорогие наши параноики, на секунду вернёмся в реальность и попытаемся дружно ответить на вопрос: есть ли практический смысл во внедрении бекдора в утилиту, которую не применяют для передачи важных данных? (ну может разве что в качестве каких-то временных костылей, см.ССЗБ)

     
     
  • 2.26, Аноним (-), 16:27, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Внедряют везде где могут (где используется шифрование при передаче данных), потому что работают по плану - сказали вставлять, они и вставляют. Кодер кодит, зарплата идет. Уверен, что в драйвере какого-нибудь инфракрасного порта у mediatek-ов и allwinner-ов можно найти бэкдор, хотя в реальности оно может использоваться разве что в случае глобальной войны какой-нибудь.
     
     
  • 3.47, chinarulezzz (ok), 22:12, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Внедряют везде где могут ...  потому что работают
    >Уверен, что в ... какого-нибудь ...  можно найти ... хотя ...

    Походу изобрели искусственный интеллект.

     

  • 1.19, L29Ah (?), 15:11, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно зачем socat велосипедная реализация диффи-хеллмана.
     
     
  • 2.23, pavlinux (ok), 15:47, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Интересно зачем socat велосипедная реализация диффи-хеллмана.

    Интересно, зачем тебе это знать
    1. если ты даже не понял о чем тема?
    2. если ты настолько туп, что не можешь посмотреть код?

    Там нет реализации Диффи-Хеллмана.

     
     
  • 3.25, Андрей (??), 15:59, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    См. ниже. (сорри, не туда ответил)
     

  • 1.24, Андрей (??), 15:58, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Там нет реализации Диффи-Хеллмана.

    Тогда нужно править новость:
    > В задействованной в socat реализации протокола Диффи—Хеллмана (Diffie-Hellman)

     
  • 1.27, IZh. (?), 16:44, 03/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ну, а реально, зачем в socat? У них с его помощью террористы общаются, устанавливая чат типа консольного talk'а? Или это против кривого ПО, которому лень линковаться с OpenSSL, и они по-старинке делают system("socat ...")?
    (Да, я такие варианты встречал.)
     
     
  • 2.29, pavlinux (ok), 17:49, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вот вы .... чебурашки.

    dh_param - массив, он пихается в функцию из OpenSSL - BN_bin2bn()
    http://repo.or.cz/socat.git/blob/HEAD:/xio-openssl.c#l948
    с ним и линкуется. Всё.

    Они могли заюзать DH_generate_parameters(), если бы не

    "DH_generate_parameters_ex() and DH_generate_parameters() may run for [b]several hours[/b] before finding a suitable prime."

    А так вот, кушайте - параноидальный netcat.  




    diff -ur xio-openssl.c xio-openssl.c
    --- xio-openssl.c       2016-01-29 13:31:22.000000000 +0300
    +++ xio-openssl.c       2016-02-03 18:10:01.409103640 +0300
    @@ -1078,8 +1055,9 @@
             }
             Error("DH_new() failed");
           } else {
    -        dh->p = BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL);
    -        dh->g = BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL);
    +
    +        DH_generate_parameters(2048, 2, NULL, NULL);
    +
             if ((dh->p == NULL) || (dh->g == NULL)) {
                while (err = ERR_get_error()) {
                   Warn1("BN_bin2bn(): %s",


     
     
  • 3.33, Аноним (-), 19:29, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А где "dh = "?
     
     
  • 4.39, pavlinux (ok), 00:34, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > А где "dh = "?

    Это был только прогрев ГПСЧ :)

     
  • 3.37, anonymous (??), 23:29, 03/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот именно так и появляются бэкдоры.
     
     
  • 4.38, pavlinux (ok), 00:30, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот именно так и появляются бэкдоры.

    Бехдора не случится, там дальше по коду оно отвалится: if ((dh->p == NULL) || (dh->g == NULL))
    бага исправиться при первом же запуске.  

     

  • 1.40, pavlinux (ok), 01:39, 04/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если в том "дырявом" массиве заменить последнюю циферку с 0x33 на 0x31, то будет фсе пестато. :)

    $ cat dhcheck.c



    #include <stdio.h>
    #include <openssl/dh.h>
    #include <openssl/bn.h>

    #define COUNT 500

    static unsigned char dh512_p[] = {
            0xDA, 0x58, 0x3C, 0x16, 0xD9, 0x85, 0x22, 0x89, 0xD0, 0xE4, 0xAF, 0x75,
            0x6F, 0x4C, 0xCA, 0x92, 0xDD, 0x4B, 0xE5, 0x33, 0xB8, 0x04, 0xFB, 0x0F,
            0xED, 0x94, 0xEF, 0x9C, 0x8A, 0x44, 0x03, 0xED, 0x57, 0x46, 0x50, 0xD3,
            0x69, 0x99, 0xDB, 0x29, 0xD7, 0x76, 0x27, 0x6B, 0xA2, 0xD3, 0xD4, 0x12,
            0xE2, 0x18, 0xF4, 0xDD, 0x1E, 0x08, 0x4C, 0xF6, 0xD8, 0x00, 0x3E, 0x7C,
            0x47, 0x74, 0xE8, 0x31, /* было 0x33 */
    };

    int main(void)
    {
            BIGNUM *x = BN_new();
            int ret;

            x = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
            ret = BN_is_prime(x, COUNT, NULL, NULL, NULL);

            if ( 0 == BN_is_prime(x, COUNT, NULL, NULL, NULL))
                    printf("PRIME\n");

            BN_free(x);
    return 0;
    }



    $ gcc dhcheck.c -o dhcheck -lcrypto
    $ ./dhcheck
    PRIME

     
  • 1.42, CHERTS (??), 07:43, 04/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Где гарантия что эти http://repo.or.cz/socat.git/commitdiff/eab3c89f2dc0df0d9638941891e8ab233dfb06 простые числа не есть подстановка, почему бы их не генерировать каждый раз заново для пущей надежности?
     
     
  • 2.45, pavlinux (ok), 14:32, 04/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Где гарантия что эти простые числа не есть подстановка

    Я проверил, все Простые. :)

     

  • 1.49, pavlinux (ok), 23:27, 05/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то стремают меня афторы Тот дырявый массив почти проходит тест DIEHARD,... большой текст свёрнут, показать
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру