Tải bản đầy đủ (.doc) (143 trang)

xây dựng chương trình bảo vệ dữ liệu trên môi trường không an toàn

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 (1.24 MB, 143 trang )

Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Lời nói đầu
Sự phát triển nhanh chóng của công nghệ thông tin hiện nay đã mang lại
những lợi Ých to lớn cho chóng ta. Nhờ có mạng máy tính mà chúng ta có thể
khai thác, truyền, nhận thông tin một cách rất nhanh chóng. Tuy nhiên, cùng với
những lợi Ých trên, mạng máy tính cũng đã tạo ra một môi trường không an toàn.
Khi đã kết nối vào mạng, chúng ta có thể bị tấn công bất kỳ lúc nào. Những dữ
liệu và thông tin quan trọng bị các hacker lấy cắp, chương trình bị virus lây
nhiễm… Sự phổ biến của mạng Internet nh hiện nay đã làm môi trường này trở
nên phổ biến. Mặc dù những công cụ nhằm bảo vệ chương trình và dữ liệu liên
tục được phát triển: Những chương trình diệt virus liên tục được cập nhật, các hệ
thống bảo mật của hệ điều hành cũng liên tục được cải tiến. Tuy nhiên, việc phát
triển các hệ thống trên vẫn không thể theo kịp được với nhu cầu thực tế. Do vậy,
đối với công nghệ thông tin hiện nay, làm việc trên môi trường không an toàn là
điều tất yếu.
Thực tế trờn đó đặt ra một yêu cầu cấp bách là phải xây dựng những hệ
thống bảo vệ các chương trình và dữ liệu của chúng ta trên môi trường không an
toàn, có khả năng phát hiện sớm sự tấn công của virus, tránh được việc lấy cắp
những thông tin quan trọng.
Xuất phát từ yêu cầu này, đề tài tốt nghiệp của chúng em đã nghiên cứu và
ứng dụng những lý thuyết về mã hóa và chữ ký số hiện đại để xây dựng chương
trình bảo vệ dữ liệu trên môi trường không an toàn. Cụ thể, đề tài đã xây dựng
thành công một cấu trúc dữ liệu đặc biệt gọi là “volume ảo”. Cấu trúc này có
khả năng lưu trữ dữ liệu dưới dạng các file có phân cấp theo thư mục tương tù
nh các hệ thống file trờn cỏc hệ điều hành hiện nay. Tuy nhiên, không chỉ có
chức năng lưu trữ file thông thường, nú cũn cú khả năng bảo vệ được dữ liệu
bên trong bằng việc sử dụng những thuật toán mã hóa phức tạp với khóa động
được sinh từ những thông tin xác thực người dùng. Vì lý do bảo mật, volume ảo
không tích hợp với hệ thống vào ra file của hệ điều hành. Do vậy, đÒ tài đã xây
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 1 -


Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
dựng những công cụ riêng cung cấp các dịch vụ vào ra trờn bao gồm trình quản
lý volume ảo và công cụ tìm kiếm mờ trên môi trường này.
Với mục đích nh trên, đề tài được chia làm 3 phần:
Phần 1: Trình bày cơ sở lý thuyết mã hóa và chữ ký sè
Phần 2: Trình bày cấu trúc của volume ảo và xây dựng trình điều khiển volume
ảo
Phân 3: Trình bày chi tiết về công cụ tìm kiếm mờ trên môi trường volume ảo
này.
Để hoàn thành được đề tài này, chúng em đã phân công nhau thực hiện các
phần việc của đề tài nh sau:
Ngô Thế Trung:
Nghiên cứu lý thuyết mã hóa và chữ ký sè
Xây dựng các modul mã hóa cơ bản ứng dụng trong hệ thống
Phạm Quang Huy:
Xây dựng cấu trúc volume ảo và trình quản lý volume ảo
Xậy dựng công cụ tìm kiếm mờ trên môi trường volume ảo
được
Mặc dù hết sức cố gắng trong quá trình làm đồ án. Tuy nhiên chúng em vẫn
không thể tránh khỏi những thiếu sót. Em rất mong nhận được những ý kiến
đóng góp của các thầy cô và các bạn để hệ thống được hoàn thiện hơn.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 2 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Lời cảm ơn
Chóng em xin được bày tỏ lòng biết ơn sâu sắc tới thầy giáo hướng dẫn
Phan Trung Huy. Thầy đã tận tình hướng dẫn chúng em trong suốt quá trình làm
đồ án vừa qua. Thầy đã đưa chúng em đến với đề tài, gợi ý các ý tưởng và các
giải pháp thực hiện. Nếu không có sự nhiệt tình giúp đỡ của thầy thì chúng em
cũng không thể có được thành công ngày hôm nay.

