обычный режим операционной системы MS-DOS
защищенный режим MS-DOS
режим Windows.
Пакет Borland Pascal включает в себя как язык программирования — одно из расширений языка Паскаль для ПЭВМ клонов IBM, так и среду, предназначенную для написания, отладки и запуска программ.
Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод, формировать графические изображения и т. д.
Среда программирования позволяет создавать тексты программ, компилировать их, находить ошибки и оперативно их исправлять, компоновать программы из отдельных частей, включая стандартные модули, отлаживать и выполнять отлаженную программу. Пакет предоставляет пользователю также большой объем справочной информации.
Версия 7.0 также, как и предыдущая, позволяет применять объектно-ориентированное программирование, обладает встроенным ассемблером, имеет инструментальное средство создания интерактивных программ — Turbo Vision, но появился ряд характерных особенностей:
выделение цветом различных элементов программы;
ряд дополнительных расширений языка, таких, как использование открытых массивов, параметров-констант, типизированного адресного оператора @ и т. д.;
расширенные возможности объектно-ориентированного программирования;
усовершенствованные программы Turbo Vision [2].
При написании программы также использовался интегрированный пакет Turbo Vision 2.0. При создании прикладной программы программист большие усилия затрачивает на организацию ввода-вывода информации, т. е. на формирование интерфейса. Они соизмеримы с усилиями, затрачиваемыми на программирование основного алгоритма программы, по которому решается конкретная задача. Работа, связанная с организацией ввода-вывода, повторяется от программы к программе, требует выполнения однотипных операций, отвлекает внимание программиста от выполнения основной задачи.
Прекрасным средством упрощения работы по организации ввода-вывода, его унификации с учетом требований к интерфейсу программ является разработанный фирмой Borland International пакет Turbo Vision 2.0, представляющий объектно-ориентированную библиотеку средств формирования пользовательского интерфейса. Кстати, интерфейс самого Borland Pascal 7.0 (и Turbo Pascal 7.0 тоже) построен на стандартных объектах Turbo Vision 2.0.
Согласно этому рисунку программу можно представить как совокупность двух частей: часть программы, обеспечивающая решение основной программы, и часть, обеспечивающая организацию ввода-вывода с внешних устройств (на внешние устройства), — так называемый интерфейс программы. В основную часть (из основной части) информация может передаваться двумя способами — непосредственная передача информации (например, программа формирует какие-то данные и размещает их в конкретном файле на магнитном диске) и передача информации с помощью организации диалога (например, после формирования тех же данных происходит уточнение, в какой конкретно файл следует поместить сформированную информацию). Способ, основанный на организации диалога, является более универсальным и именно для организации диалога предназначен в первую очередь пакет Turbo Vision.
В программах, работающих в текстовом режиме, диалог обычно организуется с помощью трех средств: меню, диалоговых окон и строк состояния [3].
Также при создании программы использовался ассемблер — машинно-ориентированный язык. На ассемблере написаны основные подпрограммы, где требуется высокое быстродействие и минимальный размер программного кода.
3. Алгоритм задачи
Программу условно можно разделить на несколько частей:
Инсталляционный модуль.
Оболочка программы (написана с использованием Turbo Vision 2.0).
Криптографическая защита (Borland Pascal 7.0).
Защита программ паролем (TASM 3.0).
Защита программ с помощью ключевой дискеты (TASM 3.0).
Блокировка винчестера (TASM 3.0).
3. 1 Инсталляционный модуль
Модуль инсталляции будет устанавливать программу на винчестер в определенный каталог, а также осуществлять привязку программы к уникальным идентификаторам BIOS.
3. 2. Оболочка программы
При создании интерактивного пользовательского интерфейса (оболочки программы) использовались стандартные объекты пакета Turbo Vision. Горизонтальное двухуровневое меню, строка состояния, рабочее поле, диалоговые окна, информационные сообщения и сообщения об ошибках, поддержка “мыши” — вот некоторые атрибуты оболочки.
3. 2. Криптографическая защита
Перед описанием алгоритма следует ввести некоторые термины.
Зашифрованием данных называется процесс преобразования открытых данных в зашифрованные с помощью шифра, а расшифрованием данных — процесс преобразования закрытых данных в открытые с помощью шифра.
Шифрованием называется процесс зашифрования или расшифрования данных.
Дешифрованием будем называть процесс преобразования закрытых данных в открытые при неизвестном ключе и, возможно, неизвестном алгоритме.
Криптографическая защита — это защита данных с помощью криптографического преобразования, под которым понимается преобразование данных шифрованием.
Уравнение зашифрования — соотношение, описывающее процесс образования зашифрованных данных из открытых данных в результате преобразований, заданных алгоритмом криптографического преобразования.
Уравнение расшифрования — соотношение, описывающее процесс образования открытых данных из зашифрованных данных в результате преобразований, заданных алгоритмом криптографического преобразования.
Под шифром понимается совокупность обратимых преобразований множества открытых данных на множество зашифрованных данных, заданных алгоритмом криптографического преобразования.
Криптостойкостью называется характеристика шифра, определяющая его стойкость к дешифрованию. Обычно эта характеристика определяется периодом времени, необходимым для дешифрования [6].
Принцип зашифрования заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел (ПСЧ) и наложением полученной гаммы на открытые данные с помощью логической операции “исключающее ИЛИ” (т. е. обратимым образом).
Процесс расшифрования данных сводится к повторной генерации гаммы шифра при известном ключе и наложению такой гаммы на зашифрованные данные. Полученный зашифрованный текст является достаточно трудным для раскрытия в том случае, когда гамма шифра не содержит повторяющихся битовых последовательностей. По сути дела гамма шифра должна изменяться случайным образом для каждого шифруемого слова. Фактически если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором (подбором ключа). В этом случае криптостойкость определяется размером ключа.
Чтобы получить линейные последовательности элементов гаммы, используются датчики ПСЧ. К настоящему времени на основе теории групп разработано несколько типов таких датчиков.
В своей программе я использовал так называемый конгруэнтный генератор ПСЧ — наиболее доступный и эффективный. Для этого класса генераторов ПСЧ можно сделать математически строгое заключение о том, какими свойствами обладают выходные сигналы этих генераторов с точки зрения периодичности и случайности.
Этот датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений A и C. Значение М обычно устанавливается равным 2b, где b — длина слова ЭВМ в битах. Датчик имеет максимальный период М до того, как генерируемая последовательность чисел начнет повторяться. Линейный конгруэнтный датчик ПСЧ имеет максимальную длину М тогда и только тогда, когда A mod 4 = 1 и С — нечетное. В своей программе я положил А = 5, С = 27, Т(0) — пароль, вводимый пользователем.
С полученной последовательностью Т(i) поступают следующим образом:
F(i) = T(i) xor D(i) (2)
Где в (2) D(i) — последовательность открытых данных, F(i) — последовательность
зашифрованных данных [4].
Также при разработке алгоритма шифрования использовался алгоритм американского федерального стандарта на шифрование данных — Data Encryption Standard (DES).
При зашифровании входные данные шифруются по формуле (2), далее обрабатываются блоками по 64 слова (word). Эта обработка заключается в следующем: :4 слова переставляются в соответствии с таблицей, изображенной на рис. 2:
[ | 8 | 48 | 16 | 56 | 24 | 64 | 32 | |
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 | |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 | |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 | |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 | |
35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 | |
34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 | |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Рис. 2. Перестановка после зашифрования.
Как видно из данной таблицы, слово 40 входной последовательности становится 1-ым, слово 8 — 2-ым и т. д.
Процесс расшифрования данных является инверсным относительно процесса зашифрования. Т. е. данные сначала переставляются в соответствии с таблицей, изображенной на рис. 3, а затем преобразуются по формуле (2). Как легко видеть, данная перестановка является обратной по отношению к начальной.
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | |
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 | |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 | |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 | |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
Рис. 3. Перестановка перед расшифрованием