Tải bản đầy đủ (.pdf) (99 trang)

Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin

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 (2.07 MB, 99 trang )


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN QUÝ HÀO




NGHIÊN CỨU PHỐI HỢP HAI PHƯƠNG PHÁP NÉN
và MÃ HOÁ THÔNG TIN

Ngành: Công nghệ thông tin
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60 48 15

LUẬN VĂN THẠC SĨ NGÀNH CNTT


Giảng viên hướng dẫn: PGS. TS TRỊNH NHẬT TIẾN






HÀ NỘI, 11-2012




2



MỤC LỤC

MỤC LỤC 2
DANH MỤC CÁC BẢNG 4
DANH MỤC CÁC HÌNH VẼ 5
LỜI MỞ ĐẦU 6
Chương 1: MỘT SỐ KHÁI NIỆM CƠ BẢN 8
1.1 CÁC ĐỊNH LÝ QUAN TRỌNG 8
1.1.1 Định lý Euler 8
1.1.2 Định lý Fermat (hệ quả của định lý Euler) 8
1.1.3 Định lý đồng dƣ Trung Quốc 8
1.1.4 Định lý Bezout 9
1.2 MỘT SỐ THUẬT TOÁN 9
1.2.1 Thuật toán Euclidean 9
1.2.2 Thuật toán Euclidean mở rộng 10
1.2.3 Thuật toán bình phƣơng và nhân 11
1.2.4 Thuật toán xác suất kiểm tra số nguyên tố 12
1/. Thuật toán Miller – Rabin 12
1.3 KHÁI NIỆM ENTROPY 13
1.3.1 Định nghĩa Entropy 13
1.3.2 Tính chất của Entropy 14
Chương 2: PHƢƠNG PHÁP MÃ HOÁ 15
2.1 CÁC KHÁI NIỆM CƠ BẢN 15
2.1.1 Hệ mã hoá khoá đối xứng 16

2.1.2 Hệ mã hoá khoá phi đối xứng 16
2.1.3 Hệ mã hoá RSA 17
2.1.3.1 Lịch sử hình thành hệ mã hoá RSA 17
2.1.3.2 Hệ mã hoá RSA đầu tiên 17
2.1.3.3 Định nghĩa hệ mã hoá RSA 18
2.2 CÁC CHUẨN KỸ THUẬT TRONG PKCS 19
2.2.1 Tổng quan về PKCS và PKCS#1 v2.1 19
2.2.1.1 PKCS 19
2.2.1.2 PKCS#1 v2.1 19
2.2.2 Các ký hiệu trong PKCS#1 v2.1 20
2.2.3 Các kiểu khóa 21
2.2.3.1 Khóa công khai RSA 22
2.2.3.2 Khóa bí mật RSA 22
2.2.4 Cơ sở chuyển đổi dữ liệu I2OSP và OS2IP 23
2.2.4.1 Chuyển đổi dữ liệu I2OSP 24
2.2.4.2 Chuyển đổi dữ liệu OS2IP 24
2.2.5 Cơ sở của hệ mật mã 25
2.2.5.1 Cơ sở hệ mã hóa RSAEP 25
2.2.5.2 Cơ sở hệ mã hóa – RSADP 26
2.2.6 Lƣợc đô mã hóa 28
2.2.6.1 Tổng quan về lược đồ mã hóa 28
2.2.6.2 Các kỹ thuật hỗ trợ 28
2.2.6.3 Lược đồ RSAES – OAEP 29
2.2.7 Ý nghĩa của việc áp dụng EME - OAEP trƣớc khi mã hóa RSA 34
2.2.8 Vấn đề sinh khóa RSA 35
2.3 CHUẨN MÃ HÓA DỮ LIỆU TIÊN TIẾN – AES 37



3




2.3.1 Mục đích nghiên cứu chuẩn AES 37
2.3.2 Tổng quan 38
2.3.3 Các khái niệm cơ sở 38
2.3.3.1 Input, Output, Key 38
2.3.3.2 Byte 38
2.3.3.3 Ma trận trạng thái (State Matrix). 39
2.3.3.4 Hộp thay thế S – Box và InvS – Box 40
2.3.4 Đặc tả thuật toán 41
2.3.4.1 Sinh khóa con 41
2.3.4.2 Hoạt động mã hóa 42
2.3.4.3 Hoạt động giải mã 43
Chương 3: PHƢƠNG PHÁP NÉN DỮ LIỆU 44
3.1 TỔNG QUAN VỀ NÉN DỮ LIỆU 44
3.1.1 Mã nén dữ liệu 44
3.1.1.1 Nén dữ liệu, bít trung bình 44
3.1.1.2 Mã tổng và mã phân tách 46
3.1.2 Định lý Shannon 47
3.2 MÔ HÌNH THỐNG KÊ 51
3.2.1 Mô hình thống kê tĩnh 51
3.2.2 Mô hình thống kê động 51
3.2.3 Một số mã nén cơ bản 52
3.2.3.2 Mã Huffman 57
3.2.3.3 Lưu đồ giải mã Fanon, Shannon, Huffman 60
3.3 MÔ HÌNH TỪ ĐIỂN 62
3.3.1 Giới thiệu 62
3.3.2 Kỹ thuật từ điển 62
3.3.2.1 Nguyên lý LZ 62

3.3.2.2 Các thuật toán nén LZ 66
Chương 4: PHỐI HỢP HAI PHƢƠNG PHÁP NÉN VÀ MÃ HOÁ THÔNG TIN 80
4.1 MÔ HÌNH PHỐI HỢP HAI PHƢƠNG PHÁP NÉN VÀ MÃ HOÁ THÔNG TIN 80
4.1.1 Về không gian lƣu trữ 80
4.1.2 Vấn đề an ninh 81
4.1.3 Vấn đề thời gian xử lý dữ liệu 82
4.2 Mô hình phối hợp hai phƣơng pháp nén và mã hoá dữ liệu 82
4.3 CHƢƠNG TRÌNH THỬ NGHIỆM 86
4.3.1 Mô tả chung 86
4.3.2 Ý tƣởng cài đặt 86
4.3.2.1 Ngôn ngữ lập trình 86
4.3.2.2 Cấu trúc chƣơng trình 87
4.3.3 Thực hiện 92
4.3.4 Đánh giá 94
KẾT LUẬN 98
TÀI LIỆU THAM KHẢO 99






4



DANH MỤC CÁC BẢNG

STT
Tên bảng