Chóng em còng xin được cảm ơn tất cả các thầy cô giáo trong khoa Toán –
Tin ứng dụng. Các thày cô đã truyền đạt cho chóng em những kiến thức nền tảng
trong quá trình học tập tại khoa.
Chóng con xin cảm ơn bố, mẹ. Bố mẹ đã tạo mọi điều kiện tốt nhất cho
chóng con cả về chất lẫn tinh thần trong suốt quá trình học tập cũng như làm đồ
án tốt nghiệp, giỳp chóng con có được kết quả như ngày hôm nay.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 3 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Mục lục
Mã hóa v ch ký sèà ữ 5
B o v d li u trên môi tr ng không an to nả ệ ữ ệ ườ à 57
Công c tìm ki m m trên môi tr ng volume oụ ế ờ ườ ả 99
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 4 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Mã hóa và chữ ký sè
Các hệ mật mã đóng một vai trò rất quan trọng trong quá trình phát triển
công nghệ thông tin. Các hệ mật riêng lẻ nh hệ mó hoỏ khoỏ đối xứng, hệ mó
hoỏ khoỏ công khai, các hệ hàm băm mật mã đều có những đặc trưng nhất định.
Ngoài việc sử dụng riêng lẻ các hệ mật trên theo đúng tư tưởng thiết kế của
chúng thì việc kết hợp chúng với nhau để tạo thành các giao thức hoặc các ứng
dụng trong những trường hợp đặc biệt có thể nói là một nghệ thuật.
Để trình bày cơ sở của hệ thống này, sau đây ta điểm qua một số vấn đề của
lý thuyết mã hóa và chữ ký số hiện đại, phục vụ cho việc bảo vệ chương trình và
dữ liệu.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 5 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Ch¬ng 1. Một số kiến thức toán học cơ sở

1.1 Thuật toán và độ phức tạp
1.1.1 Thuật toán
§Þnh nghÜa 1.1: Thuật toán bao gồm một quy tắc để với những dữ liệu
ban đầu đã cho ta tìm được lời giải của bài toán được xét sau một khoảng
thời gian hữu hạn.
Nh vậy, thuật toán phải thoả mãn 2 yêu cầu:
1) Tính hữu hạn: Thuật toán cần phải kết thúc sau một số hữu hạn bước.
Khi thuật toán ngừng làm việc, ta phải thu được câu trả lời cho vấn đề
đặt ra.
2) Tính xác định: Ở mỗi bước, thuật toán cần phải xác định, nghĩa là chỉ rõ
việc cần làm. Nếu đối với người đọc, nếu chưa thoả món trờn chưa thoả
mãn điều kiện này thì đó là lỗi của người viết.
Ngoài ra, ta còn phải xét đến tính hiệu quả của thuật toán, có nhiều thuật toán về
lý thuyết là kết thúc sau hữu hạn bước, tuy nhiên thời gian hữu hạn đó vượt quá
khả năng làm việc của chúng ta ( Ví dụ: 100 năm). Các thuật toán loại này không
được xét đến ở đây.
1.1.2 Độ phức tạp của thuật toán
Thời gian làm việc của máy tính khi chạy một thuật toán không chỉ phụ
thuộc vào thuật toán mà còn phụ thuộc vào máy tính được sử dụng. Do đó, xét
một tiêu chuẩn chung để đo độ phức tạp của thuật toán đó là dùa vào số thao tác
cơ sở phải làm khi thực hiện thuật toán.
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.
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) <= Cg(n).
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 6 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
§Þnh nghÜa 1.2: Một thuật toán được gọi là có độ phức tạp đa thức theo cỡ
(dữ liệu) n , 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 vượt quá O(n
d
), trong đó n là độ lớn của đầu vào,
và d là số nguyên dương nào đó.
Nh vậy, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật toán là đa thức
bậc d theo k nghĩa là là O(k
d
), tức là tương đương với một đa thức của k (bậc d).
Các thuật toán với thời gian O(α
n
), α >1 , được gọi là các thuật toán với độ phức
tạp mũ, hoặc thời gian mò.
Các thuật toán có độ phức tạp trung gian giữa đa thức và mũ được gọi là thuật
toán dưới mũ.
1.2 Phép tính đồng dư và các vấn đề liên quan
1.2.1 Số nguyên tố và định lý cơ bản của số học:
Ký hiệu Z là tập các số nguyên: …,-2,-1,0,1,2,… và N là tập các số tự nhiên (tức
là các số nguyên dương: 1,2,3…).
Với a, b

Z ta nói rằng b chia hết cho a nếu như b có thể viết thành tích của a
với một số nguyờn khỏc; khi Êy ta cũng có thể nói rằng a chia hết b, hay a là một
ước số của b, và ký hiệu a | b. Ta có một số tính chất:
1) Nếu a, b, c

Z và a | b thì a | bc;
2) Nếu a | b và b | c thì a | c;
3) Nếu a | b và a | c thì a | b ± c;
4) Nếu a | b và a không chia hết c thì a không chia hết b ± c;
§Þnh nghÜa 1.3: Sè tự nhiên lớn hơn 1 mà không chia hết cho số tự nhiên

nào khác, trừ chính nó và 1, thì được gọi là số nguyên tè.
Nếu p là một số nguyên tố thì ta sẽ sử dụng ký hiệu p
α
|| b để chỉ rằng
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 7 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
p
α
| b nhưng p
α+1
không chia hết b.
§Þnh lý 1.1 Mọi số nguyên lớn hơn 1 đều có thể phân tích một cách duy
nhất dưới dạng tớch cỏc luỹ thừa của các số nguyên tố khác nhau.
Nếu p là một số nguyên tố và p | ab thì Ýt nhất một trong 2 sè a,b phải
chia hết cho p.
Ước chung lớn nhất của hai số tự nhiên a,b là số lớn nhất trong tập các ước
chung của 2 số đó, được ký hiệu là gcd( a, b) hay đơn giản là (a,b).
Nh vậy, nếu d | a và d | b thì d | gcd(a,b).
Khi hai số tự nhiên có ước chung lớn nhất là 1 thỡ chỳng được gọi là nguyên tố
cùng nhau.
1.2.2 Thuật toán Euclid và mở rộng
Giả sử m là một số nguyên dương ta nói hai số nguyên a và b đồng dư với
nhau modulo m nếu m chia hết hiệu a-b ( Tức là m | gcd(a,b)). Ký hiệu là a

