Задать вопрос
@PiterBishop

Что необходимо понимать при реализации криптоалгоритма?

Доброго времени суток!
Постараюсь сформулировать свой вопрос как можно точнее.
Я реализовал один из алгоритмов шифрования. Сделал это для более глубокого понимания тех механизмов, которые лежат в основе этого алгоритма. Пока я собирал информацию об алгоритме, об особенностях его реализации и т.д., я часто сталкивался со мнением, что подобные эксперименты годятся лишь для образовательных целей, не более. Немогли бы вы объяснить, на чём основывается такое мнение? Чем, например, моя реализация хуже той, что представлена в каком-нибудь криптопровайдере (я говорю не о скорости работы, а о безопасности)? В общем, что стоит помнить/знать/понимать, чтобы сделать свою реализацию такой же надёжной, как и промышленные аналоги?
P.S. По образованию я специалист по защите информации (прошу не путать с ИБ).
  • Вопрос задан
  • 2412 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
cjbars
@cjbars
Как минимум почитать эту статью
Ответ написан
@throughtheether
human after all
У меня релевантного образования нет, выскажу свое мнение дилетанта.
Чем, например, моя реализация хуже той, что представлена в каком-нибудь криптопровайдере (я говорю не о скорости работы, а о безопасности)?
Тем, что существующие реализации имеют некоторую историю эксплуатации или даже прикладного криптоанализа. Поэтому авторы этих реализаций имеют внешнюю оценку своих решений. У вас такой оценки, я полагаю, нет. Будет очень грустно, когда об уязвимости вы узнаете уже после того, как при помощи эксплуатации этой уязвимости будет нанесен ущерб.
В общем, что стоит помнить/знать/понимать, чтобы сделать свою реализацию такой же надёжной, как и промышленные аналоги?
Следует иметь в виду, что одна лишь математически корректная реализация не гарантирует надежности/безопасности. Следует учитывать поведение системы в целом. Если ваше решение - некий общедоступный сервер, то имейте в виду, что третья сторона может с некоей точностью замерять ответы вашей системы на поступающие запросы и делать из этого выводы. Если ваше решение - смарт-карта, то будьте готовы к тому, что третья сторона может измерять потребление электричества в разные моменты времени и делать из этого выводы, целенаправленно изменять напряжение питания и тактовую частоту процессора, подвергать систему воздействию ионизирующего излучения с целью нарушения работы алгоритма и анализа данных, полученных в ходе наблюдения. Если вы даже всего лишь пишете простую программу на языке высокого уровня, будьте готовы к тому, что нюансы этого языка приведут к некоторым последствиям.
Вкратце, наивное математически корректное решение не защитит вас, в общем случае, от атак по времени и прочим сторонним каналам.
Вышесказанное не означает, что кто-то в общем случае вправе вам запретить самостоятельно реализовывать криптоалгоритмы, но с вашей стороны было бы разумно оценить возможные последствия.
Ответ написан
Комментировать
Стоит
1) иметь высшее математическое образование (прошу не путать с техническим),
2) знать все опубликованные на текущий момент методы криптоанализа (например, как минимум все опубликованные на eprint.iacr.org/complete ),
3) иметь время, знания и возможность проверить их все на неприменимость к Вашему шифру,
4) опубликовать шифр для широкой общественности (возможно в форме конкурса с призом).

Примерно через 5-7 лет при наличии достаточного количества публикаций от независимых криптоаналитиков к Вашему шифру будут относиться уверенно. И тогда он станет оцениваться уже не по первичному порядку величин (стойкий/нестойкий), а по вторичному :
- быстродействие на мощных ЭВМ
- быстродействие на предельно слабых ЭВМ
- распараллеливаемость
- реализуемость в аппаратном виде
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы