Tải bản đầy đủ (.docx) (15 trang)

Báo cáo an toàn thông tin và lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (281.33 KB, 15 trang )

ĐẠI HỌC THÁI NGUYÊN
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
-------  -------

BÁO CÁO BÀI TẬP LỚN

MÔN HỌC AN TOÀN VÀ BẢO MẬT THÔN TIN
ĐỀ TÀI

HỆ MÃ HÓA GOST
Giáo viên hướng dẫn: Th.s Trịnh Minh Đức

Nhóm 6:
STT
1
2
3
4

Thành viên
Phùng Văn Hạnh
Nguyễn Văn Hoàn
Triệu Quý Thọ
Phùng Ngọc Thịnh

CHƯƠNG I: GIỚI THIỆU VỀ GOST
1.1 Giới thiệu
Theo tiêu chuẩn GOST R 34.12-2015, thuật toán mã hóa khối GOST 28147-89 được đặt tên là chuẩn mã khối
Magma. Đây là thuật toán được phát triển vào những năm 1970 và phân loại “tối mật”, sau đó hạ xuống “mật” vào
năm 1990. Đến năm 1994, thuật toán này đã được công bố công khai.
Magma là thuật toán mã hóa khối đối xứng theo kiến trúc mạng Feistel đơn giản, xử lý với các khối rõ/ mã có kích


cỡ 64 bit và khóa có kích cỡ 256 bit.
Với chi phí cài đặt khá thấp, Magma được cài đặt và sử dụng phổ biến. Nó sử dụng các thành phần cấu trúc đơn giản
như các hộp S với kích cỡ đầu vào/ ra là 4 bit, các phép cộng module 2^32, phép dịch vòng trái và lược đồ khóa rất
đơn giản.
Khối dữ liệu được chia thành 2 nửa khối và được biến đổi qua 32 vòng mã hóa ( hàm vòng). Trong mỗi vòng, vế
phải của các thông điệp bản rõ được xử lý qua hàm F(hàm vòng). Dữ liệu được biến đổi bởi 3 phép tính mật mã:
1


cộng hoặc trừ theo module 2^32 giữa dữ liệu với khóa con, thay thế dữ liệu bởi các hộp S
và dịch vòng sang trái 11 vị trí. Đầu ra của hàm F được cộng modulo 2 ( cộng XOR) với
nửa bên trái của bản rõ, sau đó đổi chỗ 2 bên trái và phải ở vòng tiếp theo. Ở vòng cuối
cùng, thuật toán không đổi chỗ hai nửa bên trái và bên phải

Hình 1: Sơ đồ mã hóa tổng thể của thuật toán mã hóa Magma
Khóa bí mật gồm 256 bit và được biểu diễn như một dãy 8 từ (word) 32 bit: k 1, k2, k3,
k4, k5, k6, k7 và k8. Trong mỗi vòng mã hóa, một trong các word 32 bit được sử dụng như
một khóa con. Nguyên tắc tính khóa con vòng như sau: từ vòng 1 tới vòng 24 thứ tự là
thẳng, nghĩa là được sử dụng một cách lặp lại (k 1, k2, k3,k4, k5, k6, k7, k8, k1, k2, k3, k4, k5,
k6, k7, k8, k1, k2, k3, k4, k5, k6, k7, k8), từ vòng 25 tới vòng 32 thứ tự được đảo ngược (k 8, k7,
k6, k5, k4, k3, k2, k1).

Các S-box chấp nhận đầu vào bốn bit và tạo ra đầu ra bốn bit. Sự thay thế
hộp S trong chức năng tròn bao gồm tám hộp 4 × 4 S. Các hộp S phụ thuộc
vào việc triển khai thực hiện - các bên muốn bảo mật thông tin liên lạc của
họ bằng GOST phải sử dụng cùng các hộp S. Để bảo mật hơn, các hộp S có
thể được giữ bí mật. Trong tiêu chuẩn ban đầu mà GOST được chỉ định,
không có S-box nào được đưa ra, nhưng chúng được cung cấp bằng cách nào



đó. Điều này dẫn đến suy đoán rằng các tổ chức mà chính phủ muốn theo dõi
đã được đưa ra các hộp S yếu. Một nhà sản xuất chip GOST báo cáo rằng
ông đã tự tạo ra các hộp S bằng cách sử dụng bộ tạo số giả ngẫu nhiên .
Ví dụ: Ngân hàng Trung ương Liên bang Nga sử dụng các hộp S sau:
#

S-Box

1

4 10 9 2 13 8 0 14 6 11 1 12 7 15 5 3

2

14 11 4 12 6 13 15 10 2 3 8 1 0 7 5 9

3

5 8 1 13 10 3 4 2 14 15 12 7 6 0 9 11

4

7 13 10 1 0 8 9 15 14 4 6 12 11 2 5 3

5

6 12 7 1 5 15 13 8 4 10 9 14 0 3 11 2

6


4 11 10 0 7 2 1 13 3 6 8 5 9 12 15 14

7

13 11 4 1 3 15 5 9 0 10 14 7 6 8 2 12

số
8

1 15 13 0 5 7 10 4 9 2 3 14 6 11 8 12

Tuy nhiên, phiên bản mới nhất của tiêu chuẩn, GOST R 34.12-2015 , bổ sung thêm thông
số kỹ thuật S-Box còn thiếu và định nghĩa nó như sau.
#

GOST R 34.12-2015 S-Box

1

C462A5B9E 8D703F1

2

6 8 2 3 9 A 5 C 1 E 4 7 BD 0 F

3

B 3 5 8 2 FADE 1 7 4 C 9 6 0



4

C 8 2 1 D 4 F 6 7 0A5 3 E9 B

5

7 F 5 A 8 1 6 D 0 9 3 EB 4 2 C

6

5 DF 6 9 2 CAB 7 8 1 4 3 E 0

7

8 E 2 5 6 9 1 CF 4 B 0 DA 3 7

số 8 1 7 ED 0 5 8 3 4 FA 6 9 CB 2

1.2- Các định nghĩa liên quan
1.2.1-Kiến trúc mạng Feistel

Trong mật mã , một Feistel là một cấu trúc đối xứng được sử dụng trong việc
xây dựng các thuật toán mã hóa khối , đặt theo tên của nhà vật lý – nhà mật
mã người Đức Horst Feistel người đã nghiên cứu tiên phong trong khi làm
việc cho IBM (Mỹ); nó cũng thường được gọi là mạng Feistel .
Một tỷ lệ lớn mật mã khối sử dụng lược đồ, bao gồm Tiêu chuẩn mã hóa dữ
liệu (DES).
Cấu trúc Feistel có lợi thế là các hoạt động mã hóa và giải mã rất giống nhau,
thậm chí giống hệt nhau trong một số trường hợp, chỉ yêu cầu đảo ngược thứ
tự khóa . Do đó, kích thước của mã hoặc mạch cần thiết để thực hiện một

mật mã như vậy là gần một nửa.
Một mạng Feistel là một thuật toán mã hóa lặp với hàm bên trong được gọi là
hàm tròn.
Nhiều mật mã khối đối xứng hiện đại và cũng có một số thuật toán khối đối
xứng cũ dựa trên mạng Feistel (ví dụ: mật mã khối GOST 28147-89 ), và cấu
trúc và tính chất của mật mã Feistel đã được các nhà mật mã khám phá rộng
rãi
**Chi tiết xây dựng mạng feistel:
Để cho F là hàm lặp; K0,K1,…Kn là các khóa phụ cho các vòng 0,1,…n tương ứng.
Sau đó, thao tác cơ bản như sau:
Tách bản rõ thành hai phần bằng nhau, (Lo, Ro)
Với mỗi vòng i=0,1..n, tính toán


Li+1=Ri
Ri+1= Li XOR F(Ri,Ki)
Sau đó, bản mã là (Rn+1,Ln+1)
Giải mã 1 bản mã (Rn+1,Ln+1) được thực hiện bằng cách tính i=n, n-1, …., 0
Ri= Li+1
Li=Ri+1 XOR F(Li+1,Ki)
Sau đó (L0,R0) lại là bản rõ

Hình 2: Sơ đồ minh họa cả mã hóa và giải mã.
Lưu ý việc đảo ngược thứ tự khóa con để giải mã; đây là sự khác biệt duy nhất giữa mã
hóa và giải mã.
1.2.2.Phép cộng modulo