b(mod m).
Nh vậy, a

b(mod m) khi và chỉ khi tồn tại số nguyên k sao cho a=b+km.
để tìm gcd( a,b) có một thuật toán nổi tiếng đó là thuật toán Euclid.

1.2.2.1 Thuật toán Euclid:
B0: Nếu a<b đổi chỗ a cho b ( khẳng định a≥b).
B1: Nếu b=0, in ra a và kết thóc.
B2: Đặt r = a mod b, a=b, b= r quay về B1.
§Þnh lý 1.2 (Lamộ): Số phép chia cần thiết để tìm gcd (a,b) bằng thuật toán
Euclid không vượt quá 5 lần số chữ số thập phân của số bé trong hai
số đã cho.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 8 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Hệ quả: Giả sử a< b, khi đó số các phép tính bit cần thiết để thực hiện thuật
toán Euclid là O(log
2
a)
3
).
Ngoài thuật toán Euclid nói trên, trong nhiều trường hợp, ta cần đến thuật
toán Euclid mở rộng. Thuật toán này không những cho ta tìm gcd(a,b), mà còn
biểu diễn d=gdc( a,b)=ma+nb, trong đó m,n là các số nguyên.
Bổ đề: gdc(a,b) là số d dương nhỏ nhất biểu diễn được dưới dạng tổ hợp
tuyến tính của a và b.
d=gcd(a,b)=ma+nb.
1.2.2.2 Thuật toán Euclid mở rộng
Cho hai số nguyên khụng õm u,v, tìm (x, y, z) sao cho
gcd(u,v)=z=ux+vy.
Trong tính toán, thêm vào các Èn phô (p, q, r), (m, n, t) với
um+vn=t, up+vq=r, ux+vy=z
B1: Đặt (x,y,z)=(1,0,u); (p,q,r)=(1,0,v).
B2: (r=0?) đúng thuật toán kết thúc.
B3:e= abs(z/r).e= abs(z/r).

(m,n,t)=(x,y,z)-e(p,q,r),
(x,y,z)=(p,q,r); (p,q,r)=(m,n,t)
Trở lại B2.
1.2.3 Phi hàm Euler
Với n

N, số lượng các số tự nhiên bé hơn n và nguyên tố cùng nhau với n
được ký hiệu là
φ
(n).
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 9 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Tính chất:
φ
là hàm nhân tính :
φ
(mn)=
φ
(m)
φ
(n).
p là số nguyên tố thì
φ
(p )=p-1.
1.2.4 Định lý Fermat và các mở rộng
§Þnh lý 1.3 (Định lý Fermat (bé)): Nếu p là một số nguyên tố và a là một số
nguyờn thỡ ap

a (mod p). Nếu p không chia hết a ( tức là a mod p #

0) thì ap-1

1 (mod p).
§Þnh lý 1.4 (Định lý mở rộng (Euler)): Nếu gcd(a,m)=1 thì a
φ
(m)

1(mod
m).
Hệ quả 1:
NÕu gcd(c,m)=1 và a

