Команда GnuPG Project опубликовала сообщение о том, что в популярной библиотеке Libgcrypt содержится критическая уязвимость. Ошибка была обнаружена экспертами Технологического института немецкого города Карлсруэ Феликсом Дёрре (Felix Dorre) и Владимиром Клебановым.
Уязвимость содержится в генераторе случайных чисел Libgcrypt — она позволяет атакующему, который получил 4640 битов из генератора легко предсказать следующие 160 бит его вывода. Это открывает возможность для взлома ключей шифрования. Ошибка присутствует в Libgcrypt и GnuPG версий, выпущенных до 17 августа 2016 года, для всех платформ. Как указано в сообщении GnuPG Project, этот баг существует с 1998 года.
В сообщении также говорится о том, что первоначальный анализ позволил подтвердить криптостойкость ранее созданных RSA-ключей. Что касается ключей Elgamal и DSA, то «кажется маловероятным, что приватный ключ можно предсказать на основе публичной информации». Авторы сообщения призывают пользователей сохранять спокойствие и не торопиться отзывать свои ключи.
Как защититься
В том случае, если пользователь работает с версией GnuPG или Libgcrypt от определенного вендора, ему следует дождаться соответствующего обновления безопасности, выпущенного компанией.
Если же используется GnuPG-2 версий 2.0.x или 2.1.x, то следует обновить Libgcrypt — разработчики уже выпустили исправленные версии библиотеки 1.7.3, 1.6.6 и 1.5.6. При использовании GnuPG-1 версии 1.4.x необходимо обновиться до версии GnuPG 1.4.21.
Для проверки того, что загруженная версия является оригинальной и не модифицирована, необходимо следовать инструкциям со специальной страницы.
Вкратце, сделать это можно двумя способами. Первый из них заключается в проверке подписи OpenPGP. К примеру, для проверки подписи файла libgcrypt-1.7.4.tar.bz2 можно использовать такую команду, которая проверяет соответствие подписи исходному файлу:
gpg --verify libgcrypt-1.7.4.tar.bz2.sig libgcrypt-1.7.4.tar.bz2
Если проверка пройдена успешна, появится соответствующее сообщение.
В тех случаях, когда использование GnuPG невозможно, следует проверить контрольную сумму SHA-1:
sha1sum libgcrypt-1.7.3.tar.bz2
Вывод должен совпать с первой строкой списка:
5a034291e7248592605db448481478e6c963aa9c libgcrypt-1.7.3.tar.bz2 a05cba7037e6cbc68dcf3ea5b45f703b79fa234f libgcrypt-1.7.3.tar.gz ad79fd0b6963e1049612aa5d98e1a0b8eb775701 libgcrypt-1.6.6.tar.bz2 d11b6ca1d55eb12f5d3091a5169d874806007130 libgcrypt-1.6.6.tar.gz 62eade7cd3545efee1a87512d54f69151abbae47 libgcrypt-1.5.6.tar.bz2 8d3f55cce21e17f21d0c991cccf6bf52ec244353 libgcrypt-1.5.6.tar.gz e3bdb585026f752ae91360f45c28e76e4a15d338 gnupg-1.4.21.tar.bz2 97bfba0e4db7cb1a3458f73240481767cb7fe90e gnupg-1.4.21.tar.gz
Кроме того, недавно стало известно о том, что неизвестным удалось подделать PGP-ключи создателя Linux Линуса Торвальдса и ключевых разработчиков TOR. Для этого они использовали «клоны» коротких идентификаторов ключей PGP — как известно такие short-ID разных ключей могут совпадать.
Поделиться с друзьями
Комментарии (5)
mxms
18.08.2016 18:19+3Ошибка была обнаружена экспертами Технологического института немецкого города Карлсруэ Феликс Дёрре (Felix Dorre) и Владимир Клебанов
Обнаружена (кем? чем?) — Феликсом Дёрре и Владимиром Клебановым.
grossws
18.08.2016 20:54+1Кроме того, недавно стало известно о том, что неизвестным удалось подделать PGP-ключи создателя Linux Линуса Торвальдса и ключевых разработчиков TOR. Для этого они использовали «клоны» коротких идентификаторов ключей PGP — как известно такие short-ID разных ключей могут совпадать.
Про проблему известно 5 лет: http://www.asheesh.org/note/debian/short-key-ids-are-bad-news.html. И прекрасная статья на эту же тему http://gwolf.org/node/4070.
Другое дело, что большинство до сих пор не чешется. И использует короткие fpr.
vilgeforce
А счастье было так близко…
ID ключа, если я ничего не путаю — единственный DWORD, который меняется на раз…
grossws
PGP/GPG key ID — это кусок fingerprint'а ключа. Short ID — последние 4 байта в hex, long ID — последние 8 байт. Для автоматизированного получения ключей необходимо использовать полные fingerprint'ы.
kay
Если используются sub keys, то получить из полный fingerprint можно командой:
gpg --fingerprint --fingerprint