Trang
1.
Bảng 2.1: Thay thế dãy 4 bit sang cơ số 16
40
2.
Bảng 2.2: Ma trận trạng thái khởi đầu
40
3.
Bảng 3.1: Ví dụ về mã nén Shannon
57
4.
Bảng 3.2: Mã hoá các kí tự trong xâu “go go gophers” theo mã
Huffman
60
5.
Bảng 3.3: Giải mã bản mã “00111010000” theo lƣu đồ giải mã Hình
3.8
62
6.
Bảng 3.4: Quá trình nén xâu “bcabbcbccbababc” theo thuật toán LZ77
68
7.
Bảng 3.5: Quá trình giải nén theo thuật toán LZ77bản mã
bca[3,1,b][4,1,b][2,1,c][3,1a][2,2,b][5,1,””]
68
8.
Bảng 3.6:
Quá trình nén xâu “ aaabbabaabaaabab” bằng thuật toán LZ78
72
9.

Bảng 3.7: Quá trình nén bằng thuật toán LZ78 bản mã
“(0,a)(1,a)(0,b)(3,a)(4,a)(5,a)(4,b)”
73
10.
Bảng 3.8: Quá trình nén xâu “aabababaaababb” bằng thuật toán LZW
79
11.
Bảng 3.9: Quá trình giải nén bản mã “001352411” theo thuật toán
LZW
80
12.
Bảng 4.2: Bảng kết quả thử nghiệm đánh giá về mặt hiệu quả nén
96
13.
Bảng 4.2: Bảng kết quả thử nghiệm đánh giá về mặt thời gian
97



5



DANH MỤC CÁC HÌNH VẼ
STT
Tên bảng
Trang
1.
Hình 2.1: Nguy cơ bị tấn công khi truyền thông tin trên mạng máy tính
16

2.
Hình 2.2: Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12]
17
3.
Hình 2.3: Mô hình truyền thông sử dụng hệ mã hoá khoá công khai
[12]
18
4.
Hình 2.4: Sơ đồ mã hoá EME – OAEP [13]
32
5.
Hình 2.5: Tóm lƣợc quy trình xử lý RSAES – OAEP - ENCRYPT
33
6.
Hình 2.6: Tóm lƣợc quy trình xử lý RSAES – OAEP – DECRYPT
35
7.
Hình 2.7: Sơ đồ kết hợp RSA và AES
38
8.
Hình 2.8: Hộp S –Box sử dụng trong quá trình mã hoá AES [14]
41
9.
Hình 2.9: Hộp InvS –Box sử dụng trong quá trình mã hoá AES [14]
41
10.
Hình 3.1: Quá trình nén dữ liệu
45
11.
Hình 3.2: Văn bản tổng

47
12.
Hình 3.3: Mã tổng
47
13.
Hình 3.4: Mã hoá theo mô hình thống kê động
52
14.
Hình 3.5: Giải mã hoá theo mô hình thống kê động
53
15.
Hình 3.6: Quá trình tạo mã Fanno
5
16.
Hình 3.7: Xây dựng mã Huffman
59
17.
Hình 3.8: Lƣu đồ giải mã Fanon, Shanon, Huffman
61
18.
Hình 3.9: Lƣợng tin
64
19.
Hình 3.10: Quá trình thực hiện nén bằn mã LZ
66
20.
Hình 3.11: Sơ đồ nén LZ78
70
21.
Hình 3.12: Sơ đồ giải nén thuật toán LZ78

71
22.
Hình 3.13: Sơ đồ nén dữ liệu thuật toán LZW
75
23.
Hình 3.14: Sơ đồ giải nén dữ liệu thuật toán LZW
78
24.
Hình 4.1: Luồng xử lý nén và mã hoá
82
25.
Hình 4.2: Mô hình phối hợp hai phƣơng pháp nén và mã hoá thông tin
83
26.
Hình 4.3: Nội dung tệp bản rõ
84
27.
Hình 4.4: Nén tệp bằng phƣơng pháp LZW
84
28.
Hình 4.5: Mã hoá tệp đã nén bằng LZW
85
29.
Hình 4.6: Mã hoá tệp bản rõ bằng AES
85
30. H
Hình 4.7: Nén tệp tin sau khi mã hoá bằng AES
86






6



LỜI MỞ ĐẦU
Quá trình lƣu trữ và truyền tải thông tin luôn luôn có 2 yếu tổ đƣợc quan tâm
hàng đầu là: tính an toàn bảo mật và kích thƣớc của tệp tin.
Đã có rất nhiều các phần mềm, các chƣơng trình đƣợc viết để giải quyết hai vấn
đề đƣợc đặt ra. Tuy nhiên các phần mềm phần lớn chỉ quan tâm tới một trong hai yếu
tố chỉ nén dữ liệu Winzar, Winzip, 7Zip… hoặc chỉ mã hoá nhƣ: Enterprise,
TrueCrypt… tuy nhiên nếu chỉ nén dữ liệu kích thƣớc tệp tin đƣợc giảm nhƣng lại
không bảo đảm tính an toàn thông tin. Ngƣợc lại nếu chỉ mã hoá chỉ đảm bảo tính an
toàn nhƣng không giải quyết đƣợc vấn đề giảm dung lƣợng lƣu trữ hơn thế mã hoá tệp
tin lớn tốn nhiều thời gian và băng thông để truyền tải cũng tăng theo.
Trong khi đó nếu phối hợp cả hai quá trình trên sẽ đem lại rất nhiều lợi ích:
giảm dung lƣợng lƣu trữ, giảm băng thông truyền tải, giảm thời gian mã hoá, tăng tính
bảo mật cho tệp tin so với tệp tin chỉ mã hoá đơn thuần.
Từ ý nghĩa thực tiễn quan trọng nêu trên là động lực để tôi nghiên cứu đề tài:
“Nghiên cứu phối hợp hai phƣơng pháp nén và mã hoá thông tin”.
Trong luận văn sẽ đề xuất mô hình và giải pháp phối hợp hai phƣơng pháp nén
và mã hoá thông tin: sử dụng các thuật toán nén để nén dữ liệu sau đó dùng phƣơng
pháp mã hoá đối xứng để mã hoá tệp tin sau, cuối cùng là dùng mã khoá khoá bất đối
xứng RSA để mã hoá khoá chung của AES.
Luận văn đƣợc trình bày theo cấu trúc sau:
- Chƣơng 1: trình bày cơ sở toán học đƣợc sử dụng trong quá trình nén và mã
hoá thông tin gồm: các khái niệm, các định lý, định nghĩa và một số thuật
toán cơ bản

