Задачи обеспечения секретности и целостности данных и ключей при краткосрочном хранении

При разработке программного обеспечения по защите данных с использованием криптографических алгоритмов необходимо уделять особое внимание решению следующих задач:

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

2. Уничтожение файла подкачки. Большинство систем виртуальной памяти не предпринимают серьезных попыток по шифрованию данных при переносе их в файл подкачки, а сам файл может стать достоянием противника.

3. Очистка кэша - в нем могут храниться копии секретных данных. В принципе опасность утечки данных из кэша невелика, так как к нему имеет доступ только код операционной системы. Степень безопасности определяется степенью доверия к операционной системе.

4. Предупреждение удерживания данных в памяти – простое перезаписывание данных не всегда удаляет их из памяти. Оперативная память может не полностью стираться при выключении питания. Доступ к ранее «удаленным» данным может быть осуществлен в недокументированных тестовых режимах. Частичным решением проблемы является метод boojum. При этом методе данные в оперативной памяти хранятся не в явном виде. Для хранения данных m используется случайная величина R той же длины и в два разных участка памяти заносятся R и R Å m. Для вызова данных производится вычисление m = R Å (R Å m). Значение R меняется, например каждые 100 секунд.

5. Предупреждение доступа других программ – наиболее сложно решаемая проблема. Windows дает возможность подключения отладчика к любому процессу. UNIX-системы позволяют создавать дампы памяти, а супервизоры вообще могут получить прямой доступ к любому участку памяти.

6. Обеспечение целостности данных – в основном проблема аппаратного обеспечения. В компьютере с 1 Гб памяти появление случайной ошибки данных в памяти следует ожидать каждые 32 часа.