b( mod
φ
(m)) với a,b là các số tự nhiên, thì
)(modmcc
ba

.
Hệ quả 2
NÕu e,d là các số nguyên thoả mãn ed

1 (mod
φ
(m)) thì, với mọi số c nguyên
tố cùng nhau với m, ta có (c
e
)
d


c( mod m).
1.2.5 Thuật toán bình phương nhân liên tiếp
(Nhằm tính a
b
mod m.)
B1: phân tích
01
2
2
1
1
2 222
εεεεε
+++++=




k
k
k
k
k
k
b




=

1
0
i
ε
với i=0 k
B2: Tính
m) mod
0
(m) mod
2
(m mod
0
2
1

2
2
2
1
2
1
2
εεεεεεε
a
k
k
a
k
k
k

k
k
k
a =
+++


+


+
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 10 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
1.2.6 Định lý Trung quốc về phần dư
§Þnh lý 1.5 Cho tập số nguyên tố cùng nhau từng đôi một: m1, m2,…, mr.
Với mỗi bộ số nguyên bất kỳ a1, a2,…, ar, hệ phương trình đồng dư
x

a
i
(mod m
i
) i=1 r,
luụn có nghiệm và là duy nhất theo modulo m= m
1
m
2
…m
r

. Nghiệm này
có thể tính được trực tiếp theo công thức:
x = a1m2…mr b1+ m1 a2…mr b2+ + arm1m2…mr-1br (mod m1m2…
mr) trong đó bi=(( m1m2…mr)/mi)-1(mod mi) i=1 r
1.3 Trường hữu hạn
1.3.1 Trường Fp
Với p là một số nguyên bất kỳ, trên tập cỏc lớp đồng dư theo modulo p, tức
là Z/ pZ, ta có thể thực hiện được các phép tính +, - , x như đã biết ở phần trên.
Khi p là một số nguyên tố thì với mỗi phần tử khỏc khụng α

Z/ pZ ta luôn tìm
được phần tử nghịch đảo α
-1


Z / pZ theo nghĩa αxα
-1

1 (mod p) và do đó có
thể thực hiện phép chia ( cho các phần tử khác 0) theo nghĩa α /
β
= α x
β

-1
. Nh
vậy, Z/ Zp có cấu trúc của một trường và ta ký hiệu trường này là F
p
*
. Nh vậy

F
p
*
= F
p
\ {0}={1,2, ,p-1}.
Ở các phần tiếp thep khi nói đến F
p
*
hay F
p
là ta đề cập đến p nguyên tố.
Một phần tử g

F
p
*

được gọi là phần tử sinh (hay căn nguyên thuỷ ) của nhóm
F
p
*
nếu tập các luỹ thừa của g cũng chính là nhóm này, tức là 2 tập sau trùng
nhau:
{g,g
2
,…, g
p-1
},{1,2,…,p-1}
§Þnh lý 1.6 Nếu g là phần tử sinh của nhóm Fp* còn b là một số nguyên tố

cùng nhau với( p-1) thì gb cũng là một phần tử sinh của nhóm Fp*.
Do đó, số phần tử sinh của nhóm F
p
*
đúng bằng số các số nguyên tố cùng nhau
với (p-1), tức là bằng
φ
(p-1).
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 11 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Bài toán logarit rời rạc
Cho phần tử sinh g

F
p
*
. Khi đó mọi phần tử h

F
p
*
có thể được biểu diễn dưới
dạng một luỹ thừa nào đó của g. Vấn đề là tìm x để h=g
x
. Đây là một việc rất khó
và độ khó của nó được dùng làm độ an toàn cho một vài hệ mã liên quan đến
logarit rời rạc.
1.3.2 Trường F
2

r
Đây cũng là một trường hữu hạn phần tử, nhưng có bản chất khác biệt so với loại
trường hữu hạn đã xét đến ở trên.
Ta ký hiệu F
2
[x] là tập các đa thức với hệ số nằm trong trường F
2
. Có thể liệt kê
ra rằng tập này có 2 đa thức bậc 0 (là 2 hằng số 0, 1), 2 đa thức bậc 1( là x và
x+1), tức là có 4 đa thức bậc không vượt quá 1, và không khó khăn lắm ta có thể
nhận ra rằng, với mỗi số tự nhiên n, có cả thảy 2
n+1
đa thức với bậc không vượt
quá n, với dạng tổng quát là:

}1,0{
201
1
1
=∈++++


Fxxxa
n
n
n
n
εεε
.
Hai đa thức được cộng hoặc nhân với nhau theo quy tắc thông thường, chỉ lưu ý

là các hệ số là những phần tử của trường F
2
, trong đó 1+1=0.
Đa thức gọi là bất khả quy( trên một trường nào đó) nếu nó không thể phân tích
thành tích của các đa thức bậc nhỏ hơn (với các hệ số trên trường đã nói).
Tương tự trên Z, trên F
2
[x] ta cũng đưa vào phép tính đồng dư theo modulo một
phần tử (tức là một đa thức) nào đó, và khi Êy F
2
[x] sẽ được phân tích thành cỏc
lớp với các đại diện là đa thức bậc thấp hơn đa thức ta đã lấy làm modulo. .
Trong trường hợp chung, người ta chứng minh được rằng, với mỗi đa thức bất
khả quy P
d
(x) với bậc d, tập hợp F
2
[x]/P
d
(x) là một trường chứa đúng 2
d
phần tử,
ký hiệu là F
2d
; mỗi phần tử của nó được đại diện bởi một đa thức với bậc không
vượt quá d-1.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 12 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Người ta cũng chứng minh được rằng tập hợp các phần tử khác 0 của trường F

2d
,
được ký hiệu là F
2d
*
, còng lập thành một nhóm và được sinh bởi một phần tử nào
đó, tức là cũng có cấu trúc tương tự như nhóm F
p
*
đã được xét ở trên. Phần tử
sinh của nó cũng phải cú cỏc luỹ thừa bậc là ước của (2
d
-1) khác đơn vị, và số
lượng phần tử sinh là
φ
(2
d
-1).
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 13 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Ch¬ng 2. Các khái niệm cơ bản về mó hoá
2.1 Một số thuật ngữ và khái niệm
Văn bản (plaintext) là một thông báo gốc cần chuyển, được ghi bằng hình ảnh,
âm thanh, chữ số, chữ viết,… Về sau, khi đưa ra các ví dụ, ta thường xem các
văn bản được viết bằng chữ viết, hoặc bằng chữ số. Tuy nhiên, ngày nay mọi tín
hiệu đề có thể được số hoá, cho nên việc nghiên cứu trờn cỏc văn bản số không
hạn chế các ứng dụng của nó.
Mó hoá (encryption) là việc “ngụy trang” văn bản ( thông tin nói chung) sang
một dạng khác để cho những người “ngoài cuộc” không thể đọc được, phục vụ

cho nhu cầu trao đổi thông tin, dữ liệu và các cuộc giao dịch tài chính, thương
mại… Quá trình “nguỵ trang” văn bản gọi là quá trình lập mó, cũn quá trình
“khụi phục” lại văn bản được gọi là quá trình giải mã. Nguyên tắc chung của mó
hoỏ là việc giải mã phải rất dễ dàng với “người trong cuộc” nhưng rất khó khăn
với “người ngoài cuộc”. Văn bản gốc (trước khi mó hoỏ) thường được ký hiệu là
PT, hay đơn giản là P. Văn bản mó (đó được “nguỵ trang”)thường ký hiệu là CT,
hay C.
Hệ mã( Cryptosystem) là một phương pháp nguỵ trang văn bản. Nghệ thuật tao
ra và sử dụng các hệ mã là thuật mó hoỏ hay mật mã học (Cryptography)
Phân tích mã (Cryptanalysis) , hay thỏm mó, là nghệ thuật phỏ cỏc hệ mã .
Công nghệ mã (cryptology) là việc nghiên cứu tổng hợp cả cryptography và
cryptanalysis.
Lập mã (encrypt) là việc biến văn bản nguồn thành văn bản mã.
Giải mã (decrypt) là việc đưa văn bản đó mó hoỏ trở về dạng văn bản nguồn;
Định mã (encode/decode) là việc định ra phép tương ứng giữa các chữ và số
(việc này không bao giê được xem là bí mật, vì máy tính ngày nay dễ dàng tìm ra
phép tương ứng trong một thời gian ngắn.
Mó dòng( stream cipher) là việc tiến hành mó hoỏ liên tục trên từng ký tù ( hay
từng bit).
Mã khối (block cipher) là việc tiến hành mó hoỏ trờn từng khối văn bản ( khi
khối văn bản là một cặp 2 ký tự gọi là digraph, còn khi nó là bộ 3 chữ thì gọi là
trigraph);
Phộp mã chuyển vị (transposition cipher) là việc tráo đổi vị trí giữa các ký tự
(các bit) trong văn bản;
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 14 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Phộp mã tích hợp (product cipher) là việc tiến hành xen kẽ 2 phộp mó chuyển
vị và thay thế;
Chỡa khoỏ mó (cipher key) là bí quyết lập mã và giải mã. Nếu như quy trình

mó hỏo được xem như một hàm y=f(x,k), trong đó x là đầu vào (văn bản nguồn),
y là đầu ra ( văn bản mã), f là phương pháp ( hay thuật toán) mó hoỏ, cũn k lf
mét tham số điều khiển, thì bí quyết trước đây thường bao gồm cả phương pháp
f, và tham sè k (nếu có). Nhu cầu của thực tiễn hiện nay đã khiến công nghệ mó
hoỏ hiện đại phải thay đổi quan điểm này. Phương pháp f là cái thường do
không chỉ một người nắm , nên không thể giữ được bí mật lâu, và do đó phải
được xem là công khai. Tham số điều khiển k, có tác dụng làm thay đổi kết quả
mó hoỏ (tuỳ thuộc vào giá trị của nó), được xem là chỡa khoỏ mó. Thông
thường, nó là một xâu bit ( hay mét con số nào đó) mà người ta có thể giữ cho
riêng mình.
Hệ mã bí mật (secret key cryptosystem – SKC) hay hệ mã phi đối xứng (non
symmetric cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã sử dụng 2
chỡa khoỏ mó riêng biệt, từ chỡa khoỏ này không thể tìm ra chỡa khoỏ kia một
cách dễ dàng; chỡa dựng để lập mã thường được thông báo công khai, cũn chỡa
dành cho việc giải mã phải luôn giữ bí mật, thường được gọi là chỡa khoỏ riờng.
2.2 Định nghĩa và cỏc tích chất của hệ mật
Đối tượng cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh cho
hai người sử dụng (tạm gọi là A và B) sao cho người thứ ba (O) không thể hiểu
được thông tin được truyền đi trờn kờnh. Kờnh này có thể là một đường dây điện
thoại hoặc một mạng máy tính. Thông tin mà A muốn gửi cho B có thể là một
văn bản tiếng Anh, các dữ liệu bằng số hoặc bất cứ tài liệu nào có cấu trúc tuỳ ý
gọi là bản rõ. A sẽ mó hoỏ bản rõ bằng một khoỏ đó được xác định trước và gửi
bản mã kết quả trờn kờnh. O có bản mã thu trộm được trờn kờnh song không thể
xác định nội dung của bản rõ, nhưng B (người đã biết khoỏ mó) có thể giải mã và
thu được bản rõ.
§Þnh nghÜa 1.4: Một hệ mật là một bộ 5 (P,C,K,E,D) thoả món cỏc điều
kiện sau:
1) P là một tập hữu hạn các bản rõ có thể.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 15 -

Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
2) C là một tập hữu hạn các bản mã có thể.
3) K (không gian khoá) là tập hữu hạn cỏc khoỏ có thể.
4) Đối với mỗi k K có một quy tắc mã  e
k
: P C và một quy tắc giải mã
tương ứng d
k
D. Cặp  e
k
: P C và  d
k
: C P là những hàm thoả
mãn: d
k
(e
k
(x)) = x với mọi bản rõ x P.
Tính chất:
Hàm mó hoỏ và hàm giải mã là một hàm đơn ánh.
Chứng minh:
Giả sử e
k
: P C  không phải là hàm đơn ánh. Nghĩa là,