- Chƣơng 2: trình bày về các thuật toán mã hoá: AES, RSA và các kỹ thuật
có liên quan đƣợc sử dụng trong quá trình mã hoá.
- Chƣơng 3: trình bày về các phƣơng pháp nén: Fanno, Shanon, Huffman,
Lzw…
- Chƣơng 4: trình bày về hƣớng nghiên cứu phối hợp các phƣơng pháp nén và
mã hoá thông tin. Giải pháp thực hiện và đánh giá mô hình nghiên cứu.
Ngoài ra còn trình bày về quá trình cài đặt chƣơng trình thử nghiệm mô hình
phối hợp bằng ngôn ngữ lập trình C#.Net.

Học viên: Nguyễn Quý Hào



7




LỜI CẢM ƠN
Tôi xin chân thành cảm ơn PGS.TS Trịnh Nhật Tiến, thầy đã trực tiếp hƣớng
dẫn, giúp đỡ tôi từ lúc nhận đề tài đến lúc hoàn thành luận văn tốt nghiệp này.
Tôi xin chân thành cảm ơn tất cả các thầy cô giáo trong khoa Công nghệ thông
tin - Trƣờng ĐH Công Nghệ - ĐH Quốc Gia Hà Nội, những ngƣời đã nhiệt tình giảng
dạy, truyền đạt những kiến thức trong suốt thời gian tôi học tập tại trƣờng cũng nhƣ
đóng góp những ý kiến quý báu, những định hƣớng chuẩn mực giúp tôi hoàn thành
luận văn này.
Cuối cùng tôi xin cảm ơn tất cả các bạn trong lớp đã góp ý, trao đổi hỗ trợ cho
tôi trong suốt thời gian vừa qua.
Tôi xin chân thành cảm ơn!


Học viên: Nguyễn Quý Hào




8



Chương 1: MỘT SỐ KHÁI NIỆM CƠ BẢN
1.1 CÁC ĐỊNH LÝ QUAN TRỌNG
1.1.1 Định lý Euler
Định lý:
Cho a Z, m N, m > 1. Nếu UCLN (a, m) = 1 thì a
(m)
1 (mod m)
1.1.2 Định lý Fermat (hệ quả của định lý Euler)
Định lý:
Cho a Z và k là một số nguyên tố khi đó a
k
a (mod k)
Nếu UCLN(a, k) = 1 thì a
k-1
1 (mod k)
1.1.3 Định lý đồng dƣ Trung Quốc
Định lý:
Cho m
1
, m
2

