MỤC LỤC
MỤC LỤC ............................................................................................................1
LỜI NÓI ĐẦU ......................................................................................................3
CHƯƠNG 1 ..........................................................................................................4
CƠ SỞ TOÁN HỌC TRONG LÝ THUYẾT MÃ HÓA THÔNG TIN ..................4
1.1. Những kiến thức cơ bản ...............................................................................4
1.1.1. Khái niệm về thuật toán........................................................................4
1.1.2. Độ phức tạp của thuật toán ..................................................................4
1.2. Số nguyên tố................................................................................................6
1.3. Thuật toán Euclid.........................................................................................7
1.4. Phép tính đồng dư và phương pháp tính đồng dư .......................................10
1.4.1. Phép tính đồng dư ..............................................................................10
1.4.2. Tính toán đồng dư của luỹ thừa bậc lớn .............................................11
1.4.3. Định lý trung quốc về phần dư............................................................12
1.5. Thuật toán lũy thừa nhanh..........................................................................15
CHƯƠNG 2 ........................................................................................................ 17
MÃ HÓA VÀ HỆ MÃ HÓA CÔNG KHAI ........................................................ 17
2.1. Giới thiệu chung về mã hóa. ......................................................................17
2.2. Mục tiêu của an toàn bảo mật thông tin......................................................18
2.3. Một số thuật ngữ và khái niệm...................................................................19
2.3.1. Khái niệm hệ mật mã..........................................................................19
2.3.2. Khái niệm mã hoá và giải mã .............................................................19
2.4. Thuật toán mã hóa đối xứng (Symmetric Algorithms)................................20
2.5. Thuật toán mã hóa phi đối xứng(Puclic-key-Algorithms)...........................21
2.6. Thám mã (Cryptanalyis) ............................................................................23
2.7. Một số hệ mã cổ điển.................................................................................25
2.7.1. Mã dịch vòng......................................................................................25
2.7.2. Mã thay thế.........................................................................................26
2.7.3. Mã Affine............................................................................................27
2.7.4. Mã Vigenere.......................................................................................29
2.7.5. Hệ mã Hill..........................................................................................30
3.6.2. Sơ đồ chữ ký RSA ...............................................................................58
3.6.3. Tấn công chữ ký điện tử......................................................................60
CHƯƠNG 4 ........................................................................................................ 62
CÀI ĐẶT CHƯƠNG TRÌNH.............................................................................. 62
KẾT LUẬN......................................................................................................... 66
Nhận xét của giáo viên: .........................................Error! Bookmark not defined.
2
LỜI NÓI ĐẦU
Từ xưa đến nay thông tin luôn là yếu tố quan trọng trong các hoạt động của
đời sống con người. Trong thời đại ngày nay, các phương thức truyền đạt thông tin
ngày càng đa dạng và phát triển. Với sự ra đời của máy tính và mạng máy tính,
việc trao đổi thông tin đã trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn.
Nhưng kèm theo đó là các nguy cơ xâm phạm thông tin cũng ngày càng tăng. Nắm
bắt được thông tin nhiều khi mang ý nghĩa quyết định, sống còn đặc biệt trong các
lĩnh vực: kinh tế, chính trị, an ninh, quốc phòng…Vì vậy việc bảo mật thông tin đã,
đang và sẽ là vấn đề được đặt ra rất cấp bách. Để giải quyết vấn đề đó các hệ mật
mã đã ra đời. Từ các hệ mật mã sơ khai cổ điển như: Hệ mã Dịch Vòng, hệ mã
Hill, hệ mã Affine,…, cho đến các hệ mật mã hiện đại, phức tạp như hệ mã DES.
Các hệ mật mã công khai như hệ mã RSA, hệ mã Ba Lô. Nhưng đi kèm với sự ra
đời và phát triển của các hệ mật mã là các phương pháp phá khoá các hệ mật mã
đó. Cuộc chiến giữa bảo mật thông tin và xâm phạm thông tin vẫn luôn diễn ra một
cách thầm lặng nhưng vô cùng gay gắt.
Là một sinh viên ngành công nghệ thông tin, với mong muốn tìm hiểu các
phương pháp bảo mật thông tin em đã chọn đề tài “NGHIÊN CỨU HỆ MÃ HÓA
CÔNG KHAI VÀ CÀI ĐẶT HỆ MÃ RSA ỨNG DỤNG TRONG CHỮ KÝ
ĐIỆN TỬ” làm đồ án tốt nghiệp. Tuy đã có nhiều cố gắng trong việc xây dựng đề
tài nhưng do còn hạn chế về mặt thời gian cũng như kiến thức và kinh nghiệm thực
0 và 1 được gọi là một số k-bit.
Độ phức tạp của thuật toán được đo bằng số các phép tính bit. Phép tính bit
là một phép tính logic hay số học thực hiện trên các số một bit 0 và 1.
Để ước lượng độ phức tạp của thuật toán, chúng ta dùng khái niệm bậc olớn.
Định nghĩa1.1: Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số
nguyên dương. Chúng ta nói f(n) có bậc O-lớn của g(n), và viết f(n)=O(g(n)) hoặc
f=O(g), nếu tồn tại một số C>0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều
dương, đồng thời f(n)0. Dễ chứng minh rằng f(n) = O(nd).
2) Nếu f1(n) = O(g(n)), f2(n) = O(g(n)) thì f1 + f2 = O(g).
3) Nếu f1 = O(g1), f2 = O(g2), thì f1f2 = O(g1g2).
4) Nếu tồn tại giới hạn
lim
n
f (n)
g ( n)
thì f = O(g).
5) Với mọi số >0, log n = O (ne).
Định nghĩa 1.2: Một thuật toán được gọi là có độ phức tạp đa thức, hoặc có
thời gian đa thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không
ra thừa số nguyên tố bằng thuật toán nhanh nhất được biết hiện nay (1 triệu phép
tính trong 1 giây).
Số chữ số thập phân
Số phép tính bit
Thời gian
50
1,4.10 10
3,9 giờ
75
9,0.10 12
104 ngày
100
2,3.10 15
74 năm
200
1,2.10 23
n.
Thật vậy, vì n là hợp số nên ta có thể viết n = ab, trong đó a và b là các số
nguyên với 1 a b n . Rõ ràng ta phải có a hoặc b không vượt quá
n , giả sử
đó là a. Ước nguyên tố của a cũng đồng thời là ước nguyên tố của n.
Từ định lý trên ta có thuật toán sau đây để tìm các số nguyên tố nhỏ hơn
hoặc bằng số n cho trước.
Phương pháp sàng Eratosthenes: Trước tiên ta viết dãy các số tự nhiên từ 1
đến n. Trong dãy đó gạch số 1 đi, vì nó không phải là số nguyên tố. Số nguyên tố
đầu tiên của dãy là 2. Tiếp theo ta gạch hết số chia hết cho 2 trong dãy. Số đầu tiên
không chia hết cho 2 là số 3 đó chính là số nguyên tố.
Ta lại gạch hết số trong dãy chia hết cho 3. Tiếp tục như thế ta gạch hết
những số chia hết cho mọi số nguyên tố nhỏ hơn
n.
Theo định lý trên, những số còn lại của dãy là tất cả các số nguyên tố không
vượt quá n.
Thật vậy, các hợp số không vượt quá n, theo định lý trên, đều phải có ước
nguyên tố nhỏ hơn
n , và do đó đã bị gạch khỏi dãy số trong một bước nào đó của
thuật toán.
Sàng Eratosthenes, mặc dù cho ta thuật toán xác định số nguyên tố không
vượt quá số cho trước rất ít dùng cho xác định xem một số đã cho có phải là số
đã cho.
Thuật toán Euclid mở rộng
cho hai số nguyên không âm v, u tìm (u1,u2,u3) sao cho
(u,v)= u 3 = uu1+vu2
Trong tính toán, ta thêm vào các ẩn phụ (v1,v2,v3), (t1,t2,t3) và luôn có trong
mọi bước các đẳng thức sau đây:
ut1 + vt2 = t3, uv3 + vv = v3, uu1 + vu2 = u 3
ed 1. (xuất phát). Đặt (u1,u 2,u3) (1,0,u), (v1,v2,v3) (1,0,v).
ed 2. (kiểm tra v3 =0 ?) nếu v3=0, thuật toán kết thúc.
u
ed 3. (chia trừ). đặt q 3 ,và sau đó đặt
v3
(t1,t2,t3) (u1,u2,u3) - q (v1,v2,v3),
(u1,u 2,u3) (v1,v2,v3), (v1,v2,v3) (t1,t2,t3)
Và quay về bước hai.
Ví dụ: Ta tính UCLN của hai số 781 và 330 (781,330)
781 = 2*330 +121
330 = 2*121+88
121 = 1*88+33
8
88 = 2*33+11
33 = 1*22+11
22 = 2*11+0
Vì số chia trong phép chia cuối cùng là 11 cho nên UCLN(781,330) =11.
Phi hàm euler
Trong các hàm số học, hàm Euler mà ta định nghĩa sau đây có vai trò quan
Một thặng dư thu gọn modulo n là một tập hợp n số nguyên sao cho mỗi
phần tử của tập hợp nguyên tố cùng nhau với n, và không có hai phần tử nào đồng
dư với nhau modulo n.
Nói cách khác từ hệ thặng dư đầy đủ modulo nguyên tố, để thành lập hệ thặng
dư thu gọn ta chỉ giữ lại số nào nguyên tố cùng nhau với n.
Ví dụ:
Các số 1, 2, 3, 4, 5, 6 thành lập hệ thặng dư modulo 7. Đối với modulo 8, ta
có thể lấy 1, 3, 5,7.
Định lý mở rộng của định lý Fermat bé
Nếu r1, r2, …, r n là một hệ thặng dư thu gọn modulo nguyên tố, và a là số
nguyên dương, (a, n) =1, thì tập hợp ar1, ar2, …, a r n cũng là hệ thặng dư thu gọn
modulo n.
Định lý Euler có thể dùng để tìm nghịch đảo của modulo m. Chẳng hạn nếu
a và m là các số nguyên tố cùng nhau, ta có a a m 1bmod m , tức là a m 1 chính là
nghịch đảo của a mod m. Từ đó cũng suy ra nghiệm phương trình đồng dư tuyến
tính ax = b(mod m), với (a, m)=1 là:
x a m 1bmod m
1.4. Phép tính đồng dư và phương pháp tính đồng dư
1.4.1. Phép tính đồng dư
Có hai cách hiểu về đồng dư: Một của các nhà số học và một của các
chuyên gia máy tính. Các nhà số học nói rằng a bmod m nếu như a và b sai
khác nhau một bội của m, còn các chuyên gia máy tính thì bảo rằng a(mod
m)=b nếu như số tìm được trong phép chia a và b cho m là bằng nhau. Tuy
nhiên hai cách hiểu đều có cùng bản chất nên ta không ngại khả năng nhầm
lẫn, mà chỉ nên lưu ý khi làm việc ở đâu thì nói như thế nào. Trong tài liệu này
ta sẽ dùng cách nói của các nhà toán học.
Phép tính đồng dư theo mod m dẫn đến việc tách lập số nguyên ra thành m
lớp, mỗi lớp chưa các số nguyên đồng dư với nhau theo modulo m. Tập các lớp
này được ký hiệu là Z/mZ và chứa đúng m phần tử. Mỗi lớp trong tập Z/mZ có
hiệu quả khi a lớn hẳn hơn m , vì chỉ khi ấy thì b mới thực sự nhỏ hơn a. Trong
thực tế tính toán cũng thường đòi hỏi ta phải làm việc với những số m lớn, và cũng
thường kéo theo m khá lớn, thậm chí lớn hơn a. Khi ấy người ta phải dùng các
kỹ thuật khác, và một trong những cách hay được dùng nhất là phương pháp bình
phương liên tiếp sau đây.
11
Để hiểu rõ phương pháp này, ta chỉ cần đưa ra một ví dụ minh họa: Tính
8743(mod 103). Nếu làm song phép tính luỹ thừa mới tính đồng dư thì không
những sẽ phải làm việc với những số lớn, mà còn gặp nguy hiểm ở chỗ tràn bộ
nhớ. Muốn tránh điều này, người ta tiến hành khai triển số mũ dưới dạng cơ số 2,
tức là:
43 =32 + 8 + 2 + 1 = 25 + 23 + 21 + 2 0,
(*)
Rồi liên tiếp tính các đồng dư bình phương như sau:
87 (mod 103) = 87
872 (mod103) = 50
87 4 (mod103) = 502 (mod103) = 28
87 8 (mod103) = 282 (mod103) = 63
87 16 (mod103) = 632 (mod103) = 55
87 32 (mod103) = 55 (mod103) = 38
Sau đó tổng hợp lại, căn cứ vào khai triển (*), ta lấy tích của các luỹ thừa bậc
25,23,21,20 (rút gọn theo modulo 103) và sẽ thu được kết quả là:
87 43 (mod 103) = 38*63*50*87 (mod103) = 85.
Theo cách này chỉ cần làm việc với những số vừa và nhỏ, không những nhanh
mà còn có thể làm việc trên máy tính bấm tay.
y = 32 (mod 99), 92 (mod 98), 42 (mod 97),16 (mod 95).
Như vậy;
x + y = 65 (mod 99), 2 (mod 98), 51 (mod 97), 10 (mod 95).
Bây giờ ta dùng định lý về phần dư để tìm (x + y) modulo m = 99.98.97.95 =
89403930.
Ta có:
m1 =
M
= 903070, m2
99
m3 =
M
M
= 921690, m4 =
= 941094
97
95
=
M
= 912288
98
Ta cần tìm ngược của mi (mod yj) với i = 1,2,3,4, tức là giải hệ phương trình
đồng dư sau đây (bằng thuật toán Euclid):
936070y1 91y1 1 (mod 99)
Tỉ số mũ của 2 trong các số nguyên tố cùng nhau từng cặp, nên theo hệ quả
trên, các số đã chọn cũng nguyên tố cùng nhau từng cặp. Ta có:
m1 m 2 m3 m 4 m5 m6 > 2184.
Bây giờ ta có thể làm phép tính số học với những số cỡ đến 2184.
Trong các máy tính hiện đại, việc thực hiện nhiều phép tính được tiến
hành đồng thời. Vì thế việc sử dụng định lý Trung Quốc về phần dư trên lại
càng tiện lợi: Thay cho việc làm việc với các số nguyên tố lớn, ta làm nhiều
phép tính đồng thời với những số nguyên tố bé hơn. Điều đó giảm đáng kể thời
gian tính toán.
Thuật toán giải phương trình đồng dư bằng định lý Trung Quốc
14
Từ chứng minh định lý Trung Quốc về phần dư, ta có thuật toán sau đây để
giải hệ phương trình đồng dư x xi mod mi , trong đó mi, 1 i k là các số
nguyên tố cùng nhau từng cặp, xi là các số nguyên cho trước. Trong thuật toán
trình bày sau đây, chúng ta đã tìm ra cách để tránh phải làm việc với các số lớn như
mi và ami.
Thuật toán giải phương trình đồng dư bằng định lý Trung Quốc:
1. (xuất phát). Đặt j 2, c1 1. Hơn nữa ta sắp xếp lại các số mi theo thứ
tự tăng dần.
2. (tính toán sơ bộ). Đặt p m1m2m3... mj-1(mod mj). Tính (u,v,d) sao cho up
+ mvj = d = ucln(p, mj) bằng thuật toán euclid mở rộng.
ed. Nếu d >1, in ra thông báo: Các mi không nguyên tố cùng nhau từng cặp.
Nếu ngược lại, đặt cj u, j j + 1 và chuyển sang bước 3 nếu j k .
3. (tính các bảng số phụ). đặt y1 x1 mod m1, và mỗi j = 2,3,...,k tính
Yj = (xj –(y1+m1(y2 +m2(y3 +...+mj-2yp-1)))) mod mj
4. (kết thúc). In ra x
y1+mi(y2+m2(y3+...+mk-1yk)), và kết thúc thuật toán
thứ i, thực hiện một phép tính bình phương của kết quả hiện tại (Ci = Ci-1 * Ci-1 mod
N). Nếu giá trị bít tại vị trí đang xét ei = 1 thì kết quả vừa tính được nhân với M
modulo N, (C =C * M mod N). Khi kết thúc lần lặp thứ k ta có kết quả là: C = Me
mod N.
Ví dụ: Tính 12554 mod 1024 (M = 125, e = 54, n =1024)
Biểu diễn nhị phân (54)10 = (110110)2. Chỉ thực hiện 6 bước tính sau:
B1:
e5 = 1
C = (1 * 1) *125 = 125
B2:
e4 = 1
C = (125 * 125) *125 mod 1024 = 357
B3:
e3 = 0
C = (357 * 357) mod 1024 = 473
B4:
e2 = 1
C = (473 * 473) * 125 mod 1024 = 685
của một công ty, đảm bảo an ninh quốc phòng cho mỗi quốc gia,…
Có hai phương pháp để đạt được mục tiêu này: Kiểm soát lối vào ra và mã
hóa dữ liệu.
1) Phương pháp kiểm soát lối vào nhằm ngăn cản sự xâm nhập trái phép vào
hệ thống nhờ xây dựng các kiểm soát thích hợp, ví dụ như các hệ sử dụng mật
khẩu, mà trong đó chỉ những người được phép sử dụng mới qua được để thâm
nhập vào hệ thống. Hệ này có một số nhược điểm. Chẳng hạn dữ liệu lưu trữ bên
ngoài cũng cần được bảo vệ và việc này dường như chỉ có sự bảo vệ thuần túy vật
lý là có thể đạt được. Như vậy, điều đó dẫn đến sự kém an toàn đối với hệ thống.
Một nhược điểm nữa của phương pháp này đó là không thực tiễn khi ta quan hệ
với các hệ số lớn.
2) Sự truy nhập thông tin còn được kiểm soát bằng một phương pháp khác:
mã hóa dữ liệu. Điều này có nghĩa là thông tin được lưu trữ trong hệ dưới dạng đã
được mã hóa. Khi đó, những người truy nhập trái phép dù có lấy được thông tin,
17
nhưng nó lại ở dạng mã hóa, do đó thông tin này vô nghĩa nếu họ không biết cách
giải.
Mật mã học nghiên cứu các hệ thống dùng cho việc truyền thông bí mật, gồm
có hai lĩnh vực nghiên cứu: Mã hóa (Cryptography) – thiết kế các hệ truyền thông
bí mật, và Giải mã (Cryptanalysis) – nghiên cứu các phương pháp để giải mã các
hệ truyền thông bí mật. Mật mã học trước đây chủ yếu được áp dụng trong các hệ
truyền thông quân sự và ngoại giao, nhưng các áp dụng có ý nghĩa thực tế của nó
ngày nay đã xuất hiện trong tất cả các lĩnh vực của xã hội. Hai ví dụ minh chứng là
các hệ thống tập tin máy tính (trong đó mỗi người sử dụng lưu trữ riêng các tập tin
của họ) và các hệ chuyển ngân điện tử. Một người sử dụng máy tính chỉ muốn cất
giữ riêng các tập tin máy tính của mình cũng như ta cất các giấy tờ trong tủ hồ sơ,
và một ngân hàng thì muốn việc chuyển ngân điện tử sẽ an toàn như là được
để “kẻ địch” không có đủ thời gian để thử mọi khoá có thể (phương pháp vét
cạn).Đối với mỗi k K có một quy tắc mã Ek: PC và một quy tắc giải mã tương
ứng Dk D. Mỗi Ek: P C và Dk: CP là những hàm mà: Dk (Ek(x)) = x với mọi
bản rõ x P.
2.3.2. Khái niệm mã hoá và giải mã
Mã hoá (encryption): Là quá trình biến đổi thông tin từ dạng nhận thức được
sang dạng không nhận thức được.
Giải mã (decryption): Là quá trình ngược lại với mã hoá, tức là biến đổi
thông tin từ dạng không nhận thức được (dữ liệu mã hoá) về dạng nhận thức được
(dạng gốc).
Bản rõ (Plain text): Nội dung của văn bản cần trao đổi
Khóa (key): Là bí quyết của việc lập mã và giải mã
Hệ mã đối xứng: Là hệ mã mà quá trình lập mã và giải mã sử dụng chung một
khóa
Hệ mã phi đối xứng: Là hệ mã mà quá trình lập mã và giải mã sử dụng khóa
khác nhau
Quy trình mã hoá và giải mã dữ liệu
Bộ phận quản lý khoá thực hiện lập khoá mã hoá (Ke) và khoá giải mã (Kd).
Dữ liệu gốc được mã hoá nhờ khoá mã hoá. Vấn đề ở đây là quản lý khóa như thế
nào để cho việc mã hoá và giải mã tương đối đơn giản và đảm bảo tuyệt đối bí mật
cho khoá giải mã.
19
Khoá Ke
DL gốc
Mã hoá
(Plaintext).
20
Sự bảo mật của một thuật toán đối xứng dựa trên khoá. Tiết lộ khoá có nghĩa
rằng bất cứ ai biết khoá đều có thể mã hoá và giải mã thông tin trên hệ thống này.
Nhóm mã hoá và giải mã bằng thuật toán đối xứng được thể hiện bằng công
thức:
Ek(P)=C
Dk(C)=P
Dk(Ek(P))=P
Một số hệ mã cổ điển
- Mã dịch vòng
- Mã thay thế
- Mã hoán vị
- Mã Affine
- Mã Vigenere
- Mã Hill
- Mã dòng
2.5. Thuật toán mã hóa phi đối xứng(Puclic-key-Algorithms)
Hay còn được gọi với một cái tên khác là mã hoá khoá công khai (Public Key
Cryptography), nó được thiết kế sao cho khoá sử dụng trong quá trình mã hoá khác
biệt với khoá được sử dụng trong quá trình giải mã. Hơn thế nữa, khoá sử dụng
trong quá trình giải mã không thể được tính toán hay luận ra được từ khoá được
dùng để mã hoá và ngược lại, tức là hai khoá này có quan hệ với nhau về mặt toán
học nhưng không thể suy diễn được ra nhau. Thuật toán này được gọi là mã hoá
công khai vì khoá dùng cho việc mã hoá được công khai cho tất cả mọi người. Một
người bất kỳ có thể dùng khoá này để mã hoá dữ liệu nhưng chỉ duy nhất người mà
có khoá giải mã tương ứng mới có thể đọc được dữ liệu mà thôi. Do đó trong thuật
- Hệ mật trên các đường cong Elliptic:Các hệ này là biến tướng của các hệ
mật khác, chúng làm việc trên các đường cong Elliptic chứ không phải trên các
trường hữu hạn. Hệ mật này đảm bảo độ mật với khoá số nhỏ hơn các hệ mật khoá
công khai khác.
22
2.6. Thám mã (Cryptanalyis)
Thám mã là “nghệ thuật” tìm lại bản thông điệp gốc bằng cách phân tích bản
mã.
Mục đích chính của mật mã là phải giữ bí mật bản rõ (hoặc khoá, hoặc cả hai)
khỏi những người nghe trộm (Attacker). Thám mã cần phục hồi bản rõ của một
thông điệp từ bản mã mà không có khoá. Nếu thành công, người phân tích mã có
thể thu được bản rõ hoặc khoá, hoặc cũng có thể tìm thấy điểm yếu trong một hệ
thống mã hoá. Các thuật toán sử dụng cho phần lớn các hệ thống mã hoá là nổi
tiếng, vì vậy chúng ta giả thiết rằng người thám mã đã biết thuật toán để bắt đầu
thám mã.
Như vậy, vấn đề cốt yếu của một hệ mã hoá tốt là việc khôi phục bản rõ P từ
bản mã C khi biết Dk phải là khó, hoặc tốt hơn là không thể được.
Có 6 tình huống mà người thám mã có thể có khi phân tích. Trong các tình
huống đó giả sử rằng người thám mã đã biết thuật toán được dùng để mã hoá:
Chỉ biết bản mã (Ciphertext-only attack). Trong trường hợp này, người thám
mã có bản mã của một thông điệp, và biết được thuật toán được dùng để mã hoá.
Công việc của người thám mã là phải tìm được bản rõ của thông điệp, và tốt hơn
hết là tìm ra khoá được sử dụng để mã hoá thông điệp, để từ đó giải mã những
thông điệp khác được mã hoá với cùng khoá đó.
Để việc phân tích của người thám mã có hiệu quả thì tốt hơn hết là bản mã
phải dài. Trong những hệ mã đơn giản, ví dụ như CAESAR, một bản mã ngắn
cũng đưa lại kết quả bởi vì chỉ có duy nhất một khoá được sử dụng để mã hoá.
chọn P 1, P2,... Pi
Cần tìm: hoặc k, hoặc một thuật toán để nhận được Pi+1 từ Ci+1=Ek(Pi+1)
Bản rõ được lựa chọn thích hợp (Adaptive-chose-plaintext attack). Đây là
một trường hợp đặc biệt của trường hợp bản rõ được lựa chọn. Người thám mã
không chỉ có thể được lựa chọn bản rõ mà nó đã được mã hoá, mà họ còn có thể
biến đổi những điểm cần thiết dựa trên kết quả của những lần mã hoá trước. Với
trường hợp bản rõ được lựa chọn, người thám mã có thể lựa chọn một khối bản rõ
lớn để giải mã; trong trường hợp bản rõ được lựa chọn thích hợp họ có thể lựa
chọn một khối bản rõ nhỏ hơn sau đó lựa chọn khối khác dựa vào kết quả của khối
đầu tiên, v.v...
Bản mã được lựa chọn (Chosen-plaintext attack). Người thám mã có thể
chọn các bản mã khác nhau và biết được bản rõ. Công việc của người thám mã là
tìm khoá.
Đầu vào: C1, P1=Dk (C1), C2, P2 = Dk(C2),... Ci, P i=Dk(Ci)
Cần tìm: k
Khoá được lựa chọn (Chosen-Key). Người thám mã biết phương pháp mã
hoá Ek và cố tìm phương pháp giải mã tương ứng Dk trước khi nhận bất cứ mẫu
24
bản mã nào. Trong trường hợp này người thám mã có rất nhiều thời gian để làm
việc.
Trường hợp (5), (6) thường được ứng dụng chủ yếu đối với các hệ thống mã
hoá sử dụng khoá công khai.
Hiện nay có rất nhiều thuật toán mã hoá. Có ba thuật toán thường được sử
dụng:
DES (Data Encryption Standard) là thuật toán mã hoá trên máy tính hiện
nay đang được sử dụng rộng dãi nhất. DES là chuẩn mã hoá được phát minh ở Mỹ.
Nó là thuật toán đối xứng; khoá để mã và khoá để giải giống nhau.