Пример простейшей программы шифрования области памяти методом гаммирования с использованием датчика псевдослучайных чисел приведен в приложении
Шифрование с помощью датчика ПСЧ является довольно распространенным криптографическим методом. Во многом качество шифра, построенного на основе датчика ПСЧ, определяется не только и не столько характеристиками датчика, сколько алгоритмом получения гаммы. Один из фундаментальных принципов криптологической практики гласит: даже очень грозно выглядящие шифры могут быть чувствительны к простым воздействиям. Кроме этого, шифры могут быть легко раскрыты, когда не применяются меры предосторожности. В качестве иллюстрации данного принципа рассмотрим проблему известного исходного текста.
Перспективный с практической точки зрения шаг на пути раскрытия любого зашифрованного файла — получить часть некоторого исходного текста и соответствующую ему часть зашифрованного. Общеизвестно, что стандартная информация, например, гриф «СОВ. СЕКРЕТНО» часто является уязвимой. Предположим, возможность добавлять записи к файлу и проверять зашифрованный файл, до и после добавления известной записи. Если гамма шифра представляет собой последовательность псевдослучайных чисел, каждое из которых может быть сгенерировано из предыдущего, то весь исходный текст можно легко восстановить из зашифрованного текста. Рассмотрим последовательность Р = р(1),..., р(n) из n исходных слов в файле, к которым после у-го слова, 1<у<п, добавляется новый элемент текста, содержащий w слов. В результате получается обновленный текст
р' = р'(1),..„ p'(n+w).
Очевидно, что
p'(i) = p'(i), i = 1, 2, ..., у,
p(i) = p'(i+w),..„ i = y+1, y+2, ..„ п.
Здесь p'(y+l), ... ,p'(y+w) являются известными словами исходного текста.
Пусть G = g(I), g(2) ...— последовательность слов гаммы шифра, используемых для шифрования как Р, так и Р'. Тогда зашифрованные тексты для Р и Р' можно представить в виде
С = с¢(1), .... ,с¢(n),
где с(i) = р(i) (+)gf(i), i= 1, 2, .... л;
С' = с'(1),..., с'(п),
где с'(i) = p'(i) (+) g'(i), i = 1, 2, ..., n+w.
Теперь можно вычислить слово гаммы, которое использовалось для закрытия известного исходного текста:
g(y+1)= p'(y+i) (+) c'(y+i), i = 1 ,2 ,..., w.
Но эти слова гаммы использовались для шифрования Р. Следовательно,
р(у+1)= g(y+i) (+) с(у+i), i = 1, 2,..., w.
Видно, что дешифрование можно повторить, подставив y+w вместо у. Таким образом, все сегменты текста после позиции y могут быть дешифрованы. Легкое дешифрование текста стало возможным в связи с тем, что алгоритм шифрования не зависит ни от длины шифруемого файла, ни от содержимого самого файла. Но более или менее серьезное усовершенствование алгоритма получения гаммы шифра приводит к существенному повышению криптостойкости. Хорошие результаты дает метод гаммирования с обратной связью, который заключается в том, что для получения сегмента гаммы используется контрольная сумма определенного участка шифруемых данных. Например, если рассматривать гамму шифра как объединение непересекающихся множеств H(j), то процесс шифрования данных можно представить следующими шагами:
• определение контрольной суммы участка данных, соответствующего сегменту гаммы Н(1);
• генерация сегмента гаммы Н(1)и наложение его на соответствующий участок шифруемых данных;
• генерация с учетом контрольной суммы уже зашифрованного участка данных следующего сегмента гаммы Н(2) (обычно контрольная сумма используется в процессе генерации порождающего числа для очередного сегмента гаммы);
• подсчет контрольной суммы участка данных, соответствующего сегменту гаммы Н(2), и наложение этого сегмента гаммы на соответствующий участок шифруемых данных и т. д.
Под контрольной суммой здесь понимается функция f(t( 1), ..., t(n)), где t(i) - i-e слово шифруемых данных. Разумеется, метод гаммирования с обратной связью может быть реализован с помощью другого алгоритма. Здесь изложены только общие принципы метода обратной связи (использование некоторых характеристик шифруемых данных для генерации гаммы).
ЗАДАНИЕ.
1.Разработать процедуру побайтного шифрования-дешифрования данных в оперативной памяти компьютера.
2. Исследовать характеристики датчика ПСЧ.
3. Провести анализ работы разработанной программы.