Dark's «Zarya» project for TotalCommader

«Zarya» project TC - Simple and powerful TC-based encryptor wcx-plugin.
It can encrypt any file with most advanced encryption algorithms, such as:
RUSSIAN GOST 28147-89, Cast128, Cast256, Blowfish, IDEA, Mars, Misty 1, RC2, RC4, RC5, RC6, FROG, Rijndael, SAFER, SAFER-K40, SAFER-SK40,SAFER-K64, SAFER-SK64, SAFER-K128, SAFER-SK128, TEA, TEAN, Skipjack, SCOP, Q128, 3Way, Twofish, Shark, Square, Single DES, Double DES, Triple DES, Double DES16, Triple DES16, TripleDES24, DESX, NewDES, Diamond II, Diamond II Lite, SapphireII.

Also there are algoritms with fixed key size (hashed from user key by SHA, RipeMD, Whirlpool, MD6, Skein etc.):


Ice (64 bit), Ice 2 (128 bit), Serpent (256 bit), Gost (256 bit), AES (256 bit), Mars (512 bit), Blowfish (384 bit), PC1 (128 bit, MD5 hashed key),  XXTEA (128 bit, MD5 hashed key, ECB), XXTEA-x (128 bit, RipeMD128 hashed key, CBC), Hurricane (128 bit, by Roman Ganin, 2005, MD5 hashed key), LOKI97 (256 bit), Camellia (256 bit, ECB, Haval), Camellia-X (256 bit, CBC, Haval), Iraqi (160 bit), Bassomatic (512 bit key, 2048 bit block, 8-16 rounds, 16 tables, CFB), Bassomatic-89 (512 bit, CFB), Bassomatic-89 (2048 bit, CFB), Khazad (128 bit, CBC), Noekeon Indirect (128 bit, CBC), Caracachs (128 bit, CBC), FealNx (128 bit, CBC), Lucifer (128 bit, CBC, Enchanced), Redoc3 (256 bit, CBC), BBC (96 bit, 256K block), EnRUPT (512 bit, CBC, Skein hash), EnRUPT-W (512 bit, CBC, Whirlpool), EnRUPT-md6 (512 bit, CBC, MD6), Mir (128 bit), Crypton (256 bit, CBC), Decorrelated Fast Cipher - DFC (256 bit, CBC), Hasty Pudding Cipher - HPC (256 bit, CBC), Magenta (256 bit, CBC), E2 (256 bit, CBC), Deal (256 bit), Frog (256 bit), RC6-256 (256 bit, AES source), MBC2 (128 bit, CBC), Modular Multiplication based Block cipher - MMB (128 bit, CBC), MMB2 (128 bit, CBC), Safer+256 (256 bit, CBC, AES source), MDC (512 bit, CFB), Anubis - Rijndael variant  (256 bit, CBC), Anubis-tweaked (256 bit, CBC), Mars 256 (256 bit, CBC), Misty128 (128 bit, CBC), NewDes120 (120 bit, CBC), Twofish-256 (256 bit, CBC), Skip32 (128 bit, CBC), Square128 (128 bit, CFB, vers.2.7), NSEA (256 bit, CFB), KolchCrypt III (512 bit, 512 bit block, CBC), Aria (256 bit, CBC), Borland (48 bit), Mercy (128 bit, CBC), Raiden (256 bit, CBC), MacGuffin (128 bit, CBC), VigerePlus TEAII (512 bit, CBC), REDOC II (160 bit, CBC), Khufu (512 bit, CBC), Khufu-w (512 bit, CBC, Whirlpool), Keeloq (64 bit), IDEA-NXT (256 bit, CBC), NUSH (256 bit, CBC, GNUPG source), Wicker98 (128 bit, CBC), RTEA (256 bit, CBC), SHA1Crypt (512 bit, CBC), MD5Crypt (512 bit, CBC), MD4Crypt (512 bit, CBC), Serpent (256 bit, CBC), Tnepres (256 bit, CBC), XTEA-tw (128 bit, CBC, tweaked version), XXTEA-tw (128 bit, CBC, tweaked version),XXTEA-tw30 (128 bit, CBC, tweaked version, 960 bit block), SHACAL (512 bit, CBC, SHA512), SHACAL (512 bit, CBC, MD6), DES-X (64x2 bit, CBC), RC2-1024 (1024 bit, CBC, Skein hash), IDEA128 (128 bit, CBC, Skein hash), Kasumi (128 bit, Skein hash), Rijndael-256 (256 bit block, 256 bit key, CBC), Anubis320 (320 bit, CBC), Blowfish448 (448 bit, CBC), DES-EDE (168 bit, CBC), GOSTcb (256 bit, CB of RF SBOX, CBC), GOST3cb (768 bit, CB of RF SBOX, CBC, EDE3 design), Threefish (1024 bit key, 128 bit tweak, 1024 bit block, 80 rounds), CAST-128 (128 bit), CAST-256 (256 bit), Rijndael-128 (256 bit key, CBC), KASUMI-b (128 bit, CBC), CIPHERUNICORN-E (128 bit, CBC), Diamond2 (2048 bit, 16 bytes block, 12 rounds, CBC), SEED128 (128 bit, CBC), TC18 (64 bit, CBC), SHARK (128 bit, CBC), SHARK-E (128 bit, CBC), Skipjack80 (80 bit, CBC), SPEED (256 bit key, 128 bit block, 64 rounds), SAFER++ (256 bit key, 128 bit block, CBC), CS-CIPHER (128 bit, CBC), SAFER-SK128 (128 bit, CBC), BJ256 (Bob Jenkins 256 bit block cipher, 512 bit key, CBC), R3DES (3DESEDE, 192 bit, CBC), Raiden32 (128 bit, 32 rounds, CBC), Raiden256 (256 bit, 16 rounds, CBC), Raiden2 (256 bit, 24 rounds, CBC), XTEA-3 (256 bit, 128 bit block, CBC), MULTISWAP (384 bit, CBC), PES (128 bit, CBC), TWOPES (256 bit, CBC, 16 rounds), Raiden-512 (512 bit, CBC, 32 rounds), NEWTEA (128 bit, 128 bit block, CBC), AES-G (256 bit, CBC, Gladman's ASM code), Rainbow (256 bit, CBC), NOEKEON (128 bit, CBC), RC5-32/16/64 (512 bit, CBC), RC6-512 (512 bit, CBC), Threefish-512 (512 bit key, 512 bit block), Cartman-2P (384 bit, CBC), Chaos (512 bit, CBC), LOKI91 (512 bit, CBC), XTEA1 (128 bit, CBC), Q128e (128 bit, CBC), Newdes96 (128 bit, CBC), Mars-1248 (1248 bit, CBC), FNAM2 (512 bit, CBC), C2 (64 bit, CBC), Sinople (128 bit, CBC), Phantom (256 bit, CBC), Paranoia (512 bit key, CBC), Pikachu (128 bit, CBC), SC6B (320 bit, CBC), Letsief (512 bit, CBC), Lja1 (2048 bit key, 128 bit block, 16 cycles), Clefia (256 bit, CBC). **

** It's better to use this ciphers, version III and above uses advanced IV generation engine and safe key transormation for this ones.


Support for many stream ciphers:


Rabbit (128 bit), HC-256 (256 bit), Sosemanuk (256 bit), CryptMT3 (512 bit),
Dragon (256 bit), Lex2 (128 bit), NLS2 (128 bit), Yamb (256 bit), Hermes (128 bit),
FFCSR (128 bit), Pomaranch (128 bit), Mickey (128 bit), Vest32-Pro (256 bit), WG2 (128 bit),
ZKCrypt3 (160 bit), Dicing (256 bit), Py6 (256 bit), Grain (128 bit), Achterbahn (128 bit), Moustique (96 bit), TPypy (512 bit), TPy6 (512 bit), Py (512 bit), Pypy (512 bit), TPy (512 bit), Fubuki (512 bit), SSS (128 bit), Pike (512 bit, CBC), Seal (128 bit, CBC), Trivium (80 bit), Decim (128 bit), Edon80 (80 bit), Sfinks (80 bit), Konton (512 bit, CBC), QCypher (512 bit, CBC), SCOP-384 (384 bit, CBC), Sober-128, QUALCOMM Incorporated (128 bit), Shannon (256 bit), Leviathan (128 bit, CBC), A5 (64 bit, CBC), Panama (256 bit), WAKE (256 bit), RC4-drop[65536] (1024 bit), CS2-128 (128 bit), Lili (128 bit), Lili2 (128 bit), Snow2 (256 bit), SEAL2 (160 bit), SN3 (6144 bit), PolarBear (128 bit), VMPC (512 bit), Chacha (256 bit), Turing (256 bit).


Supports assymetric key pair encryption using RSA method (slow RSA-only and fast RSA-AES, RSA-Entrupt, etc. mode)

Encryption can be done with any of 5 modes (CBC, CTS, etc.) 4 modes with 3Way and 4 modes with special algorimts with fixed key size.

Supports fixed key file mode for encryption and decryption (optional)

Includes integrated key file generator (supports any key length).

Plugin works with Dark's encrypted XDC files.


New! Use integrated Crypto-safe password generator (right-click on the cd button in main window)

«Zarya» project GUI - shell for «Zarya» project engine.

File encryption software with ability to encrypt and secure delete files.

Public key encryption is supported, strong compression included. 

Software supports more then 80 strong symmetric algorithms and 128 - 2048 bit public key RSA encryption.

Stego container support:

- TXT
- BMP
- TIFF
- PNG
- JPEG2000
- WAVE

--------------------------------------
Alexander Myasnikov , DarkSoftware ---
--------------------------------------

Web: http://www.darksoftware.narod.ru

E-mail: alexanderwdark@ya.ru

Made in Russia, Kolchugino city


---------------------------------------------------------------------------------

P.S. Bug with Tar.xdc packing is fixed in Total Commander 7.03



Проект «Заря»  - Плагин для Total Commader, используемый для работы с авторским нестандартным форматом Dark's XDC, позволяющим шифровать любые файлы в TotalCommander одним из 50 (!) мощнейших алгоритмов шифрования используя 5 различных режимов.


Проект «Заря» - бесплатный архиваторный плагин для TotalCommander. Позволяет более чем удобно производить шифрование файлов, используя Total Commander. Работа с зашифроваными файлами производиться по аналогии с архивацией / деархивацией.

Плагин позволяет производить зашифровку / расшифровку любым из 40 доступных алгоритмов шифрования: ГОСТ 28147-89, Cast128, Cast256, Blowfish, IDEA, Mars, Misty 1, RC2, RC4, RC5, RC6, FROG, Rijndael, SAFER, SAFER-K40, SAFER-SK40,SAFER-K64, SAFER-SK64, SAFER-K128, SAFER-SK128, TEA, TEAN, Skipjack, SCOP, Q128, 3Way, Twofish, Shark, Square, Single DES, Double DES, Triple DES, Double DES16, Triple DES16, TripleDES24, DESX, NewDES, Diamond II, Diamond II Lite, SapphireII.


Поддерживает ассиметричное шифрование с использованием пары публичного и секретного ключа (медленный режим чистого RSA и быстрый комбинированный RSA-AES и др.)

Дополнительно доступны алгоритмы (фиксированный режим ключа на основе хеширования):

Ice, Thin Ice (64 бит), Ice 2 (128 бит), Serpent (256 бит), Gost (256 бит), AES (256 бит), Mars (512 бит), Blowfish (384 бит), PC1 (128 бит, хешированный MD5 ключ), XXTEA (128 бит, хешированный MD5 ключ, блочное шифрование ECB), XXTEA-x (128 бит, хешированный RipeMD128 ключ, блочное шифрование CBC), Hurricane (128 бит, Roman Ganin, 2005, MD5 ключ), LOKI97 (256 бит, Haval), Camellia (256 бит, ECB, Haval), Camellia-X (256 бит, CBC, Haval), Iraqi (160 бит), Bass-O-Matic (512 битный ключ, 2048-битный блок, 16 таблиц, 8-16 раундов, CFB), Bass-O-Matic (512 битный ключ, CFB), Bass-O-Matic (2048 битный ключ, CFB), Khazad (128 бит, CBC), Noekeon Indirect (128 бит, CBC), Caracachs (128 бит, CBC), FealNx (128 бит, CBC), Lucifer (128 бит, CBC, Enchanced), Redoc3 (256 бит, CBC), BBC (96 бит, 256K блок), EnRUPT (512 бит, CBC, Skein хэш), EnRUPT-w (512 бит, CBC, Whirlpool), EnRUPT-md6 (512 бит, CBC, MD6),  Mir (128 бит), Crypton (256 бит, CBC), Decorrelated Fast Cipher - DFC (256 бит, CBC), Hasty Pudding Cipher  - HPC (256 бит, CBC), Magenta (256 бит, CBC), E2 (256 бит, CBC), Deal (256 бит), Frog (256 бит), RC6-256 (256 бит, на основе заявки AES), MBC2 (128 бит), Modular Multiplication based Block cipher - MMB (128 bit, CBC),  MMB2 (128 bit, CBC),  Safer+256 (256 bit, CBC, согласно заявке AES), MDC (512 бит, CFB), Anubis - модификация Rijndael (256 бит, CBC), Anubis-tweaked (256 бит, CBC), Mars 256 (256 бит, CBC), Misty128 (128 бит, CBC), NewDes120 (120 бит, CBC), Twofish-256 (256 бит, CBC), Skip32 (128 бит, CBC), Square128 (128 бит, CFB, верс.2.7), NSEA (256 бит, CFB), KolchCrypt III (512 бит, 512 битный блок, CBC), Aria (256 бит, CBC), Borland (48 бит), Mercy (128 бит, CBC), Raiden (256 бит, CBC), MacGuffin (128 бит, CBC), VigerePlus TEAII (512 бит, CBC),  REDOC II (160 бит, CBC), Khufu (512 бит, CBC), Khufu-w (512 бит, CBC, Whirlpool), Keeloq (64 бит), IDEA-NXT (256 бит, CBC), NUSH (256 бит, CBC, на основе кода GNUPG), Wicker98 (128 бит, CBC), RTEA (256 бит, CBC), SHA1Crypt (512 бит, CBC), MD5Crypt (512 бит, CBC), MD4Crypt (512 бит, CBC), Serpent (256 бит, CBC), Tnepres (256 бит, CBC), XTEA-tw (128 бит, CBC, усиленная версия), XXTEA-tw (128 бит, CBC, усиленная версия),XXTEA-tw (128 бит, CBC, усиленная версия, 960 битный блок), SHACAL (512 бит, CBC, SHA512), SHACAL (512 бит, CBC, MD6), DES-X (64x2 бит, CBC), RC2-1024 (1024 бит, CBC, Skein хэш-функция), IDEA128 (128 бит, CBC, Skein хэш-функция), Kasumi (128 бит, Skein хэш-функция), Rijndael-256 (256 бит блок, 256 бит ключ, CBC), Anubis320 (320 bit, CBC), Blowfish448 (448 бит, CBC), DES-EDE (168 бит, CBC), GOSTcb (256 бит, ЦБ SBOX, CBC), GOST3cb (768 бит, ЦБ SBOX, CBC, EDE3 дизайн), Threefish (1024 бит ключ, 128 бит tweak-блок, 1024 бит блок, 80 раундов), CAST-128 (128 бит), CAST-256 (256 бит), Rijndael-128 (256 бит ключ, CBC), KASUMI-b (128 бит, CBC), CIPHERUNICORN-E (128 бит, CBC), Diamond2 (2048 бит, 16 байт блок, 12 раундов, CBC), SEED128 (128 бит, CBC), TC18 (64 бит, CBC), SHARK (128 бит, CBC), SHARK-E (128 бит, CBC), Skipjack80 (80 бит, CBC), SPEED (256 бит ключ, 128 бит блок, 64 раунда), SAFER++ (256 бит ключ, 128 бит блок, CBC), CS-CIPHER (128 бит, CBC), SAFER-SK128 (128 бит, CBC), BJ256 (256 битный блочный шифр Боба Дженкинса, 512 бит ключ, CBC), R3DES (3DESEDE, 192 бит, CBC), Raiden32 (128 бит, 32 раунда, CBC), Raiden256 (256 бит, 16 раундов, CBC), Raiden2 (256 бит, 24 раунда, CBC), XTEA-3 (256 бит, 128 бит блок, CBC), MULTISWAP (384 бит, CBC), PES (128 бит, CBC), TWOPES (256 бит, CBC, 16 раундов), Raiden-512 (512 бит, CBC, 32 раунда), NEWTEA (128 бит, 128 бит блок, CBC), AES-G (256 бит, CBC, на основе ASM-кода Gladman), Rainbow (256 бит, CBC), NOEKEON (128 бит, CBC), RC5-32/16/64 (512 бит, CBC), RC6-512 (512 бит, CBC), Threefish-512 (512 бит клюс, 512 бит блок), Cartman-2P (384 бит, CBC), Chaos (512 бит, CBC), LOKI91 (512 бит, CBC), XTEA1 (128 бит, CBC), Q128e (128 бит, CBC), Newdes96 (128 бит, CBC), Mars-1248 (1248 бит, CBC), FNAM2 (512 бит, CBC), C2 (64 бит, CBC), Sinople (128 бит, CBC), Phantom (256 бит, CBC), Paranoia (512 бит, CBC), Pikachu (128 бит, CBC), SC6B (320 бит, CBC), Letsief (512 бит, CBC), Lja1 (2048 бит ключ, 128 бит блок, 16 циклов), Clefia (256 бит, CBC). **

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

Дополнительно доступно множество потоковых шифров:

Rabbit (128 бит), HC-256 (256 бит), Sosemanuk (256 бит), CryptMT3 (512 бит), Dragon (256 бит), Lex2 (128 бит), NLS2 (128 бит), Yamb (256 бит), Hermes (128 бит),FCSR (128 бит), Pomaranch (128 бит), Mickey (128 бит), Vest32-Pro (256 бит), WG2 (128 бит), ZKCrypt3 (160 бит), Dicing (256 бит), Py6 (256 бит), Grain (128 бит), Achterbahn (128 бит), Moustique (96 бит), TPypy (512 бит), TPy6 (512 бит), Pypy (512 бит), TPy (512 бит), Fubuki (512 бит), SSS (128 бит), Pike (512 бит, CBC), Seal (128 бит, CBC), Trivium (80 бит), Decim (128 бит), Edon80 (80 бит), Sfinks (80 бит), Konton (512 бит, CBC), QCypher (512 бит, CBC), SCOP-384 (384 бит, CBC), Sober-128, QUALCOMM Incorporated (128 бит), Shannon (256 бит), Leviathan (128 бит, CBC), A5 (64 бит, CBC), Panama (256 бит), WAKE (256 бит), RC4-drop[65536] (1024 бит), CS2-128 (128 бит), Lili (128 бит), Lili2 (128 бит), Snow2 (256 bit), SEAL2 (160 бит), SN3 (6144 бит), PolarBear (128 бит), VMPC (512 бит), Chacha (256 бит), Turing (256 бит).


(... следите за обновлениями плагина)

Возможности и функционал Проекта «Заря»

* Поддерживается шифровка одного файла в XDC и группы файлов/каталогов в Tar.XDC. 

* Возможность хранения ключа шифрования в текстовом файле 

* Имеется втроенный генератор ключевых текстовых файлов произвольной длины ключа 

* определение шифрованного файла по содержимому 

* русский и английский интерфейсы 

* хранение информации о методе шифрования и режиме в заголовке файла 

* возможность добавления комментария в архив 

* простая и удобная настройка параметов шифрования для каждого файла

* Возможность работы с фиксированным ключем шифрования и дешифрования (по-желанию)

* Функция криптографически-безопасного генератора ключа (доступна в контекстном меню при нажатии на кнопку диска в главном окне плагина)


Поддержка стего контейнеров:

- TXT
- BMP
- TIFF
- PNG
- JPEG2000
- WAVE

Переменные (помимо системных) в параметре ini файла и в диалоге настроек:

1. %COMMANDER_PATH% - путь к каталогу TC
2. %MYPATH% - путь к каталогу плагина
3. %SYSDIR% - системный каталог
4. %WINDIR% - каталог Windows

Переменные заполняются плагином, если они не зарегистрированы в системе. Используются только при чтении параметров настройки при шифровке / дешифровке. Перезапустите TC после перенастройки данных параметров.


Немного о применяемых алгоритмах шифрования.

1. ГОСТ 28147—89 — советский и российский стандарт симметричного шифрования, введённый в 1990 году. Полное название — «ГОСТ 28147—89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма.

По некоторым сведениям, история этого шифра гораздо более давняя. Алгоритм, положенный впоследствии в основу стандарта, родился, предположительно, в недрах Восьмого Главного управления КГБ СССР, преобразованного ныне в ФСБ, скорее всего, в одном из подведомственных ему закрытых НИИ, вероятно, ещё в 1970-х годах в рамках проектов создания программных и аппаратных реализаций шифра для различных компьютерных платформ.

С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен «полностью открытым» только в мае 1994 года. К сожалению, история создания шифра и критерии разработчиков до сих пор не опубликованы.
Достоинства ГОСТа
бесперспективность силовой атаки (XSL-атаки в учёт не берутся, т.к. их эффективность на данный момент полностью не доказана);
эффективность реализации и соответственно высокое быстродействие на современных компьютерах.


Криптоанализ

Существуют атаки и на полнораундовый ГОСТ 28147-89 без каких-либо модификаций. Одна из первых открытых работ, в которых был проведен анализ алгоритма, использующим слабости процедуры расширения ключа ряда известных алгоритмов шифрования. В частности, полнораундовый алгоритм ГОСТ 28147-89 может быть вскрыт с помощью дифференциального криптоанализа на связанных ключах, но только в случае использования слабых таблиц замен. 24-раундовый вариант алгоритма (в котором отсутствуют первые 8 раундов) вскрывается аналогичным образом при любых таблицах замен, однако, сильные таблицы замен делают такую атаку абсолютно непрактичной.

Отечественные ученые А.Г. Ростовцев и Е.Б. Маховенко в 2001 г. предложили принципиально новый метод криптоанализа (по мнению авторов, существенно более эффективный, чем линейный и дифференциальный криптоанализ) путем формирования целевой функции от известного открытого текста, соответствующего ему шифртекста и искомого значения ключа и нахождения ее экстремума, соответствующего истинному значению ключа. Они же нашли большой класс слабых ключей алгоритма ГОСТ 28147-89, которые позволяют вскрыть алгоритм с помощью всего 4-х выбранных открытых текстов и соответствующих им шифртекстов с достаточно низкой сложностью. Криптоанализ алгоритма продолжен в работе.

В 2004 г. группа специалистов из Кореи предложила атаку, с помощью которой, используя дифференциальный криптоанализ на связанных ключах, можно получить с вероятностью 91,7% 12 бит секретного ключа . Для атаки требуется 235 выбранных открытых текстов и 236 операций шифрования. Как видно, данная атака, практически, бесполезна для реального вскрытия алгоритма.

Критика ГОСТа

Основные проблемы ГОСТа связаны с неполнотой стандарта в части генерации ключей и S-блоков. Тривиально доказывается, что у ГОСТа существуют "слабые" ключи и S-блоки, но в стандарте не описываются критерии выбора и отсева "слабых". Также стандарт не специфицирует алгоритм генерации S-блоков (таблицы замен). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем:
нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен;
реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой;
возможность предоставления слабых таблиц замен содержащих "черный ход";
потенциальная возможность (отсутствие запрета в стандарте) использования таблиц замены, в которых S-блоки не являются перестановками, что может привести к чрезвычайному снижению стойкости шифра.
2. DES (англ. Data Encryption Standard) — симметричный алгоритм шифрования, в котором один ключ используется как для зашифрования, так и для расшифрования сообщений. Также известен как алгоритм шифрования данных DEA (англ. Data Encryption Algorithm). Разработан фирмой IBM и утвержден правительством США в 1977 году как официальный стандарт (FIPS-46-3). DES имеет блоки по 64 бит и 16-цикловую структуру сети Фейстеля, для шифрования использует ключ в 56 бит. Алгоритм использует комбинирование нелинейного (S-box) и линейного (перестановки E,Р,IP,FP) преобразований. Для DES рекомендовано несколько режимов, например Electronic Code Book (ECB) и Cipher Block Chaining (CBC).


История

В 1972, после проведения исследования потребностей правительства США в компьютерной безопасности, американское НБС (Национальное Бюро Стандартов) — теперь переименовано НИСТ (Национальный Институт Стандартов и Технологий) — определило необходимость в общеправительственном стандарте шифрования некритичной информации. 15 мая 1973, после консультации с АНБ (Агентством национальной безопасности), НБС объявило конкурс на шифр, который удовлетворит строгим критериям проекта, но ни один конкурсант не обеспечивал выполнение всех требований. Второй конкурс был начат 27 августа 1974. На сей раз, шифр Lucifer, представленный IBM и развитый в течение периода 1973—1974 сочли приемлемым, он был основан на более раннем алгоритме Хорста Фейстеля.

17 марта 1975 предложеный алгоритм DES был издан в Федеральном Регистре. В следующем году было проведено 2 открытых симпозиума по обсуждению этого стандарта, где подверглись жесткой критике изменения внесенные АНБ в алгоритм: уменьшение первоначальной длины ключа и таинственные S-блоки. АНБ подозревалось в сознательном ослаблении алгоритма с целью, чтобы АНБ могло легко просматривать зашифрованые сообщения. После чего сенатом США была проведена проверка действий АНБ, результатом которой стало заявление опубликованное в 1978, в котором говорилось о том, что в процессе разработки DES АНБ убедило IBM, что уменьшенной длины ключа более чем достаточно для всех коммерческих приложений, использующих DES, косвенно помогало в разработке S-перестановок, а также, что окончательный алгоритм DES был лучшим, по их мнению, алгоритмом шифрования и был лишен статистической или математической слабости. Также было обнаружено, что АНБ никогда не вмешивалось в разработку этого алгоритма.

Часть подозрений в скрытой слабости S-перестановок была снята в 1990, когда были опубликованы результаты независимых исследований Эли Бихама (Eli Biham) и Ади Шамира (Adi Shamir) по дифференциальному криптоанализу — основному методу взлома блочных алгоритмов шифрования с симметричным ключом. S-блоки алгоритма DES оказались намного более устойчивыми к атакам, чем если бы их выбрали случайно. Это означает, что такая техника анализа была известна АНБ ещё в 70-х годах XX века.
3. Advanced Encryption Standard (AES), также известный, как Rijndael — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), финалист конкурса AES и принятый в качестве американского стандарта шифрования правительством США. Выбор был сделан с расчётом на повсеместное использование и активный анализ алгоритма, как это было с его предшественником, DES. Государственный институт стандартов и технологий (англ. National Institute of Standards and Technology, NIST) США опубликовал предварительную спецификацию AES 26 ноября 2001 года, после пятилетней подготовки. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2006 год AES является одним из самых распространённых алгоритмов симметричного шифрования.