Phép toán modulo là phép toán tìm số dư của phép chia 2 số (đôi khi được
gọi là modulus).
Cho hai số dương, (số bị chia) a và (số chia) n, a modulo n (viết tắt

là a mod n) là số dư của phép chia có dư Euclid của a cho n. Ví dụ, biểu thức
"5 mod 2" bằng 1 vì 5 chia cho 2 có thương số là 2 là số dư là 1, trong khi "9
mod 3" bằng 0 do 9 chia 3 có thương số là 3 và số dư 0;
Công thức cộng modulo:
Nếu a=b(mod n) và x=y(mod n) thì a+x=b+y(mod n).


Cái này giống như phép cộng chúng ta vẫn thường làm, tức là
nếu a=b và x=y thì a+x=b+y. Ở đây, ta chỉ việc bỏ thêm cái đuôi modulo n vào mà thôi.
Ví dụ, từ 13=1(mod4) và 2=6(mod4) chúng ta có 15=7(mod4).

1.2.3.Phép dịch vòng trái

Trong dịch chuyển số học, các bit được dịch chuyển ra khỏi đầu hoặc đuôi sẽ
bị loại bỏ. Trong phép dịch chuyển số học về bên trái, các số 0 được dịch
chuyển vào bên phải; trong phép dịch chuyển số học bên phải, bit thể hiện
dấu được thêm vào bên trái, do đó dấu của số được giữ nguyên.
Ví dụ dưới đây sử dụng thanh ghi 8-bit:
00010111 (số thập phân +23) Dịch chuyển trái
= 00101110 (số thập phân +46)

Hình 3: Dịch chuyển số học trái
Những số tận cùng bên trái được dịch chuyển khỏi thanh ghi, một số 0 mới được thêm
vào cuối bên phải của thanh ghi.

Dịch chuyển số học bên trái n lần tương đương nhân với 2n (nếu giá trị đó
không gây tràn bộ nhớ)

1.2.4- Phép thao tác bit XOR
Phép toán thao tác bit XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic

bao hàm XOR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí là 1 chỉ khi bit đầu tiên là
1 hoặc nếu chỉ khi bit thứ hai là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cả hai là 1. Ở đây ta
thực hiện phép so sánh hai bit, kết quả là 1 nếu hai bit khác nhau và là 0 nếu hai bit giống
nhau. Ví dụ:
0101 (số thập phân 5)
XOR 0011 (số thập phân 3)


0110 (số thập phân 6)
(cách nhớ dễ nhất là: 2 bit giống nhau trả về 0, 2 bit khác nhau trả về 1)
Bảng chân trị cho XOR:
A

B

A XOR B

0

0

0

0

1

1

1


0

1

1

1

0


CHƯƠNG 2: VÍ DỤ THUẬT TOÁN GOST
Thuật toán GOST
+Quy trình thuật toán thực hiện 32 vòng lặp
+Sử dụng thuật toán mã hóa khối 64- bit với khóa 256 bit
+Sử dụng 8 S-box khác nhau và toán tử XOR và Circular Shift Left
Cấu trúc của GOST:
+Bộ lưu trữ khóa ( KSU) lưu trữ chuỗi 256bit bằng thanh ghi 32 bit ( K0,K1,…,K7)
+Hai trong số 32 bit đăng ký (R1, R2)
+Bộ cộng 32 bit modulo 232 (CM1)
+Toán tử thao tác bit XOR
+Khối thay thế (S) , mỗi 8 của 64 bit S-Box
+Thanh ghi dịch chuyển xoay trái (R), 11 bit.
2.1-CẤU TRÚC CỦA KHÓA
Quá trình cấu trúc khóa là kỹ thuật soạn mật khẩu để mã hóa bản rõ. Quá trình này có thể
được xem như sau
1. Khóa đầu vào, khóa 256 bit (k1, k2, k3, k4,…, k256)
2. Tạo tám KSU
K0 = (k32, …, k1)