, …, m
r
là các số nguyên tố cùng nhau từng đôi một nghĩa là
UCLN(m
1
, m
2
) = 1 i, j = 1, 2, …, r ; i ≠ j. Giả sử a
1
, a
2
, … a
r
Z khi đó hệ
phƣơng trình đồng dƣ
)(mod

)(mod
)(mod
22
11
rr
max
max
max

Có nghiệm duy nhất theo modulo M = m
1
m
2

, … m
r
là x =
r
i
iii
yMa
1
trong đó
M
i
=
i
m
M
và y
i
= M
i
-1

mod m
i
Ví dụ: Tìm nghiệm đồng dƣ của hệ phƣơng trình đồng dƣ:
)7(mod8
)3(mod6
)2(mod3
x
x
x


Giải:
M = 2 x 3 x 7 = 42 M
1
=3 x 7 = 21; M
2
= 2 x 7 = 14; M
3
= 2 x 3 = 6
y
1
= 21
-1
mod 2 = 1; y
2
= 14
-1
mod 3 = 2; y
3
= 6
-1
mod 7 = 6
x = 3 x 21 x 1 + 6 x 14 x 2 + 8 x 6 x 6 =519 mod 42 = 15




9




1.1.4 Định lý Bezout
Định lý:
Cho a, b N, a > b 1; ta có:
+ Tồn tại x, y Z sao cho ax + by = UCLN(a, b)
+ Nếu a, b nguyên tố cùng nhau thì tồn tại x,y Z | ax + by = 1
+ a, b nguyên tố cùng nhau khi và chi khi tồn tại x, y Z | ax + by = 1
1.2 MỘT SỐ THUẬT TOÁN
1.2.1 Thuật toán Euclidean
Cơ sở số học của thuật toán:
Cho a, b, d Z, d ≠ 0 nếu a

d và b

d thì a mod b

d
Nội dung thuật toán:
INPUT: r
0
, r
1
N, r
0
> r
1
0
OUPUT: d = UCLN(r
0
, r

1
)
Thuật toán:
Bƣớc 1: Nếu r
1
= 0 trả về d := r
0
, kết thúc thuật toán
Nếu r
1
≠ chuyển sang bƣớc 2
Bƣớc 2: r := r
0
mod r
1
; r
0
:= r
1
; r
1
= r; quay lại bƣớc 1




10




1.2.2 Thuật toán Euclidean mở rộng
Cơ sở số học của thuật toán: trong thuật toán Euclidean tìm UCNL của hai số
nguyên r
0
> r
1
0, ta thấy thuật toán là quá trình thực hiện chuỗi phép chia lấy phần dƣ
dễ dàng ta thấy
UCLN(r
0,
r
1
) = UCLN(r
1,
r
2
) = UCLN(r
2,
r
3
) = … = UCLN(r
m-1,
r
m
)
Với r
2
= r
0
mod r

1
r
3
= r
1
mod r
2
….
Dựa trên thuật toán Euclidean ngƣời ta mở rộng thuật toán trên để tính đƣợc
số nghịch đảo theo modulo m trong vành Z
m

Xét dãy tuần tự các số nguyên t
0
, t
1
, … t
m
nhƣ sau:
t
0
= 0
t
1
= 1
t
j
= (t
j-2
– q

j-1
t
j-1
) mod r
0
, với j 2
Ta có kết quả quan trọng sau:
Định lý:
Với mọi j, 0 j 2 ta có r
j
t
j
r
1
(mod r
0
)
Nội dung thuật toán:
INPUT: n, b N (n> b 0)
OUTPUT: t = b
-1
mod n
Giả mã thuật toán:
1. n
0
= n
2. b
0
= b
3. t

0
= 0
4. t = 1
5. q = n
0
div b
0

6. r = n
0
– qb
0

7. while r > 0 do
7.1 temp = t
0
– qt
7.2 if temp 0 then temp = temp mod n



11



7.3 if temp < 0 then temp = n – ((-temp) mod n)
7.4 t
0
= t
7.5 t = temp

7.6 n
0
= b
0

7.7 b
0
= r
q = n
0
div b
0

r = n
0
– qb
0

8. if b
0
≠ 1 then b không khả nghịch theo modulo n
9. else b
-1
= t mod n
1.2.3 Thuật toán bình phƣơng và nhân
Giả sử có các số nguyên x, b và n. Ta phải tính x
b
mod n. Thuật toán: “Bình
phƣơng và nhân” sau đây sẽ giúp ta tính lũy thừa này khá đơn giản. Đây là một thuật
toán quan trọng đƣợc sử dụng trong qui trình mã hóa cũng nhƣ giải mã của hệ mã hoá

RSA
Nội dung thuật toán:
INPUT:
x Z
n
, b Z, 0 < b < n,
b: viết dƣới dạng nhị phân với k chữ số nhị phân b = b
1
b
2
…b
k
; b
i
= {0, 1}
OUTPUT: số a = x
b
mod n
Giả mã thuật toán:
1. z = 1
2. for i = 1 to k do
3. z = z. z mod n
4. if b
i
= 1 then z = z.x mod n
5. a = z
6. return a





12



1.2.4 Thuật toán xác suất kiểm tra số nguyên tố
INPUT: một số nguyên dƣơng n
OUPUT: n là hợp số
Sau đây ta sẽ đi xem thuật toán Miller - Rabin giải quyết bài toán này
1/. Thuật toán Miller – Rabin
Kiểm tra Miller:
Giả sử n là một số nguyên dƣơng lẻ, khi đó ta biểu diễn đƣợc n – 1 = 2
s
t với s là
một số nguyên không âm, t là một số nguyên dƣơng lẻ. Ta nói n vƣợt qua đƣợc kiểm
tra Miller cơ sở a (a Z, a > 0) nếu a
t
1 (mod n) hoặc
t
k
a
2
-1 (mod n) với k nào đó
0 k < s.
Mệnh đề:
Nếu n là một số nguyên tố thì n vƣợt qua kiểm tra Miller cơ sở a, 0 < a < n
Định nghĩa:
Nếu n vƣợt qua Miller cơ sở a thì n đƣợc gọi là số nguyên tố giả cơ sở a
Số nguyên dƣơng n > 1 đƣợc gọi là số giả nguyên tố mạnh cơ sở a nếu nó là
hợp số và vƣợt qua đƣợc kiểm tra Miller cơ sở a

Thuật toán Miller – Rabin
INPUT: n N, lẻ, N > 1
OUTPUT: “n là nguyên tố” hoặc “n là hợp số”
Nội dung thuật toán:
Miller – Rabin – Test(n)
1. Viết n – 1 = 2
k
m (m lẻ)
2. Chọn một số ngẫu nhiên a, 1 a n – 1
3. b: = a
m
mod n
4. if b = 1 then return “n là số nguyên tố rồi” và kết thúc
5. for i = 0 to k – 1 do
6. if b = n – 1 then return “n là số nguyên tố” và thoát
7. b = b
2
mod n
8. Tra lời “n” là hợp số
Mệnh đề:
Thuật toán Miller – Rabin cho bài toán hợp số là thuật toán Monter – Carlo
định hƣớng có. Nghĩa là câu trả lời “b là hợp số” luôn đúng. Câu trả lời “n là số
nguyên tố” có xác suất sai không quá 1/4



13




Miller – Rabin – Test(n)
Thuật toán Miller – Rabin với t lần thực hiện kiểm tra Miller:
INPUT: n N, lẻ, n > 1, t N, số lần kiểm tra
OUTPUT: “n là nguyên tố” hoặc “n là hợp số”
1. Viết n – 1 = 2
k
m (m lẻ)
2. for i := 1 to t do
2.1 Chọn một số ngẫu nhiên a, 1 a n – 1
2.2 test:= false
2.3 b: = a
m
mod n
2.4 if b = 1 then test: = true
else
for i = 0 to k – 1 do
if b = n – 1 then test:= true
else b = b
2
mod n
2.5 if test = false then return “n là hợp số” và thoát
3. return “n là số nguyên tố”
Xác suất sai khi trả lời n là số nguyên tố không vƣợt quá (1/4)
t
1.3 KHÁI NIỆM ENTROPY
1.3.1 Định nghĩa Entropy
Định nghĩa. Độ bất định :
Xét không gian mẫu = {w
1
,


w
2
,

w
3
, , w
m
} với xác suất của các sự kiện ngẫu
nhiên cơ bản tƣơng ứng là p
1
, p
2
, p
3
, , p
m
. Entropy của không gian mẫu Ω sinh ra do
phép thử ngẫu nhiên mà kết quả là một trong số các sự kiện của không gian mẫu Ω hay
độ bất định của việc đoán nhận sự kiện ngẫu nhiên cơ bản xảy ra đƣợc ký hiệu H(Ω) là
một số tính theo công thức sau:
H(Ω) =
m
i
ii
pp
1
)log(.


Định lý:
Có một số δ > 1 mà H( ) =
m
i
ii
pp
1
)(log.

Giả sử chúng ta lấy việc đoán nhận sự kiện nào trong 2 sự kiện đồng xác suất
làm đơn vị đo độ bất định thì khi đó H(2) = 1 vì thế log (2) = 1. Suy ra, = 2. Chúng
ta có công thức H(k) = log
2
(k).



14



Độ bất định xác định không phụ thuộc vào việc chọn đơn vị để đo. Nếu chọn
độ bất định của việc đánh số đề tức là đoán nhận 1 trƣờng hợp trong số 100 trƣờng hợp
đồng khả năng làm đơn vị đo và nếu có một việc có độ bất định là 3, tức là H(k) =
log
100
(k) = 3. Khi dùng đơn vị đo là việc đoán nhận một trƣờng hợp trong số 10 khả
năng làm đơn vị thì chỉ số đo sẽ là 6, vì H(k) = log
10
(k) = 2.log

100
(k) = 6. Chính vì vậy
mà chúng ta có thể chọn đơn vị đo bất kỳ, ví dụ δ = 2.
Sau này, chúng ta sẽ dùng công thức
)(log
1
2 i
m
i
i
pp
để tính độ bất định
(entropy) cho một không gian mẫu Ω với xác suất các phần tử là p
1
, p
2
, p
3
, , p
m
. Lƣu
ý, H( ) càng lớn thì việc đoán nhận sự kiện ngẫu nhiên cơ bản nào sẽ xảy ra càng khó
(càng bất định).
1.3.2 Tính chất của Entropy
Tính chất:
a) Entropy là một đại lƣợng luôn luôn dƣơng hoặc bằng không H(Ω)≥ 0.
b) Entropy bằng 0 khi có một sự kiện ngẫu nhiên cơ bản có xác suất bằng 1 và
xác suất của tất cả các sự kiện ngẫu nhiên cơ bản còn lại bằng 0. Nghĩa là có
một sự kiện ngẫu cơ bản luôn luôn xảy ra. Nhƣ vậy thì việc đoán nhận một
kết quả xảy ra khi thực hiện một phép thử là không có ý nghĩa gì nữa.

c) Entropy đạt giá trị cực đại khi xác suất của các sự kiện ngẫu nhiên cơ bản của
không gian mẫu bằng nhau. Lúc đó độ bất định của việc đoán nhận một sự
kiện ngẫu nhiên cơ bản nào đó xảy ra là lớn nhất.
Định lý:
Nếu Ω, Φ là hai không gian mẫu cùng có m phần tử và nếu Φ là đồng xác suất
thì H(Ω) ≤ H(Φ).
Dấu bằng xẩy ra khi và chỉ khi với mỗi sự kiện ngẫu nhiên cơ bản trong Ω có
xác suất p
i
thì trong Ф cũng có một sự kiện ngẫu nhiên cơ bản có xác suất p
i
, tức là Ω
cũng là không gian đồng xác suất.
Nhƣ vậy, định lý khẳng định rằng entropy của không gian đồng xác suất là lớn
nhất trong số các không gian mẫu có cùng số các sự kiện ngẫu nhiên cơ bản.
Ví dụ:
Ví dụ đơn giản để minh hoạ nhƣ sau: giả sử chúng ta tung con xúc sắc mà ở
mặt 1 chúng ta gắn chì vào. Do khối lƣợng chì nặng nên đa số trƣờng hợp mặt 6 xuất
hiện (mặt 6 đối diện với mặt 1). Vì thế việc đoán xem mặt nào xuất hiện trở nên dễ
hơn.




15



Chương 2: PHƢƠNG PHÁP MÃ HOÁ
2.1 CÁC KHÁI NIỆM CƠ BẢN

Trong một phạm vi hẹp, có thể hiểu nhiệm vụ cơ bản của mật mã học là
nghiên cứu những phƣơng pháp cho phép hai ngƣời có thể truyền thông với nhau trên
một kênh thông tin không an toàn, sao cho ngƣời thứ ba dù có thể lấy cắp đƣợc thông
tin cũng không thể hiểu đƣợc nội dung những thông tin truyền đi đó.
Thông điệp mà Alice muốn gửi tới Bob đƣợc gọi là bản rõ (plaintext), kí hiệu
là x. Để bảo vệ thông tin Alice cần sử dụng một cơ chế để truyền bản rõ x sang một
dạng biểu diễn khác – bản mã (ciphertext), đƣợc kí hiệu là y và gửi bản y. Bob sau khi
nhận đƣợc bản mã y anh sử dụng một cơ chế để chuyển đổi bản mã y về bản rõ x.
Công việc của Alice chuyển từ bản rõ x sang bản mã y đƣợc gọi là mã hóa
(encryption), công việc ngƣợc lại của Bob chuyển đổi từ bản mã y sang bản rõ x đƣợc
gọi là giải mã (decryption.
Yêu cầu cơ bản nhất với mỗi hệ mã hoá là bảo đảm qui tắc mã hóa và giải mã
phải có khả năng tính toán hiệu quả, đồng thời đối phƣơng khi có bản mã y, khả năng
tìm ra bản rõ x hoặc khóa K là khó (rất khó thực hiện trong thời gian cho phép). Sau
đây là định nghĩa một hệ mã hoá dƣới hình thức toán học:
Định nghĩa:
Một hệ mật mã là một bộ 5 (P, C, K, E, D) trong đó:
1. P là một tập hợp hữu bạn các bản rõ có thể
2. C là một tập hợp hữu hạn các bản mã có thể
3. K, không gian khóa, là một tập hữu hạn các khóa có thể
4. Với mỗi khóa k K, tồn tại một qui tắc mã hóa e
k
E và một qui tắc giải
mã tƣơng ứng d
k
D, trong đó e
t
: P C và d
k
: C P là các ánh xạ thỏa

mãn d
k
(e
k
(x)) = x x P


Hình 2.1 Nguy cơ bị tấn công khi truyền thông tin trên mạng máy tính



16



2.1.1 Hệ mã hoá khoá đối xứng
Theo mô hình chung của các hệ mã hoá khoá đối xứng, Alice và Bob bí mật
chọn khóa K, sau đó K đƣợc sử dụng cho quy tắc mã hóa cũng nhƣ giải mã. Theo
phƣơng pháp mã hóa này thì khóa để mã hóa chính là khóa để giải mã hoặc trong một
số hệ mật thì khóa để mã hóa và khóa để giải mã tuy khác nhau nhƣng dễ dàng tính
đƣợc thành phần này khi đã biết thành phần kia. Từ đó mà các hệ mã hoá khoá đối
xứng còn đƣợc gọi với tên khác là hệ mã hoá khóa bị mật, hay hệ mã hoá khóa đối
xứng. Dƣới đây là mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng

Hình 2.2: Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12]
2.1.2 Hệ mã hoá khoá phi đối xứng
Một hạn chế của một hệ mã hoá khoá đối xứng là nó yêu cầu việc truyền đi khóa
K giữa Alice và Bob trên một kênh an toàn trƣớc khi bất kì thông điệp mã hóa nào đƣợc
truyenf đi. Trên thực tế điều này rất khó thực hiện khi mà hai ngƣời ở xa nhau
Từ mặt hạn chế của các hệ mã hoá khoá đối xứng đã phân tích ở trên, ngƣời ta

nghiên cứu và đề xuất các hệ mã hoá công khai (hệ mã hoá bất đối xứng). Tƣ tƣởng chung
của các hệ mã hoá khoá phi đối xứng là mỗi khóa K trong hệ mã hoá bao gồm hai thành
phần: thành phần thứ nhất dành cho quá trình mã hóa, đƣợc gọi là khóa công khai và
thành phần thứ hai dành cho quá trình giải mã, đƣợc gọi là khó bí mật (khóa riêng). Có thể
hình dung Bob là ngƣời sẽ nhận các thông điệp bí mật từ những ngƣời khác, anh tìm một
qui tắc mã hóa e
K
và một quy tắc giải mã tƣơng ứng d
K
. Bob công bố công khai khoá e
K