История

Необходимость в принятии нового стандарта была вызвана небольшой длиной ключа DES (56 бит), что позволяло применить метод грубой силы (полный перебор ключей) против этого алгоритма. Кроме того, архитектура DES была ориентирована на аппаратную реализацию, и программная реализация алгоритма на платформах с ограниченными ресурсами не давала достаточного быстродействия. Модификация 3-DES обладала достаточной длиной ключа, но при этом была еще медленнее.

Начало конкурса

2 января 1997 года NIST объявляет о намерении выбрать преемника для DES, являвшегося американским стандартом с 1977 года. Однако, вместо опубликования алгоритма, NIST принял различные предложения от заинтересованных сторон о том, каким образом следует выбирать алгоритм. Бурный отклик со стороны открытого криптографического сообщества привел к объявлению конкурса (12 сентября 1997 г.). Свой алгоритм могла предложить любая организация или группа исследователей. Требования к новому стандарту были следующими:
блочный шифр
длина блока, равная 128 битам
ключи длиной 128, 192 и 256 бит.

Подобные шифры были довольно редки во время объявления конкурса; возможно, лучшим был Square. Дополнительно кандидатам рекомендовалось:
использовать операции, легко реализуемые как аппаратно (в микрочипах), так и программно (на персональных компьютерах и серверах)
ориентироваться на 32-разрядные процессоры
не усложнять без необходимости структуру шифра для того, чтобы все заитересованные стороны были в состоянии самостоятельно провести независимый криптоанализ алгоритма и убедиться, что в нём не заложено каких-либо недокументированных возможностей.

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