K1 = (k64, …, k33)
K2 = (k96, …, k65)
K3 = (k128, …, k97)
K4 = (k160, …, k129)
K5 = (k192, …, k161)
K6 = (k224, …, k193)
K7 = (k256, …, k225)
A. Sinh khóa
Quá trình hình thành khóa này yêu cầu đầu vào dữ liệu với độ dài khóa là 256 bit hoặc 64
chữ số thập lục phân hoặc 32 ký tự.
Quá trình này có thể được nhìn thấy trong ví dụ sau: Giả sử khóa: "Nguyen Van Hoan
GOST Cipher 2018", sau đó quá trình hình thành khóa trên khóa là trong bảng sau.

ST
T
1
2

Coordinat
e
N
g

3
4

u
y

5


e

6
7

n

X

Y

78
10
3
117
12
1
10
1
110
32

01001110
01100111
01110101
01111001
01100101
01101110
0010000

0


8
9
10
11

V
a
n

86
97
110
32

12

H

72

13
14
15
16

o
A

N

111
97
110
32

17
18
19
20

G
O
S
T

71
79
83
84

21

32

22
23

C

I

24
25

P
H

26

E

27
28

R

29
30
31
32

2
0
1
8

67
10
5

112
10
4
10
1
114
32
50
48
49
56

01010110
01100001
01101110
0010000
0
0100100
0
01101111
01100001
01101110
0010000
0
01000111
01001111
01010011
0101010
0
0010000

0
01000011
01101001
01110000
01101000
01100101
01110010
0010000
0
00110010
00110000
00110001
00111000

Trong Bảng 1, có 32 mẩu ký tự được chuyển đổi thành chữ số nhị
phân. Nó được sử dụng như một chìa khóa để xử lý mã hóa trong thuật
toán GOST. Việc chuyển đổi sang khóa nhị phân của 256-bit là như
sau:
0100111001100111011101010111100101100101011011100010000001010110011000010
1101110001000000100100001101111011000010110111000100000010001110100111101
0100110101010000100000010000110110100101110000011010000110010101110010001
0000000110010001100000011000100111000
Khóa sẽ được chia thành tám phần.


K[0]: 01001110011001110111010101111001
K[1]: 01100101011011100010000001010110
K[2]: 01100001011011100010000001001000
K[3]: 01101111011000010110111000100000
K[4]: 01000111010011110101001101010100

K[5]: 00100000010000110110100101110000
K[6]: 01101000011001010111001000100000
K[7]: 00110010001100000011000100111000
B. Qúa trình mã hóa
Quy trình mã hóa GOST của phương thức xử lý dữ liệu văn bản thuần túy đầu vào 64 bit
hoặc 16 chữ số thập lục phân hoặc ký tự 8 đến 32 giai đoạn lặp (vòng). Giả sử chọn khóa
trên hình và chữ "ATVABMTT", sau đó quá trình mã hóa như sau:
MÃ HÓA, VÒNG 0
1. Bản rõ là : ATVABMTT

Chuyển sang nhị phân: 01000001010101000101011001000001
01000010010011010101010001010100
L(0)= 00101010001010101011001001000010
R(0) = 10000010011010100010101010000010
2. R(0) + K(0) mod 232
R(0)= 2187995778
K(0)= 1315403129

R= 3503398907 mod 2^32 = 3503398907 = 11010000110100011001111111111011
3. Chia thành 8 phần và đưa vào SBox.
1101=13 = S-Box(0)=15= 1111
0000=0 = S-Box(1)=14 =1110
1101=13 = S-Box(2)=0 =0000
0001=1 = S-Box(3)=13 =1101
1001=9 = S-Box(4)=10 =1010
1111=15 = S-Box(5)=14 =1110
1111=15 = S-Box(6)=12 =1100
1011=11 = S-Box(7)=14 =1110
4.


Nối và Xoay Trái Shift 11 lần.
11111110000011011010111011001110
 RLS(11) = 00110110101110110011101111111000
5. R(1) = R(0) XOR L(0)
R(0)=00110110101110110011101111111000

L(0)= 00101010001010101011001001000010
XOR
R(1)= 00011100100100011000100110111010
6.

L(1) = R(0) trước khi xử lý
L(1) = 10000010011010100010101010000010