và giữ bí mật khoá d
K
. Sau đó Alice và những ngƣời khác có thể sử dụng e
K
để mã hoá các
thông điệp trƣớc khi gửi tới Bob. Về mặt lý thuyết, Bob phải đảm bảo ngƣời khác không
thể tìm ra d
K
tƣơng ứng từ e
K
trong thời gian thực. Ý tƣởng về hệ mã hoá công khai đƣợc
Diffie và Hellman đề xuất vào năm 1976. Và sự hiện thực hoá đầu tiên của ý tƣởng này
vào năm 1977 là công của Rivest, Shamir và Adleman họ là những ngƣời phát minh ra hệ
mã hoá RSA



17





Hình 2.3: Mô hình truyền thông sử dụng hệ mã hoá khoá công khai [12]
2.1.3 Hệ mã hoá RSA
2.1.3.1 Lịch sử hình thành hệ mã hoá RSA
RSA (Ron Rivers, Adi Shamir và Len Adleman) là một hệ mã hoá khoá phi
đối xứng. Nó là thuật toán đầu tiên phù hợp với việc tạo ra chữ kí điện tử và đánh dấu
một sự tiến bộ vƣợt bậc trong mật mã học. RSA đang đƣợc ứng dụng phổ biến trong
giao dịch điện tử, đảm bảo an toàn với điều kiện độ dài đủ lớn. Thuật toán đƣợc mô tả
lần đầu tiên vào năm 1977 tại Học viện công nghệ Massachusettes (MIT).
Trƣớc đó, vào năm 1973, Clifford Cocks, một nhà toán học ngƣời Anh đã mô
tả thuật toán tƣơng tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không
khả thi và chƣa bao giờ đƣợc cài đặt thực nghiệm. Phát minh này chỉ đƣợc công bố
năm 1977 vì đƣợc xếp vào loại tuyệt mật
2.1.3.2 Hệ mã hoá RSA đầu tiên
1/. Bài toán phân tích một số tự nhiên ra thừa số nguyên tố
Các thuật toán mã hóa công khai hiện đại đƣợc nghiên cứu và đề xuất dựa trên
việc nghiên cứu lý thuyết độ phức tạp của thuật toán và tính khó của các bài toán mà
thuật toán tốt nhất đƣợc tìm ra là để giải quyết bài toán đó cũng không chấp nhận đƣợc
trong thời gian thực với các máy tính hiện đại
Thuật toán RSA là thuật toán mã hóa dựa trên tính khó của bài toán phân tích
một số nguyên tố tự nhiên (đủ lớn) ra thừa số nguyên tố. Giả sử có n là một số tự nhiện
n = p.q trong đó p, q là các số nguyên tố. Với n là số tự nhiên đủ lớn, có độ dài trên
100 chữ số thập phân, thì bài toán phân tích n ra thừa số nguyên tố (tức tìm p, q) chƣa



18




có thuật toán trong thời gian đa thức. Với các máy tính hiện đại thì chƣa thể giải quyết
bài toán này trong thời gian thực
2/. Bộ số RSA
Cho p, q là hai số nguyên tố khác nhau và n = p.q khi đó (n) = (p-1)(q-1).
Lấy a thuộc Z
(n)
sao cho a khả nghịch. Giả sử b = a
-1
mod (n)
a/ Định nghĩa:
Bộ các số (n, p, q, a, b) trong đó n, p, q, a, b đƣợc đề cập ở trên đƣợc gọi là bộ
số RSA.
Ta có tính chất quan trọng sau đây của bộ số RSA.
b/ Định lý:
Nếu (n, p, q, a, b) là các bộ số RSA thì x Z
n
ta có: x
ab
mod n = x
c/ Ứng dụng:
Cho bộ số RSA (n, p, q, a, b), x Z
n
. Đặt y = x
b
mod n. Khi đó ta có cách tìm
x từ y bởi công thức: x = y
a

mod n. Từ đó đƣa ra định nghĩa hệ mã hoá RSA.
2.1.3.3 Định nghĩa hệ mã hoá RSA
Định nghĩa:
Cho bộ số RSA (n, p, q, a, b) trong đó p, q là những số nguyên tố cỡ 512 bit
hoặc lớn hơn. Hệ mã hoá RSA với khóa K = (n, p, q, a, b) là hệ mã hoá với P = C = Z
n
,
qui tắc mã hóa và giải mã nhƣ sau:
Qui tắc mã hóa: với mỗi x P = Z
n
e
k
: Z
n
Z
n

x y = x
b
mod n
Qui tắc giải mã:
d
k
: Z
n
Z
n

y x = y
a

mod n
Trong đó: (n, b) là thành phần khóa công khai
(p, q, a) là thành phần khóa bí mật



19



2.2 CÁC CHUẨN KỸ THUẬT TRONG PKCS
2.2.1 Tổng quan về PKCS và PKCS#1 v2.1
2.2.1.1 PKCS
PKCS là viết tắt của Publick – Key Cryptography Standards, là một tập hợp
các chuẩn trong mã hoá hóa công khai, đƣợc đánh thứ tự PKCS#1 tới PKCS #15.
PKCS đƣợc phát triển bởi phòng thí nghiệm RSA (RSA Laboratories) – một bộ phận
của Tổ chức an toàn dữ liệu RSA (RSA Data Security Inc), cùng sự hợp tác rộng rãi
với các nhà phát triển các hệ thống an ninh, nhằm đẩy nhanh tốc độ triển khai các ứng
dụng các hệ mã hoá khoá phi đối xứng.
2.2.1.2 PKCS#1 v2.1
Chuẩn PKCS#1 v2.1 đƣợc phòng thí nghiệm RSA công bố trong tài liệu
PKCS#1 v2.1: RSA Cryptopraphy Standard, ngày 14/6/2002. Mục đích là đƣa ra các
khuyến nghị trong việc cài hệ mã hoá công khai dựa trên cơ sở của thuật toán RSA.
Chuẩn PKCS#1 v2.1 đề cập tới các vấn đề cơ bản sau:
+ Các cơ sở của hệ mã hoá
+ Lƣợc đồ mã hóa
+ Lƣợc đồ chữ ký số
+ Cú pháp ASN.1 để biểu diễn khóa và nhận dạng lƣợc đồ
Điểm mới trong PKCS#1 v2.1 so với các phiên bản trƣớc ở sự dựa vào thuật
toán RSA – đa nguyên tố (Multi prime RSA) và lƣợc đồ chữ ký RSASSA – PSS.

Trong RSA – đa nguyên tố thể hiện ở modulo RSA n là tích của nhiều hơn hai số
nguyên tố (trong các phiên bản trƣớc đó n tích của hai số nguyên tố n = p.q)




20



