64- - , . -, 128- -. , -, 264 , , , , . (Secure Hash Standard, SHS), 160- -. , 280 .
-, -, .
1. - -.
2. .
3. -.
4. - , - (1) - (3).
5. (1)-(4) -.
MD-
, , , . - . - . . - , . , - i,
h i, =f(i, h i -1)
- . - - .
3.1 -
. , , -. MD- (MD - Message Digest). -.
MD4
MD4 - -, , 128- -, .
, :
. -. .
. MD4 - , , .
. MD4 . 32- .
. MD4 , , .
|
|
. MD4 ( Intel), .
MD4
b , MD. b 0, 8.
:
MD 5 :
1:
, ( ) 448 512 .. 64 512 . , .
:
- 1, 0. 1 , 512.
2: :
64 b ( ) . 2^64 ( ), 64 .
, 512 (16 32 ), :
N- 16
3: MD
(A,B,C,D), MD. :
word A: 01 23 45 67word B: 89 ab cd efword C: fe dc ba 98word D: 76 54 32 104: 16
, 3 , .
F(X,Y,Z) = XY v not(X) ZG(X,Y,Z) = XY v XZ v YZH(X,Y,Z) = X xor Y xor ZF X Y, Z
G X,Y,Z
H xor,
: /* 16 . */ For i = 0 to N/16-1 do /* i X. */ For j = 0 to 15 do X[j] = M[i*16+j]. end /* j */ /* A AA, B BB, C CC, D DD. */ AA = A BB = B CC = C DD = D /* 1. */ /* [abcd k s] a = (a + F(b,c,d) + X[k]) <<< s. */ /* 16 . */ [ABCD 0 3] [DABC 1 7] [CDAB 2 11] [BCDA 3 19] [ABCD 4 3] [DABC 5 7] [CDAB 6 11] [BCDA 7 19] [ABCD 8 3] [DABC 9 7] [CDAB 10 11] [BCDA 11 19] [ABCD 12 3] [DABC 13 7] [CDAB 14 11] [BCDA 15 19]/* , ABCD , k 0 15, s {3,7,11,19}.*/
/* 2. */ /* [abcd k s] a = (a + G(b,c,d) + X[k] + 5A827999) <<< s. */ /* 16 . */ [ABCD 0 3] [DABC 4 5] [CDAB 8 9] [BCDA 12 13] [ABCD 1 3] [DABC 5 5] [CDAB 9 9] [BCDA 13 13] [ABCD 2 3] [DABC 6 5] [CDAB 10 9] [BCDA 14 13] [ABCD 3 3] [DABC 7 5] [CDAB 11 9] [BCDA 15 13]
/* , ABCD , k 0 15, s {3,5,9,13}.*/
/* 3. */ /* [abcd k s] a = (a + H(b,c,d) + X[k] + 6ED9EBA1) <<< s. */ /* 16 . */ [ABCD 0 3] [DABC 8 9] [CDAB 4 11] [BCDA 12 15] [ABCD 2 3] [DABC 10 9] [CDAB 6 11] [BCDA 14 15] [ABCD 1 3] [DABC 9 9] [CDAB 5 11] [BCDA 13 15] [ABCD 3 3] [DABC 11 9] [CDAB 7 11] [BCDA 15 15]/* , ABCD , s {3,9,11,15}, k */
|
|
6E..A1 32 3 .
5:
MD A,B,C,D A D.
(128 )
MD4. , . MD5.
MD5
MD5 - MD4. MD4, , MD5 128- -.
MD5
MD5 512- , 16 32- . 32- , 128- -.
-, , 64 , 512. 1, , . , 64- (, ). , 512 ( ), , . :
= 0x01234567
= 0x89abcdef
= 0xfedcba98
D = 0x76543210
.
. , 512- .
: , b, D d.
. 16 . , b, d. , . , b, d. ,b, d. , ( - ).
3.2 - MD5
3.3 - MD5
, , X, Y Z , . F - : X, Y, Z. - .
Mj j- ( 0 15), a <s s , :
FF(a,b,c,d,Mj,s,ti) a = b + ((a + ¥(b,c,d) + ,- + tt) <s)
GG(a,b,c,dMj,s,ti) a = b + ((a + G(b,c,d) + Mj + tt) <s)
HH(a,b,c,d,Mj,s,ti) a = b + ((a + H(b,c,d) + M,- + tt) <s)
II{a,b,c,dMj,s,ti) a = b + ((a + I(b,c,d) + Mj + tt) <s)
.
1:
, ( ) 448 512 .. 64 512 . , . :
- 1, 0. 1 , 512.
2: :
64 b ( ) . 2^64 ( ), 64 .
|
|
, 512 (16 32 ), :
, N- 16
3: MD
(A,B,C,D), MD. :
word A: 01 23 45 67word B: 89 ab cd efword C: fe dc ba 98word D: 76 54 32 104: 16
, 3 , .
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
F X Y, Z
G X,Y,Z
H xor,
T[1..64], . T[i]= 4294967296 * abs(sin(i)), i .
: 16 . */ For i = 0 to N/16-1 do /* i X. */ For j = 0 to 15 do X[j] = M[i*16+j]. end /* j */ /* A AA, B BB, C CC, D DD. */ AA = A BB = B CC = C DD = D /* 1. *//* [abcd k s i]
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* 16 . */
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* 2. */
/* [abcd k s i]
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* 16 . */
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* 3. */
/* [abcd k s t]
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* 16 . */
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* 4. */
/* [abcd k s t]
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* 16 . */
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
/* ABCD */ A = A + AA B = B + BB C = C + CC D = D + DD end /* i */5:
MD A,B,C,D A D (128 ).
MD5
MD5 MD4:
1. .
2. .
3. G 2 , G .
4. . .
5. , 2 3, .
6. . , , , .
|
|
MD2
MD2 - 128- -, . MD5 . MD2 . pi. So, S1, S2,, S255 .
:
1. i , i , 16 .
2. 16 .
3. 48- : , \, 2,..., 1. 16 X , 16 X 16 , 16 X XOR 16 X.
4. :
t = 0
For j = 0 to 17
For = 0 to 47
t = Xk XOR St,
Xk=t
t = (t +j) mod 256
5. 16 X 16 , 16 X XOR 16 X. (4). (3) (4) 16 .
6. 16 X.
MD2 , -.
(Secure Hash Algorithm, SHA)
(Secure Hash Algorithm, SHA), (Digital Signature Algorithm, DSA). 264 SHA 160- , . , DSA, . , , . , , SHA. SHA , , , . , , , . , SHA, . MD4. SHA .
SHA 160- -, , MD5
SHA
-, , 512 . , MD5: 1, , 64 , 512, 64- .
32- ( MD5 , 160- -):
= 0x67452301
= 0xefcdab89
= 0x10325476
D = 0x10325476
E = 0xc3d2elf0
. 512- , .
: , b, , D d .
20 ( MD5 16 ). , b, , d , MD5. SHA :
, t=0 19 , t=20 39
, t=40 59 , t=60 79 :
t = 05827999, t=0 19
t = 0x6ed9ebal, t=20 39
t = 0x8flbbcdc, t=40 59
t = 0xca62cld6, t=60 79
( , , :05827999 = 21/2/4, 0x6ed9ebal = 31/2/4, 0x8flbbcdc = 51/2/4, 0xca62cld6 = 101/2/4; 232)
16 32- ( 15) 80 32- (W0 no W79) :
Wt = Mt, t = 0 15
, t=16 79
t - ( 1 80), W, t- , <<< - s , :
|
|
FOR t = 0 to 79
TEMP = ( <<<5) +ft(b,c,d) + e+Wt + Kt
e = d
d = c
c = b <<< 30
b = a
a = TEMP
Ha 3.4 . , MD5 .
3.4 - SHA.
, b, , d , , D , , . , , D .
SHA
SHA MD4, 160- -. .
1. - :
- MD2 - < > MOD 4 =0;
- MD4 - < > MOD 4 =1;
- MD5 - < > MOD 4 =2;
- SHA - < > MOD 4 =0;
2. .
:
1. ?
2. -?
3. ?
4. -?
5. -?
4
: . RSA. - . RSA.
: . RSA, RSA.
, . , : , , .. , .
:
;
, , ;
, ( );
;
;
;
, , ;
;
, ;
;
, , .
- - . , , , - . .. - .
, , .
, , . , . , . .
. . , .
, : x f(x), y = f(x), x.
. .
. , , .
1. :
, :
k .
( k ).
4.1 -
:
1) :
- : k ;
- ( , , ).
2) :
- ;
- k, ( ) , . k .
: , ; .
, :
1. .
2. . ( ) .
. , RSA - .
:
1. .
2. .
3. .
, .
1. .
2. . , . , . .
3. (- ).
RSA.
, - RSA, 1977 : , .
, , . ( ), RSA . , .
RSA:
1. Q N=PQ M=(P-1)(Q-1).
2. D, , , DE = 1 MOD .
3. D N , .
4. S - , , , (1, N), D N S'=(S**D) MOD N.
5. , N, S =(S'**E) MOD N = (S**(D*E)) MOD N.
, N D, .
RSA . RSA , ( ).
RSA , SSL, S-HHTP, S-MIME, SWAN, STT PCT.
, .
1. ( .)
- ,
xp -1 = 1 (mod p) (1)
, ,
xp = (mod p) (2)
.
. (1) (2) ÎZ p. .
xp =(x -1+1) p = å C(p,j)(x -1)j=(x -1) p +1 (mod p),
0£j£ p
C(p,j)=0(mod p) 0<j< p. .
. j(n) , n n.
n | |||||||||||
j(n) |
2. n = pq, (p q - ),
j(n)=(p -1)(q -1).
3. n = pq, (p q - ) - q,
x j(n) = 1 (mod n).
. n = pq, (p q - ) j(n),
e,n: x x e (mod n)
Z n.
, - j(n), d, ,
ed = 1 (mod j(n)) (3)
RSA.
n = pq, p q - . e d (8.2.3), e,n d,n Zn. e,n, d,n , e, d, p, q. e n, p q , e,n ; d,n n n. p q - , n . RSA.
i p i q i (ei, di), j(ni), n i= p i q i. {(ei,ni)}.
,
x =(x 0, x 1,..., x n-1), x ÎZn, 0 £ i < n,
n i:
N = c0+ci n i+....
i j, n Edi,ni:
N Edi,ni n = n .
j n , Eei,ni:
N Eei,ni n = Eei,ni Edi,ni n = n.
, Edi,ni Eei,ni, n = p i q i. n =10100 .
, RSA.
: . ( ).
1. p =3 q =11.
2. n =3*11=33.
3. (p -1)(q -1)=20. , d, 20, , d =3.
4. . , (*3) (mod 20) = 1, 7.
5. : 1, ®2, Ѯ3. (3,1,2). {7,33}.
1 = (37) (mod 33) = 2187 (mod 33) = 9,
2 = (17) (mod 33) = 1 (mod 33) = 1,
3 = (27) (mod 33) = 128 (mod 33) = 29.
6. (9,1,29) {3,33}:
1 = (93) (mod 33) = 729 (mod 33) = 3,
2= (13) (mod 33) = 1 (mod 33) = 1,
3 = (293) (mod 33) = 24389 (mod 33) = 2.