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


Краткое описание криптографических средств контроля целостности и достоверности программ - часть 8


Подпись RSA: Вход: Числа n, p, q, где p и q - большие l - разрядные простые числа, n=pq. Открытый ключ p=(e,n), секретный ключ s=d, такой, что ed1(mod ?(n)) и наибольший общий делитель НОД(e,?(n))=1, где ?(n)=(p-1)(q-1).

Генерация ключей:(d,(e,n))=Ak(l,b). Подпись:As: 1.md(mod n)c, где c - подпись

кода программы m. Верификация:Ap: 1.[c*]e(mod n)m**, 2.если m**=m*, подпись верна.

Подпись Эль-Гамаля: Вход: Числа p и g, где p - простое l - разрядное число, а g - первообразный корень по модулю p. Секретный ключ s=d, открытый ключ p=e, такой, что egd (mod p), m - подписываемый код программы.

Генерация ключей:(d,(e,g,p))=Ak(l,b).

Подпись: As: 1.rgk(mod p), где kRZp-1;

2.находится такое c, что

m[kc+dr](mod p-1),

где (c,r) - подпись кода m.

Верификация:Ap: 1.если gm*=errc*(mod p),
то подпись верна.

Подпись Фиата - Шамира: Вход: Числа n, p, и q, где p и q большие l - разрядные простые числа, открытый ключ p есть вектор (v1,v2,...,vk), где vj - квадратичные вычеты по модулю n, j= , секретный ключ p есть вектор (s1,s2,...,sk), где каждый sj - наименьший квадратный корень из v-1j, m - подписываемый код, f - псевдослучайная функция. Генерация ключей: ((s1,s2,...,sk),(v1,v2,...,vk))=Ak(l,b).

Подпись: As: 1.xi r2i(mod n), где {r1,r2,...,rk}RZn;

2.вычисляется значение

a=f(m,x1,x2,...,xt);

3.выбирается первые kt битов числа a как
матрица

4.вычисляется:

где

Тогда (eij,yi) - подпись кода m.

Верификация:

2.если первые kt битов значения

функции f(m*,z1,z2,...,zt) равны e*ij,

подпись верна.

Подпись стандарта ГОСТ Р 34.10-94. Вход: Числа p, g и q где p - простое l -разрядное число, g - первообразный корень по модулю p, а q - большой простой делитель p-1. Пусть также gq1(mod p), g1. Секретный ключ подписи x (1 < x < q) и открытый ключ ygx(mod p).

Генерация ключей: (x,(g,p,q,y))=Ak(l,b).
Подпись: Ax: 1.r[gk(mod p)](mod q), где kRZq.

2.s[xr+km)](mod q), где m=h(M) -рассматривается как значение хэш-функции h, соответствующей отечественному стандарту на функцию хэширования сообщений ГОСТ Р 34.11-94. Таким образом, пара (r,s) - есть подпись кода программы M.

Верификация: Ay: 1.vm-1(mod q).

2.u[gsvy-rv(mod p)](mod q); 3.Если u=r, то (r,s) - есть подпись кода программы M, где m=h(M).

<




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



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