MÃ HÓA, VÒNG 1
1. L(1) = 10000010011010100010101010000010
R(1) = 00011100100100011000100110111010
2. R(1) + K(1) mod 232
R(1) = 479300026
K(1) =1701716054
R= 2181016080 mod 2^32 =
2181016080=1000.0001.1111.1111.1010.1010.0001.0000
3. Chia thành 8 phần và đưa vào S-Box
1000=8 = S-Box(0)=6= 0110
0001=1 = S-Box(1) = 11= 1011
1111= 15 = S-Box(2) =11= 1011
1111=15 = S-Box(3)= 3 = 0011
1010 = 10 = S-Box(4) = 9 = 1001

1010=10=S-Box(5)= 8 = 1000
0001 = 1 = S-Box(6) = 11= 1101
0000=0=S-Box(7) =1= 0001
4. Nối và Xoay Trái Shift 11 lần.
01101011101100111001100011010001
 RLS(11) = 10011100110001101000101101011101
5. R(2) = R(1) XOR L(1)

R(1)= 10011100110001101000101101011101
L(1)= 10000010011010100010101010000010
XOR
R(2)=00011110101011001010000111011111
6. L(2) = R(1) trước khi xử lý
L(2) = 00011100100100011000100110111010

.
.
.
Quá trình này sẽ tiếp tục cho đến Vòng 31.


CHƯƠNG III. Độ an toàn và ứng dụng của GOST
3.1- Độ an toàn của GOST
Từ khi được công bố công khai năm 1994, Magma được cộng đồng mật mã trên thế
giới quan tâm, phân tích và đánh giá.
Vào năm 2010, GOST đã được đệ trình lên ISO 18033,trở thành một tiêu chuẩn mã
hóa công nghiệp trên toàn thế giới.
Cho đến năm 2011 các nhà nghiên cứu nhất trí rằng GOST rất an toàn, được tóm tắt
vào năm 2010 bằng những từ này: “mặc dù những nỗ lực mã hóa đáng kể đã chi tiêu
trong 20 năm qua, GOST là vẫn chưa bị phá vỡ ”.

Không may, gần đây đã phát hiện ra rằng GOST có thể bị phá vỡ và là một mật mã
thiếu sót sâu sắc.
Việc giải mã mới nhất của GOST cho thấy rằng nó không an toàn trong ý nghĩa lý
thuyết. Trong thực tế,độ phức tạp của dữ liệu và bộ nhớ của các cuộc tấn công được
công bố tốt nhất đạt đến mức độ thực tế, trong khi độ phức tạp thời gian của cuộc tấn
công tốt nhất vẫn là 2 192 khi có sẵn 2 64 dữ liệu.
Từ năm 2007, một số cuộc tấn công đã được phát triển chống lại việc triển khai GOST
với việc giảm số lượng khóa vòng and / or , thêm các thuộc tính đặc biệt .
Vào năm 2011, một số tác giả đã phát hiện ra nhiều lỗ hổng quan trọng hơn trong thuật
toán GOST, có khả năng tấn công GOST 32 vòng đầy đủ với các phím tùy ý lần đầu
tiên. Nó thậm chí còn được gọi là "mật mã thiếu sót sâu sắc" bởi Nicolas
Courtois . Các cuộc tấn công đầu tiên có thể giảm thời gian phức tạp từ 2 256 xuống
còn 2 228 với chi phí yêu cầu bộ nhớ khổng lồ, và ngay sau đó chúng được cải thiện tới
2 178 độ phức tạp (với chi phí 2 70 bộ nhớ và 2 64 dữ liệu).
Trong tháng 12 năm 2012, Courtois, Gawinecki, và Song cải thiện cuộc tấn công trên
GOST bằng cách tính chỉ có 2 101 vòng GOST. Isobe đã công bố một đòn tấn công
chính trên mật mã GOST đầy đủ, mà Dinur, Dunkelman và Shamir cải thiện, đạt độ
phức tạp 2222 lần cho 2 32 dữ liệu và 2 bộ nhớ 236 , và độ phức tạp 2 192 cho 2 64 dữ liệu.
Kể từ khi các cuộc tấn công làm giảm sức mạnh dự kiến từ 2 256 (chiều dài khóa) đến
2 178 hoặc như vậy, mật mã có thể được coi là bị phá vỡ. Tuy nhiên, đối với bất kỳ mật
mã khối nào có kích thước khối n bit, số lượng tối đa của bản rõ có thể được mã hóa
trước khi nhập lại phải diễn ra là 2 n / 2 khối, do birthday paradox , và không có cuộc tấn
công nào nói trên yêu cầu ít hơn 2 32 dữ liệu.
Một số kết quả về thám mã vi sai
Cho tới nay, có một số kết quả nổi bật về việc áp dụng thám mã vi sai lên thuật toán
GOST 28147-89 như sau:
Kết quả của Seki và Kaneko [4]:
Nhóm tác giả chỉ ra khả năng tấn công GOST 28147-89 với số vòng rút gọn sử dụng
tập của các đặc trưng vi sai. Trong trường hợp sử dụng bộ S-hộp đã xác định cho Ngân
hàng Trung ương Liên bang Nga, khi đó trung bình cần 251 bản rõ lựa chọn thì nhận

