Как мне проверить качество алгоритма шифрования? - PullRequest
9 голосов
/ 04 мая 2009

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

Какие тесты мне следует делать? До сих пор я пробовал это:

  • Генерация случайного А.
  • Переверните один случайный бит A, чтобы получить B.
  • Убедитесь, что число 1 в шифровании (a) XOR encrypt (b) соответствует распределению Пуассона (за исключением того, что XOR никогда не выдает 0).

Любые другие предлагаемые тесты?

О шифровании

Это стандартный шифр Fiestel , разработанный для работы в 3ns и полностью комбинационный, без регистров. (Это на несколько порядков быстрее, чем DES / AES / и т. Д.) Я делаю столько раундов, сколько могу в 3ns, что составляет всего около 6.

Сначала я переставлю порядок входных битов.

Затем для каждого бита в левой половине входа I XOR с ним выход функции F. F имеет 3-битный вход и 1-битный выход. 3 входных бита для F выбираются из правой половины входа. Выход F представляет собой перестановку {00001111}, поэтому F сбалансирован. 3 входных бита для F выбираются из битов в правой половине, так что каждый бит в правой половине используется одинаковое количество раз (или максимально близко к этому). Каждое "F" генерируется случайным образом и независимо один раз.

Далее я меняю местами левую и правую половинки результата и делаю это снова. Снова новая буква «F» для каждого бита с новым входом.

Все это один раунд. Я делаю это 6 раз, каждый раунд со случайными, независимо генерируемыми F-функциями. 6 раундов занимают около 3 нс. Я также попытался изменить количество раундов и количество входов на F.

Ответы [ 7 ]

21 голосов
/ 07 мая 2009

Загрузите в Интернете инструкции по изготовлению грязного ядерного устройства низкого качества, заархивируйте его вместе с картой улиц Вашингтона, округ Колумбия, затем зашифруйте и отправьте по адресу obama@whitehouse.gov.

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

Имейте в виду, что это, вероятно, будет одноразовый эксперимент, по крайней мере, для тех нескольких лет, которые вы проводите в Gitmo: -)

11 голосов
/ 04 мая 2009

Разместите его в Интернете и посмотрите, сможет ли кто-нибудь его сломать (что NIST / NSA сделал с AES, SHA-3 и т.

Я бы посмотрел на все распространенные атаки.

Определите, насколько велико пространство клавиш, которое кто-то должен перехватить, чтобы найти открытый текст, он меньше всех возможных ключей? Два ключа дают один и тот же зашифрованный текст?

Можете ли вы выбрать открытый текст, который откроет ключ в зашифрованном тексте?

11 голосов
/ 04 мая 2009

Я подозреваю, что обычным ответом будет «Если вам нужно задать этот вопрос, лучшее, на что вы можете надеяться - это шифрование на уровне младших и младших».


Но если необходимо, вы можете начать с применения обычных тестов случайности к выводу ( Как проверить случайные числа? ) в байтах, словах, длинных словах и т. Д.

Если вы не можете пройти мимо, вы знаете, что он слаб без какой-либо дальнейшей работы. Обратите внимание, что прохождение этого не гарантирует его прочность.

8 голосов
/ 04 мая 2009

Если вам нужно спросить - это довольно хороший признак того, что вы не должны писать свои собственные.

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

Даже если ваш алгоритм генерирует выходные данные, которые выглядят случайными, это НЕ означает, что они обязательно безопасны.

6 голосов
/ 04 мая 2009

Я почти гарантирую, что у вас нет веских причин. Однако, если вы это сделаете, отправьте его на рассмотрение ваших коллег и NIST, когда AES придет на замену. Устойчивое обследование людьми, которые действительно знают, что они делают, - единственный способ узнать.

4 голосов
/ 04 мая 2009

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

1 голос
/ 08 мая 2009

Следуя совету не писать свой собственный. Это не значит, что вы должны использовать огромную сложную библиотеку ssl. Посмотрите на что-то вроде TEA (и его производных), они могут быть закодированы в одной функции в дюжине строк.

...