x
1


x

2
sao
cho e
k
(x
1
) =e
k
(x
2
) suy ra d
k
(e
k
(x
1
))= d
k
(e
k
(x
2
)) tương đương x
1
= x
2
vô lý.
Nhận xét:
NÕu | P |=| C | thì hàm mó hoỏ là một song ánh .
Nếu P=C thỡ phộp mó hoỏ là một phộp hoán vị.

Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 16 -
Xõy dựng chng trỡnh bo v d liu trờn mụi trng khụng an ton
Chơng 3. Cỏc h mú ho c in
3.1 Mó dch vũng ( shift cipher)
Xột vnh Z
m
l mt vnh s nguyờn hu hn m phn t c trang b hai phộp
toỏn + v * trờn modulo m.
H mó dch vũng c xỏc nh trờn Z
m
v mụ t trong bng sau:
Giả sử P = C = K = Z
m
với 0 k m-1 , định nghĩa:
e
K
(x) = x +K mod m
và d
K
(x) = y -K mod m
(x,y Z
26
)
Hình 1.1 Thut toỏn th hin mó dch vũng
Chú ý l mt h mt dựng c trong thc t thỡ phi tho món rt nhiu tớnh
cht m hai trong s ú th hin nh sau:
Mi hm mú ho eK v mi hm gii mó dK phi cú kh nng tớnh toỏn c
mt cỏch hiu qu.
i phng da trn xừu bn mó phi khụng cú kh nng xỏc nh khoỏ K ú

