Различные методы эволюции ключей (терминология не устоялась, предпочитаю использовать такой перевод словосочетания «key-evolving techniques») асимметричных криптоалгоритмов позволяют защититься от компрометации секретных ключей путем периодической модификации ключевых пар. Подобная защита направлена не на предотвращение компрометации секретного ключа, а на минимизацию последствий такой компрометации: поскольку ключи периодически модифицируются, эволюционируют, данные методы позволяют ограничиться отрицательным воздействием компрометации ключа на свойство целостности или конфиденциальности сообщений, зашифрованных или подписанных только в течение определенного, относительно короткого периода, оставляя защиту сообщений других периодов ненарушенной.
Большинство протоколов с эволюцией ключей подразумевает достаточно активный обмен сообщениями между сторонами защищенного обмена данными. При этом бывают сценарии, когда возможности для интерактивного взаимодействия у сторон отсутствуют.
Далее предлагаю обсудить различные известные методы эволюции ключей (обеспечивающие различные полезные свойства криптосхем: от секретности в будущем до устойчивости к вторжениям), после чего описать возможный вариант протокола модификации ключевых пар для неинтерактивных применений.
Компрометация секретного ключа: чем опасна и как бороться
Безопасность применения любой криптографической системы обычно напрямую зависит от соблюдения конфиденциальности секретных ключей в течение всего времени использования таких систем (компрометация секретного ключа недопустима даже после окончания срока его действия, поскольку она нарушит конфиденциальность сообщений, защищенных с использованием этого ключа ранее). Такая безопасность обычно обеспечивается как различными техническими мерами, предотвращающими компрометацию ключа, так и инструктированием пользователей о необходимости держать секретные ключи в строгом соответствии с их статусом, обеспечивая отсутствие возможностей несанкционированного доступа к ключу.
Тем не менее, компрометация секретных ключей при их практическом применении происходит регулярно, в т. ч. по следующим причинам:
- хранение ключей без адекватной защиты в памяти различных устройств общего назначения, к которым возможен доступ напрямую или по сети (что становится всё более актуально при использовании мобильных телефонов и прочих беспроводных средств связи);
- использование ключей в многопользовательских средах без строгой изоляции пользовательских данных;
- активный взлом криптографических средств или используемых ими криптоалгоритмов (отметим, что успешный взлом именно криптографических алгоритмов происходит несравнимо реже, чем взлом их реализаций в различных криптосредствах);
- прямое воздействие на пользователей-владельцев секретных ключей: от методов социальной инженерии до шантажа или принуждения (как было сказано в докладе (перечень литературы приведен в конце статьи), обычно значительно легче получить секретный ключ у наивного пользователя, чем взламывать используемый криптоалгоритм).
Поскольку секретный ключ является важнейшим элементом обеспечения безопасности функционирования криптосистемы, его компрометация может привести к критическому нарушению работы такой системы (в части конкретного пользователя, допустившего компрометацию своего ключа), безопасность которой в целом может быть поставлена под сомнение после данного события. Следовательно, при разработке любой криптосистемы нельзя полагаться на обязательное сохранение конфиденциальности секретных ключей; вместо этого необходимо явным образом разрабатывать меры по восстановлению работы системы после компрометации ключа. В известной работе рекомендуется при разработке криптосистемы обеспечить следующие ее свойства:
- сделать получение секретного ключа злоумышленником настолько трудоемким и дорогостоящим, насколько это возможно;
- когда произойдет компрометация секретного ключа, ее последствия должны быть минимальными (при разработке необходимо исходить из предположения, что компрометация секретного ключа рано или поздно обязательно произойдет);
- обеспечить возможность восстановления работы системы после компрометации.
Проблема восстановления работы после компрометации секретного ключа в асимметричных криптосистемах традиционно решается путем выполнения следующих шагов:
- Отзыв сертификата соответствующего открытого ключа.
- Генерация новой ключевой пары вместо скомпрометированного секретного и отозванного открытого ключей.
- Повторная сертификация открытого ключа и распространение/публикация сертификата.
Данная последовательность восстановления имеет три ярко выраженных недостатка:
- она включает в себя относительно сложные и достаточно затратные по времени действия;
- она инициируется только после обнаружения факта компрометации секретного ключа (а ее не всегда удается обнаружить);
- она позволяет восстановить работу системы, но не дает явного ответа на вопрос, можно ли считать доверенными все подписи, сгенерированные до момента компрометации секретного ключа, с помощью которого они были вычислены.
Немного подробнее о доверии после компрометации секретного ключа
Если строго подходить к вопросу доверия при использовании электронной подписи, то после обнаружения факта компрометации секретного ключа все подписи, сгенерированные с использованием этого ключа до его компрометации, нельзя считать доверенными. Видимо, за исключением только одного случая: когда возможно доказать точное время события компрометации ключа (и это время – позже времени генерации обсуждаемых подписей) и отсутствие событий компрометации этого же ключа ранее. Согласитесь, что такое доказательство не является простым.
В связи с таким подходом, нечестный пользователь может допустить намеренную компрометацию своего секретного ключа с целью поставить под сомнение свои предыдущие подписи (т. е. отказаться от них). Это уже явное нарушение одного из базовых свойств электронной подписи – неотказуемости.
Ситуация с шифрованием может трактоваться значительно проще: если допущена компрометация секретного ключа, то конфиденциальность всех данных, которые можно с его помощью расшифровать, можно уверенно считать нарушенной.
Таким образом, выглядит весьма желательным наличие у криптосистем следующих свойств:
- отсутствие влияния факта компрометации секретного ключа на целостность и конфиденциальность сообщений, подписанных/зашифрованных в прошлом;
- простая процедура восстановления работоспособности системы;
- независимость инициирования такой процедуры от обнаружения факта компрометации секретного ключа.
Продолжение читайте в блоге Актив на Хабре