1-й и 2-й раунды

20 августа 1998 года на 1-й конференции AES был объявлен список из 15 кандидатов: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent, Twofish. В последующих обсуждениях эти алгоритмы подвергались всестороннему анализу, причем исследовались не только криптографические свойства, такие как стойкость к известным атакам, отсутствие слабых ключей, но и практические аспекты реализации: оптимизацию скорости выполнения кода на различных архитектурах (от ПК до смарт-карт и аппаратных реализаций), возможность оптимизации размера кода, возможность распаралелливания. В марте 1999 года прошла 2-я конференция AES, а в августе 1999 года были объявлены 5 финалистов: MARS, RC6, Rijndael, Serpent и Twofish. Все эти алгоритмы были разработаны авторитетными криптографами с мировым именем. На 3-й конференции AES в апреле 2000 года авторы выступили с докладами о своих алгоритмах.

Третья конференция AES

Третья конференция AES прошла в Нью-Йорке 13 и 14 апреля 2000 года, незадолго до завершения второго этапа. На ней присутствовало 250 участников, многие из которых приехали из-за рубежа. Двухдневная конференция была разделена на восемь сессий, по четыре в день, плюс к тому состоялась неформальная дополнительная сессия, подводившая итоги первого дня. На сессиях первого дня обсуждались вопросы, связанные с программируемыми матрицами (FPGA), проводилась оценка реализации алгоритмов на различных платформах, в том числе PA-RISC, IA-64, Alpha, высокоуровневых смарт-картах и сигнальных процессорах, сравнивалась производительность претендентов на стандарт, анализировалось число раундов в алгоритмах-кандидатах. На сессиях второго дня был проанализирован Rijndael с сокращённым числом раундов и показана его слабость в этом случае, обсуждался вопрос об интегрировании в окончательный стандарт всех пяти алгоритмов-претендентов, ещё раз тестировались все алгоритмы. В конце второго дня была проведена презентация, на которой претенденты рассказывали о своих алгоритмах, их достоинствах и недостатках. О Rijndael рассказал Винсент Риджмен, заявивший о надёжности защиты, высокой общей производительности и простоте архитектуры своего кандидата.
4. International Data Encryption Algorithm (IDEA) — блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Изначально назывался IPES (Improved PES), поскольку является развитием стандарта PES (Proposed Encryption Standard). Лицензия позволяет свободно использовать алгоритм в некоммерческих приложениях. 

