3189
.pdfмы видим, что данное преобразование больше похоже на размеши вание:
012 отображается в 7 3 1,
12 3 - в 3 1 5 и т.д., т.е. оно не дает отдельную компактную об
ласть.
Рассмотрим следующую схему: i=l ,2,...,32 - номер итерации, Kj - 16 битовый вектор ключа,
X; - старший блок текста (16 бит), Yjмладший блок текста (16 бит),
Xj+i = ((SL7(Xj+Kj)(mod 2))+Yj)(mod 65536),
Yj+, = Xj,
SL7 - ( shift left) циклический сдвиг вектора влево на 7 двоич ных разрядов.
Рис. 1. Схема одной итерации
Попробуйте записать формулу итогового преобразования хотя бы для двух итераций, и вы убедитесь в том, что, даже если известен и шифрованный, и открытый текст (можно составить уравнения с неизвестной переменной - ключом и попробовать решать их), по лученная система уравнений относительно битов ключа будет слож ной и нелинейной. Кроме того, с учетом мощности алфавита, для
достоверного статистического анализа придется набрать около мил лиона векторов длиной 32 бита.
Именно по блочному принципу в начале 70-х годов был постро ен самый известный из блочных алгоритмов шифрования - DES (Data Encryption Standart) с размером блока 64 бита. Мощность мно жества возможных ключей DES равна 2 в степени 56, что составляет примерно 10 в восемнадцатой степени, реальная стойкость DES (ми нимальная по всем известным методам дешифрования) оценивается примерно той же величиной. В настоящее время, правда, существует предположение, что Агентство национальной безопасности США (ведущий разработчик DES) разработало методы его дешифрования с существенно меньшей сложностью, однако эти предположения по ка не подтверждены.
В 1989 году в СССР на тех же принципах был разработан алго ритм шифрования ГОСТ 28147-89, объем его ключевого множества равен 2 в степени 256, или примерно 10 в восьмидесятой степени, реальная стойкость оценивается той же величиной, размер блока 64 бита.
Однако из сказанного вовсе не следует, что для получения стой кого шифра можно применить итеративно несколько простых ото бражений над большими блоками информации. Шеннон показал все го лишь путь, по которому можно двигаться. Естественно, с легко стью можно синтезировать и плохой блочный шифр (к приведенному примеру данное замечание не относится).
Кроме того, блочные шифры распространяют искажения, про изошедшие в шифрованном тексте при его передаче и хранении, а также обладают достаточно низкой скоростью шифрования за счет большого числа итераций.
В связи с этим часто применяются системы с использованием псевдослучайных последовательностей (так называемые системы поточного шифрования). Использовать псевдослучайные последова тельности с линейной зависимостью в них не рекомендуется. Поэто му к линейной рекурренте нужно применять усложнение - вносить нелинейность, например, применяя те же итеративные преобразова
ния над блоками последовательности или над отдельными ее элемен тами (например, суммируя элементы последовательности в арифме тическом сумматоре).
При этом важно:
♦сохранить период усложненной последовательности не меньший, чем период исходной,
♦получить равновероятную последовательность после услож нения,
♦получить сильную нелинейную зависимость от многих пе ременных ключа и от большого числа знаков усложняемой
последовательности.
Цель, к которой нужно стремиться: стойкость для метода с наи меньшей трудоемкостью должна быть не намного хуже, чем трудо емкость полного перебора ключей.
Рассмотрим инструкции по работе с пакетами. Активизация эмулятора платы Crypton-3
Для демонстрации работы программы шифрования CRTOOLS пакета Crypton-З используется эмулятор платы. Запустите BOOT.BAT. Пароль:psw. Для шифрования используйте программу CRTOOLS.
Программа обладает достаточно удобной и наглядной системой меню, где пояснения требует лишь система ключей в разделе «Уста новки». Приняты следующие сокращения:
GK |
- плата Криптон (в нашем случае - эмулятор платы); |
PW |
- символьный пароль; |
UK |
- внешний ключ, находящийся в отдельном файле; |
Net |
- ключи, передаваемые по сети. |
В случае комбинации сокращений используется комбинирован ное шифрование. Обратите внимание, что если вы не установили тип ключевой системы, содержащий в себе PW, то поле «Ввод пароля» будет игнорироваться вне зависимости от того, введен в него пароль или нет. Если же ключевая система настроена на использование па роля, то если поле «Ввод пароля» не заполнено, система спросит вас
о пароле и самостоятельно заполнит это поле. Шифрование и рас шифровывание будут производиться на одном и том же пароле, пока он не будет изменен в соответствующем поле настройки либо не бу дет вообще снят (для этого введите пустой пароль).
Утилита DiskReet из пакета Norton Utilities
Эта утилита обладает удобной оболочкой и простой системой меню. Данная лабораторная работа рассчитана только на работу с файлами, поэтому при запуске выбирается пункт меню «Files». На стройка программы производится с использованием пункта меню «Files/File Options»:
-Encryption method - выбор метода шифрования. DiskReet предлагает два варианта:
-Fast proprietary method - быстрый, но менее надежный метод;
-DES - шифрование по стандарту DES.
Остальные настройки направлены собственно на исходные
иполучаемые файлы:
-Wipe/Delete original files after encryption —удалять оригиналь ные файлы после зашифровки (и расшифровки);
-Set encryptedfiles to Hidden - установить для зашифрованного файла атрибут Hidden;
-Set encrypted files to Read-Only —установить для зашифрован ного файла атрибут Read-Only;
-Use same passwordfor entire session - использовать один и тот же пароль в течение всего сеанса работы с программой.
Шифрование и расшифровывание файлов производятся с помо щью пунктов меню Encrypt и Decrypt соответственно.
Приведем опции для запуска утилиты из командной строки: DISKREET [опции]
Опции:
/ENCRYPT:filename |
- |
Шифрование файла. |
/DECRYPT:filename |
- |
Расшифровка файла. |
/PASSWORD:xxxxxxx |
- |
Пароль. |
/SHOW[:drive letter] |
- |
Показать криптованный диск. |
/HIDE[:drive letter] |
- |
Спрятать криптованный диск. |
/CLOSE |
- |
Закрыть все криптованные диски |
/ON |
- |
Открыть криптованный диск. |
/OFF |
- |
Закрыть криптованный диск. |
Пакет Crypt |
|
|
Шифрование производится с использованием пароля, задавае мого пользователем. Алгоритм шифрования не допускает возможно сти расшифровать данные, не зная пароля, даже зная некоторый уча сток исходного файла. Программа производит шифрование одного или нескольких файлов. При этом длина файла не изменяется. Об ратный процесс, то есть расшифровка, проходит таким же образом. Если же при расшифровке указан пароль, отличный от того, с каким файлы шифровались, то в таком случае вместо исходного файла пользователь получит нечто, напоминающее первоначальный файл только длиной и именем.
Синтаксис вызова:
CRYPT {/Е | /0} [/С] [/R] [/Р=<пароль>] <файл> [<файл>...] Ключи обозначают следующее :
/Е - что файл(ы) шифруются, Ю - что расшифруются.
При запуске программы необходимо указать один из вышепе речисленных ключей. Остальные параметры (кроме имен файлов) необязательны.
/Р=<пароль> - здесь указывается пароль. Для командной стро ки это может быть только одно слово (без пробелов). Если этот па раметр отсутствует, то CRYPT запросит его, и вот уже тут вы сможе те ввести пароль с пробелами. В любом случае его длина должна быть больше, чем три, и меньше, чем семьдесят три.
/С - этот параметр указывает программе, что для пароля нужно различать верхний и нижний регистры букв. При отсутствии этого ключа программа переводит все буквы пароля в верхний регистр (только латинские буквы).
/R - с помощью этого ключа вы сможете шифровать файлы не только в заданном каталоге, но и во всех его подкаталогах.
<filename> - собственно указывается файл, который подлежит шифрованию. Здесь можно указать файловую маску. Этот параметр можно указывать несколько раз с разными именами или масками, чтобы обработать сразу все необходимые файлы. -
Например:
CRYPT /Е /P=MYPASSWORD е:\*.* f:\*.*
Шифрует все файлы в корневых каталогах дисков Е и F с паро лем MYPASSWORD.
CRYPT /Е /P=FATHER /R е:\*.*
Шифрует все файлы на диске Е с паролем FATHER. CRYPT /D /R e:\programs\*.pas
Шифрует все файлы с расширением PAS в каталоге E:\PROGRAMS и его подкаталогах.
CRYPT /Н или CRYPT /? или CRYPT Выводит список ключей. Примечание:
ключи /Е и /D полностью взаимообратны, то есть вы можете, вопреки правилу, зашифровывать с ключом /D, а расшифровывать
с ключом /Е, это не имеет особого значения.
Также вы можете зашифровать ваши файлы несколько раз, ис пользуя разные пароли, но тогда при расшифровке необходимо пода вать эти пароли в обратном порядке. Например:
Шифруем :
CRYPT /Е /P=FIRST <файлы> CRYPT /Е /P=SECOND <файлы> CRYPT /Е /P=THIRD <файлы> CRYPT /Е /P=LAST <файлы>
Получили зашифрованные файлы. Теперь расшифровываем : CRYPT ГО/P=LAST <файлы>
CRYPT ГО/P=THIRD <файлы>
CRYPT /D /P=SECOND <файлы> CRYPT Ю /P=FIRST <файлы> Получаем исходные файлы.
В случае фатальной ошибки при выборе параметров программа выдает сообщение и выходит с ErrorLevel, соответствующим ошиб ке. Ниже приводятся все ошибки с их кодами и комментариями :
1 - Invalid or unnecessary parameter
Программе передан неправильный или лишний параметр. 2 - No command
Вкомандной строке не указано, что делать с файлами. 3 - No filename
Вкомандной строке отсутствует имя файла.
4 —Too short or too long password
Неправильный размер пароля. Должен быть : (3 < размер < 73). 5 - User fails password test
Пользователь не ввел верно пароль.
Если среди обрабатываемых файлов попадается файл с нестан дартными атрибутами (SYSTEM, HIDDEN, READ ONLY), то про грамма сделает запрос о том, надо ли этот файл обрабатывать, в слу чае отказа файл будет пропущен.
Data Encryption TooIKit
Data Encryption TooIKit позволяет шифровать данные и испол няемые коды программ, предотвращая их несанкционированное ис пользование. Шифрование производится в соответствии с федераль ным стандартом США (DES).
Data Encryption TooIKit состоит из двух взаимосвязанных ком понент: библиотеки функций для языков С, C++, Turbo Pascal и Ас семблера, обеспечивающих шифрование блоков данных и участков выполняемого кода в оперативной памяти, и утилиты шифрования файлов. Вам предлагается работать только с утилитой шифрования файлов ENCRFILE.
Формат ее вызова:
ENCRFILE [options] [filename [directory]]
Опции могут набираться на любом регистре и располагаться в любом месте командной строки. Они не обязаны отделяться пробе лом от имени утилиты, других параметров и друг от друга. Имеются следующие опции:
/Н - выдать справку о формате вызова;
/L - выдать информацию о лицензировании; /Е - зашифровать файлы данных;
/D - расшифровать файлы данных;
/V - проверить целостность зашифрованных файлов данных; /С - зашифровать исполняемые файлы;
/S - выполнить заданную операцию для всего поддерева катало гов, начиная с исходного;
/R - пометить выходные файлы как только читаемые (использу ется вместе с /Е);
/В - создавать резервные копии для шифруемых файлов (ис пользуется вместе с /С);
/W - удалять исходные файлы с очисткой занимаемого ими мес та (вместе с /Е), удалять исходные файлы (вместе с /D), удалять ре зервные копии с очисткой занимаемого ими места (вместе с /С, под разумевается наличие /В), для каждого отдельного файла указанное действие выполняется только при успешном завершении основной операции.
Параметр filename задает файлы, для которых выполняется опе рация. В нем допустимы стандартные метки DOS и '?'. Если рас ширение имени отсутствует, то для операции /Е принимается пустое расширение, для /D и /V - .SEC, а для /С - .EXE, если имя отсутству ет полностью, то для операции /Е принимается *•*, а для всех ос тальных - * (расширение добавляется, как было указано). За один раз в каждом каталоге может быть обработано не более 1000 файлов (ес ли окажется, что их больше, оставшиеся не будут обработаны).
Параметр directory может быть указан для операций /Е и /D, для которых он указывает выходной каталог, а также для операции /С с опцией /В, в этом случае он указывает каталог для резервных ко пий. Этот каталог должен существовать до вызова утилиты, однако его подкаталоги (если указана опция /S) при необходимости будут созданы автоматически. Поэтому не следует с этой опцией указывать в качестве выходного или резервного каталог, вводящий в поддерево исходного. По умолчанию берется исходный каталог.
Имена выходных файлов для операции /Е образуются из имен исходных файлов заменой расширения на .SEC, а если в операции участвуют несколько файлов из одного каталога с одинаковыми име нами, но разными расширениями, первый выходной файл получит расширение .SEC, а все остальные - .Лхх, где хх - два допустимых в именах символа, различных для каждого файла.
При выполнении операции /D расширения имен выходных фай лов восстанавливаются из содержимого исходных файлов, если же это по какой-либо причине оказывается невозможным, для них уста навливаются расширения .OUT или 'хх по тем же правилам, что при операции /Е. Точнее говоря, всем выходным файлам назначаются такие расширения, а после окончания операции файл, если расшире ние было восстановлено, переименовывается.
Назначение расширений резервным копиям при выполнении операции /С зависит от назначенного резервного каталога. Если он совпадает с исходным, назначаются расширения .ВАК и .~хх, а если не совпадает - файлы резервируются с исходными расширениями.
Если в выходном или резервном каталоге уже существует файл с именем, назначенным выходному файлу или резервной копии, он будет замещен. При совпадении входного и выходного (резервного) каталогов некоторые входные файлы могут быть таким образом за мещены. Если замещенный входной файл еще не был обработан, то он уже не будет обработан никогда. Но в любом случае заместивший его файл не будет обработан повторно.
Перед началом обработки файлов утилита запрашивает у поль зователя ключ, который может быть введен как в цифровой, так и в символьной форме. При вводе ключа в символьной форме ре гистр букв, а также все ведущие и замыкающие пробелы в нем явля ются значащими. Каждый цифровой ключ вводится как последова тельность из четырех четырехзначных шестнадцатеричных чисел - подключей. Для прекращения ввода подключей на очередной запрос надо ответить простым нажатием на клавишу Enter. Если последний ключ был введен не до конца, все его оставшиеся подключи прини маются равными 0.
После завершения операции для всех указанных файлов утилита спрашивает, будет ли выполняться та же операция для других фай лов и, если да, с тем же ключом или с другим. Если пользователь от ветил утвердительно, то у него, в случае необходимости, будет за прошен новый ключ, а затем новая спецификация исходных файлов. Последняя интерпретируется точно так же, как параметр filename, за исключением того, что по умолчанию принимается предыдущая спе цификация. Если операция того требует, будет запрошена также спе цификация выходного или резервного каталога, которая интерпрети руется так же, как параметр directory.
При выполнении операции /С для каждого шифруемого файла дополнительно запрашивается номер Области управления шифрова нием и список шифруемых фрагментов. Каждый фрагмент задается парой чисел - смещением от начала программы и длиной. Для .СОМ (.BIN) файлов смещение задается от начала файла, для .EXE файлов - от начала загружаемой области. Таким образом, вся необходимая информация может быть получена из листингов линкера и, возмож но, трансляторов. Как и подключи цифровых ключей, смещение и длина должны задаваться в шестнадцатеричной форме. Завершает ся ввод также аналогично - простым нажатием на клавишу Enter в ответ на вопрос об очередном фрагменте.
Введенные данные о фрагментах проверяются на корректность (фрагменты не должны пересекаться друг с другом и с Областью управления шифрованием), и при необходимости утилита предлагает повторить ввод. После завершения ввода на дисплей выдается список фрагментов в формате листинга линкера (.МАР файла) и требуется подтверждение. В ответ можно разрешить шифрование этих фраг ментов или повторить ввод с самого начала.
За один раз может быть использовано произвольное количество Областей управления шифрованием. Завершается этот процесс про стым нажатием на клавишу Enter в ответ на вопрос о номере очеред ной Области управления шифрованием.