Клептография

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Клептография (англ. Kleptography) — раздел криптовирологии, который исследует безопасные и скрытые коммуникации через криптосистемы и криптографические протоколы и асимметричные бэкдоры в криптографических алгоритмах (генерации ключей, цифровой подписи, обмене ключами, генераторах псевдослучайных чисел, алгоритмах шифрования) с целью совершения клептографической атаки[1]. Термин был введён Адамом Янгом и Моти Юнгом[англ.] на конференции Advances in Cryptology—Crypto '96[2]

Клептография является естественным продолжением теории подсознательных каналов[англ.][3][4][5], которая была впервые применена Гусом Симмонсом[англ.] во время работы в Национальной Лаборатории Сандиа[англ.][1].

Клептографические атаки[править | править код]

Определение[править | править код]

Клептографическая атака использует асимметричную криптографию для реализации криптографического бэкдора[6]. Например, одной из таких атак может быть искусное изменение того, как криптосистема генерирует ключевую пару, чтобы закрытый ключ мог быть получен из открытого ключа с использованием закрытого ключа злоумышленника. В хорошо продуманном нападении выходы зараженной криптосистемы будут вычислительно неотличимы[англ.] от выходов неинфицированной[7]. Если зараженная криптосистема представляет собой реализацию черного ящика, такую как модуль безопасности оборудования[англ.], смарт-карта или доверенный платформенный модуль[англ.], успешная атака может остаться незамеченной[8].

Обратной разработкой можно обнаружить вставленный злоумышленником бэкдор и, когда он является симметричным, даже воспользоваться им самому[6]. Однако, по определению, клептографический бэкдор асимметричен, и реверс-инженер не сможет его использовать. Клептографическая атака (асимметричный бэкдор) требует наличия закрытого ключа, известного только для злоумышленника, для использования бэкдора. В этом случае, даже если реверс-инженер был хорошо профинансирован и получил полное знание бэкдора, для него было бы бесполезно извлекать открытый текст без секретного ключа злоумышленника[6].

Реализация[править | править код]

Клептографические атаки могут быть построены как криптотроян, который заражает криптосистему и открывает бэкдор для злоумышленника, или могут быть реализованы производителем криптосистемы. Атака не обязательно должна раскрывать весь вывод криптосистемы; более сложная техника атаки заключается в чередовании между получением неинфицированных выходных данных и небезопасных данных при наличии бэкдора[1].

Клептографические атаки были разработаны для генерации ключей RSA, обмена ключами Диффи-Хеллмана, алгоритма цифровой подписи и других криптографических алгоритмов и протоколов. SSL, SSH и IPsec уязвимы для клептографических атак[9]. В каждом случае злоумышленник может скомпрометировать конкретный криптографический алгоритм или протокол. Он проверяет информацию, в которую закодирован бэкдор (например, открытый ключ, цифровая подпись, сообщения обмена ключами и т. д.), а затем использует этот асимметричный бэкдор, применив свой секретный ключ (обычно это закрытый ключ)[1].

Ари Джуэлс и Хосе Гуахардо[10] предложили метод (KEGVER), через который третье лицо может проверить генерацию ключей RSA. Он разработан как форма распространения распределенного ключа, в которой секретный ключ известен только самому чёрному ящику. Это гарантирует, что процесс генерации ключей не был изменён и что закрытый ключ не может быть воспроизведен с помощью клептографической атаки[10].

Примеры[править | править код]

Четыре практических примера клептографических атак (включая упрощенную атаку SETUP против RSA) можно найти в JCrypTool 1.0, независимую от платформы версию проекта CrypTool с открытым исходным кодом[11]. В JCrypTool также реализована демонстрация предотвращения клептографических атак с помощью метода KEGVER[12].

Клептографический бэкдор используется в криптографически стойком генераторе псевдослучайных чисел Dual_EC_DRBG из NIST SP 800-90A. Dual_EC_DRBG применяет эллиптическую криптографию, и, как считается, NSA владеет закрытым ключом, который вместе с ошибками смещения в Dual_EC_DRBG позволяет NSA расшифровывать SSL-трафик между компьютерами, используя, например, Dual_EC_DRBG[13].

Защита от клептографических атак[править | править код]

Существует общие рекомендации по защите от клептографических атак, такие как проведение комплексного анализа структуры криптосистемы с привлечением специалистов в области криптографии и композиция (каскадирование) криптопреобразований, имеющих происхождение из различных источников[14]. Использование коммерческих криптографических средств, как аппаратных, так и программных приводит к тому, что рядовой пользователь или даже фирма среднего размера не в состоянии удостовериться в «чистоте» используемых технологий. Программы, как правило, стараются максимально защитить от дизассемблирования, а анализ внутренней структуры аппаратных решений сам по себе весьма трудоемок и дорог, даже если производитель не применяет специальных защитных мер[14].

Примечания[править | править код]

  1. 1 2 3 4 A. Young, M. Yung, 2004, с. 211—264.
  2. A. Young, M. Yung, 1996, с. 89—103.
  3. Simmons, 1984, с. 51—67.
  4. Simmons, 1985, с. 364—378.
  5. Simmons, 1993, с. 218—232.
  6. 1 2 3 Esslinger, 2013, с. 1—2.
  7. Young, Adam Cryptovirology FAQ. Cryptovirology.com (2006). Дата обращения: 12 декабря 2018. Архивировано 9 мая 2017 года.
  8. Easttom, 2018, с. 1664—1669.
  9. F. Zagórski, M. Kutyłowski, 2006, с. 496—499.
  10. 1 2 A. Juels, J. Guajardo, 2002, с. 13—19.
  11. Esslinger, Bernhard Die dunkle Seite der Kryptografie — Kleptografie bei Black-Box-Implementierungen. archive.org (2010). Архивировано из оригинала 21 июля 2011 года.
  12. JCrypTool 1.0. cryptool.org. Дата обращения: 15 декабря 2018. Архивировано 15 ноября 2018 года.
  13. Zetter, Kim Заявление RSA Security о наличии бэкдора в Dual_EC_DRBG. wired.com (2013). Дата обращения: 18 декабря 2018. Архивировано 31 октября 2018 года.
  14. 1 2 Иванов, 2011, с. 68—69.

Литература[править | править код]

Ссылки[править | править код]