Алгоритм описан в 1991 Хьюджем Леем (Xuejia Lai) и Джеймсов Массеем (James Massey) из ETH Zurich (по контракту с Hasler Foundation, которая позже влилась в Ascom-Tech AG.) в качестве замены Data Encryption Standard.

Использует 128-битный ключ и 64-битный размер блока.

Алгоритм применяется в PGP v2.0 и (опционально) в OpenPGP.

5. RC4 — это потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколе SSL и для шифрования паролей в Windows NT). Шифр разработан компанией RSA Security Inc. и для его использования требуется лицензия. Автором RC4 является Рональд Ривест (Ronald Rivest). RC расшифровывается как Ron’s Code или Rivest’s Cipher. До 1995 года программный код RC4 нигде не публиковался.

Алгоритм RC4 строится как и любой потоковый шифр на основе параметризованного ключом генератора псевдослучайных битов с равномерным распределением. Основные преимущества шифра — высокая скорость работы и переменный размер ключа. Типичная реализация выполняет 19 машинных команд на каждый байт текста.

В США длина ключа для использования внутри страны рекомендуется равной 128 битов, но соглашение, заключённое между Software Publishers Association (SPA) и правительством США даёт RC4 специальный статус, который означает, что разрешено экспортировать шифры длинной ключа до 40 бит. 56-битные ключи разрешено использовать заграничным отделениям американских компаний.

