1
Khóa luận tốt nghiệp
Trƣờng Đại Học Sƣ phạm Hà Nội 2
Khoa toán
== o0o==
đỗ ngọc tấn
cơ sở toán học của mã đối xứng
khoá luận tốt nghiệp đại học
Chuyên ngành: ứng dụng
Người hướng dẫn khoa học
ts. Trần minh tƣớc
hà nội – 2010
Đỗ Ngọc Tấn
K32 CN Toán
2
Khóa luận tốt nghiệp
MỤC LỤC
Lời cảm ơn ………………….………………………………………………. 1
Lời cam đoan ………………………………………………………………... 2
Mở đầu ………………………………………………………………………. 3
CHƢƠNG 1. CÁC KIẾN THỨC CHUẨN BỊ
1.1. Phép đồng dư và vấn đề liên quan ……………………………………… 5
1.2. Trường hữu hạn ………………………………………………………… 7
1.3. Trường số (mở rộng đại số) …………………………………………….. 11
CHƢƠNG 2. MÃ ĐỐI XỨNG
2.1. Một số thuật ngữ và khái niệm …………………………………………. 14
2.2. Một số hệ mã đối xứng
2.2.1. Khái niệm chung ……………………………………………………… 15
2.2.2. Hệ mã dữ liệu tiêu chuẩn DES ……………………………………….. 15
2.2.3.Tiêu chuẩn mã nâng cao AES và thuật toán Rijndael ………………… 21
Kết luận …………………………………………………………………….. 42
Tài liệu tham khảo ………………………………………………………….. 43
Đỗ Ngọc Tấn
K32 CN Toán
3
Khóa luận tốt nghiệp
LỜI CẢM ƠN
Để hoàn thành Khóa luận tốt nghiệp của mình em đã nhận được sự
hướng dẫn, chỉ bảo tận tình của TS.Trần Minh Tƣớc, sự giúp đỡ, động viên
của các thầy cô trong tổ toán ứng dụng, cùng tất cả các thầy cô và các bạn
sinh viên trong khoa toán Trường Đại học sư phạm Hà Nội 2.
Em xin chân thành cảm ơn sự giúp đỡ quý báu, chỉ đạo tận tình của thầy
Trần Minh Tƣớc. Em cũng xin nói lời cảm ơn tới các thầy cô và các bạn
sinh viên.
Hà nội, tháng 5 năm 2010
Sinh viên thực hiện
Đỗ Ngọc Tấn
Đỗ Ngọc Tấn
K32 CN Toán
4
Khóa luận tốt nghiệp
LỜI CAM ĐOAN
Tôi xin cam đoan nội dung khóa luận này hoàn toàn là kết quả nghiên
cứu của riêng tôi dưới sự chỉ dẫn khoa học của thầy Trần Minh Tước. Tôi xin
chịu mọi trách nhiệm về lời cam đoan của mình.
Tác giả
Đỗ Ngọc Tấn
Đỗ Ngọc Tấn
K32 CN Toán
5
Khóa luận tốt nghiệp
MỞ ĐẦU
Lý do chọn đề tài
Có thể nói, mật mã đã xuất hiện từ thời cổ đại. Người ta cho rằng,
người đầu tiên áp dụng mật mã một cách có hệ thống để đảm bảo bí mật
thông tin quân sự là nhà quân sự thiên tài của La mã cổ đại Julius Caesar.
Ngày nay mật mã không chỉ được dùng trong quân sự và ngoại giao
mà còn được dùng trong rất nhiều các lĩnh vực khác như kinh tế, thương mại,
truyền thông… Thừa nhận ý nghĩa quan trọng mang tính sống còn của mật mã
trong thời đại ngày nay, đông đảo các chuyên gia đã đầu tư công sức để
nghiên cứu, tìm tòi những điều mới mẻ và hiệu quả của mật mã.
Trong công nghệ mã hóa thông tin về phương diện nghiên cứu và ứng
dụng, Mã đối xứng có một vai trò quan trọng. Mã đối xứng là hệ mã mà trong
đó việc lập mã và giải mã cùng sử dụng chung một chìa khóa mã.
Các loại mã đối xứng điển hình trong lý thuyết mật mã như: Hệ mã dữ
liệu tiêu chuẩn (DES), Mã hoá dữ liệu quốc tế (IDEA), Hệ mã SAFER, và gần
đây là sự ra đời của loại mật mã có tính bảo mật cao đó là mã AES do
Rijndael nghiên cứu.
Trong đề tài này tôi đặt vấn đề nghiên cứu về vai trò của toán học trong
lý thuyết mật mã nói chung thể hiện trong một số hệ mã đối xứng như DES,
AES và lấy tên đề tài là “Cơ sở toán học của mã đối xứng”.
Mục tiêu của đề tài
Tìm hiểu sơ qua về công nghệ mã hóa thông tin cụ thể là về một số hệ
mã đối xứng điển hình.
*Đối tƣợng, phạm vi và phƣơng pháp nghiên cứu
+ Đối tượng: Một số hệ mã đối xứng.
Đỗ Ngọc Tấn
K32 CN Toán
6
Khóa luận tốt nghiệp
+ Phạm vi: Tìm hiểu về các hệ mã đối xứng và chú trọng đến cơ sở toán
học của các hệ mã đối xứng.
+ Phương pháp nghiên cứu: Nghiên cứu tư liệu, phân tích, tổng hợp dựa
trên các kết quả của số học và lý thuyết số.
Ý nghĩa lý luận và thực tiễn của đề tài
Trên thế giới nói đến thuật ngữ “Lý thuyết mật mã” hay “Công nghệ
mã hóa thông tin” không phải là một thuật ngữ xa lạ. Nhưng ở Việt Nam khi
nói đến thuật ngữ này là nói đến một vấn đề mới mẻ đối với sinh viên các
ngành khoa học cơ bản.
Là sinh viên ngành Toán, thực hiện đề tài “Cơ sở toán học của mã đối
xứng” chúng tôi sẽ được tiếp cận với một lĩnh vực khá mới mẻ của toán học
nhưng đã có ứng dụng hiệu quả trong thực tế. Việc thực hiện đề tài cũng là
một lần tập dượt nghiên cứu khoa học nhằm nâng cao tri thức của bản thân
đồng thời cũng để hiểu thêm về hoạt động nghiên cứu khoa học nói chung và
nghiên cứu toán nói riêng.
Đỗ Ngọc Tấn
K32 CN Toán
7
Khóa luận tốt nghiệp
CHƢƠNG 1. CÁC KIẾN THỨC CHUẨN BỊ
1.1. Phép đồng dƣ và vấn đề liên quan
1.1.1 Số nguyên tố
* Ký hiệu Z là tập các số nguyên …, 2,1,0,1,2... và N là tập số tự
nhiên (tức là các số nguyên không âm 0,1,2,3... )
* Với a, bZ 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 đó 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 sau:
+ Nếu a, b, cZ và a | b thì a | bc
+ Nếu a | b và b | c thì a | c
+ Nếu a | b và a | c thì a | b c
+ Nếu a | b và a không chia hết c thì a không chia hết cả b c và
b c.
* Số tự nhiên lớn hơn 1 mà không chia hết cho bất kỳ số tự nhiên nào
khác ngoài 1 và chính nó được gọi là số nguyên tố.
* Ước chung lớn nhất của 2 số tự nhiên a và b là số lớn nhất trong các
tập ướ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 2 số tự nhiên có ước chung lớn nhất là 1 thì ta nói rằng chúng
nguyên tố cùng nhau.
1.1.2. Phi hàm EULER
Với nN 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) . Hàm (n) được gọi là phi hàm Euler.
Ví dụ: (5) 4 , (6) 2 , (7) 6
Đỗ Ngọc Tấn
K32 CN Toán
8
Khóa luận tốt nghiệp
1.1.3. Phép tính đồng dƣ và phƣơng trình đồng dƣ
1.1.3.1. Phép tính đồng dƣ
Ta ký hiệu a b (mod m) nếu như a và b sai khác nhau một bội của
m , nói cách khác a b (mod m) nếu a b chia hết cho m .
Quan hệ đồng dư modulo m dẫn đến việc phân hoạch tập số nguyên
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à Zm và chứa đúng m phần tử. Mỗi lớp trong
tập Zm có đúng một số nằm trong 0,1,..., m 1 cho nên mỗi số nguyên
trong đoạn này được xem đại diện cho một lớp của tập Zm .
Một số tính chất của phép đồng dư
a a (mod m) ;
Nếu a b (mod m) thì b a (mod m) ;
Nếu a b (mod m) và b c (mod m) thì a c (mod m) ;
Nếu a b (mod m) , c d (mod m) thì
a c b d (mod m) , a.c b.d (mod m)
Như vậy ta có thể tự do thực hiện các phép tính số học thông thường
trên tập Zm .
Nếu x là một phần tử trong Zm và gcd ( x, m) 1 thì tồn tại các số u, v
sao cho u.x v.m 1, tức là u.x 1(mod m) , nên người ta nói x có nghịch
đảo ( trong Zm ) là u và thường ký hiệu phần tử nghịch đảo là x 1 hay
1
.
x
Tập các phần tử trong Zm mà có nghịch đảo thường được ký hiệu là
Z*m rõ ràng tập này có số phần tử nghịch đảo bằng (m) , và trên tập này
ngoài các phép cộng, trừ, nhân ta còn có thể đưa vào phép chia
Nếu a b (mod m) , c d (mod m) với gcd (c, m) 1 thì a.c 1 b.d 1 (mod m)
Đỗ Ngọc Tấn
K32 CN Toán
9
Khóa luận tốt nghiệp
Ví dụ: Với Z9 0,1,2,3,...,8
, Z*9 1,2,4,5,7,8 ta có 7 1 4(mod 9) và
cho phép chia của 2 cho 7 (trong Z*9 ) được thực hiện như sau:
2
2.7 1 4.2 8(mod9)
7
Ta đương nhiên cũng có 2 7.8(mod9) vì 7.8 56 6.9 2
1.1.3.2. Phƣơng trình đồng dƣ tuyến tính ax b (mod m)
Khi gcd (a, m) 1 (tức a là phần tử của Z*m ) thì ta có ngay nghiệm
x a 1b (mod m) . Khi gcd (a, m) g có 2 khả năng xảy ra:
+ phương trình có nghiệm khi g chia hết b , vì rằng khi ấy phương
trình đã cho tương đương với phương trình (a / g ) x b / g (mod m / g ) trong
đó hệ số a / g là số nguyên tố cùng nhau với m / g
+ phương trình vô nghiệm nếu g không chia hết b , vì hiệu của 2 số
chia hết cho g thì không thể là một số không chia hết cho g .
1.2. TRƢỜNG HỮU HẠN
1.2.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ư modulo p tức
là Z p ta có thể thực hiện được các phép tính cộng, trừ, nhân. Khi p là số
nguyên tố thì với mỗi phần tử khác không Z p ta luôn tìm được phần tử
nghịch đảo 1 Z p theo nghĩa . 1 1(mod p) và do đó có thể thực hiện
được phép chia (cho các phần tử khác 0 ), theo nghĩa sau: : . 1
Khi đó Z p có cấu trúc của một trường và ta kí hiệu trường này là
trường Fp . Tập các phần tử khác 0 của trường này lập thành một nhóm đối
với phép nhân và được kí hiệu là F p* . Như vậy:
Đỗ Ngọc Tấn
K32 CN Toán
10
Khóa luận tốt nghiệp
Fp* Fp \ 0 1,2,..., p 1.
Từ nay, khi nói đến trường Fp hay nhóm F p* ta luôn hiểu rằng p là
một số nguyên tố.
Chú ý : Nếu p không là nguyên tố thì vẫn có thể định nghĩa một tập con bao
gồm các phần tử khả nghịch của Z p và cũng ký hiệu là Z *p .
Một phần tử g Fp* được gọi là phần tử sinh của nhóm F p* nếu như tập
các lũy thừa của g cũng chính là nhóm này, tức là 2 tập sau đây trùng nhau
g , g
2
,..., g p1 1,2,..., p 1
(không tính đến thứ tự).
Rõ ràng, một phần tử chỉ có thể là phần tử sinh khi mọi lũy thừa của nó
với bậc nhỏ hơn ( p 1) , bậc của nhóm, không phải là đơn vị. Ngược lại, một
phần tử mà có lũy thừa bậc nào đó (nhỏ hơn hẳn ( p 1) ) bằng đơn vị thì
không thể là phần tử sinh. Dễ thấy rằng một phần tử mà không sinh ra cả
nhóm thì lũy thừa của nó cũng sẽ sinh ra một nhóm con và, theo Định lý
Lagrange, ta biết rằng bậc của một nhóm con phải là ước của số lượng các
phần tử có trong nhóm chứa nó (tức là ước của ( p 1) ). Như vậy muốn kiểm
tra xem một phần tử nào đó có phải là phần tử sinh hay không chỉ cần nâng nó
lên lũy thừa với bậc là ước của ( p 1) và xem xét: nếu tất cả lũy thừa này đều
khác 1 thì nó là phần tử sinh (ngược lại thì không phải).
Người ta chứng minh được rằng nếu g là một phần tử sinh của nhóm
F p* còn b là một số nguyên tố cùng nhau với ( p 1) thì g b cũng là phần tử
sinh của nhóm F p* . Cho nên, số các phần tử sinh của nhóm F p* đúng bằng số
các số nguyên tố với ( p 1) tức là bằng ( p 1).
Đỗ Ngọc Tấn
K32 CN Toán
11
Khóa luận tốt nghiệp
Cho phần tử sinh g Fp* . Khi ấy mọi phần tử h F p* có thể được biểu
diễn dưới dạng một lũy thừa nào đó của g . Tuy nhiên vấn đề tìm ra số x để
có được biểu diễn h g x là vô cùng gian nan, và được mang danh là bài toán
logarit rời rạc. Một điều thú vị là tính khó giải của bài toán này không làm
cho người ta khó chịu, mà ngược lại làm vui lòng các nhà mã hóa (một trong
những ứng dụng vào tin học sẽ được nói đến ở phần sau).
1.2.2. Trƣờng F2r
Đây cũng là loại trường có 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 đã xem xét ở trên.
Ta kí hiệu F2 x là tập các đa thức với hệ số nằm trong trường F2 (đã
xét ở trên). Có thể liệt kê ra rằng tập này có hai đa thức bậc 0 (là hai hằng số
0,1) hai đ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ó khăn lắm ta mới có thể nhận ra rằng, với mỗi số tự nhiên n , có tất
cả 2 n 1 đa thức với bậc không vượt quá x với dạng tổng quát là:
an x n an1 x n1 ... a1 x a0 , ai F2 .
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à các phần tử của trường F2 , trong đó 1 1 0.
Ví dụ: ( x 2 x 1)( x 2 x) ( x 4 x3 x 2 ) ( x3 x 2 x) x 4 x.
Đ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 của các đa thức bậc nhỏ hơn (với các hệ số trên trường đã
nói).
Ví dụ: x 2 2, x 2 2 là những đa thức bất khả quy trên trường số hữu tỷ Q ,
nhưng trên trường số thực R thì chỉ có đa thức x 2 2 là đa thức bất khả quy.
Trên trường F2 ta có x 2 1 là khả quy ( vì x 2 1 ( x 1) 2 ) còn
x 2 x 1 là đa thức bất khả quy (đây là đa thức bậc hai duy nhất bất khả
Đỗ Ngọc Tấn
K32 CN Toán
12
Khóa luận tốt nghiệp
quy). Trong tập đa thức bậc 3 chỉ có hai đa thức bất khả quy là
x 3 x 2 1, x 3 x 1 .
Tương tự như trên Z , trên tập F2 x ta cũng đưa vào phép tính đồng dư
modulo một phần tử (tức là một đa thức) nào đó, và khi ấy F2 x sẽ được
phân 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.
Ví dụ: Nếu lấy đa thức x 3 x 1 (bất khả quy) làm modulo thì tập
F2 x/ x 3 x 1 gồm các đa thức nhỏ hơn bậc 3 cụ thể là tập:
0,1, x, x 1, x , x
2
2
1, x 2 x, x 2 x 1 , trong đó đại diện của phần tử 0
chính là đa thức chọn làm modulo, nghĩa là x 3 x 1 0 . Trên tập này ta có
thể thực hiện các phép cộng, trừ, nhân thông thường với lưu ý rằng
x 3 x 1vì điều này tương đương với x 3 x 1 0 (trên F2 ).
Ví dụ: ( x 2 x 1)( x 1) x 3 1 ( x 1) 1 x(mod x 2 x 1) .
Ngoài ra trên tập F2 x / x3 x 1 ta còn thấy rằng.
x 4 x 3 .x ( x 1).x x 2 x .
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 Pd (x) với bậc d , tập hợp F2 x/ Pd ( x) là một trường chứa
đúng 2 d phần tử, kí hiệu là F2 d mỗi phần tử của nó được thể hiện bằng một
đa thức với bậc không vượt quá d 1
Người ta cũng chứng minh được rằng tập các phần tử khác 0 của
trường F2d , được kí hiệu là F2*d , 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ó cấu trúc tương tự như nhóm F p* . Phần tử sinh
Đỗ Ngọc Tấn
K32 CN Toán
13
Khóa luận tốt nghiệp
của nó cũng phải có các lũy thừa bậc là ước của (2 d 1) khác đơn vị, và số
lượng phần tử sinh trong nhóm này là (2d 1) .
Ta dễ thấy rằng x là phần tử sinh của F2*3 F2*8 . Thật vậy với g x ta có
g 2 x 2 , g 3 x 1, g 4 x 4 x 2 x, g 5 x 4 .x x 2 x 1
g 6 x6 x3 .x3 ( x 1)2 x 2 1, g 7 x 6 .x x3 x 1
Một phần tử của nhóm F2*d được gọi là chính phương (perfect square) nếu
như nó là bình phương của một phần tử khác trong nhóm.
Như vậy, hoàn toàn tương tự như trên ta có thể xây dựng các trường
hữu hạn dạng Fp*d , với p là số nguyên tố bất kì (thay vì với p 2 )
Khi p 2 , có thể chỉ ra rằng một phần tử chính phương khi và chỉ khi
lũy thừa của nó với bậc
( p d 1)
chính là đơn vị.
2
1.3. Trƣờng số (mở rộng đại số)
Cho đa thức với các hệ số nguyên
f ( x) an x n an1 x n1 ... a1 x 1, ai Z
Số thỏa mãn phương trình f ( ) 0 được gọi là nghiệm của đa thức f .
Giả sử là một nghiệm của đa thức dạng như trên và n là bậc của đa
thức có bậc thấp nhất nhận nó làm nghiệm. Người ta chứng minh được rằng
tập các tổ hợp tuyến tính (với hệ số hữu tỷ) của các lũy thừa của số tức là
Q ( ) b0 b1 ... bn1 n1 | bi Q ,
lập thành một trường số (với các phép tính quen thuộc trên trường số hữu tỷ).
Mỗi phần tử của trường là nghiệm của một đa thức với hệ số nguyên, với hệ
số đầu là số tự nhiên. Đa thức với bậc thấp nhất (trong các đa thức nhận phần
tử đó là nghiệm) gọi là đa thức tối thiểu của phần tử đó. Nếu đa thức có hệ số
Đỗ Ngọc Tấn
K32 CN Toán
14
Khóa luận tốt nghiệp
đầu bằng 1 thì phần tử được gọi là hệ số nguyên đại số. Rõ ràng mọi số
nguyên n đều là số nguyên đại số, vì nó là nghiệm của đa thức bậc nhất
1.x n 0.
Ví dụ: 21/ 3 1 ta có ( 1) 3 2 nên 3 3 2 3 3 0 , và do
đó f ( x) x 3 3x 2 3x 3 là đa thức tối thiểu của , và suy ra là một số
nguyên đại số.
Trong trường số nói trên, nếu 3 số nguyên đại số , , thỏa mãn
. thì ta nói rằng | . Ta nói rằng số nguyên đại số là nguyên tố
nếu như | . kéo theo | hoặc | . Số nguyên đại số chia hết 1 thì
được gọi là đơn vị (unit), ví dụ trong trường Q(i ) thì i là đơn vị, vì nó là
nguyên (nghiệm của đa thức x 2 1 ) và chia hết 1 (do 1 i 4 i.i 3 ) ngoài ra
i,1,1 cũng là đơn vị. Hai số nguyên tố , mà sai khác nhau một hệ số
bằng đơn vị thì gọi là hai số nguyên tố kết hợp với nhau và ta viết .
Trong các số kết hợp với nhau ta luôn chọn được đại diện dưới dạng a bi ,
với a b, a 0 .
Đáng buồn là không phải trường nào cũng “có đủ” số nguyên tố, nghĩa
là không phải mọi số không nguyên tố đều có thể phân tích được thành tích
của các số nguyên tố.
Ví dụ: Trong trường Q( 5) thì 2 không phải là số nguyên tố, vì từ
việc 2 chia hết 6 (do 2 / 2.3 6 (1 5 ).(1 5 ) ta không suy ra được 2
chia hết (1 5) hoặc 2 chia hết (1 5) , bởi vì các đa thức tối thiểu của
(1 5 ) / 2 và (1 5 ) / 2 chính là 2 x 2 2 x 3 , có hệ số đầu không phải
là 1. Trong khi đó 2 lại là số “bất khả quy”, nghĩa là không có phân tích nào
khác ngoài 2=1.2=(-1).(-2).
Đỗ Ngọc Tấn
K32 CN Toán
15
Khóa luận tốt nghiệp
Ta cũng thấy rằng việc phân tích một số (ra các thừa số) có thể không
phải là duy nhất (như trên ta thấy, số 6 có 2 cách phân tích khác hẳn nhau).
Tuy nhiên Q(i ) lại là một trường số có nhiều khía cạnh tốt. Tập các số
nguyên đại số trên trường này cũng chính là tập các điểm có “tọa độ” nguyên
trên mặt phẳng phức. Nó chính là Z(i) : a bi | a, b Z . Người ta chứng
minh được rằng nếu số nguyên p (dương) thỏa mãn p 3(mod 4) thì cũng
là số nguyên tố trên Z (i ) . Nếu p 1(mod 4) thì ta có thể viết:
p a 2 b 2 , a, b Z và do đó p (a bi)(a bi) với (a bi), (a bi)
không phải là các số nguyên tố kết hợp, và do đó ta có 2 số nguyên tố nằm
trên số p.
Đỗ Ngọc Tấn
K32 CN Toán
16
Khóa luận tốt nghiệp
CHƢƠNG 2. MÃ ĐỐI XỨNG
2.1. Một số thuật ngữ và khái niệm
2.1.1. Một số thuật ngữ
- 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.
- Mã hóa (Encryption) là việc “ngụy trang” văn bản sang một dạng khác
để cho người “ngoài cuộc” không thể đọc được, phục vụ cho nhu cầu bí mật
trong trao đổi thông tin, dữ liệu và các giao dịch tài chính, thương mại… Quá
trình “ngụy trang”văn bản gọi là lập mã, còn quá trình “khôi phục” lại văn
bản nguồn gọi là giải mã.
- Hệ mã (Cryptosystem) là một công cụ giúp thực hiện ngụy trang văn
bản . Nghiên cứu để xây dựng và sử dụng các hệ mã có thể gọi là 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ã
(nhìn xuyên qua các phương pháp ngụy trang).
- Công nghệ mã (Crytology) 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ã hóa trở về dạng văn bản
nguồn;
- Chìa khóa mã (Cipher key) là bí quyết lập mã và giải mã.
2.1.2. Vì sao cần mã hóa?
Đó là một câu hỏi dễ trả lời, vì trong hoạt động của con người, nhu cầu
bảo mật khi trao đổi thông tin giữa các thành viên trong nhóm nào đó với
nhau có thể là hết sức cần thiết. Tuy nhiên, để thực sự thấy rõ yêu cầu cấp
bách của mã hóa trong thời đại ngày nay, cần nhấn mạnh rằng với các phương
Đỗ Ngọc Tấn
K32 CN Toán
17
Khóa luận tốt nghiệp
tiện kỹ thuật hiện đại việc giữ gìn bí mật ngày càng trở nên khó khăn. Các
hình ảnh trên mặt đất, các cuộc đàm thoại hữu tuyến và vô tuyến, các thông
tin được chuyền qua mạng internet,… tất cả đều dễ dàng thu được nhờ các
thiết bị điện tử trên mặt đất hoặc từ vệ tinh. Vì thế, phương pháp thông dụng
nhất để giữ gìn bí mật thông tin là mã hóa chúng bằng một hệ mã trước khi
truyền tải đi.
Dĩ nhiên, việc mã hóa thông tin trước khi truyền đi và và việc giải mã các
thông tin nhận được sẽ tạo nên một số khó khăn: giảm tốc độ đường truyền
tin, tăng chi phí… Một hệ mã lý tưởng là một hệ mã đảm bảo được các yêu
cầu thời gian mã hóa và giải mã nhanh, độ bảo mật cao.
2.2. Một số hệ mã đối xứng
2.2.1. Khái niệm chung
Mã đối xứng: là hệ mã mà trong đó việc lập mã và giải mã cùng sử
dụng chung một chìa khóa mã.
Một đặc điểm chung của các hệ mã đối xứng là quá trình biến đổi được
thực hiện trên các khối dữ liệu có độ dài đủ lớn và được thông qua
nhiều vòng lặp tương tự nhau.
2.2.2. Hệ mã dữ liệu tiêu chuẩn – DES
2.2.2.1. Phƣơng án thu gọn của DES
Trong mô hình này ta định ra độ dài của khối dữ liệu là 8 bit, độ dài của
chìa khóa là 10 bit và số lượng vòng lặp trong thuật toán là 2. Như vậy, từ
chìa khóa ban đầu (dài 10 bit) ta sẽ cho sinh ra 2 chìa khóa con có độ dài 8 bit
dùng cho 2 vòng. Trong quá trình mã hóa ta sẽ thấy các công đoạn: Khóa con
được sinh ra từ khóa ban đầu, dữ liệu tự biến đổi, rồi sau đó dữ liệu được kết
hợp với khóa con trong một số phép biến đổi chung. Trước khi đi vào mô tả ta
làm quen với một số phép biến đổi sẽ được dùng tới trong công đoạn này:
Phép hoán vị:
Đỗ Ngọc Tấn
K32 CN Toán
18
Khóa luận tốt nghiệp
Ký hiệu là P, có vai trò tráo đổi vị trí các bit trong một khối dữ liệu. Mỗi
phép trộn được cho bởi một vectơ có số tọa độ bằng số lượng bit trong khối
dữ liệu. Mỗi tọa độ của vectơ cho biết vị trí mới của bit dữ liệu đang ở vị trí
của tọa độ đó. Lưu ý rằng các vị trí được đánh số từ 0, nên vectơ P xác định
phép hoán vị cho khối dữ liệu gồm k bit sẽ gồm các số tự nhiên từ 0 đến
k 1.
Ví dụ: P8 (2,5,0,4,7,3,1,6) xác định phép hoán vị trong 8 bit nó chuyển
bit đầu tiên (mang chỉ số 0) ra vị trí thứ 3 (mang chỉ số 2), chuyển bit thứ 2
sang vị trí thứ sáu, chuyển bit thứ ba về vị trí đầu tiên, vv… và như vậy nó
biến 10011101 thành ra 01111100.
Phép đảo vế dữ liệu:
Ký hiệu là , có vai trò đảo vị trí của nửa khối đầu (4 bit) cho nửa
khối sau (4 bit); tức là ( X , X ') ( X ', X ) , trong đó X , X ' là các xâu số nhị
phân 4 bit ứng với các nửa khối dữ liệu (8 bit). Rõ ràng 1 , vì 2 là ánh
xạ đồng nhất.
Ánh xạ “nâng” theo T :
Giả sử T là một ánh xạ của các tập xâu số nhị phân 4 bit vào chính nó.
T : 0,1 0,1
4
4
Khi đó ta ký hiệu T là ánh xạ được xác định bằng công thức
T ( X , X ') ( X T ( X '). X ') , trong đó là ký hiệu phép loại bit trên tập
các xâu số nhị phân (hay cũng chính là phép cộng trong Z2 ), và do đó:
T2 ( X , X ') T ( X T ( X '), X ') ( X T ( X ') T ( X '), X ') ( X , X ')
tức ánh xạ T là ánh xạ tự khả nghịch, với mọi T bất kỳ.
Sau đây là quy trình cơ bản trong DES.
Sinh các chìa khóa con từ chìa khóa ban đầu
Đỗ Ngọc Tấn
K32 CN Toán
19
Khóa luận tốt nghiệp
Trong phương án DES rút gọn, ta dùng khóa ban đầu có độ dài 10 bit
để sinh ra các khóa con có độ dài 8 bit. Cụ thể, trước hết ta sẽ dùng phép hoán
vị P10 (2,4,1,6,3,9,0,8,7,5) đối với các xâu số nhị phân 10 bit; sau đó ta
dùng phép dịch xoay vòng sang trái đối với từng nửa xâu bit theo một trình tự
dịch chuyển (xác định trước) đối với từng khóa con, và cuối cùng là phép
chọn ra 8 thành phần rồi sắp xếp lại theo trình tự xác định
S 8 (5,2,6,3,7,4,9,8) đây là những thông tin công khai ai cũng biết. Như
vậy, với khóa ban đầu là r0r1r2 ...r9 0,1 , ta áp dụng P10 và thu được
P10(r0r1r2r3r4r5r6r7r8r9 ) (r2r4r1r6r3r9r0r8r7r5 ) s0s1s2s3s4s5s6s7 s8s9
ta phân kết quả thành 2 nửa là (s0 s1s2s3s4 )(s5s6s7 s8s9 ) và dịch mỗi nửa sang
trái 1 bit (để làm khóa con thứ nhất) ta có được
(s1s2 s3s4 s0 )(s6 s7 s8s9 s5 ) s1s2s3s4s0s6s7 s8s9s5 t0t1t2t3t4t5t6t7t8t9
tiếp tục theo S 8 , ta nhặt 8 phần tử và sắp xếp theo thứ tự đã định ra trong đó
là t5t2t6t3t7t4t9t8 .
Để tạo khóa con thứ 2 ta không bắt đầu lại từ 10 bit của khóa ban đầu,
mà từ sản phẩm đã được tạo ra sau phép hoán vị trước khi nhặt ra khóa con
thứ nhất, tức là t0t1t2t3t4t5t6t7t8t9 . Sau khi tách nó ra thành hai nửa và cho dịch
từng nửa sang trái 2 vị trí, ta có được
(t2t3t4t0t1 )(t7t8t9t5t6 ) t2t3t4t0t1t7t8t9t5t6 u0u1u2u3u4u5u6u7u8u9
Tiếp tục áp dụng phép chọn S 8 để chọn ra 8 thành phần
u5u2u6u3u7u4u9u8
Mô tả các ánh xạ T và phép nâng tương ứng T
Ánh xạ T cho từng vòng biến đổi là khác nhau, nhưng về bản chất đều
được sinh ra từ một ánh xạ nào đó thay đổi theo tham số vòng.
+ Toán tử T1 (thiết lập cho vòng thứ nhất) được xây dựng như sau:
Đỗ Ngọc Tấn
K32 CN Toán
20
Khóa luận tốt nghiệp
Trước hết, xâu số nhị phân 4 bit ban đầu (nửa khối dữ liệu bên phải) là
n4 , n5 , n6 , n7 được nở ra thành 8 bit bằng cách cho nó xoay vòng sang phải 1
bit để được 4 bit đầu (là n7 , n5 , n6 , n4 ) rồi sau đó số nhận được xoay vòng
ngược về bên trái 2 bit để được 4 bit sau n5 , n6 , n7 , n4 . Khi đó xâu số nhị phân
8 bit thu được sau phép nở là n7 , n4 , n5 , n6 , n5 , n6 , n7 , n4 , và khi xếp các bit này
thành 2 hàng (mỗi hàng 8 bit) thì ta có biểu đồ sau
n7 n4
n5 n5
n6 n6
n7 n4
Sau khi đem bit loại bit với các thành phần của khóa con thứ nhất thu
được trong quá trình sinh khóa con ở trên (ta đang nói đến T1 ), ta sẽ có
n7 t5 n4 t2
n5 t7 n6 t4
n5 t6 n6 t3
n7 t9 n4 t8
Để tiện dùng cho các bước tiếp theo, kết quả này được viết lại như sau
p00 p01
p10 p11
p02 p03
p12 p13
Biểu đồ này sẽ định ra một phép thay thế tiến hành như sau. Từng cụm
thành phần ( p00 p03 ),( p01, p02 ),... sẽ biểu diễn số nhị phân nào đó từ 0 đến 3
(cụ thể 00=0,01=1,10=2,11=3), giúp ta định ra hàng và cột của phần tử trong
các ma trận chữ nhật nào đó. Số tạo ra bởi các bit ngoài vùng “đóng cọc” ,
như ( p00 p03 ) , sẽ là số chỉ hàng, còn số tạo các bit nằm trong vùng “đóng
cọc”, như ( p01 p02 ) , sẽ là số chỉ cột, và như vậy mỗi hàng của biểu đồ sẽ cho
ta một “tọa độ” trên một bảng số (ma trận). Các ma trận này thường được cho
sẵn được gọi là các hộp thay thế (S-box), và trong phương án DES thu gọn
chúng là:
Đỗ Ngọc Tấn
K32 CN Toán
21
Khóa luận tốt nghiệp
0 1 2 3
0 1
1 3
S 0
2 0
3 3
0
2
2
1
3
1
1
3
0 1 2 3
2
0
3
2
0 0
1 2
S 1
2 3
3 2
1
0
0
1
2
1
1
0
3
3
0
3
Ta lấy ra trong ma trận S 0 phần tử thuộc hàng ( p00 p03 ) và cột
( p01 p02 ) ; nó là một số nguyên nào đó trong khoảng 0 đến 3 nên có thể viết
dưới dạng nhị phân như một số 2 bit là (q0q1 ) . Tương tự như vậy ta lấy ra
trong ma trận S 1 phần tử thuộc hàng ( p10 p13 ) , cột ( p11 p12 ) và viết nó lại
dưới dạng nhị phân là (q2q3 ) . Ta dính 2 kết quả tìm kiếm lại và được một số
nhị phân 4 bit là (q0q1q2q3 ) . Sau cùng, ta sử dụng phép hoán vị p4 (1,3,2,0)
và biến số này thành ra là (q1q3q2q0 ) và đó chính là kết quả tác động của toán
tử T1 lên nửa khối dữ liệu n4n5n6n7 . Như vậy ta có T1 (n4n5n6n7 ) (q1q3q2q0 )
Khi đó ánh xạ Ti có thể biểu diễn tường minh là:
Ti (n0n1n2n3n4n5n6n7 ) (n0 q1 , n1 q3 , n2 q2 , n3 q0 , n4 , n5 , n6 , n7 )
(Trong đó các dấu phẩy được đưa vào biểu thức chỉ để dễ nhìn)
+ Toán tử T2 vận hành hoàn toàn tượng tự, chỉ khác tại bước cộng khóa
thì dùng khóa con thứ 2, còn lại các S-boxes và phép hoán vị P4 thì vẫn như
cũ. Rõ ràng chính các bước cộng với khóa đã làm cho các ánh xạ T trở lên bị
điều khiển bởi khóa.
Quy trình hoạt động của DES thu gọn
Một chu trình tác động lên một khối dữ liệu (8 bit ) của DES thu gọn là
tổ hợp của các phép biến đổi sau
IP 1 T2 T1 IP ,
Đỗ Ngọc Tấn
K32 CN Toán
22
Khóa luận tốt nghiệp
Trong đó IP là phép hoán vị ban đầu được cho bởi vectơ
P8 (1,5,2,0,3,7,4,6) , các toán tử tác động lần lượt theo thứ tự từ phải qua
trái, dễ dàng tính ra
IP1 (3,0,2,4,6,1,7,5)
Từ chu trình lập mã như trên và quy tắc ( f g )1 g 1 f 1 ) ta rút ra
quy trình giải mã là
( IP1 T2 T1 IP)1 IP1 T1 T2 IP
Ánh xạ kép T1 được gọi là một vòng trong quá trình mã hóa. Mỗi
vòng mã hóa cần (phụ thuộc vào) một chìa khóa con.
Khi tăng quá trình trong quy trình mã hóa thì phải sinh ra nhiều chìa
khóa con hơn.
2.2.2.2. Mô hình đầy đủ của DES
Trong mô hình thực tế người ta dùng 16 vòng (thay cho 2 vòng trong
phương án rút gọn), làm việc với các khối dữ liệu 64 bit, và sử dụng khóa ban
đầu có độ dài 56 bit để sinh ra 16 khóa con (với độ dài 48 bit). Và như vậy, sẽ
có những thay đổi sau đây:
Quy trình sinh khóa con
Các thao tác không có phát sinh đặc biệt, ngoài việc dùng P56 thay
cho P10 , dùng S 48 thay cho S 8 , và sử dụng tuần tự dịch chuyển với 16
bước là
(1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1)
Thay cho 2 bước, là (1,2) như trong DES thu gọn.
Cơ chế vận hành của các toán tử Ti
Một nửa khối dữ liệu bây giờ 32 bit, tức là một só nhị phân có dạng :
(n32 , n33 ,..., n63 ) .
Đỗ Ngọc Tấn
K32 CN Toán
23
Khóa luận tốt nghiệp
Từ đây sinh ra 48 bit bằng cách nhặt 8 lần mỗi lần 6 bit cụ thể là: Lần đầu
ta cho xoay vòng sang phải 1bit và nhặt ra 6 bit đầu, từ lần thứ 2 trở đi cho nó
xoay vòng về phía trái, mỗi lần 4 bit và nhặt ra 6 bit đầu (tức là trong lần thứ
2 ta có xâu bit n35n36n37 n38n39n40 , và trong lần thứ 3 ta có xâu
n39n40n41n42n43n44 ,... ). Nếu xếp chúng thành hàng thì sau 8 lần ta được biểu đồ
với 8 hàng (mỗi hàng 6 bit) như sau;
n63 n32
n35 n36
n59 n60
n33
n37
n61
n34
n38
n62
n35 n36
n39 n40
n63 n32
Sau khi cộng các khóa con (48 bit) và đây theo tương ứng bit với bit, ta
được một biểu đồ đóng vai trò định vị “tọa độ” các thành phần trong các
S boxes (tương tự như trong DES thu gọn). Chỉ lưu ý rằng, tại mỗi hàng
trong biểu đồ mới , phần “trong miền đóng cọc” có tới 4 bit cho nên nó được
biểu diễn một số nguyên nào đó từ 0 đến 15, còn phần ngoài miền đóng cọc
vẫn chỉ biểu diễn 1 số nguyên trong vùng từ 0 đến 3; như vậy các S boxes
cần có kích thước 4 hàng và 16 cột, và do trong biểu đồ có 8 nên ta cần đến 8
cái S boxes như vậy. chú ý rằng trong các S boxes của DES thực sự thì
mỗi hàng là một vectơ 16 thành phần, nhận giá trị nguyên từ 0 đến 15 và
không có 2 thành phần nào giống nhau.
2.2.3.Tiêu chuẩn mã nâng cao và thuật toán Rijndael
(AES – Advanced Encryption Stanraed)
2.2.3.1 Khái quát
* Tiêu chí của AES
+ AES được xác lập công khai.
+ AES là hệ mã khối đối xứng.
Đỗ Ngọc Tấn
K32 CN Toán
24
Khóa luận tốt nghiệp
+ AES được thiết kế sao cho độ dài khóa có thể được mở rộng theo nhu
cầu.
+ AES có thể được triển khai trên cả phần cứng và phần mềm.
+ AES cần phải là sản phẩm:
- Miễn phí hoặc là
- Được cho dưới các điều kiện phù hợp với chính sách về bản quyền
của viện tiêu chuẩn quốc gia hoa kì.
+ Các thuật toán thỏa mãn các điều kiện trên sẽ được xét trên cơ sở các
phương diện sau đây:
- Tính bảo mật;
- Tính hiệu quả về thuật toán;
- Nhu cầu đòi hỏi về bộ nhớ;
- Tính đơn giản;
- Tính mềm dẻo, linh động;
- Các yêu cầu về phương diện bản quyền.
* Thuật toán Rijndael mang đậm màu sắc Toán học. Trong thuật toán này,
ngoài các tính toán đồng dư và các phép tính bit, người ta đã thiết lập những
phép toán khá đặc biệt trong trường hữu hạn và trong vành đa thức trên
trường hữu hạn.
2.2.3.2 Công cụ chuẩn bị
Ta xây dựng 2 loại phép toán mới: loại phép toán trên tập các byte (8
bit) và loại phép toán trên các vectơ gồm 4 byte, hay còn gọi là từ.
Các phép toán ở mức byte: Trong thuật toán Rijndael sẽ được Định nghĩa
thông qua phép biểu diễn mỗi byte như một phần tử của trường hữu hạn
GF (28 ) .
Các phép toán trên các từ(chứa 4 byte): Sẽ được thiết lập trên cơ sở các
phép toán trên các byte theo ý tưởng sau. Mỗi từ thường được xem như là một
Đỗ Ngọc Tấn
K32 CN Toán
25
Khóa luận tốt nghiệp
vectơ trong không gian 4 chiều trên trường các byte. Tuy nhiên, trong cấu trúc
không gian tuyến tính không có phép nhân trong, cho nên người ta tiến thêm
bước nữa xem mỗi vectơ (trên trường các byte) như tập các hệ số của một đa
thức. Như vậy, các phép toán trên các từ có thể được định nghĩa thông qua
các phép toán trên các đa thức (với các hệ số là byte).
2.2.3.2.1. Trƣờng các byte
Ta biết rằng mỗi byte (8 bit) đều biểu diễn một số trong khoảng từ 0
đến 255. Tên của byte được đặt theo giá trị mà nó biểu diễn: có thể được viết
trong hệ cơ số 16 với dấu nháy đơn „..‟, hoặc trong hệ nhị phân với dấu nháy
kép “..”.
Ví dụ : Byte với giá trị „57‟= “01010111” vì
'57' 5.161 7.160 26 24 22 21 20
Tập các byte chứa tất cả 256 phần tử. Để biến tập này thành trường hữu
hạn ta làm như sau.
Mỗi byte b chứa các bit "b7b6b5b4b3b2b1b0 " được biểu diễn như một đa
thức bậc không quá 7 với hệ số trong trường 0,1 , xác định như sau
b7 x7 b6 x6 b5 x5 b4 x 4 b3 x3 b2 x 2 b1x b0
Trong trường hợp này ta cũng nói b là byte biểu diễn các hệ số của đa
thức nêu trên.
Ví dụ : Byte „57‟ (hay là byte “01010111”) được biểu diễn bằng đa thức
x6 x 4 x 2 x 1
Còn byte „83‟ (hay “10000011”) được biểu diễn bằng đa thức
x7 x 1
Phép cộng : Trong phép biểu diễn đa thức, tổng của 2 phần tử (byte) sẽ là
một đa thức bằng tổng của 2 đa thức biểu diễn các phần tử đó, trong đó các hệ
số được cộng theo modulo 2 (tức là theo nguyên tắc 1+1=0)
Đỗ Ngọc Tấn
K32 CN Toán