dng hoc khụng cú kh nng xỏc nh c xõu bn rừ x.
H mó dch vũng cú khụng gian khoỏ K vi ln l m vỡ vy, bng phng
phỏp th gii mó vi nhiu nht m khoỏ khỏc nhau ta cú s thu c bn rừ. Nh
vy, h mó dch vng khng ỏp ng c yờu cu nờu trờn.
3.2 Mó thay th
Mó thay th l mt h mt ni ting, tn ti hng trm nm. Trờn thc t mó
thay th cú th ly c P v C u l b ch cỏi ting anh, gm 26 ch cỏi. Ta
dựng Z
26
v cc php mú v gii mó u l cỏc phộp toỏn i s. Tuy nhiờn,
Phm Quang Huy Ngụ Th Trung Lớp Tin qun lý K45
- 17 -
Xõy dựng chng trỡnh bo v d liu trờn mụi trng khụng an ton
trong mó thay th, thớch hp hn l xem php mú v gii mó nh cc hoỏn v ca
cc k t.
Mó thay th c mụ t trong hỡnh sau:
Hình 1.1 Thut toỏn th hin mó thay th
Khoỏ ca mó thay th c ly trong tp hoỏn v ca 26. Vy, s khoỏ ca
mó thay th l : 26! > 4 x 10
26
dn n vic vột cn khoỏ ca mó thay th l mt
iu ht sc khú khn. Tuy nhiờn, vi phng phỏp tn cụng theo xỏc sut mó
thay th vn khụng m bo an ton.
3.3 Mó Affine
Ging nh mó dch vng mú Affine cng l trng hp c bit ca mó thay th.
Hm gii mó ca h mó Affine nh sau:
e(x) = ax + b mod 26
Nu a= 1 h mó Anffine chớnh l h mó dch vũng.
cú th gii mó thnh cụng cỏc h s a,b ca h Affine phi tho món yờu
cu sau:


y

Z26 luụn

x ax+b

y (mod 26)
Phm Quang Huy Ngụ Th Trung Lớp Tin qun lý K45
- 18 -
Cho P =C = Z
26
. K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, . . . ,25
Với mỗi phép hoán vị K , ta định nghĩa:
e(x) = (x)

d(y) =
-1
(y)
trong đó
-1
là hoán vị ngợc của .
Xõy dựng chng trỡnh bo v d liu trờn mụi trng khụng an ton
tng ng: ax

y-b (mod 26).
Do y-b

Z
26

nờn t y-b=Y ta cú ng nht thc:
ax

Y (mod 26).
Xột x l bin thỡ phng trỡnh ng d trn cỳ nghim duy nht x ph thuc
Y khi v ch khi gcd(a,26) = 1.
Do 26=13 x 3 nn cc giỏ tr cú th ca a l 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23 v 25. Tham số b

Z
26
. Vỡ vy, s khoỏ ca h mó Anffine l 26 x
12=312.
õy l mt con s nh nờn h mt Anffine khụng m bo an ton.
3.4 Mú Vigenre
Trong c hai h mó dch vũng v mó thay th mi ký t s c ỏnh x vo
mt ký tự duy nht theo khoỏ. Vỡ lý do ú, cỏc h mt cũn c gi h thay th
n biu. Bừy gi ta s trỡnh by mt h mt khụng phi l b ch n, ú l h
mó Vigenre ni ting. Mt mó ny ly tờn ca Blaise de Vigenre sng vo th
k XVI.
Hình 1.1 Mt mó Vigen
Phm Quang Huy Ngụ Th Trung Lớp Tin qun lý K45
- 19 -
Cho m là một số nguyên dơng cố định nào đó. Định nghĩa P = C = K = (Z
26
)
m
. Với
khoá K = (k
1

, k
2
, . . . ,k
m
) ta xác định :
e
K
(x
1
, x
2
, . . . ,x
m
) = (x
1
+k
1
, x
2
+k
2
, . . . , x
m
+k
m
)

d
K
(y

1
, y
2
, . . . ,y
m
) = (y
1
-k
1
, y
2
-k
2
, . . . , y
m
-k
m
)
trong đó tất cả các phép toán đợc thực hiện trong Z
26
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Ta thấy rằng các từ khoá có thể với số độ dài m trong mật mã Vigenốre là
26
m
, bởi vậy, thậm chí với các giá trị m khá nhỏ, phương pháp tìm kiếm vét cạn
cũng yêu cầu thời gian khá lớn. Ví dụ, nếu m = 5 thì không gian khoá cũng có
kích thước lớn hơn 1,1 10
7
. Lượng khoá này đã đủ lớn để ngăn ngõa việc tỡm
khoỏ bằng tay.