В 1995 году в ньюс-группе sci.crypt был анонимно опубликован исходный текст алгоритма RC4. По-видимому, данный текст был получен в результате анализа исполняемого кода. Опубликованный шифр совместим с имеющимися продуктами, использующими RC4, а некоторые участники телеконференции, имевшие, по их словам, доступ к исходному коду RC4, подтвердили идентичность алгоритмов при различиях в обозначениях и структуре программы.

Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов, которая затем объединяется с открытым текстом посредством суммирования по модулю два. Дешифрация состоит из регенерации этого ключевого потока и суммирования его с шифрограммой по модулю два, восстанавливая исходный текст. Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.

RC4 — фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 состоит из массива размером 2n слов и двух счетчиков, каждый размером в одно слово. Массив известен как S-бокс, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счетчика обозначены через i и j.

Алгоритм инициализации RC4 приведен ниже. Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину l байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путем перестановок определяемых ключом. Так как только одно действие выполняется над S, то должно выполняться утверждение, что S всегда содержит все значения кодового слова.

6. RC5 (Ron’s Code 5 или Rivest’s Cipher 5) — это блочный шифр, разработанный Роном Ривестом из компании RSA Security Inc..

Алгоритм RC5 имеет переменные длину блока, количество раундов и длину ключа. Для спецификации алгоритма с конкретными параметрами принято обозначение RC5-W/R/K, где W равно половине длины блока в битах, R — число раундов, K — длина ключа в байтах.

