Как отделаться «малой кровью» при компрометации секретных ключей

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

Как отделаться «малой кровью» при компрометации секретных ключей

Как отделаться «малой кровью» при компрометации секретных ключей

Различные методы эволюции ключей (терминология не устоялась, предпочитаю использовать такой перевод словосочетания «key-evolving techniques») асимметричных криптоалгоритмов позволяют защититься от компрометации секретных ключей путем периодической модификации ключевых пар. Подобная защита направлена не на предотвращение компрометации секретного ключа, а на минимизацию последствий такой компрометации: поскольку ключи периодически модифицируются, эволюционируют, данные методы позволяют ограничиться отрицательным воздействием компрометации ключа на свойство целостности или конфиденциальности сообщений, зашифрованных или подписанных только в течение определенного, относительно короткого периода, оставляя защиту сообщений других периодов ненарушенной.

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

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

Компрометация секретного ключа: чем опасна и как бороться

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

Тем не менее, компрометация секретных ключей при их практическом применении происходит регулярно, в т. ч. по следующим причинам:

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

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

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

Проблема восстановления работы после компрометации секретного ключа в асимметричных криптосистемах традиционно решается путем выполнения следующих шагов:

  1. Отзыв сертификата соответствующего открытого ключа.
  2. Генерация новой ключевой пары вместо скомпрометированного секретного и отозванного открытого ключей.
  3. Повторная сертификация открытого ключа и распространение/публикация сертификата.

Данная последовательность восстановления имеет три ярко выраженных недостатка:

  • она включает в себя относительно сложные и достаточно затратные по времени действия;
  • она инициируется только после обнаружения факта компрометации секретного ключа (а ее не всегда удается обнаружить);
  • она позволяет восстановить работу системы, но не дает явного ответа на вопрос, можно ли считать доверенными все подписи, сгенерированные до момента компрометации секретного ключа, с помощью которого они были вычислены.

Немного подробнее о доверии после компрометации секретного ключа

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

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

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

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

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

Продолжение читайте в блоге Актив на Хабре