Trong hệ mật Vigenốre cú từ khoá độ dài m, mỗi ký tự có thể được ánh xạ
vào trong m ký tự có thể có (giả sử rằng từ khoá chứa m ký tự phân biệt). Một hệ
mật nh vậy được gọi là hệ mật thay thế đa biểu (polyalphabetic). Nói chung, việc
thỏm mó hệ thay thế đa biểu sẽ khó khăn hơn so việc thỏm mó hệ đơn biểu.
3.5 Mật mã Hill
Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác được gọi là mật
mã Hill. Mật mã này do Lester S.Hill đưa ra năm 1929. Giả sử m là một số
nguyên dương, đặt P = C = (Z26)m . í tưởng ở đây là lấy m tổ hợp tuyến tính
của m ký tù trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của
bản mã.
Nói chung, có thể lấy một ma trận K kích thước m m làm khoá. Nếu một
phần tử ở hàng i và cột j của K là k
i,,j
thì có thể viết K = (k
i,,j
), với x = (x
1
,
x2, . . . ,xm)  P và K K , ta tính y = eK(x) = (y1, y2, . . . ,y
m
) như sau:
Nói một cách khác y = xK.
Chóng ta nói rằng bản mã nhận được từ bản rõ nhờ phép biến đổi tuyến
tính. Ta sẽ xét xem phải thực hiện giải mã nh thế nào, tức là làm thế nào để tính x
từ y. Bản mã được giải mã bằng công thức y K
-1
.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 20 -
k

1,1
k
1,2
k
1,m

k
2,1
k
2,2
k
2,m

. .
(y
1
,. . .,y
m
) (x
1
, . . . ,x
m
)
Xõy dựng chng trỡnh bo v d liu trờn mụi trng khụng an ton
Nh vy, khụng gian kho chớnh l cỏc ma trn cp m cú ma trn nghch o.
Sau õy l mụ t ca h mt Hill:
Hình 1.1 H mt Hill
Vic tn cụng h mt Hill l rt khú khn tuy nhiờn bng phng phỏp tn
cụng bn r th kho ca h mt c tỡm mt cỏch rt d dng.
Thm mú dng m cp vect khỏc nhau xj = (x

1,j
, x
2,j
, , . . ., x
m,j
) v y
j
= (y
1,j
,
y
2,j
, ,y
m,j
) (1 j m) sao cho y
j
= e
K
(x
j
), 1 j m. Nu xỏc nh hai ma
trn: X = (x
i,j
) Y = (y
i,j
) cp m m thỡ ta cú phng trỡnh ma trn Y = XK, trong
ú ma trn K cp m m l khoỏ cha bit. Vi iu kin ma trn Y l kh
nghch. Ta cú th tớnh K = X
-1
Y v nh vy phỏ c h mt.

3.6 Cỏc h mú dng kho
Trong cỏc h mt nghiờn cu trờn, cỏc phn t liờn tip ca bn rừ u c
mú ho bng cựng mt khoỏ K. Tc xõu bn mó y nhn c cú dng:
y = y1y2. . . = eK(x1) eK(x2 ) . . .
Phm Quang Huy Ngụ Th Trung Lớp Tin qun lý K45
- 21 -
Cho m là một số nguyên dơng có định. Cho P = C = (Z
26
)
m
và cho
K = { các ma trận khả nghịch cấp m ì m trên Z
26
}
Với một khoá K K ta xác định
e
K
(x) = xK
và d
K
(y) = yK
-1

Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Các hệ mật thuộc dạng này thường được gọi là cỏc mó khối khoá. Một quan
điểm sử dụng khác là mật mã dũng khoỏ. Ý tưởng cơ bản ở đây là tạo ra một
dũng khoỏ z = z1z2 . . . và dựng nú để mó hoỏ một xâu bản rõ x = x1x2 . . . theo
quy tắc:
y = y1y2. . . = ez1(x1) ez2(x1). . .
Mó dũng khoỏ hoạt động nh sau. Giả sử K K là khoá và x = x1x2 . . .là xâu

bản rõ. Hàm fi được dùng để tạo zi (zi là phần tử thứ i của dũng khoỏ) trong đó
fi là một hàm của khoá K và i-1 là ký tự đầu tiên của bản rõ:
zi = fi (K, x1 , . . ., xi -1 )
Phần tử zi của dũng khoỏ được dùng để mã xi tạo ra yi = eiz(xi). Bởi vậy, để mó
hoỏ xõu bản rõ x1 x2 . . . ta phải tính liên tiếp: z1, y1, z2 , y2
Việc giải mã xâu bản mã y1y2. . . có thể được thực hiện bằng cách tính liên tiếp:
z1, x1, z2 , x2
Sau đây là định nghĩa dưới dạng toán học:
§Þnh nghÜa 1.5: Mật mã dũng khoỏ là một bộ (P,C,K,L,F,E,D) thoả mãn
dược các điều kiện sau:
1) P là một tập hữu hạn các bản rõ có thể.
2) C là tập hữu hạn các bản mã có thể.
3) K là tập hữu hạn cỏc khoỏ có thể ( không gian khoá)
4) L là tập hữu hạn các bộ chữ của dũng khoỏ.
5) F = (f
1
f
2
) là bộ tạo dũng khoỏ. Với i 1
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 22 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
6) f
i
: K P
i -1
L 
7) Với mỗi z L có một quy tắc mã  e
z
E và mét quy tắc giải mã tương