được khóa của 13 vòng GOST 28147-89. Trường hợp mà các khóa tạo ra xác suất đặc
trưng vi sai là cao nhất, thì GOST 28147-89 17 vòng có thể bị tấn công. Với 256 bản rõ
lựa chọn, ta có thể khôi phục được khóa của GOST 28147-89 21 vòng.


Các tác giả cũng chỉ ra tấn công này có thể áp dụng được với các S-hộp được sinh ngẫu
nhiên. Trung bình 12 vòng của GOST có thể bị tấn công với một tập của các đặc trưng vi
sai và 19 vòng của GOST có thể bị tấn công khi kết hợp với tấn công khóa quan hệ.
Kết quả của Babenko và cộng sự [1]:
Babenko và cộng sự thực hiện phân tích tìm kiếm đặc trưng vi sai có xác suất cao cho
mã pháp GOST 28147-89. Nhóm tác giả đưa ra chiến lược tìm kiếm bằng cách hạn chế
không gian tìm kiếm. Một khẳng định quan trọng đóng vai trò cơ sở cho tấn công là sai
khác qua phép cộng modulo 232 sẽ không thay đổi với xác suất ½.
Tấn công vi sai cải tiến của Courtois và
Misztal [2]:
Nhóm Courtois và cộng sự nghiên cứu đưa ra một khái niệm rộng hơn là vi sai gộp
(Aggregated Differential) là tập các đặc trưng
vi sai có thể mà có sai khác đầu vào a bất kỳ và sai khác đầu ra b bất kỳ. Xác suất gắn với
nó là xác suất cao nhất của các đặc trưng trong tập đó (thỏa mãn theo các mẫu sai khác
đầu vào và sai khác đầu ra cụ thể).
Khi đó, việc tìm kiếm các đặc trưng vi sai được hạn chế với việc tìm xác suất lớn nhất
cho vi sai gộp. Courtois hạn chế với vi sai gộp dạng (∆, ∆) là tập sai khác lên 64 bit có từ
1 - 14 bit tích cực theo mẫu mặt che. Có tổng số 214 - 1 sai khác trong tập này. Các đặc
trưng vi sai mà Courtois và Misztal tìm được có xác suất cao hơn so với kết quả trước đó.
Thêm vào đó, các tác giả đề xuất sử dụng tấn công vi sai bội (nghĩa là sử dụng nhiều vi
sai mà có cùng mẫu sai khác trong một vi sai gộp) lên GOST 28147-89. Như vậy, khả
năng tấn công có thể sẽ hiệu quả hơn.
Tuy nhiên, tấn công này chưa được cộng đồng thế giới đánh giá cao về tính chính xác
và thực tế. Bởi với một tập vi sai cụ thể (ví dụ: 0x70707070, 0x07070707) theo đánh giá
lý thuyết có giá trị xác suất là 2-160 qua 32 vòng mã, nhưng theo đánh giá của Courtois