Для эффективной реализации величину W рекомендуют брать равным машинному слову. Например, для 32-битных платформ оптимальным будет выбор W=32, что соответствует размеру блока 64 бита.

Для стимуляции изучения и применения шифра RC5 RSA Security Inc. 28 января 1997 года предложила взломать серию сообщений, зашифрованных алгоритмом RC5 с разными параметрами, назначив за взлом каждого сообщения приз в $10000. Шифр с самыми слабыми параметрами RC5-32/12/5 был взломан в течение нескольких часов. Тем не менее, последний осуществлённый взлом шифра RC5-32/12/8 потребовал 5 лет. Взлом RC5-32/12/8 был осуществлён в рамках проекта распределённых вычислений RC5-64 (здесь 64=K*8, длина ключа в битах) под руководством distributed.net. По-прежнему неприступными пока остаются RC5-32/12/K для K=9..16. distributed.net стартовала проект RC5-72 для взлома RC5-32/12/9.

7. RC6 — симметричный блочный криптографический алгоритм, производный от алгоритма RC5. Был создан Роном Ривестом, Мэттом Робшау и Рэем Сиднеем для удовлетворения требований конкурса Advanced Encryption Standard. Алгоритм был одним из пяти финалистов конкурса, был также представлен NESSIE и CRYPTREC. Является собственническим (проприетарным) алгоритмом и запатентован RSA Security.