ứng d
z
D .  e
z
: P C và  d
z
: C P là các hàm thoả mãn  d
z
(e
z
(x))= x
với mọi bản rõ x P.
Ta có thể coi mã khối khoá là một trường hợp đặc biệt của mó dũng khoỏ trong
đó dựng khoỏ không đổi: Zi = K với mọi i 1.
Một hệ mó dũng khoỏ được gọi là tuần hoàn với chu kỳ d nếu zi+d= zi với số
nguyên i 1. Mó Vigenốre với độ dài từ khoá m có thể coi là mó dũng khoỏ
tuần hoàn với chu kỳ m. Trong trường hợp này, khoá là K = (k1, . . . km ). Bản
thân K sẽ tạo m phần tử đầu tiên của dũng khoỏ: zi = ki, 1 i m. Sau đó 
dũng khoỏ sẽ tự lặp lại.
Có rất nhiều phương pháp để tạo ra dũng khoỏ từ khoá ban đầu. Ta xem xét một
phương pháp tạo một dũng khoỏ. Giả sử bắt đầu với (k1, . . , km ) và zi = ki, 1 
i m, ta tạo dũng khoỏ theo mét quan hệ đệ quy tuyến tính cấp m:


=
++
=
1
0
mi

2modz
m
j
jij
zc

trong đó c0, . . , cm-1  Z2 là các hằng số cho trước.
Nhận xét:
Phép đệ quy được nói là có bậc m vì mỗi số hạng phụ thuộc vào m số hạng đứng
trước. Phép đệ quy này là tuyến tính bởi vì Zi+m là một hàm tuyến tính của các
số hạng đứng trước. Chú ý ta có thể lấy c0= 1 mà không làm mất tính tổng quát.
Trong trường hợp ngược lại phép đệ quy sẽ là có bậc m-1.
Ở đây khoá K gồm 2m giá trị k1, . . , km, c0, . . , cm-1. Nếu (k1, . . , km)= (0, . . .
, 0) thỡ dũng khoỏ sẽ chứa toàn các số 0. Dĩ nhiên phải tránh điều này vì khi đó
bản mã sẽ đồng nhất với bản rõ. Tuy nhiên nếu chọn thích hợp các hằng sè
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 23 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
c0, . . , cm-1 thì một véc tơ khởi đầu bất kỡ khỏc (k1, . . , km) sẽ tạo nên một
dũng khoỏ cú chu kỳ 2m -1. Bởi vậy một khoá ngắn sẽ tạo nên một dũng khoỏ cú
chu kỳ rất lớn.
Kết luận:
Các hệ mó hoỏ cổ điển không thể đáp ứng được nhu cầu bảo mật dữ liệu
trờn cỏc phương tiện công nghệ thông tin hiện nay, nhưng các tư tưởng của
chúng vẫn còn nguyên giá trị. Các hệ mó hoỏ mạnh nhất bõy giờ vẫn luụn cú
bóng dáng của các hệ mó hoỏ cổ điển kèm theo. Các hệ này được chia làm hai
dòng chính là các hệ mó hoỏ khoỏ đối xứng và các hệ mó hoỏ khoỏ công khai.
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 24 -
Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn

Ch¬ng 4. Các hệ mã hóa hiện đại
4.1 Hệ mó hoỏ khoỏ đối xứng
4.1.1 Giới thiệu chung
Thuật toán mó hoỏ đối xứng là thuật toán cú khoỏ dựng để giải mã có thể
tính toán được từ khoỏ dựng để mó hoỏ. Trong nhiều hệ thống khoỏ dựng để mó
hoỏ và khoỏ dựng để giải mã là giống nhau. Những thuật toán mó hoỏ này được
gọi là thuật toán mó hoỏ bí mật, khoá đơn, hay một khoá (secret-key algorithms,
single-key algorithms, one-key algorithms). Thuật toán mó hoỏ này cần người
gửi và người nhận thống nhất một khoá trước khi trao đổi thông tin. Khoá này
cần phải được cả hai giữ bí mật.
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:
E
k
(P)=C
D
k
(C)=P
D
k
(E
k
(P))=P
Thuật toán đối xứng lại được chia làm hai loại. Một loại thực hiện trên bản
rõ từng bít một, gọi là thuật toán mó hoỏ dũng (stream algorithms, stream
ciphers). Còn một loại thực hiện trên bản rõ theo từng nhúm bớt một, và thuật
toán này được gọi là thuật toán mó hoỏ khối (block algorithms, block ciphers).

Những thuật toán mó hoá khối thường được thực hiện trên máy tính, thông
thường cỡ của một khối là 64 bít - đây là khối đủ lớn để ngăn ngõa sự phân tích
của các nhà thỏm mó và cũng đủ nhỏ để nó làm việc một cách hiệu quả. Trước
khi máy tính ra đời, những thuật toán này thực hiện trên bản rõ mỗi lần một ký
Phạm Quang Huy – Ngô Thế Trung Líp Tin quản lý – K45
- 25 -

×