2.2.2 Các ký hiệu trong PKCS#1 v2.1
c Biểu diễn bản mã dạng số nguyên, 0 c n – 1 (là đầu ra của cơ sở mã hóa
RSAEP và là đầu vào của cơ sở giải mã RSADP)
C bản mã, là một chuỗi octet (là đầu ra của mã hóa RSAES – OAEP –
DECRYPT).
d số mũ RSA bí mật, sử dụng cho quá trình giải mã
d
i
số mũ CRT của r
i
, là một số nguyên dƣơng thỏa mã:
e.d
i
1 (mod ( r
i
- 1)), d
i
< r
i
– 1, i = 3, . . u.

dP số mũ CRT của p, là một số nguyên dƣơng thỏa mãn:
e.dP 1 (mod (p – 1)); dP< p – 1
dQ số mũ CRT của q, là một số nguyên dƣơng thỏa mã:
e.dQ 1 (mod (q – 1)); dQ < q – 1
e số mũ RSA công khai, sử dụng trong quá trình mã hóa
EM thông điệp đã mã hóa, là một chuỗi octet (kết quả của quá trình áp dụng phƣơng
thức độn EME – OAEP trên thông điệp M)
emBit chiều dài tính theo số bit của một thông điệp đã đƣợc mã hóa EM
emLen chiều dài tính theo số octet của một thông điệp đã đƣợc mã hóa EM
GCD(. , .) WCLN của hai số nguyên không âm
Hash hàm băm bảo mật
hLen chiều dài đầu ra, tính theo octet của hàm băm Hash
k chiều dài tính theo số octet của modulo RSA n
K khóa bí mật RSA
L nhãn sử dụng trong RSAES – OAEP, một chuỗi octet
LCM (. , … , .) bội chung nhỏ nhất của các số nguyên không âm
M biểu diễn thông điệp (bản rõ) dạng số nguyên, 0 m n – 1 (là đầu vào của cơ
sở mã hóa RSAEP, và là đầu ra của cơ sở giải mã RSADP)
M thông điệp, là một chuỗi octet (là đầu vào của hoạt động mã hóa RSAES –
OAEP – ENCRYPT, và là đầu ra của hoạt động giải mã RSAES – OAEP –
DECRYPT)



21



mask đầu ra của MGF, là một chuỗi octet
maskLen chiều dài tính theo octet của mask

MGF hàm sinh mặt nạ
mgfSeed hạt giống từ đó sinh ra mặt lạ mask, là một chuỗi octet
mLen chiều dài tính theo số octet của thông điệp M
n Modulo RSA, n = r
1
r
2
r
3
.r
u
, u 2
(n, e) khóa công khai RSA
p, q hai thừa số nguên tố đầu tiên của modulo RSA n
qInv hệ số CRT của p (hay hệ số CRT đầu tiên), một số nguyên dƣơng nhỏ hơn p và
thỏa mãn: q . qInv 1 (mod p)
r
i
thừa số nguyên tố của modulo RSA n, trong đó bao gồm r
1
= p, r
2
= q, và các
thừa số khác nếu có
t
i
hệ số CRT của thừa số nguyên tố r
i
, một số nguyên dƣơng nhỏ hơn r
i

thỏa r
1
r
2

… r
i-1
t
i
1 (mod r
i
), t
i
< r
i
, I = 3, … , u
u số các thừa số nguyên tố của modunlo RSA, u 2
x một số nguyên không âm
X một chuỗi octet tƣơng ứng với x
xLen chiều dài tính theo octet của xâu X
(n) LCM (r
1
– 1, r
2
– 1, … , r
u
- 1)
phép XOR bit trên 2 chuỗi octet
.
hàm sàn; x là số nguyên nhỏ nhất, lớn hơn hoặc bằng số thực x

|| toán tử nối các chuỗi octet
kí hiệu đồng dƣ, a b (mod n) có nghĩa là (a – b)

n
Ghi chú: thuật ngữ octet có ý nghĩa tƣơng đƣơng với byte (8 - bit)
2.2.3 Các kiểu khóa
Có hai kiểu khóa đƣợc sử dụng trong các cơ sở của hệ mật cũng nhƣ trong các
lƣợc đồ, đƣợc định nghĩa trong tài liệu PKCS#1 v2.1 là khóa bí mật RSA và khóa công
khai RSA. Một khóa công khai RSA và một khóa bí mật RSA tƣơng ứng kết hợp với
nhau tạo thành cặp khóa RSA



22



2.2.3.1 Khóa công khai RSA
Một khóa công khai RSA bao gồm hai thành phần:
+ n modulo RSA, một số nguyên dƣơng
+ e số mũ công khai RSA, một số nguyên dƣơng
Trong một khóa công khai RSA hợp lệ thì:
+ Modulo RSA n là tích của u số nguyên tố lẻ phân biệt r
i
, i = 1, 2, 3, ,u; u 2
+ số mũ công khai RSA e là số nguyên thỏa 3 e n – 1, UCLN(e, (n)) = 1
2.2.3.2 Khóa bí mật RSA
Có thể sử dụng một trong hai cách biểu diễn khóa bí mật RSA
Dạng 1: theo cách biểu diễn này thì một khóa bí mật RSA bao gồm hai thành
phần:

