old-esck
Архив ранних версий авторских алгоритмов шифрования семейства ESCK (автор: Д.Трунов). Оригинальные версии алгоритмов создавались в Turbo Pascal и Delphi, а также на C# или FreePascal. В данном архиве все версии адаптированы под FreePascal или переписаны на него.
Test1.pas и Test2.pas содержат простые тесты всех алгоритмов данного архива для проверки корректности шифрования и расшифровки, а также демонстрируют примеры использования этих алгоритмов.
Краткое описание шифров
CDDCD
Самый ранний алгоритм «кодирования/декодирования». Шифрование выполнялось без секретного ключа, но предполагалась секретной сама схема шифрования. Особенности: байтовый блок длиной от 1 до 128 байт, шифрование каждого байта по вычисляемой формуле с участием следующего байта в блоке (если есть) и затем перемешивание байтов в блоке по заданной схеме. Перестановки и вычисления по формуле повторялись строго 3 раза.
ESCK-0.0.1
Данная версия алгоритма не сохранилась. Предположительно, имела блок длиной до 128 или 256 байт и заданную схему перемешивания, подобную таковой в CDDCD. В этой версии появился секретный ключ, участвующий в вычислениях для каждого байта блока.
ESCK-0.1
Особенности: блок до 512 байт, генерируемый по паролю составной ключ (Key для схемы с вычислениями, Mask для дополнительного «маскирования» блока и Mixer для перемешивания байтов в блоке), который меняется перед каждым шифрованием блока.
ESCK-1, 2, 3
Особенности данных версий: блок длинной до 64 КБайт, ключи произвольного размера (также до 64 КБайт), количество повторений (циклов) шифрования блока не фиксировано и может задаваться пользователем. Версии различаются способом генерации/изменения ключей и вычислений для шифрования отдельных байтов.
ESCK-4 и P-Cry
Особенности: оставлен только один ключ Key, а массивы Mask и Mixer исключены. В частности, вместо массива Mixer перемешивание выполняется по динамически вычисляемым индексам. Разница между ESCK-4 и P-Cry в том, что в первом ключ обязательно меняется после шифрования каждого блока, в а во втором ключ вообще не меняется в процессе шифрования.
ESCK-5
Особенности:
- операции над 32-битными числами, а не отдельными байтами;
- ключ строго 256, а блок — 1..256 таких чисел;
- развитие идеи динамических индексов: для каждого числа блока вычисляются индексы чисел (ключа и блока), участвующих в его шифровании;
- шифрование включает циклические побитовые сдвиги, операции AND, OR, NOT, XOR;
- изменение ключа после каждого блока стало опциональным, добавлены другие режимы шифрования.
ESCK-6
Основные отличия от ESCK-5: операции над 64-битными числами, блок минимум из 2-х таких чисел, которые при шифровании зависят друг от друга.
ESCK-6a
Основные изменения и нововведения:
- разные величины циклических сдвигов;
- режим счётчика блоков и влияние номера блока на шифрование;
- возможность дополняющей генерации ключа (по двум и более паролям).
Примечания
Данные алгоритмы приведены для целей ознакомления. Настоятельно не рекомендуется их применять в реальных задачах из-за множества непроверенных и потенциально уязвимых свойств, а также из-за их громоздкости и низкой скорости работы. В случае интереса предлагается обратить внимание на шифры ESCK-7 и Seal.