thì giá trị này chỉ là 2-40. Dẫn tới, có thể có rất nhiều dự tuyển nhầm (false positives).
Trong thực tế, tấn công sẽ không thể xử lý với các trường hợp này.
Một số kết quả mã thám vi sai khóa có quan hệ
Các khóa tấn công có quan hệ là mô hình tấn công không thực tế , vi chúng đòi hỏi nắm
được quan hệ giữa các cặp khóa được sử dụng. Tuy nhiên, theo giả thiết này
Tấn công của Isobe [10]
Isobe là người đầu tiên đưa ra phương pháp thám mã lên GOST mà không sử dụng các
lớp khóa yếu (chỉ dùng 1 khóa mã). Tấn công gặp ở giữa cơ sở lên 8 vòng GOST:
Giả sử ta có hai cặp đầu vào/ra 8 vòng của GOST là ( I , O) và ( I *, O*) . Tấn công
MITM cơ sở lên 8 vòng GOST sử dụng hai cặp này như sau:
Bước 1: Với mỗi giá trị có thể của khóa k1 − k4 (có tất cả 2128 giá trị) tính:
U = FK [1, 4]( I ) U * = FK [1, 4]( I *)
Lưu U và U* vào một danh sách, sắp xếp chúng tương ứng với 128 bit khóa k1 − k4 đã
sử dụng. Gọi mỗi phần tử của danh sách này là
(U , U*)k –k . Số phần tử của danh sách này là
1 4


128 phần tử.
Bước 2: Với mỗi giá trị có thể của k5 − k8 , tính
V  FK −1[5,8](O) V *  FK −1[5,8](O*)
Ở đây, phép Fk −1[5,8](O) là phép giải mã O, Fk −1[5,8](O*) là phép giải mã
O*. Lưu V và V* vào một danh sách, sắp xếp chúng tương ứng với 128 bit khóa k5
− k8 đã sử dụng. Gọi mỗi phần
tử của danh sách này là (V, V *)k5 −k8 . Số phần
5 8
phần
tử của danh sách này là 2128 tử.
Bước 3: So sánh (so khớp) các giá trị
(U , U*)k1 −k4 thu được ở bước 1 và (V, V *)k5 −k8 thu được tại bước 2. Nếu (U , U*)k1 − k4 =

(V, V *)k5 − k8 thu được một đề xuất cho khóa đầy đủ 256 bit k1 – k8 ứng với hai giá trị này.
Khôi phục lại khóa chính xác bằng cách sử dụng thêm một số cặp rõ/mã 32 vòng đã
biết.
2

Độ phức tạp về thời gian: Tổng độ phức tạp thời gian của tấn công cỡ O(2128).
Độ phức tạp về bộ nhớ: độ phức tạp về bộ nhớ của tấn công là khoảng 2128 từ (word)
256 bit, dùng để lưu 2128 giá trị (U , U*)k1 −k4 trong
bước 1, 2128 giá trị (V, V *)k −k trong bước 2.
5 8
Tấn công phản xạ - gặp ở giữa (R-MITM):
Dựa trên ý tưởng về tấn công phản xạ của Kara, Isobe đưa một tấn công kết hợp giữa
phản xạ và gặp ở giữa (tấn công R-MITM). Ở đây, ta giả sử áp dụng tấn công phản xạ để
đoán được bản mã trung gian ở giữa 8 vòng, thì ta có thể áp dụng tấn công gặp nhau ở
giữa với 4 vòng phía trước hoặc phía sau.
Giả sử ta có cặp đầu vào và đầu ra của 4 vòng, với mỗi lần đoán giá trị của khóa k 1 –
k2, ta có thể tính các giá trị trung gian sau vòng thứ 2 và tìm các khóa k 3 – k4 mà thỏa mãn
cặp đầu vào/ra ở trên.
Trong [11], Dinur đã gọi các khóa này là các khóa tương đương. Có tất cả 264 giá trị
khóa có thể k1 – k2 mà tạo ra cặp đầu vào/ra 4 vòng ở trên.
3.2- Ứng dụng của GOST
Được triển khai và sử dụng rộng rãi trong:
-Crypto++
-Mở SSL
-RSA Labs,..
-Ngân hàng trung ương LB Nga
-Các ngân hàng lớn khác ở Nga
CHƯƠNG 4: CÀI ĐẶT
4.1- Môi trường cài đặt
+Sử dụng Open Source

+Phần mềm cài đặt: NetBeans
+Ngôn ngữ: Java



×