Vì là thuật toán khóa đối xứng nên nó sử dụng cùng một khóatrong cả mã hóa và giải mã dữ liệu.. Nếu đó là một thuật toán bất đốixứng, nó sẽ sử dụng các khóa khác nhau để mã hóa và giải m
Trang 1HỌC PHẦN: AN TOÀN THÔNG TIN
BÀI TẬP LỚN Chủ Đề:
CHUẨN MÃ HÓA DỮ LIỆU DES (DATA ENCRYPTION STANDARD)
Sinh Viên Thực Hiện :
HÀ NỘI – 2023
TRƯỜNG ĐẠI HỌC KINH TẾ
KỸ THUẬT CÔNG NGHIỆP
21103101155 TRẦN THẾ
ANH
DHTI15A18HN
Trang 2Đầu tiên, em xin gửi lời cảm ơn chân thành đến Trường Đạihọc Kinh Tế và Kỹ Thuật Công Nghiệp đã đưa môn học An toànthông tin vào trương trình giảng dạy Đặc biệt, em xin gửi cảm ơnsâu sắc đến giảng viên bộ môn - Thầy HOÀNG ĐẮC THẮNG đã dạy
dỗ, truyền đạt những kiến thức quý báu cho em trong suốt thời gianhọc tập vừa qua Trong thời gian tham gia lớp học của thầy, em đã
có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập hiệuquả, nghiêm túc Đây chắc chắn sẽ là những kiến thức quý báu, làhành trang để em có thể vững bước sau này
Bộ môn An toàn thông tin là môn học thú vị, vô cùng bổ ích và
có tính thực tế cao Đảm bảo cung cấp đủ kiến thức, gắn liền vớinhu cầu thực tiễn của sinh viên Tuy nhiên, do vốn kiến thức cònnhiều hạn chế và khả năng tiếp thu thực tế còn nhiều bỡ ngỡ Mặc
dù em đã cố gắng hết sức nhưng chắc chắn bài tập lớn này khó cóthể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác,kính mong Thầy xem xét và góp ý để bài tập lớn của em được hoànthiện hơn
Em xin chân thành cảm ơn !
Trang 3Trần Thế Anh
Trang 4
Trang 5
CHƯƠNG I : SƠ LƯỢC VỀ TIÊU CHUẨN MÃ HÓA
HIỆN ĐẠI DES (Data Encryption Standards) 1
1 Giới Thiệu 1
1.1 Giới Thiệu Chung 1
1.2 Lịch Sử 1
2 Mô Tả về Thuật Toán 2
2.1 Một Số Tính Năng Cơ Bản Tác Động Tới Cách Thức Hoạt Động Của DES 2
2.2 Tính Bảo Mật Của Mã Hóa DES 3
2.3 Quá Trình Thay Thế DES 3
CHƯƠNG II : NGUYÊN LÝ HOẠT ĐỘNG VÀ CÁC PHƯƠNG PHÁP PHÁ MÃ HÓA DES 5
(Data Encryption Standards) 5
1 Lưu Đồ Thuật Toán Mã Hóa Hiện Đại DES 5
1.1 Một Số Thuật Ngữ Sử Dụng 5
1.2 Lưu Đồ Thuật Toán Và Mã Hóa DES 5
1.2.1 Hoán Vị Khởi Tạo – IP 7
1.2.2 Cấu Tạo Một Vòng Của DES 8
1.2.3 Sinh Khoá Con Của DES 11
1.2.4 Hoán vị khởi tạo đảo IP-1 15
2 Giải Mã DES 25
3 Các Phương Pháp Phá Mã DES 26
3.1 Tấn công brute-force (vét cạn) 26
3.2 Phá mã vi sai 27
3.3 Phá mã tuyến tính 27
3.4 Phá mã Davies 28
CHƯƠNG III: TỔNG KẾT VỀ TIÊU CHUẨN MÃ HÓA HIỆN ĐẠI DES (Data Encryption Standards) 29
1 Về Tính Chất Của DES 29
2 Độ An Toàn Của DES 29
Trang 63 Ngày nay DES Được Sử Dụng Như Thế Nào Và Di Sản Của DES 33
4 Kết Luận 33 Tài Liệu Tham Khảo 34
Trang 7Hình 2.1 Giải thuật mã hóa DES 6
Hình 2.2 Sơ đồ hoán vị khởi tạo, ký hiệu IP 7
Hình 2.3 Sơ đồ khởi tạo vòng của DES 8
Hình 2.4. Bảng tra E 9
Hình 2.6 Minh họa việc sử dụng hàm S1 10
Hình 2.7 Hoán vị P 10
Hình 2.8 Thuật toán tính khóa vòng 12
Hình 2.9 Bảng hoán vị lựa chọn PC-1 13
Hình 2.10 Bảng quy định số bit dịch trái khi tính khóa vòng 14
Hình 2.11 Minh họa phép dịch trái khi tính khóa vòng 14
Hình 2.12 Bảng hoán vị lựa chọn PC-2 15
Hình 2.13 Bảng hoán vị khởi tạo đảo IP-1 15
Hộp S box: 16
Hình 2 14 Bảng phân chia nhóm 21
Hình 2.15 Quá trình giải mã dữ liệu DES 25
Hình 3.1 Thám mã sai phân của DES 31
Trang 8CHƯƠNG I : SƠ LƯỢC VỀ TIÊU CHUẨN MÃ HÓA HIỆN ĐẠI DES (Data Encryption Standards)
1 Giới Thiệu
1.1 Giới Thiệu Chung
Giới thiệu chung về DES - Ngày 13/5/1973 ủy ban quốc gia vềtiêu chuẩn của Mỹ công bố yêu cầu về hệ mật mã áp dụng cho toànquốc Điều này đã đặt nền móng cho chuẩn mã hóa dữ liệu, hay làDES - Lúc đầu Des được công ty IBM phát triển từ hệ mã Lucifer,công bố vào năm 1975 Được FIPS (Tiêu chuẩn Xử lý Thông tin Liênbang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976 Sau đó Desđược xem như là chuẩn mã hóa dữ liệu cho các ứng dụng
Vì là thuật toán khóa đối xứng nên nó sử dụng cùng một khóatrong cả mã hóa và giải mã dữ liệu Nếu đó là một thuật toán bất đốixứng, nó sẽ sử dụng các khóa khác nhau để mã hóa và giải mã
-Khởi nguyên của thuật toán đã có từ đầu thập niên 1970 Vàonăm 1972, sau khi tiến hành nghiên cứu về nhu cầu an toàn máytính của chính phủ Hoa Kỳ, Cục Tiêu chuẩn Liên bang Hoa
Kỳ (National Bureau of Standard - NBS), hiện nay đã đổi tênthành Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NationalInstitute of Standards and Technology - NIST), đã nhận ra nhu cầu
1
Trang 9về một tiêu chuẩn của chính phủ dùng để mật mã hóa các thông tinmật/nhạy cảm Vào ngày 15 tháng 5 năm 1973, sau khi tham khảovới NSA, NBS đưa ra kêu gọi thiết kế một thuật toán mã hóa có thểđáp ứng được các tiêu chuẩn nghiêm ngặt Tuy nhiên không có đềxuất nào đáp ứng được yêu cầu đề ra Ngày 27 tháng 8 năm 1974,NBS đưa ra kêu gọi lần thứ hai Lần này công ty IBM đã đưa ra một
đề xuất có thể chấp nhận được Đề xuất này được phát triển trongnhững năm 1973-1974 dựa trên một thuật toán đã có từ trước -thuật toán mật mã Lucifer của Horst Feistel Đội ngũ tại công tyIBM liên quan tới quá trình thiết kế bao gồm: Feistel, WalterTuchman, Don Coppersmith, Alan Konheim, Carl Meyer, MikeMatyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith vàBryant Tuckerman
Sự thống trị của DES chấm dứt vào năm 2002, khi Tiêu chuẩn
mã hóa nâng cao (AES) thay thế thuật toán mã hóa DES làm tiêuchuẩn được chấp nhận, sau một cuộc cạnh tranh công khai để tìm
ra giải pháp thay thế NIST đã chính thức rút FIPS 46-3 (tái xácnhận năm 1999) vào tháng 5 năm 2005, mặc dù Triple DES (3DES),vẫn được chấp thuận cho thông tin nhạy cảm của chính phủ cho đếnnăm 2030
2 Mô Tả về Thuật Toán
DES là thuật toán mã hóa khối: nó xử lý từng khối thông tincủa bản rõ có độ dài xác định và biến đổi theo những quá trình phứctạp để trở thành khối thông tin của bản mã có độ dài không thay đổi.Trong trường hợp của DES, độ dài mỗi khối là 64 bit DES cũng sửdụng khóa để cá biệt hóa quá trình chuyển đổi Nhờ vậy, chỉ khi biếtkhóa mới có thể giải mã được văn bản mã Khóa dùng trong DES có
độ dài toàn bộ là 64 bit Tuy nhiên chỉ có 56 bit thực sự được sử
Trang 10dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra Vì thế, độ dài thực tếcủa khóa chỉ là 56 bit.
Giống như các thuật toán mã hóa khối khác, khi áp dụng chocác văn bản dài hơn 64 bit, DES phải được dùng theo một phươngpháp nào đó Trong tài liệu FIPS-81 đã chỉ ra một số phương pháp,trong đó có một phương pháp dùng cho quá trình nhận thực Một sốthông tin thêm về những cách sử dụng DES được miêu tả trong tàiliệu FIPS-74
2.1 Một Số Tính Năng Cơ Bản Tác Động Tới Cách Thức Hoạt Động Của DES
- Key mật mã: DES sử dụng phương pháp mật mã khối, điều này có
nghĩa là mỗi khối dữ liệu sẽ được áp dụng bởi một key mật mã vàthuật toán DES sẽ nhóm plain text (văn bản thuần túy) thành cáckhối 64 bit Bằng cách kết hợp và hoán vị các khối của plain text sẽđược chuyển đổi thành Ciphertext (văn bản đã mã hóa)
- Vòng mã hóa: Dữ liệu sẽ được DES mã hóa 16 lần với bốn chế độ
khác nhau Từng khối riêng lẻ sẽ được mã hóa hoặc bắt buộc cáckhối mật mã phải phụ thuộc vào những khối trước đó Riêng về giải
mã thì đơn giản chỉ là nghịch đảo của mã hóa, tức là quy trình thựchiện tương tự nhưng đảo ngược thứ tự các key
- Phím 64 bit: Thực tế cho thấy mặc dù DES sử dụng key 64 bit
nhưng có 8 bit trong số đó đã được dùng để kiểm tra chẵn lẻ Vì lẽ
đó là key hiệu dụng chỉ có 56 bit
- Thay thế và hoán vị: Đây là hai quy trình mà Ciphertext phải trải
qua trong quá trình mã hóa
- Khả năng tương thích ngược (tương thích với phiên bản cũ):
Trong một số trường hợp DES cũng cung cấp khả năng này
2.2 Tính Bảo Mật Của Mã Hóa DES
3
Trang 11DES đã được sử dụng rộng rãi trên phạm vi thế giới, nhưngthuật toán của nó đã gây ra nhiều tranh cãi Độ dài khóa tương đốingắn (56 bit) và các nghi ngờ về cửa sau để Cơ quan An ninh quốcgia Hoa Kỳ (NSA) có thể bẻ khóa đã khiến DES trở nên không đủ antoàn Hiện nay, DES không còn được khuyến nghị sử dụng chonhiều ứng dụng và được thay thế bằng AES (Advanced EncryptionStandard, hay Tiêu chuẩn Mã hóa Tiên tiến), một thuật toán mã hóamạnh hơn và an toàn hơn.
2.3 Quá Trình Thay Thế DES
Từ cuối thập niên 1980, đầu thập niên 1990, xuất phát từnhững lo ngại về độ an toàn và tốc độ thấp khi áp dụng bằng phầnmềm, giới nghiên cứu đã đề xuất khá nhiều thuật toán mã hóa khối
để thay thế DES Những ví dụ tiêu biểu bao gồm: RC5, Blowfish,IDEA (International Data Encryption Algorithm, hay Thuật toán mãhóa dữ liệu quốc tế), NewDES, SAFER, CAST5 và FEAL Hầu hếtnhững thuật toán này có thể sử dụng từ khóa 64 bit của DES mặc dùchúng thường được thiết kế hoạt động với từ khóa 64 bit hay 128bit
Ngay bản thân DES cũng có thể được sử dụng một cách antoàn hơn Những người sử dụng DES trước đây có thể dùng TripleDES (hay TDES) Đây là phương pháp được một trong những ngườiphát minh ra DES miêu tả và kiểm tra (Xem thêm FIPS PUB 46-3).Triple DES sử dụng DES ba lần cho một văn bản với những khóakhác nhau Hiện nay Triple DES được xem là an toàn mặc dù tốc độthực hiện khá chậm Một phương pháp khác ít đòi hỏi khả năng tínhtoán hơn là DES-X với việc tăng độ dài từ khóa bằng cách thực hiệnphép XOR từ khóa với phần thêm trước và sau khi thực hiện DES.Một phương pháp nữa là GDES được đề xuất làm tăng tốc độ mã hóa
Trang 12nhưng nó được chứng tỏ là không an toàn trước tấn công vi sai(differential cryptanalysis).
Năm 1997, 15 thuật toán đã được NIST bắt đầu bình chọn,đánh giá để tìm người kế nhiệm thay cho DES Năm 2001, sau mộtcuộc thi quốc tế, NIST đã chọn ra một thuật toán mới, AES, để thaythế cho DES Thuật toán được trình diện dưới tên là Rijndael.Những thuật toán khác có tên trong danh sách cuối cùng của cuộcthi AES bao gồm: RC6, Serpent, MARS và Twofish
Tháng 5 năm 2005 Tiêu chuẩn mã hóa dữ liệu (FIPS 46 – 3) đã
bị hủy bỏ hoàn toàn Sau đó một thời gian Triple DES (3DES) – mộtphiên bản của DES cũng không được người dùng tin tưởng nữa
5
Trang 13CHƯƠNG II : NGUYÊN LÝ HOẠT ĐỘNG VÀ CÁC
PHƯƠNG PHÁP PHÁ MÃ HÓA DES
(Data Encryption Standards)
1 Lưu Đồ Thuật Toán Mã Hóa Hiện Đại DES
1.1 Một Số Thuật Ngữ Sử Dụng
- Encipher - Bộ mã hóa
- Decipher - Bộ giải mã
- Plaintext - Bản rõ là dữ liệu gốc chưa được mã hóa
- Bản mã là dữ liệu đã dược mã hóa
- Key - khóa mã là một giá trị được sử dụng để mã hóa và giải mã
- Round key - khóa vòng là những giá trị trung gian được tạo ra từkhóa mã trong suốt quá trình mã hóa và giải mã
1.2 Lưu Đồ Thuật Toán Và Mã Hóa DES
Thuật toán DES được sử dụng để mã hóa và giải mã các block(khối) dữ liệu 64 bit dựa trên một key (khóa mã) 64 bit Chú ý, cácblock được đánh số thứ tự bit từ trái sang phải và bắt đầu từ 1, bitđầu tiên bên trái là bit số 1 và bit cuối cùng bên phải là bit số 64.Quá trình giải mã và mã hóa sử dụng cùng một key nhưng thứ tựphân phối các giá trị các bit key của quá trình giải mã ngược với quátrình mã hóa
Một block dữ liệu sẽ được hoán vị khởi tạo (InitialPermutation) IP trước khi thực hiện tính toán mã hóa với key Cuốicùng, kết quả tính toán với key sẽ được hoán vị lần nữa để tạo ra ,đây là hoán vị đảo của hoán vị khởi tạo gọi là (Inverse InitialPermutation) IP-1 Việc tính toán dựa trên key được định nghĩa đơngiản trong một hàm f, gọi là hàm mã hóa, và một hàm KS, gọi là hàmphân phối key (key schedule) Hàm KS là hàm tạo ra các khóa vòng
Trang 14(round key) cho các lần lặp mã hóa Có tất cả 16 khóa vòng từ K1đến K16.
7
Trang 15Hình 2.1 Giải thuật mã hóa DES
Trang 169
Trang 171.2.1 Hoán Vị Khởi Tạo – IP
Hoán vị là thay đổi ví trí các bit trong một chuỗi giá trị nhưng
không làm thay đổi giá trị của các bit này
Hoán vị ban đầu IP: đây là bước đầu tiên của tính toán dữ liệu,
hoán vị IP đảo thứ tự các bít đầu vào: các bít chẵn sàng nửa trái và
các bít lẻ sang nửa phải Hoán vị trên dễ dàng thực hiện trên phần
cứng Mỗi số trong hệ 16 biểu diễn bởi 4 bit, 16 số được thể hiện bởi
64 bit Mỗi bit có một vị trí xác định qua hoán vị ban đầu 64 bit dữ
liệu đầu vào, gọi là plaintext và được hoán vị theo bảng mô tả sau
đây:
phải) Sau đó, các bit này được thay đổi vị trí như sơ đồ IP, bit số 58
được đặt vào vị trí đầu tiên, bit số 50 được đặt vào vị trí thứ 2 Cứ
như vậy, bit thứ 7 được đặt vào vị trí cuối cùng
Sau hoán vị, chuỗi bit mới được phân ra làm hai đoạn, mỗi
đoạn 32 bit để bắt đầu vào quy trình tính toán mã hóa với key Đoạn
bên trái ký hiệu là L, đoạn bên phải ký hiệu là R Đoạn L gồm các bit
từ bit số 1 đến bit số 32, đoạn R gồm các bit từ bit số 33 đến bit số
64 Đoạn L của lần tính toán sau sẽ chính là đoạn R của lần tính
toán trước Đoạn R của lần tính toán sau sẽ được tính từ đoạn R
Hình 2.2 Sơ đồ hoán vị khởi tạo, ký hiệu IP
Trang 18trước đó qua hàm mã hóa f(R, K) rồi XOR với đoạn L của lần tínhtrước đó.
Ví dụ:
IP(123456789ABCDEF) = (CC00CCFFF0AAF0AA)
1.2.2 Cấu Tạo Một Vòng Của DES
Sử dụng hai nửa 32 bít trái và 32 bít phải Như đối với mọi mãFiestel, nửa phải của vòng trước được chuyển qua nửa trái của bước
11Hình 2.3 Sơ đồ khởi tạo vòng của DES
Trang 19sau và lấy đầu ra của hàm vòng trên nửa phải và khoá con cộng cơ
số hai với nửa trái Có thể biểu diễn bằng công thức như sau:
Li = Ri–1
Ri = Li–1 xor F(Ri–1, Ki)
Ở đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán
vị E, giá trị 48 bit được XOR với 48 bit của khóa vòng Kết quả phépXOR được chia làm 8 block được đánh số từ 1 đến 8 theo thứ tự từtrái qua phải, mỗi block 6 bit Mỗi block sẽ được biến đổi thông quacác hàm lựa chọn riêng biệt Tương ứng với 8 block sẽ có 8 hàmchuyển đổi (selection function) riêng biệt là S1, S2, S3, S4, S5, S6,S7 và S8
Hình 2.4 Bảng tra E
Trang 20Việc chuyển đổi giá trị của các hàm S1, S2, , S8 được thựchiện bằng cách tách block 6 bit thành hai phần Phần thứ nhất là tổhợp của bit đầu tiên và bit cuối cùng của block để tạo thành 2 bitchọn hàng của bảng S, bảng S có 4 hàng được đánh số từ 0 đến 3theo thứ tự từ trên xuống Phần thứ 2 là 4 bit còn lại dùng để chọncột của bảng S, bảng S có 16 cột được đánh số từ 0 đến 15 theo thứ
tự từ trái qua phải Như vậy, với mỗi block 8 bit ta chọn được 1 giátrị trong bảng S Giá trị này nằm trong khoảng từ 0 đến 15 sẽ đượcquy đổi thành chuỗi nhị phân 4 bit tương ứng Các chuỗi nhị phân cóđược sau khi chuyển đổi từ S1 đến S8 sẽ được ghép lại theo thứ tự từtrái qua phải để tạo thành một giá trị 32 bit
Ví dụ về việc thực hiện chuyển đổi hàm S, giả sử, giá trị block
6 bit đầu tiên là 011011 Ta tách chuỗi này ra làm hai tổ hợp giá trị
là 01 (bit đầu tiên và bit cuối cùng) và 1101 (4 bit ở giữa) Hai tổ hợpnày được dùng để chọn hàng và cột tương ứng như hình minh họasau:
Tổ hợp 01 sẽ chọn hàng 1, tổ hợp 1101 sẽ chọn cột 13 và kếtquả trả về là 5 có giá trị nhị phân 4 bit là 0101 Qua bước chuyển đổivới các hàm lựa chọn S, kết quả thu được là một giá trị 32 bit Giá trịnày được đưa qua một hàm hoán vị P để tạo ra giátrị hàm f
13Hình 2.6 Minh họa việc sử dụng hàm S1
Trang 21Giá trị 32 bit thu được từ các chuyển đổi với hàm lựa chọn S sẽđược đánh số từ 1 đến 32 theo thứ tự từ trái qua phải.
Theo bảng hoán vị P, bit đầu tiên sau hoán vị sẽ là bit số 16, bitthứ 2 sẽ là bit số 7 và bit cuối cùng sẽ là bit số 25
Ví dụ :
S ( 01 23 45 67 89 AB CD EF ) = ( 5C 82 B5 97 )
1.2.3 Sinh Khoá Con Của DES
Tạo 16 khoá con sử dụng cho 16 vòng của DES 56 bit khoáđầu vào được sử dụng như bảng 8 x 8, trong đó cột thứ 8 không sửdụng Các bit ở vị trí 8, 16, 32, 40, 48, 56 và 64 là các bit parity được
sử dụng để kiểm tra độ chính xác của key theo từng byte vì khi keyđược phân phối trên đường truyền đến bộ mã hóa giải mã thì có thểxảy ra lỗi Parity được sử dụng là parity lẻ (odd parity)
- Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít
16 giai đoạn bao gồm:
- Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tươngứng 1 và 2 bit Hai nửa này được dùng tiếp cho vòng sau
- Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa 24bít gộp lại
thành 48 bít để sinh khoá con
- Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tựnhưng các khóa con được tạo theo thứ tự ngược lại Ngoài ra sau
Hình 2.7 Hoán vị P
Trang 22mỗi chu trình, khóa sẽ được dịch phải thay vì dịch trái như khi mãhóa
+ Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả
15Hình 2.8 Thuật toán tính khóa vòng
Trang 23Key gốc sẽ được thực hiện hoán vị lựa chọn PC-1 Key đượcđánh số từ 1 đến 64 theo thứ tự từ trái qua phải.
chọn PC-1 có hai phần Phần đầu dùng để xác định giá trị C0 vàphần sau dùng để xác định giá trị D0 Theo bảng trên thì C0 là chuỗibit có thứ tự là 57, 49, 41, , 36 lấy từ key gốc, D0 là chuỗi bit cóthứ tự là 63, 55, 47, , 4 lấy từ key gốc
Sau khi xác định được giá trị ban đầu để tính key là C0 và D0thì các khóa vòng Kn (với n từ 1 đến 16) sẽ được tính theo nguyêntắc giá trị của khóa vòng thứ n sẽ được tính từ giá trị khóa vòng thứn-1
Trong đó Cn và Dn được tạo từ Cn-1 và Dn-1 bằng cách dịch trái cácgiá trị này với số bit được quy định trong bảng sau đây:
Hình 2.9 Bảng hoán vị lựa chọn
PC-1