Защита информации цифровая подпись — страница 13

  • Просмотров 5130
  • Скачиваний 185
  • Размер файла 76
    Кб

Аддитивность и коммутативность по числу прокручиваний: Rk+k'(T)=Rk'(Rk(T)) = Rk(Rk'(T)). 2.    Односторонность или необратимость прокрутки: если известно только некоторое значение функции Rk(T), то вычислительно невозможно найти значение Rk'(T) для любого k'<k – если бы это было возможно, в нашем распоряжении был бы способ определить ключ шифрования по известному входному и выходному блоку алгоритма EK. что противоречит предположению о

стойкости шифра. Теперь покажем, как указанную операцию можно использовать для подписи блока T, состоящего из nT битов. Секретный ключ подписи kS выбирается как произвольная пара блоков k0, k1, имеющих размер блока данных используемого блочного шифра, т.е. размер ключа выработки подписи равен удвоенному размеру блока данных использованного блочного шифра: |kS|=2n; Ключ проверки подписи вычисляется как пара блоков, имеющих размер

блоков данных использованного алгоритма по следующим формулам: kC=(C0,C1) = (R2nT–1(K0), R2nT–1(K1)). В этих вычислениях также используются несекретные блоки данных X0 и X1, являющиеся параметрами функции «односторонней прокрутки», они обязательно должны быть различными. Таким образом, размер ключа проверки подписи также равен удвоенному размеру блока данных использованного блочного шифра: |kC|=2n. Вычисление и проверка ЭЦП будут выглядеть

следующим образом: Алгоритм SignTвыработки цифровой подписи для nT-битового блока T заключается в выполнении «односторонней прокрутки» обеих половин ключа подписи T и 2nT–1–T раз соответственно: s=SignT(T)=(s0,s1)=. Алгоритм VernT проверки подписи состоит в проверке истинности соотношений , которые, очевидно, должны выполняться для подлинного блока данных T: R2nT–1–T(s0)=R2nT–1–T(RT(k0))=R2nT–1–T+T(k0)=R2nT–1(k0)=C0, RT(s1)=RT(R2nT–1–T(k1))=RT+2nT–1–T(k1)=R2nT–1(k1)=C1. Таким

образом, функция проверки подписи будет следующей: Покажем, что для данной схемы выполняются необходимые условия работоспособности схемы подписи: Предположим, что в распоряжении злоумышленника есть nT-битовый блок T, его подпись s=(s0,s1), и ключ проверки kC=(C0,C1). Пользуясь этой информацией, злоумышленник пытается найти правильную подпись s'=(s'0,s'1) для другого nT-битового блока T'. Для этого ему надо решить следующие уравнения

относительно s'0 и s'1: R2nT–1–T'(s'0)=C0, RT'(s'1)=C1. В распоряжении злоумышленника есть блок данных T с подписью s=(s0,s1), что позволяет ему вычислить одно из значений s'0,s'1, даже не владея ключом подписи: (a)    если T<T', то s'0=RT'(k0)=RT'–T(RT(k0))=RT'–T(s0), (b)    если T>T', то s'1=R2nT–1–T'(k1)=RT–T'(R2nT–1–T(k1))=RT–T'(s1). Однако для нахождения второй половины подписи (s'1 и s'0 в случаях (a) и (b) соответственно) ему необходимо выполнить прокрутку в обратную