Криптографический алгоритм DersCrypt
LVEE 2016
DersCrypt — это блочный симметричный криптографический алгоритм, построенный на не использовавшихся ранее принципах. Суть работы алгоритма состоит в переводе числа из одной системы счисления в другую, перестановке “цифр” и обратном переводе в исходную систему счисления.
DersCrypt обладает следующими достоинствами:
- Нет ограничений на длину ключа;
- Криптоалгоритм предельно прост для понимания и реализации;
- Криптоалгоритм является открытым и свободным для использования.
Впервые криптоалгоритм был представлен в феврале 2004 года в виде сообщения в профильные ньюсгруппы UseNet1. Наиболее ценное обсуждение произошло в конференции fido7.ru.crypt сети FidoNet. В апреле 2005 года увидела свет первая версия DersCrypt, заметно отличавшаяся от того, что было представлено в самом начале2. Текущей является версия алгоритма 1.1.
Особенности алгоритма
Базовый алгоритм DersCrypt состоит из следующих шагов:
- Текст для шифрования рассматривается как неотрицательное число в некоторой системе счисления по основанию .
- Число переводится в другую систему счисления по основанию . Число является ключом.
- Цифры числа в системе счисления переставляются, в результате чего получается число . Перестановка задается значением ключа.
- Число переводится в исходную систему счисления .
- Число в системе счисления и является результатом шифрования.
Сам по себе базовый алгоритм DersCrypt непригоден к практическому применению в силу существования следующих эффективных способов атаки:
- Если зашифровать два числа, отличающихся только значением младшего бита, то разность зашифрованных чисел, очевидно, будет равна для некоторого .
- Существует и более эффективный способ атаки: Max Alekseyev указал на то, что имея число в системе счисления по основанию и число , полученное из произвольной перестановкой цифр, разность всегда делится на .
Таким образом, DersCrypt не должен сводиться к простой перестановке цифр в некоторой системе счисления. Решение достаточно очевидно: перед применением базового алгоритма, число превращается в некоторое число посредством приписывания к некоторого количества случайных байт слева и справа. После дешифрования приписанные байты достаточно просто отбросить, получив исходное число .
В силу того, что действительно случайные байты довольно сложно получить на практике, в DersCrypt используется предварительное шифрование числа базовым алгоритмом и извлечение из полученного числа последовательности бит нужной длины. На самом деле, для учета значения предыдущего зашифрованного блока текста, процедура формирования псевдослучайной битовой последовательности чуть более усложнена. Ознакомиться с ней можно непосредственно по коду эталонной реализации DersCrypt, которая, благодаря детальным комментариям3, определяет сам алгоритм и предназначена для практического исследования его свойств.
Реализации алгоритма
Языком эталонной реализации выбрана Java, а исходный код оформлен исходя из упрощения понимания, а не производительности и/или простоты включения во внешние проекты.Также имеются реализации на Java4 и С++5, предназначенные для практического использования. Об их сравнительной производительности можно судить по следующей таблице, в которой приведена скорость шифрования в килобайтах в секунду на 256-битном ключе для двух компьютеров разной архитектуры:
Эталонная реализация | Java-реализация | C++-реализация универсальная | C++-реализация оптимизированная | |
Pentium4 | 52.5 K/s | 74.2 K/s | 351.8 K/s | 612.7 K/s |
Athlon | 86.4 K/s | 127.2 K/s | 1149.2 K/s | 1404.6 K/s |
Как можно видеть, оптимизированная C++ реализация в 8-11 раз быстрее Java реализации, которая, в свою очередь, на 40-50 процентов быстрее эталонной. Судя по всему, неприемлемой производительностью Java реализации обязаны стандартному классу java.math.BigInteger, чей код никак нельзя признать оптимальным.
Исходный код реализаций алгоритма свободно распространяется с правом копирования, использования, модификации, продажи и распространения при условии сохранения сведений об авторе4 5.
Ссылки
2 С. Деревяго. Криптографический алгоритм DersCrypt
Abstract licensed under Creative Commons Attribution-ShareAlike 4.0 license
Back