+ n modulo RSA, một số nguyên dƣơng
+ d số mũ bí mật RSA, một số nguyên dƣơng
Dạng 2: trong cách biểu diễn này thì một khóa bí mật RSA bao gồm một bộ
năm số (p, q, dP, dQ, qInv) và các bộ ba (khuyết nếu u = 2) (r
i
, d
i
, t
i
). Ý nghĩa của các
thành phần nhƣ sau:
+ p thừa số nguyên tố đầu tiên của n
+ q thừa số nguyên tố thứ hai của n
+ dP số mũ CRT của thừa số thứ nhất p
+ dQ số mũ CRT của thừa số nguyên tố thứ hai q
+ qInv hệ số CRT đầu tiên
+ r
i
thừa số nguyên tố thứ i
+ d
i
số mũ CRT của thừa số nguyên tố thứ i
+ t
i
hệ số CRT của thừa số thứ i
Trong một khóa bí mật RSA hợp lệ ở dạng biểu diễn thứ nhất thì:
+ n mang ý nghĩa nhƣ trong khóa công khai RSA
+ d số mũ bí mật RSA, là một số nguyên dƣơng nhỏ hơn n và thỏa mãn e.d
1 (mod ( (n)). Trong đó e là số mũ công khai RSA, và (n) đã đƣợc định nghĩa trong
mục 3.2




23



Một khóa bí mật RSA hợp lệ ở dạng biểu diễn thứ hai thì phải thỏa mãn:
+ p, q là hai thừa số nguyên tố đầu tiên của modulo RSA n. Các số mũ CRT
dP, dQ là những số nguyên dƣơng tƣơng ứng nhỏ hơn p và q thỏa mãn:
e.dP 1 (mod (p – 1))
e.dQ 1 (mod(q – 1))
+ Hệ số CRT đầu tiên qInv là một số nguyên dƣơng nhỏ hơn p, thỏa mãn
q.qInv 1 (mod p)
+ Nếu u > 2 thì trong khóa bí mật RSA dạng hai bao gồm các bộ ba (r
i
, d
i
, t
i
), I
= 3, 4, … u.trong đó r
i
là thừa số nguyên tố thứ I của modulo RSA n. Với số mũ CRT
d
I
(i = 3, 4,…,u) phải thỏa mãn e.d
i
1 (mod(r
i

– 1)), d
i
< r
i
. Mỗi hệ số CRT t
i
(i = 3, 4,
…, u) là một số nguyên dƣơng nhỏ hơn r
i
và thỏa mãn R
i
. t
i
1 (mod r
i
), R
i
= r
1
.r
2
r
i-1

2.2.4 Cơ sở chuyển đổi dữ liệu I2OSP và OS2IP
Có hai kiểu cơ sở chuyển đổi dữ liệu đƣợc sử dụng trong PKCS#1 v2.1:
+ I2OSP: Integer – to – Octet – String Primitive: chuyển đổi từ dạng số
nguyên sang chuỗi octet
+ OS2IP: Octet – String – to – Integer Primitive: chuyển đổi từ dạng chuỗi
octet sang dạng số nguyên

Các cơ sở chuyển đổi dữ liệu này sẽ đƣợc sử dụng trong lƣợc đồ mã hóa
RSAES – OAEP. Về mặt toán học thực chất I2OSP và OS2IP là hai song ánh ngƣợc
nhau. Việc chuyển đổi này là quan trọng, vì trên thực tế, đầu vào và đầu ra của quy
trình mã hóa và giải mã thực chất là chỉ là những chuỗi octet, trong khi đó thuật toán
RSA chỉ làm việc trên các số nguyên
Trong thực tế để đảm bảo tính an toàn thuật toán RSA yêu cầu việc xử lý trên
số nguyên rất lớn, chúng nằm ngoài phạm vi biểu diễn của một từ máy, vì vậy ngƣời ta
phải biểu diễn số nguyên trong một cấu trúc dữ liệu nào đó. Vì vậy, các cơ sở chuyển
đổi dữ liệu sẽ làm việc trên chuỗi octet và cấu trúc dữ liệu này.
Ghi chú: một chuỗi octet là một dãy tuần tự của các octet, trong đó mỗi octet
là một byte. Dãy tuần tự đó đƣợc đánh dấu chỉ mục từ octet đầu tiên (leftmost) cho đến
octet cuối cùng (rightmost)




24



2.2.4.1 Chuyển đổi dữ liệu I2OSP
I2OSP chuyển đổi một số nguyên không âm về dạng một chuỗi octet với độ
dài đƣợc chỉ định trƣớc
I2OSP (x, xLen)
INPUT: x số nguyên không âm sẽ đƣợc chuyển đổi
xLen biểu diễn chiều dài của chuỗi octet đầu ra
OUTPUT: X chuỗi octet tƣơng ứng với chiều dài xLen
Lỗi: “số nguyên quá lớn”
Các bước chuyển đổi:
1. Nếu x 256

xLen
, ra “số nguyên quá lớn” và kết thúc
2. Viết số nguyên x ở dạng biểu diễn của nó với chiều dài xLen trong cơ sở
256:
x = x
xLen – 1
. 256
xLen – 1
+ x
xLen – 2
. 256
xLen – 2
+ …. + x
1
256 + x
0

trong đó 0 x
i
256 (chú ý rằng ở đó có một hoặc nhiều hơn chữ số bằng
không nếu x nhỏ hơn 256
xLen – 1
)
3. Lấy octet X
i
có giá trị nguyên x
xLen – I
với mỗi 1 i xLen. Ta đƣợc chuỗi
octet đầu ra: X = X
1

X
2
…X
xLen

2.2.4.2 Chuyển đổi dữ liệu OS2IP
OS2IP chuyển đổi một chuỗi octet về một số nguyên không âm
OS2IP(X)
INPUT: X chuỗi octet sẽ đƣợc chuyển đổi
OUTPUT: x số nguyên không âm tƣơng ứng
Các bước chuyển đổi:
1. Lấ. y X
1
X
2
…X
xLen
là dãy octet của X từ octet đầu tiên cho tới octet cuối
cùng, lấy x
xLen -i
là giá trị nguyên của octet X
i
với mỗi i: 1 i xLen
2. Tính x = x
xLen – 1
. 256
xLen – 1
+ x
xLen – 2
. 256

xLen – 2
+ …. + x
1
256 + x
0

3. Ra x




25



2.2.5 Cơ sở của hệ mật mã
Một cơ sở mã hóa sẽ tạo ra ra một biểu diễn bản mã từ biểu diễn của một
thông điệp với sự tham gia (điều khiển) của khóa công khai. Một cơ sở giải mã sẽ khôi
phục lại biểu diễn của thông điệp ban đầu từ biểu diễn của bản mã dƣới sự tham gia
(điều khiển) của khóa bí mật tƣơng ứng. Mỗi thông điệp hay bản mã ở đây đều là các
số nguyê. Một cặp cơ sở mã hóa và giải mã đƣợc định nghĩa và ứng dụng trong
PKCS#1 v2.1 là RSAEP và RSADP. RSAEP và RSADP đều bao gồm trong đó các
phép toán số học tƣơng ứng nhau, nhƣng khác nhau ở khóa điều khiển với vai trò nhƣ
một tham số đầu vào. Phép toán số học chính đƣợc sử dụng trong mỗi cơ sở là phép
tính mũ và có sự rút gọn theo modulo
2.2.5.1 Cơ sở hệ mã hóa RSAEP
RSAEP((n, e), m)
INPUT:
(n, e) khóa công khai RSA
m biểu diễn thông điệp, một số ngyên giữa 0 và n – 1

OUTPUT:
c biểu diễn bản mã, một số nguyên giữa 0 và n – 1
Lỗi: “biểu diễn thông điệp ngoài giớ hạn”
Giả định: khóa công khai RSA(n, e) hợp lệ
Các bước:
1. Nếu biểu diễn thông điệp m không nằm giữa 0 và n – 2, ra “ biểu diễn thông
điệp nằm ngoài giới hạn” và dừng
2. Tính c = m
e
mod n
3. ra c

×