Безопасность программного обеспечения компьютерных систем


Криптопрограммирование - часть 6


Предположим, что файл F, аутентифицированный маркированным деревом, подвергается операции замены, то есть j-тый блок файла F заменен блоком F(?). Сначала необходимо проверить, что путь от требуемого текущего значения до корня дерева корректен. Для этого необходимо выполнить следующий алгоритм.

Пусть u0,...uh - путь из корня u0=? к j-тому концевому узлу обозначается как uh. Тогда:

  • проверить, что ВЕР? принимает Т(?) как корректный АП строки Т(?)=АУТa((L1,L2,L3),Id,счт), где Id - название документа и счт - текущее значение счетчика (связанного с этим документом);

  • для i=1,...,h-1 проверить, что ВЕР? принимает Т(ui) как корректный АП строки ((L1,L2,L3),рзм), где Li - метка i-того дочернего узла w (в случае, если w имеет только два дочерних узла, то L3=?) и рзм - число узлов в поддереве с корнем w));

  • проверить, что ВЕР? принимает Т(uh) как корректный АП блока F[j]

  • .

Если все эти проверки успешны, тогда совокупный АП файла F получается следующим образом:

  • установить Т(uh):=АУТ(F(?));

  • для i=h-1,...,1 установить Т(ui):=АУТ(Т(ui1),Т(ui2),Т(ui3));

  • установить Т(?):=АУТ((Т(ui0),Т(ui1),Т(ui1)),Id,счт+1).

Следует подчеркнуть, что значения Т на всех других вершинах (то есть, не стоящих на пути u0,...,uh) остаются неизменяемыми.

Следует отметить, что предлагаемая инкрементальная схема маркирования имеет дополнительное свойство, заключающееся в том, что она безопасна даже для противника который может "видеть" как отдельные аутентификационные признаки, так и все маркированное дерево и может даже "вмешиваться" в эти признаки. Для каждого файла, пользователь должен хранить в локальной безопасной памяти ключ x схемы подписи, имя файла и текущее значение счетчика. Всякий раз, когда пользователь хочет проверить целостность файла, он проверяет корректность маркированного дерева открытым образом.

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




Начало  Назад  Вперед



Книжный магазин