RC6 поддерживает блоки длиной 128 бит и ключи длиной 128, 192, и 256 бит, но, в отличие от RC5, может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей. RC6 очень похож на RC5 по своей структуре. Является финалистом AES

8. Tiny Encryption Algorithm (TEA) — блочный алгоритм шифрования типа «Сеть Фейстеля», представленный в 1994 году Дэвидом Уилером(David Wheeler) и Роджером Нидхэмом(Roger Needham).

9. Twofish — симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа до 256 бит. Число раундов 16. Разработан группой специалистов во главе с Брюсом Шнайером. Являлся одним из 5 финалистов второго этапа конкурса AES (но не был выбран таковым, преимущественно из-за достаточно медленного выполнения по сравнению с AES на большинстве платформ). Алгоритм разработан на основе алгоритмов Blowfish, Safer и Square.

Отличительными особенностями алгоритма является использование предварительно вычисляемых и зависящих от ключа S-блоков и сложная схема разверстки подключей шифрования. Половина n-битного ключа шифрования используется как собственно ключ шифрования, другая — для модификации алгоритма (от нее зависят S-блоки). Twofish наследует некоторые принципы построения из других шифров, так он использует ту же сеть Фейстеля, что и DES, преобразование, подобное преобразованию Хадамарда (Pseudo Hadamard transform), из алгоритмов семейства Safer и т.д.

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

