Я хочу проверить алгоритм шифрования на прочность. Он не должен быть сильным, он просто должен противостоять случайному взлому и, скажем, решительный хакер, который тратит 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.