Ngày nay, các ứngdụng mã hóa vào bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trongcác lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự,
Trang 1MỤC TIÊU:
- Đề tài giới thiệu về hệ thống mã hóa và đi sâu nghiên cứu phương pháp mã hóa DES,đưa ra hướng dẫn cài đặt chương trình mã hóa văn bản, file văn bản một cách đơn giản,hiệu quả
PHẠM VI ĐỀ TÀI:
- Tìm hiểu mã hóa thông tin
- Tìm hiểu hệ mã chuẩn DES
- Cài đặt chương trình mã hóa và giải mã file, văn bản sử dụng hệ mã DES
BỐ CỤC ĐỀ TÀI:
Nội dung của đồ án được trình bày trong 4 chương
Chương 1: Tổng quan
Giới thiệu tổng quan các khái niệm cơ bản về mật mã học và hệ thống mã hóa, đồngthời giới thiệu sơ lược về hệ thống mã hóa quy ước và hệ thống mã hóa công cộng
Chương 2: Một số phương pháp mã hóa quy ước
Nội dung chương 2 sẽ giới thiệu chi tiết hơn về hệ thống mã hóa quy ước( hay còn gọi làhệ thống mã hóa đối xứng) Một số phương pháp mã hóa quy ước kinh điển như phươngpháp dịch chuyển, phương pháp thay thế… và giới thiệu qua mã hóa theo khối DES
Chương 3: Mật mã hóa DES
Chương này em giới thiệu chi tiết về đặc điểm cũng như thuật toán của phương phápmã hóa DES
Chương 4: Mô phỏng và kết quả
Nội dung chương IV sẽ phân tích chức năng của bài toán đặt ra, quá trình kiểm thử, kếtquả của chương trình Demo
Trang 2ĐỊNH NGHĨA, VIẾT TẮT :
AES Advanced Encyption Standard Chuẩn mã hóa nâng cao
Cryptography Mật mã
Cryptosystem Hệ thống mã hóa
Symmetric key Khóa đối xứng
Secret key Khóa bí mật
Substtution Cipher Mã hóa thay thế
DES Data Encryption Standard Chuẩn mã hóa dữ liệu
EP Expansion Permutation Hoán vị mở rộng
IP Initial Permutation Hoán vị đầu
Trang 3DANH MỤC HÌNH VẼ
Hình 2.1: Mô hình hệ thống mã hóa quy ước 7
Hình 2.2: Biểu diễn dãy 64 bit thành 2 thành phần L và R 14
Hình 2.3: Trình phát sinh dãy Li Ri từ dãy Li-1 Ri-1 và khóa Ki 15
Hình 3.1: Chuẩn mã dữ liệu DES 16
Hình 3.2: Sơ đồ khối chương trình DES 20
Hình 3.3: Sơ đồ khối quá trình sinh khóa 21
Hình 3.4: Sơ đồ mã hóa DES 23
Hình 3.5: Sơ đồ một vòng DES 24
Hình 3.6: Sơ đồ hàm F 27
Hình 3.7: Sơ đồ tạo khóa con 28
Hình 3.8: Sơ đồ của hàm mở rộng 30
Hình 4.1: Sơ đồ chức năng của chương trình mô phỏng 40
Hình 4.2:Biểu đồ hoạt động của chương trình mô phỏng 41
Hình 4.3: Giao diện chính của chương trình 43
DANH MỤC BẢNG Bảng 3.1:Các khóa yếu của DES 18
Bảng 3.2:Các khóa nửa yếu của DES 18
Bảng 3.3:Hoán vị IP 25
Bảng 3.4: Hoán vị IP-1 25
Bảng 3.5: Hoán vị PC-1 29
Bảng 3.6: Bảng dịch bit tại các vòng lặp của DES 29
Bảng 3.7: Hoán vị PC-2 30
Bảng 3.8: Hàm mở rộng E 31
Bảng 3.9: 8 hộp S-Box 33
Bảng 3.10: Bảng hoán vị P 34
Trang 4CHƯƠNG 1 TỔNG QUAN1.1 MẬT MÃ HỌC:
Mật mã là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thànhmột dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa Đây làmột ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội Ngày nay, các ứngdụng mã hóa vào bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trongcác lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng…,cho đến các lĩnh vực dân sự như trong thương mại điện tử, ngân hàng…
Cùng với sự phát triển của khoa học máy tính và internet, các nghiên cứu và ứngdụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiêncứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng Ứngdụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà cònbao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết: chứng thực nguồngốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sởhữu mã khóa ( chứng nhận khóa công cộng), các quy trình giúp trao đổi thông tin vàthực hiện giao dịch điện tử an toàn trên mạng… Những kết quả nghiên cứu về mật mãcũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuậtkhác để đáp ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế,ví dụ như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý
an ninh của các đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụmultinedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí tuệđối với thông tin số…
1 2 HỆ THỐNG MÃ HÓA (CRYPTOSYSTEM)
Định nghĩa 1.1 : Hệ thống mã hóa (cryptosystem) là một bộ băm (P, C, K, E ,D) thỏamãn các điều kiện sau:
1 Tập nguồn P là tập hữu hạn tất cả các mẫu tin nguồn cần mã hóa có thể có
2 Tập đích C là tập hữu hạn tất cả các mẫu tin có thể có sau khi mã hóa
3 Tập khóa K là tập hữu hạn các khóa có thể có được sử dụng
4 E và D lần lượt là tập luật mã hóa và giải mã Với mỗi khóa K D tương ứng
Luật mã hóa e k : P C và luật giải mã e k : C P là hai ánh xạ thỏa mãn
k k
Tính chất 4, là chính chất chính và quan trọng của một hệ thống mã hóa Tính chất này
đảm bảo một mẩu tin xP được mã hóa bằng luật mã hóa e kE có thể giải mã chính
xác bằng luật d kD
4
Trang 5-Định nghĩa 1 2: Z m được định là tập hợp {0, 1, , m-1}, được trang bị phép cộng( ký
hiệu +) và phép nhân(ký hiệu x) Phép cộng và phép nhân trong Z mđược thực hiện tương
tự như trong Z, ngoại trừ kết quả tính toán theo modulo m
Ví dụ: Giả sử cần tính giá trị 11x13 trong Z16 Trong Z, ta có kết quả của phép nhân
11x13=143 Do 14315(mod 16) nên 11x13=15 trong Z16.
Một số tính chất của Zm
1 Phép cộng đóng trong Z m , i.e., a, b Z m , a+b Z m
2 Tính giao hoán của phép cộng trong Z m , i.e., a, b Z m , a+b =b+a
3 Tính kết hợp của phép cộng trong Z m , i.e., a, b, c Z m , (a+b)+c
=a+(b+c)
4 Z m có phần trung hòa là 0, i.e., a Z m , a+0 = 0+a=a
5 Mọi phần tử a trong Z m đều có phẩn tử đối là m-a
6 Phép nhân đóng trong Z m , i.e., a, b Z m , ab Z m
7 Tính giao hoán của phép cộng trong Z m , i.e., a, b Z m , ab=ba
8 Tính kết hợp của phép cộng trong Z m , i.e., a, b, c Z m , (ab)c
. = a(bc)
9 Z m , có phần tử đơn vị là 1, i.e., a Z m , a1=1a=a
10 Tính phân phối của phép nhân đối với phép cộng, i.e., a, b, c Z m , .
(a+b)c =(ac)+(bc)
11 Z m , có các tính chất 1, 3, -5 nên tạo thành 1 nhóm, Do Z m , có tính chất 2 nên tạo
thành nhóm Abel, Z m , có các tính chất (1) – (10) nên tạo thành 1 vành
1 3 HỆ THỐNG MÃ HÓA QUY ƯỚC:
Trong hệ thống mã hóa quy ước, quá trình mã hóa và giải mã một thông điệp sử
dụng cùng một mã khóa gọi là KHÓA BÍ MẬT (secret key) hay KHÓA ĐỐI XỨNG(symmetric key) Do đó vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ thuộc vàoviệc giữ bí mật nội dung của mã khóa đã được sử dụng
Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiệnnay, phương pháp mã hóa chuẩn (Data Encyption Standard – DES) đã trở nên không antoàn trong bảo mật thông tin Do đó, Viện tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ(National Institute of Standard and Technology – NIST) đã quyết định chọn một chuẩnmã hóa mới với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thông tin liên lạc củaChính phủ Hoa Kỳ cũng như trong các ứng dụng dân sự thuật toán Rijndael do VincentRijmen và Joan Daeman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao(Advanced Encyption Standard – AES) từ 02 tháng 10 năm 2000
1.4 HỆ THỐNG MÃ HÓA CÔNG CỘNG (MÃ HÓA BẤT ĐỐI XỨNG):
Trang 6Nếu như vấn đề khó khăn đặt ra đối với các phương pháp mã hóa quy ước chínhlà bài toán trao đổi mã khóa thì ngược lại, các phương pháp mã hóa công cộng giúp choviệc trao đổi mã khóa trở nên dễ dàng hơn Nội dung của khóa công cộng (public key)không cần giữ bí mật như đối với khóa bí mật trong các phương pháp mã hóa quy ước.Sử dụng khóa công cộng, chúng ta có thể thiết lập một quy trình an toàn để truy đổi khóabí mật được sử dụng trong hệ thống mã hóa quy ước.
Những năm gần đây, các phương pháp mã hóa công cộng, đặc biệt là phươngpháp RSA [45] , được sử dụng ngày càng nhiều trong các ứng dụng mã hóa trên thế giớivà có thể xem đây là phương pháp chuẩn được sử dụng phổ biến nhất trên Internet, ứngdụng trong việc bảo mật thông tin liên lạc cũng như trong lĩnh vực thương mại điện tử
1.5 KẾT HỢP MÃ HÓA QUY ƯỚC VÀ MÃ HÓA CÔNG CỘNG
Các phương pháp mã hóa quy ước có ưu điểm xử lý rất nhanh và khả năng bảomật cao so với các phương pháp mã hóa công cộng nhưng lại gặp phải vấn đề khó khăntrong việc trao đổi mã khóa Ngược lại, các phương pháp mã hóa khóa công cộng tuy xử
lý thông tin chậm hơn nhưng lại cho phép người sử dụng trao đổi mã khóa dễ dàng hơn
Do đó, trong các ứng dụng thực tế, chúng ta cần phối hợp được ưu điểm của mỗi phươngpháp mã hóa để xây dựng hệ thống mã hóa và bảo mật thông tin hiệu quả và an toàn
CHƯƠNG 2
6
Trang 7-MỘT SỐ PHƯƠNG PHÁP MÃ HÓA QUY ƯỚC2.1 HỆ THỐNG MÃ HÓA QUY ƯỚC
Hệ thống mã hóa quy ước là hệ thống mã hóa trong đó quy trình mã hóa và giảimã đều được sử dụng chung một khóa – khóa bí mật Việc bảo mật thông tin phụ thuộcvào việc bảo mật khóa
Trong hệ thống mã hóa quy ước, thông điệp nguồn được mã hóa với mã khóa kđược thống nhất trước giữa người gửi A và người nhận B Người A sẽ sử dụng mã khóa
k để mã hóa thông điệp x thành thông điệp y và gửi y cho người B, người B sẽ sử dụngkhóa k để giải mã thông điệp y này Vấn đề an toàn bảo mật thông tin được mã hóa phụthuộc vào việc giữ bí mật nội dung mã khóa k Nếu người C biết được khóa k thì C cóthể “mở khóa” thông điệp đã được mã hóa mà người A gửi cho người B
Hình 2.1 Mô hình hệ thống mã hóa quy ước 2.2 PHƯƠNG PHÁP MÃ HÓA DỊCH CHUYỂN
Phương pháp mã hóa dịch chuyển là một trong những phương pháp lâu đời nhấtđược sử dụng để mã hóa Thông điệp được mã hóa bằng cách dịch chuyển xoay vòngtừng ký tự đi k vị trí trong bảng chử cái
Trong trường hợp đặc biệt k =3, phương pháp mã hóa bằng dịch chuyển được gọilà phương pháp mã hóa Caesar
Cho P=C=K= Zn
Trang 8Với mỗi khóa k K, định nghĩa:
e k (x)=(x+k)mod n và d k (y)=(y-k)mod n với x,y Zn
E={ e k , k K} và D={ d k, k K}
Thuật toán 2.1 Phương pháp mã hóa dịch chuyển
Mã hóa dịch chuyển là một phương pháp mã hóa đơn giản, thao tác xử lý mãhóa và giải mã được thực hiện nhanh chóng Tuy nhiên, trên thực tế, phương pháp này
có thể dễ dàng bị phá vỡ bằng cách thử mọi khả năng khóa k K Điều này hoàn toàn
có thể thực hiện được do không gian khóa K chỉ có n phần tử để chọn lựa
Ví dụ : Để mã hóa một thông điệp được biểu diễn bằng các chữ cái từ A đến Z(26 chữ cái ) Ta sử dụng P=C=K= Z26 Khi đó, thông điệp được mã hóa sẽ không an toàn và có thể dễ dàng bị giải mã bằng cách thử lần lượt 26 giá trị khóa kK Tính trung
bình, thông điệp đã được mã hóa có thể bị giải mã sau khoảng n/2 lần thử khóa kK
2.3 PHƯƠNG PHÁP MÃ HÓA THAY THẾ
Ph ng pháp mã hóa thay th (Substtution Cipher) là m t trong nh ng ph ngư ế (Substtution Cipher) là một trong những phương ột trong những phương ững phương ưpháp mã hóa n i ti ng và đã đ c s d ng t hàng tr m n m nay Ph ng pháp này th cế (Substtution Cipher) là một trong những phương ược sử dụng từ hàng trăm năm nay Phương pháp này thực ử dụng từ hàng trăm năm nay Phương pháp này thực ụng từ hàng trăm năm nay Phương pháp này thực ừ hàng trăm năm nay Phương pháp này thực ăm năm nay Phương pháp này thực ăm năm nay Phương pháp này thực ư ực
hi n vi c mã hóa thông đi p b ng cách hoán v các ph n t trong b ng ch cái hay t ngằng cách hoán vị các phần tử trong bảng chữ cái hay tổng ị các phần tử trong bảng chữ cái hay tổng ần tử trong bảng chữ cái hay tổng ử dụng từ hàng trăm năm nay Phương pháp này thực ảng chữ cái hay tổng ững phươngquát h n là hoán v các ph n t trong t p ngu n P.ị các phần tử trong bảng chữ cái hay tổng ần tử trong bảng chữ cái hay tổng ử dụng từ hàng trăm năm nay Phương pháp này thực ập nguồn P ồn P
Cho P=C=Z
K là tập hợp tất cả các hoán vị của n phần tử 0,1, ,n-1 Như vậy, mỗi khóa K là mộthoán vị của n phần tử 0,1, ,n-1
Với mỗi khóa K, định nghĩa :
e (x)= (x) và d(y)=-1(y) với x,y Zn
E={e, K} và D={D, K}
Thuật toán 2.2 phương pháp mã hóa bằng thay thế
Đây là phương pháp đơn giản, thao tác mã hóa và giải mã được thực hiện nhanhchóng Phương pháp này khắc phục điểm hạn chế của phương pháp mã hóa bằng dịchchuyển là có không gian khóa K nhỏ nên dễ dàng bị giải mã bằng cách thử nghiệm lần
lượt n giá trị khóa kK Trong phương pháp mã hóa thay thế có không gian khóa K rất
lớn với n! phần tử nên không thể bị giải mã bằng cách ‘vét cạn’ mọi trường hợp khóa k.Tuy nhiên, trên thực tế thông điệp được mã hóa bằng phương pháp này vẫn có thể bị giảimã nếu như có thể thiết lập được bảng tần số xuất hiện của các ký tự trong thông điệphay nắm được một số từ, ngữ trong thông điệp nguồn ban đầu
2.4 PHƯƠNG PHÁP AFFINE
8
Trang 9-N u nh ph ng pháp b ng d ch chuy n là m t tr ng h p đ c bi t c a ph ngế (Substtution Cipher) là một trong những phương ư ư ằng cách hoán vị các phần tử trong bảng chữ cái hay tổng ị các phần tử trong bảng chữ cái hay tổng ển là một trường hợp đặc biệt của phương ột trong những phương ường hợp đặc biệt của phương ợc sử dụng từ hàng trăm năm nay Phương pháp này thực ặc biệt của phương ủa phương ưpháp mã hóa b ng thay th , trong đó ch s d ng n giá tr khóa k trong s n! ph n t , thìằng cách hoán vị các phần tử trong bảng chữ cái hay tổng ế (Substtution Cipher) là một trong những phương ỉ sử dụng n giá trị khóa k trong số n! phần tử, thì ử dụng từ hàng trăm năm nay Phương pháp này thực ụng từ hàng trăm năm nay Phương pháp này thực ị các phần tử trong bảng chữ cái hay tổng ố n! phần tử, thì ần tử trong bảng chữ cái hay tổng ử dụng từ hàng trăm năm nay Phương pháp này thực
ph ng pháp Affine l i là m t tr ng h p đ c bi t khác c a mã hóa b ng thay thư ại là một trường hợp đặc biệt khác của mã hóa bằng thay thế ột trong những phương ường hợp đặc biệt của phương ợc sử dụng từ hàng trăm năm nay Phương pháp này thực ặc biệt của phương ủa phương ằng cách hoán vị các phần tử trong bảng chữ cái hay tổng ế (Substtution Cipher) là một trong những phương
Cho P=C=Zn
K={(a,b)Zn x Zn : gcd (a,b)=1}
Với mỗi khóa k=(a,b) K, định nghĩa:
ek(x)=(ax+b)mod n và dk(x)=(a-1(y-b))mod n với x,yZn
E={ek,kK} và D={Dk, k K}
Thuật toán 2.3 Phương pháp Affine
Để có thể giải mã chính xác thông tin đã được mã hóa bằng hàm e k E thì ek phải là
một song ánh Như vậy, với mỗi giá trị y Z n , phương trình ax+by(mod n) phải có
nghiệm duy nhất x Z n
Phương trình ax+by(mod n) tương đương với ax(y-b)(mod n).Vậy, ta chỉ cần khảosát phương trình ax(y-b)(mod n)
Định lý 2.1 : Phương trình ax+by(mod n) có nghiệm duy nhất xZ n với mỗi giá trị b
Z n , khi và chỉ khi a và n nguyên tố cùng nhau
Vậy, điều kiện a và n nguyên tố cùng nhau bảo đảm thông tin được mã hóa bằng hàm
e k ,có thể được giải mã một cách chính xác
Gọi (n) Z n và nguyên tố cùng nhau với n
Trong phương pháp mã hóa Affine, ta có n khả năng chọn giá trị b, (n) khả năngchọn giá trị a vậy không gian khóa K có tất cả n (n) phần tử
Vấn đề đặt ra cho phương pháp mã hóa Affine là để có thể giải mã được thông tin đãđược mã hóa cần phải tính giá trị phần tử nghịch đảo a-1
Z n Thuật toán Euclide mở rộngcó thể giải quyết trọn vẹn vấn đề này
Trước tiên cần khảo sát thuật toán Euclide (ở dạng cơ bản) sử dụng trong việc tìm
ước số chung lớn nhất của hai số nguyên dương r 0 và r 1 với r 0 > r 1 Thuật toán Euclidebao gồm một dãy các phép chia
Trang 10Dễ dàng nhận thấy rằng gcd( r 0 , r 1 )= gcd( r 1 , r 2 )= = gcd( r m-1 , r m )= r m
Như vậy, ước số chung lớn nhất của r 0 , r 1 là r m
Xây dựng dãy số t0 , t1 , tm theo công thức truy hồi sau :
n0= n
a0=a
t0 = 0
10
Trang 12được chọn, mỗi phần tử xP được ánh xạ vào duy nhất một phần tử yC Nói cáchkhác, ứng với mỗi khóa kK, một song ánh được thiết lập từ P vào C.
Khác với hướng tiếp cận này, phương pháp Vigenere sử dụng một từ khóa có độ dài
m Có thể xem như phương pháp mã hóa Vigenere Cipher bao gồm m phép mã hóa bằngdịch chuyển được áp dụng luân phiên nhau theo chu kỳ
Không gian khóa K của phương pháp Vigenere Cipher có số phần tử là “n”, lớn hơnhẳn phương pháp số lượng phần tử của không gian khóa K trong phương pháp mã hóabằng dịch chuyển.Do đó, việc tìm ra mã khóa k để giải mã thông điệp đã được mã hóa sẽkhó khăn hơn đối với phương pháp mã hóa bằng dịch chuyển
Chọn số nguyên dương m Định nghĩa P=C=K =(Zn)m
K={(k0,k1,…,kr-1) (Zn)r}
Với mỗi khóa k=(k0,k1,…,kr-1)K, định nghĩa:
Ek(x1,x2,…,xm)=((x1+k1) mod n, (x2+k2)mod n,…,(xm + km)mod n)
Dk(y1,y2,…,ym)=((y1 –k1)mod n, (y2- k2)mod n, ,(ym – km )mod n)
thuộc Zn Ý tưởng chính của phương pháp này là sử dụng m tổ hợp tuyến tính của m
thành phần trong mỗi phần tử x P để phát sinh ra m thành phần tạo thành phần tử yC.
Chọn số nguyên dương m Định nghĩa:
P = C = (Z 26)m Và K à tập hợp các ma trận m x m khả nghịch
k k
k
k k
k k
k k
m m m
m
m m
, 1 ,
, 2 1
, 2
, 1 2
, 1 1 , 1
m
m m
m k
k k
k
k k
k k
k x x x xk
x
e
, 2
, 1 ,
, 2 1
, 2
, 1 2
, 1 1 , 1 2
Trang 13-mọi phép toán số học đều được thực hiện trên Z n
Thuật toán 2.6 Phương pháp mã hóa Hill 2.7 PHƯƠNG PHÁP MÃ HÓA HOÁN VỊ
Những phương pháp mã hóa nêu trên đều dựa trên ý tưởng chung: thay thế mỗi ký tựtrong thông điệp nguồn bằng một ký tự khác để tạo thành thông điệp đã được mã hóa.Ýtưởng chính của phương pháp mã hóa hoán vị (Permutation) là vẫn giữ nguyên các ký tựtrong thông điệp nguồn mà chỉ thay đổi vị trí các ký tự, nói cách khác thông điệp nguồnđược mã hóa bằng cách sắp xếp lại các ký tự trong đó
Chọn số nguyên dương m Định nghĩa:
P = C = (Z 26)m và K là tập hợp các hoán vị của m phần tử {1, 2, , m}
Với mỗi khóa K, định nghĩa:
x x x m x x x m
e 1, 2, , 1 , 2 , và
y y y m y y y m
d 1, 2, , 11 , 1 2 , 1
Với –1 hoán vị ngược của
Thuật toán 2.7 Phương pháp mã hóa bằng hoán vị
Phương pháp mã hóa bằng hoán vị chính là một trường hợp đặc biệt của phương phápHill Với mỗi hoán vị của tập hợp {1,2,…,m}, ta xác định ma trận k=(ki,j) theo côngthức sau:
Ma trận k là ma trận mà mỗi dòng và mỗi cột có đúng một phần tử mang giá trị 1, cácphần tử còn lại trong ma trận đều bằng 0 Ma trận này có thể thu được bằng cách hoán vịcác hàng hay các cột của ma trận đơn vị Im nên k là ma trận khả nghịch Rõ ràng, mãhóa bằng phương pháp Hill với ma trận k hoàn toàn tương đương với mã hóa bằngphương pháp hoán vị với hoán vị
2.8 PHƯƠNG PHÁP DES ( DATA ENCYPTION STANDARD )
2.8.1 Phương pháp DES
Khoảng những năm 1970, Tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩnmã hóa dữ liệu DES với phương pháp mã hóa Feistel Cipher Vào năm 1976 Cơ quanbảo mật Quốc gia Hoa kỳ (NSA) đã công nhận DES dựa trên phương pháp Feistel làchuẩn mã hóa dữ liệu Kích thước khóa của DES ban đầu là 128 bit nhưng tại bản côngbố FIPS kích thước khóa được rút xuống còn 56 bit
Trang 14Trong phương pháp DES, kích thước khối là 64 bit DES thực hiện mã hóa dữ liệuqua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ 48 bit được tạo ra từ khóaban đầu có độ dài 56 bit DES sử dụng 8 bảng hằng số S-box để thao tác
Quá trình mã hóa của DES có thể tóm tắt như sau : Biểu diễn thông điệp nguồn x Pbằng dãy 64 bit Khóa k có 56 bit Thực hiện mã hóa theo 3 giai đoạn :
1 Tạo dãy 64 bit x0 bằng cách hoán vị x theo hoán vị IP (Initial Permutation)
Biểu diễn x0 =IP(x)=L0R0, L0 gồm 32 bit bên trái của x0 .R0 gồm 32 bit bên phải của x0
X0
Hình 2.2 : Biểu diễn dãy 64 bit x thành 2 thành phần L và R
2 Thực hiện 16 vòng lặp từ 64 bit thu được và 56 bit của khóa k (chỉ sử dụng 48 bitcủa khóa k trong mỗi vòng lặp) 64 bit kết quả thu được qua mỗi vòng lặp sẽ là đầu vàocho vòng lặp sau Các cặp từ 32 bit Li, Ri (với 1 ≤ I ≤ 16 ) được xác định theo quy tắcsau:
Li=Ri-1
Ri=Li-1 f(Ri-1, Ki)
Với biểu diễn phép toán XOR trên hai dãy bit, K1, K2, ,K16 là các dãy 48 bit phátsinh từ khóa K cho trước ( Trên thực tế, mỗi khóa Ki được phát sinh bằng cách hoán vịcác bit trong khóa K cho trước)
3 Áp dụng hoán vị ngược IP-1 đối với dãy bit R16L16, thu được từ y gồm 64 bit Nhưvậy, y=IP-1 (R16L16)
Hàm f được sử dụng ở bước 2 là hàm số gồm 2 tham số: Tham số thứ nhất A là một dãy
32 bit , tham số thứ hai J là một dãy 48 bit Kết quả của hàm f là một dãy 32 bit Cácbước xử lý của hàm f (A,J) như sau:
Tham số thứ nhất A (32 bit) được mở rộng thành dãy 48 bit được phát sinh từ A bằngcách hoán vị theo một thứ tự nhất định 32 bit của A, trong đó có 26 bit của A được lặplại 2 lần trong E (A)
Trang 15Hình 2.3 : Quy trình phát sinh dãy Li Ri từ dãy Li-1 Ri-1 và khóa Ki
Thực hiện phép toán XOR cho hai dãy 48 bit E(A) và J, ta thu được một dãy 48 bit B.Biểu diễn B thành từng nhóm 6 bit như sau: B=B1 B2 B3 B4 B5 B6 B7 B8 Sử dụng 8 matrận S1, S2, , S8 mỗi ma trận Si có kích thước 4x16 và mỗi dòng của ma trận nhận đủ 16giá trị từ 0 đến 15 Xét dãy gồm 6 bit Bj= b1 b2 b3 b4 b5 b6, Sj(Bj) được xác định bằng giátrị của phần tử tại dòng r cột c của Sj, trong đó, chỉ số dòng r có biểu diễn nhị phân là b1
b6 , chỉ số cột c có biểu diễn nhị phân là b2 b3 b4 b5 Bằng cách này, ta xác định được cácdãy 4 bit Cj=Sj(Bj), 1 ≤ j ≤ 8
Tập hợp các dãy 4 bit Cj lại, ta có được dãy 32 bit C= C1 C 2 C3 C4 C5 C6 C7 C8 Dãy
32 bit thu được bằng cách hoán vị C theo một quy luật P nhất định chính là kết quả củahàm F(A,J)
Quá trình giải mã chính là thực hiện theo thứ tự đảo ngược tất cả các thao tác của quátrình mã hóa
Trang 16CHƯƠNG 3 MẬT MÃ HÓA DES3.1 LỊCH SỬ
Vào thập niên 60, hệ mã Lucifer đã được đưa ra bởi Horst Feistel Hệ mã nàygắn liền với hãng IBM nổi tiếng Sau đó Ủy ban tiêu chuẩn Hoa kỳ đã dàn xếp với IBMđể thuật toán mã hóa này thành miễn phí và phát triển nó thành chuẩn mã hóa dữ liệu vàcông bố vào ngày 15/02/1977
3.2 PHƯƠNG PHÁP BẢO MẬT
DES là thuật toán mã hóa với input là khối 64 bit, output cũng là khối 64 bit.
Khóa mã hóa có độ dài 56 bit, thực ra chính xác hơn phải là 64 bit với các bit ở vị trí chiahết cho 8 có thể sử dụng là các bit kiểm tra tính chẵn lẻ Số khóa của không gian khóa Klà 256
Hình 3.1 Chuẩn mã dữ liệu DES
Thuật toán thực hiện 16 vòng Từ khóa input K, 16 khóa con 48 bit Ki sẽ được sinh ra,mỗi khóa cho mỗi vòng thực hiện trong quá trình mã hóa Trong mỗi vòng, 8 ánh xạ thaythế 6 bit thành 4 bit Si ( còn gọi là hộp Si) được chọn lựa kỹ càng và cố định, ký hiệuchung là S sẽ được sử dụng Bản rõ 64 bit sẽ được sử dụng chia thành 2 nữa L0 và R0.Các vòng có chức năng giống nhau, nhận input là Li-1 và Ri-1 từ vòng truớc và sinh raoutput là các xâu 32 bit Li và Ri như sau:
Li=Ri-1;
Ri=Li-1 f(Ri-1) trong đó f(Ri-1, Ki)=P(S(E(Ri-1)Ki));
Trong đó:
- là ký hiệu của phép tuyển loại trừ (XOR) của hai xâu bit theo modulo 2
- Hàm f là một hàm phi tuyến
- E là hoán vị mở rộng ánh xạ Ri-1 từ 32 bit thành 48 bit (đôi khi tất cả các bit sẽ được sửdụng hoặc một bit sẽ được sử dụng hai lần)
- P là hoán vị cố định khác của 32 bit
16
Trang 17-Một hoán vị khởi đầu (IP) được sử dụng cho vòng đầu tiên, sau vòng cuối cùng nửatrái và phải sẽ được đổi cho nhau và xâu cuối cùng kết quả sẽ được hoán vị lần cuối bởihoán vị ngược của IP (IP-1).
Quá trình giải mã diễn ra tương tự nhưng với các khóa con ứng dụng vào các vòngtheo thứ tự ngược lại
Có thể hình dung đơn giản là phần bên phải trong mỗi vòng (sau khi mở rộng input
32 bit thành 8 ký tự 6 bit – xâu 48 bit) sẽ thực hiện một tính toán thay thế phụ thuộc khóatrên mỗi ký tự trong xâu 48 bit, và sau đó sử dụng một phép chuyển bit cố định để phânbố lại các bit của các ký tự kết quả hình thành nên output 32 bit
Các khóa con Ki (chứa 48 bit của K) được tính bằng cách sử dụng các bảng PC1 vàPC2 (Permutation Choice 1 và 2) Trước tiên 8 bit ( K8, K16, …, K64) của K bị bỏ đi (ápdụng PC1) 56 bit còn lại được hoán vị và gán cho hai biến 28 bit C và D sẽ được quay 1hoặc 2 bit, và các khóa con 48 bit Ki được chọn từ kết quả của việc ghép hai xâu vớinhau
Như vậy, ta có thể mô tả toàn bộ thuật toán sinh mã DES dưới dạng công thức nhưsau:
Y = IP -1 f 16 T f15 T f2 T f 1 IP(X)
Trong đó :
- T mô tả phép hoán vị của các khối Li, RI (1 i 15)
- fi mô tả việc dùng hàm f với khóa Ki (1 i 16)
3.3 ƯU NHƯỢC ĐIỂM
3.3.1 Ưu điểm:
- Có tính bảo mật cao
- Công khai, dễ hiểu
- Nó có thể triển khai trên thiết bị điện tử có kích thước nhỏ
3.3.2 Các yếu điểm của DES:
3.3.2.1 Tính bù
Nếu ta ký hiệu u là phần bù của u (ví dụ : 0100101 là phần bù của 1011010) thì des cótính chất sau
y = DES (x,k) y = DES ( x ,k )
Cho nên nếu ta biết mã y được mã hóa từ thông tin x với khóa K thì ta suy được bản mã
y được mã hóa từ bản rõ x với khóa k Tính chất này là một yếu điểm của DES bởivì qua đó đối phương có thể loại bỏ đi một số khóa phải thử khi tiến hành thử giải mãtheo kiểu vét cạn
Trang 183.3.2.2 khóa yếu
Khóa yếu là các khóa mà theo thuật toán sinh khóa con thì tất cả 16 khóa con đềunhư nhau : K1=K2= =K16
Điều đó khiến cho việc mã hóa và giải mã đối với khóa yếu là giống hệt nhau
Bảng 3.1.Các khóa yếu của DES
Đồng thời còn có 6 cặp khóa nửa yếu (semi-weak key) khác với thuộc tính như sau :
y= DES(x,k1) và y=DES(x,k2)
Nghĩa là với 2 khóa khác nhau nhưng mã hóa cùng một bản mã từ cùng một bản rõ :
FE01 FE01 FE01 FE01E01F E01F E01F E01FE001 E001 F101 F101FE1F FE1F FE0E FE0E1F01 1F01 0E01 0E01FEE0 FEE0 FEF1 EF1
{10}14{10}14{10}14{10}14{0}28{1}28
{10}14{01}14{0}28{1}28{10}14{10}14
Bảng 3.2.Các khóa nửa yếu của DES 3.3.3.3 DES có cấu trúc đại số
Với 64 bit khối bản rõ có thể được ánh xạ lên tất cả các vị trí của khối 64 bit khốibản mã trong 264 cách Trong thuật toán DES, với 56 bit khóa có thể cho chúng ta 256
(khoảng 1017 ) vị trí ánh xạ Với việc đa mã hóa thì không gian ánh xạ còn lớn hơn Tuynhiên điều này chỉ đúng nếu việc mã hóa DES là không cấu trúc
Với DES có cấu trúc đại số thì việc đa mã hóa sẽ được xem ngang bằng với việc đơnmã hóa Ví dụ như có hai khóa bất kỳ K1 và K2 thì sẽ luôn được khóa K3 như sau :
EK2(EK1(X))=EK3(X)
18
Trang 19-Nói một cách khác, việc mã hóa DES mang tính chất “nhóm”, đầu tiên mã hóa bản rõbằng khóa K1 sau đó là khóa K2 sẽ giống với việc mã hóa ở khóa K3 Điều này thực sựquan trọng nếu sử dụng DES trong đa mã hóa Nếu một “nhóm” được phát với cấu trúchàm quá nhỏ thì tính an toàn sẽ giảm.
3.3.3.4 Không gian khóa K
DES có 256 = 1017 khóa Nếu chúng ta biết được một cặp “tin/mã” thì chúng ta có thểthử tất cả 1017 khả năng này để tìm ra khóa cho kết quả khớp nhất Giả sử như một phépthử mất 10-6s, thì chúng sẽ mất 1011s, tức 7300 năm Nhưng với các máy tính được chếtạo theo xử lý song song Chẳng hạn với 107 con chip mã DES chạy song song thì bâygiờ mỗi một con chipset chỉ phải chịu trách nhiệm tính toán với 1010 phép thử Chipsetmã DES ngày nay có thể xử lý tốc độ 4.5x107 bit/s tức có thể làm được hơn 105 phép mãDES trong một giây
Vào năm 1976 và 1977, Dieffie và Hellman đã ước lượng rằng có thể chế tạo đượcmột máy tính chuyên dụng để vét cạn không gian khóa DES trong ½ ngày với cái giá 20triệu đô la Năm 1984, chipset mã hóa DES với tốc độ mã hóa 256000 lần/giây Năm
1987, đã tăng lên 512000 lần/giây Vào năm 1993, Michael Wiener đã thiết kế một máytính chuyên dụng với giá 1 triệu đô la sử dụng phương pháp vét cạn để giải mã DEStrung bình trong vòng 3,5 giờ (và chậm nhất là 7 giờ)
Đến năm 1990, hai nhà toán học người Do Thái – Biham và Shamir – đã phát minh
ra phương pháp mã hóa vi sai (diferential cryptanalyis), đây là một kỹ thuật sử dụngnhững phỏng đoán khác nhau trong bản rõ để đưa ra những thông tin trong bản mã Vớiphương pháp này, Biham và Shamir đã chứng minh rằng nó hiệu quả hơn cả phươngpháp vét cạn
Phá mã vi sai là thuật toán xem xét những cặp mã khóa khác nhau, đây là những cặpmã hóa mà bản mã của chúng là khác biệt Người ta sẽ phân tích tiến trình biến đổi củanhững cặp mã này thông qua các vòng của DES khi chúng được mã hóa với cùng mộtkhóa K Sau đó sẽ chọn hai bản rõ khác nhau một cách ngẫu nhiên hợp lý nhất Sử dụng sựkhác nhau của kết quả bản mã và gán cho những khóa khác nhau một cách phù hợp nhất.Khi phân tích nhiều hơn những cặp bản mã, chúng ta sẽ tìm ra một khóa được xem là đúng nhất
Trang 203.4 SƠ ĐỒ KHỐI
Hình 3.2 Sơ đồ khối chương trình DES
20
Trang 21-Hình 3.3 Sơ
đồ khốiquátrìnhsinhkhóa
Trang 22Input: bản rõ M = m1m2 … m64, là một khối 64 bit, khóa 64 bit K = k1k2 k64 (baogồm cả 8 bit chẵn lẻ, việc thêm bit chẵn lẻ sao cho các đoạn khóa 8 bit có số bit 1 là lẻ)
Output: bản mã 64 bit C = c1 c2 … c64
1 Sinh khóa con Tính các khóa con theo thuật toán sinh khóa con
2 (L0,R0) IP (m1 m2 m64) (sử dụng bản hoán vị IP để hoán vị các bit, kết quảnhận được chia thành 2 nửa là L0 = m58 m50 m8, R0 = m57 m49 m7)
3 Với i chạy từ i=1 đến 16 thực hiện:
Tính các Li và Ri theo công thức:
Li=Ri-1;
Ri=Li-1 f(Ri-1) trong đó f ( Ri-1, Ki )=P ( S ( E ( Ri-1 ) Ki ) );
Việc tính f ( Ri-1 ) = P ( S ( E ( Ri-1 ) Ki ) ) được thực hiện như sau:
Mở rộng Ri-1 = r1r2 r32 từ 32 bit thành 48 bit bằng cách sử dụng hoán vị mở rộng E
T E ( Ri-1 ) ( Vì thế T = r32 r1 r2 r32 r1)
T’ T Ki Biểu diễn T’ như là các xâu gồm 8 ký tự 6 bit T’ = ( B1, ,B8 )
T’’ ( S1 ( B1 ) , S2 ( B2 ) , , S8 ( B8 ) ) Trong đó Si ( Bi ) ánh xạ b1b2 b6 thànhcác xâu 4 bit của phần tử thuộc hàng r và cột c của các bảng Si (S box) trong đó r = 2 *
b1 + b6 và c = b2 b3 b4 b5 là một số nhị phân từ 0 tới 15 Chẳng hạn S1 ( 011011) sẽ cho r
= 1 và c = 3 và kết quả là 5 biểu diễn dưới dạng nhị phân là 0101
T’’’ P ( T’’) trong đó P là hoán vị cố định để hoán vị 32 bit của
T’’ = t1 t2 t32 sinh ra t16 t7 t25
4 Khối từ b1 b2 b64 ( R16, L16) ( đổi vị trí các khối cuối cùng L16, R16)
5 C IP-1 ( b1 b2 b64) ( Biến đổi sử dụng IP-1, C = b40 b8 b25)
22
Trang 23-Hình 3.4 Sơ đồ mã hóa DES
Trang 243.5.1 Quá trình mã hóa:
Hình 3.5 Sơ đồ một vòng DES
Chia làm 3 giai đoạn:
Trang 25Tính toán 16 lần lập theo 1 hàm xác định Ta sẽ tính LiRi (1≤ i ≤ 16) theo quy tắc: Li=Ri-1
Ri = Li-1 f (Ri-1, Ki)
là toán tử Xor
k1,k2,k3 k16 là xâu bit độ dài 48 bit được tính qua hàm khoá K (thực tế thì Ki là 1phép hoán vị bit trong K)
Trang 263.5.2 Quá trình giải mã:
Do là 1 thuật toán đối xứng nên quá trình giải mã và mã hóa cũng gần giốngnhau chỉ khác ở:
Li=Ri-1
Ri = Li-1 f (Ri-1, K16-i)
Khóa K của hàm F sẽ đi từ 16 ->0
3.5.3 Hàm F
Đầu vào hàm f có 2 biến:
biến 1: R là xâu bit có độ dài 32 bit, biến 2:K là xâu bit có độ dài 48 bit Đầu ra của f làxâu bit có độ dài 32 bit
- Biến thứ nhất Ri-1 được mở rộng thành một xâu bit có độ dài 48 bit theo một hàm mởrộng cố đinh E Thực chất hàm mở rộng E ( Ri-1) là một hoán vị có lặp trong đó lặp lại
16 bit của Ri-1
- Tính E ( Ri-1 ) Ki và viết kết quả thành 8 xâu 6 bit B1B2B3B4B5B6B7B8
- Đưa khối 8 bit Bi vào 8 bảng S1, S2, … S8 ( được gọi là các hộp Box) Mỗi hộp Box là một bảng 4*16 cố định có các cột từ 0 đến 15 và các hàng từ 0 đến 3 Với mỗixâu 6 bit Bi = b1b2b3b4b5b6, ta tính được Si (B i) như sau: hai bit b1b6 xác định hàng rtrong trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si Khi đó, Si (Bi) sẽ xácđịnh phần tử Ci=Si ( r,c), phần tử này viết dưới dạng nhị phân 4 bit Như vậy, 8 khối 6bit Bi ( 1 i 8 ) sẽ cho ra 8 khối 4 bit Ci với ( 1 i 8 )
S Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán vị
P (hộp P-Box) Kết quả P(C) sẽ là kết quả của hàm f( Ri-1, Ki), và cũng chính Ri chovòng sau
26
Trang 27Hình 3.6 Sơ đồ hàm F
3.5.4 Quá trình tạo khóa con
- Mười sáu vòng lặp DES chạy cùng thuật toán như nhau nhưng với 16 khóa conkhác nhau Các khóa con đều được sinh ra từ khóa chính của DES bằng một thuật toánsinh khóa con
Trang 28Hình 3.7 Sơ đồ tạo khóa con
K là xâu có độ dài 64 bit, một bit trong 8 bit của byte sẽ được lấy ra dùng để kiểm traphát hiện lỗi( thường thì các bit này ở vị trí 8, 16, 24, ,64) tạo ra chuỗi 56 bit Sau khibỏ các bit kiểm tra ta sẽ hoán vị chuối 56 bit, 2 bước trên được thực hiện thông quahoá vị ma trận PC1
28
Trang 29Số bit dịch của các vòng:
Bảng 3.6 Bảng dịch bit tại các vòng lặp của DES
+ PC-2 là hoán vị cố định sẽ hoán vị chuỗi CiDi 56 bit thành chuỗi 48 bit