10. Serpent («змея», некоторые предыдущие разработки авторов тоже носили названия в честь животных, например Tiger, Bear) — симметричный блочный алгоритм шифрования, разработанный Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном. Алгоритм являлся одним из финалистов 2-го этапа конкурса AES. Как и другие алгоритмы участвующие в конкурсе AES, Serpent имеет размер блока 128 бит и возможные длины ключа 128, 192 или 256 бит. Алгоритм представляет собой 32-х раундовую сеть Файстеля, работающую с блоком из 4-х 32-ух битных слов. Serpent был разработан так, что все операции могут быть выполнены параллельно, используя 32 1-битных «потока».

При разработке Serpent использовался более консервативный подход к безопасности нежели у других финалистов AES, проектировщики шифра считали, что 16 раундов достаточно, чтобы противостоять известным видам криптоанализа, но увеличили число раундов до 32, чтобы алгоритм мог лучше противостоять еще не известным методам криптоанализа.

Шифр Serpent не запатентован и является общественным достоянием.

11. Blowfish (произносится [блоу-фиш]) — криптографический алгоритм, реализующий симметричное шифрование.

Разработан Брюсом Шнайером в 1993 году. Представляет собой сеть Фейстеля. Функция выполнена на простых и быстрых операциях: XOR, подстановка, сложение.

Характеристики:
Размер блока: 64 бит.
Длина ключа: переменная, до 448 бит.
Число раундов: 16.

По заявлению автора, критерии проектирования Blowfish были:
скорость;
простота;
компактность;
настраиваемая стойкость.

12. 3-DES — симметричный блочный криптографический алгоритм, созданный на основе алгоритма DES с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом перебора ключа.

В 3-DES был избран простой путь увеличения длины ключа без необходимости переходить на новый алгоритм — в нем над 64-битным блоком данных несколько раз производится шифрование алгоритмом DES (конечно, с разным ключом), в простейшем варианте это выглядит как: DES(k3;DES(k2;DES(k1;M))), где M - блок исходных данных, k1, k2 и k3 — ключи DES. Этот вариант известен как EEE — поскольку три операции DES являются шифрованием, более распространен вариант EDE (стандарт FIPS-46-3), в котором серединное шифрование DES с ключом k2 заменяется операцией расшифрования с тем же ключом (k2). В общем, длина ключа алгоритма 3-DES равна 168 битам (3x ключ DES)
... и многие другие!


P.S. Ошибка с запаковкой в Tar.XDC исправлена в Total Commander 7.03
Используйте последнюю версию Total Commander!


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

Сделано в России, г. Кольчугино, год 2009 от РХ