HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA VIỄN THÔNG 1 TIỂU LUẬN KẾT THÚC HỌC PHẦN ĐỘ AN TOÀN CỦA HỆ THỐNG MẬT MÃ HOÁ DỮ LIỆU DES Bài thi cuối kì môn ANM DANH MỤC HÌNH Hình 1 Tổng quát về mật mã ho[.]
Trang 1KHOA VIỄN THÔNG 1
TIỂU LUẬN KẾT THÚC HỌC PHẦN
ĐỘ AN TOÀN CỦA HỆ THỐNG MẬT MÃ HOÁ DỮ LIỆU DES
Trang 2
DANH MỤC HÌNH
Hình 4 Kiến trúc tạo đầu ra hàm S-Box
DANH MỤC BẢNG BIỂU
Bảng 4 Chỉ số dịch bit tại các vòng Feistel Bảng 5 Thuật toán hoán vị và nén khoá
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 5
I Khái quát về mật mã hoá DES 6
1.1 Khái niệm 6
1.2 Tính chất 6
II Sơ đồ mã hoá dữ liệu DES 6
2.1 Sơ đồ tổng quát mã hoá DES 6
2.2 Phân tích mật mã DES 8
2.2.1 Hoán vị khởi tạo và hoán vị kết thúc 8
2.2.2 Thuật toán sinh khoá con 9
2.2.3 Cấu trúc các vòng của DES 11
III Độ an toàn của DES 14
3.1 Điểm yếu của DES 14
3.1.1 Tính bù 14
3.1.2 Khoá yếu 14
3.2 Các dạng tấn công 15
3.2.1 Tấn công vét cạn khóa 15
3.2.2 Phá mã DES theo phương pháp vi sai 16
3.2.3 Phá mã DES theo phương pháp thử tuyến tính 16
3.3 Một số phương pháp khắc phục yếu điểm của DES 16
3.3.1 Hiệu ứng lan truyền 16
3.3.2 2DES 17
3.3.3 3DES 18
KẾT LUẬN 20
TÀI LIỆU THAM KHẢO 21
Trang 4cách an toàn và bí mật Ngày nay mạng máy tính càng trở nên phổ biến, nhu cầu sử dụng Internet của con người ngày càng lớn nhiều dịch vụ điện tử như thư điện tử, chuyển tiền, thương điện tử đang được áp dụng rộng rãi Các ứng dụng trên mạng Internet ngày càng phổ biến, dẫn đến việc bảo mật an toàn thông tin ngày càng trở nên cấp thiết
Đã có rất nhiều quốc gia và các nhà nghiên cứu về vấn đề bảo mật đã đưa ra nhiều thuật toán nhằm mục đích thông tin được bảo mật và không bị đánh cắp Trong bài tiểu luận của nhóm chúng em tìm hiểu về thuật toán DES (Data Encription Standard) Đây là thuật toán chuẩn của Mỹ đã từng được nhiều nước trên thế giới sử dụng Tuy nhiên, với công nghệ phát triển như hiện nay có nhiều lý do khiến thuật toán DES trở nên không còn được an toàn tuyệt đối Người ta đã đưa ra một số thuật toán mở rộng dựa trên nền tảng của DES để số bit mã hoá được tăng lên Sau đây nhóm chúng em sẽ trình bày về cấu trúc cũng như độ an toàn của thuật toán mã hoá DES
Đề tài “Độ an toàn của hệ thống mật mã hoá dữ liệu DES” chúng em tập trung đi sâu phân tích về độ an toàn, những điểm yếu và khả năng bị tấn công của phương pháp mật
mã hoá này
Nội dung bài tiểu luận gồm 3 phần :
Phần I Khái quát về mật mã hoá DES: trình bày về sự phát triển và một số tính
chất của mật mã hoá DES
Phần II Sơ đồ mã hoá dữ liệu DES: phân tích về cấu trúc tổng quát và cách thức
vận hành của mật mã hoá DES
Phần III Độ an toàn của DES: tập trung làm rõ điểm yếu, các dạng tấn công cũng
như một số phương pháp nâng cao tính bảo mật, tăng độ an toàn của mật mã hoá dữ liệu DES
Trang 5I Khái quát về mật mã hoá DES
1.1 Khái niệm
DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976 DES là thuật toán mã hóa khối: thực hiện xử lý từng khối thông tin của bản rõ có độ dài xác định và đi qua một quá trình biến đổi để tạo thành bản mã có độ dài không đổi
Hình 1: Tổng quát về mật mã hoá DES
1.2 Tính chất
- Mã DES thuộc hệ mã khối Feistel gồm 16 vòng, đặc biệt trước khi vào vòng 1 và sau vòng 16 DES có thêm một hoán vị khởi tạo
- Độ dài mỗi khối là 64 bit
- Khóa dùng trong DES có độ dài là 64 bit Tuy nhiên chỉ có 56 bit được sử dụng, còn lại 8 bit sử dụng để kiểm tra chẵn lẻ
- Ở mỗi vòng của mã DES dùng khóa con có độ dài 48 bit được trích ra từ khóa chính Hình dưới đây minh họa các vòng của mã DES
II Sơ đồ mã hoá dữ liệu DES
2.1 Sơ đồ tổng quát mã hoá DES
Mã hóa DES gồm có ba phần: Phần thứ nhất là các hoán vị khởi tạo và hoán vị kết thúc, phần thứ hai là các vòng DES, phần thứ ba là thuật toán sinh khóa con
Trang 6Hình 2: Sơ đồ tổng quát mã hoá DES
Thông qua sơ đồ tổng quát, ta thấy việc mã hoá DES được chia thành 2 phần là: xử
lý bản rõ và quá trình sinh khoá
- Xử lý bản rõ:
bit theo một trật tự cho trước mà không làm thay đổi kích thước của khối
cuối cùng là sự kết hợp của bản rõ đầu vào và khoá K
được hoán vị cho nhau
mã có kích thước trùng với bản rõ
Trang 7- Quá trình sinh khoá:
bên nhận và bên gửi, khoá được đưa vào khối hoán vị khoá theo quy tắc cho trước Đầu ra là chuỗi 56 bit sẽ được chia ra thành hai nửa trái phải và đưa qua khối dịch vòng trái
o Trong khối dịch trái, các bit sẽ được dịch đi số vị trí tuỳ theo chỉ số vòng của vòng Feistel, sau đó được đưa qua khối PC2 mục đích để hoán vị và nén chuỗi này từ 56 bit thành chuỗi 48 bit theo quy tắc cho trước
Feistel bên phía bản rõ
2.2 Phân tích mật mã DES
2.2.1 Hoán vị khởi tạo và hoán vị kết thúc
Bản rõ M (hexa)= AB091104081307CD
Mã nhị phân của bản rõ M:
M = 1010 1011 0000 1001 0001 0001 0000 0100 0000 1000 0001 0011 0000 0111 1100 1101
Đầu tiên, bản rõ 64 bit nhị phân M sẽ đi vào khối hoán vị khởi tạo để sắp xếp lại các bit và cho ra chuỗi bit đã được hoán vị có cùng kích thước đầu vào
Bản rõ M 64 bit được đánh số từ trái qua phải từ 1 đến 64 khi đó hoán vị khởi tạo sẽ hoán đổi các bit theo quy tắc của hình dưới đây:
Bảng 1: Khối hoán vị khởi tạo
IP(M) = 1000 0000 0010 0101 1100 1000 1110 0111 1000 0001 0000 0001 1001 0011
0100 0001
Sau 16 vòng mã hoá Feistel, khối mã sẽ được đưa vào khối hoán vị kết thúc Khối hoán vị sẽ thực hiện hoán đổi vị trí các bit theo quy tắc sau:
Trang 8
Bảng 2: Khối hoán vị kết thúc
L16 = A005471D (1010 0000 0000 0101 0100 0111 0001 1101)
R16 = 2BC5113B (0010 1011 1100 0101 0001 0001 0011 1011)
IP -1 = 0111 1111 0100 1001 0011 1010 0100 0011 0000 0111 1100 0001 0001 1000 1001 0000
Viết ở dạng cơ số 16 là: 7F493A4307C11890
Bản rõ M = AB091104081307CD sau khi đưa qua khối mã khoá DES biến đổi thành bản
mã C = 7F493A4307C11890
Hoán vị khởi tạo và hoán vị kết thúc không có ý nghĩa bảo mật trong các trường hợp
kẻ tấn công biết trước bản rõ hay bản rõ đã được lựa chọn, sự tồn tại của hai hoán vị này được cho là mang tính chất kế thừa từ lịch sử
2.2.2 Thuật toán sinh khoá con
Chọn khoá K = 0123456789ABCDEF (tự chọn ngẫu nhiên 16 bit hexa)
K = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Đầu tiên, khoá 64 bit nhị phân này được đưa qua bộ hoán vị và nén cho đầu ra là khối mã 56 bit theo quy tắc dưới đây:
Bảng 3: Thuật toán sinh khoá con
Trang 9Sau khi đi qua khối trên thu được khối PC1 có giá trị:
PC1 = 1111 0000 1010 1010 1100 1100 0000 1010 1010 1100 1100 1111 0000 0000
Với khối 56 bit khoá đầu ra sẽ được chia thành 2 nửa trái KL và phải KR với độ dài mỗi khối là 28 bit
C0 = 1111 0000 1010 1010 1100 1100 0000
D0 = 1010 1010 1100 1100 1111 0000 0000
Bản mã C0 và D0 sẽ được dịch vòng trái với các bit tuỳ theo chỉ số vòng tại đó được liệt kê ở bảng dưới đây
Bảng 4: Chỉ số dịch bit tại các vòng Feistel
C1 = 1110 0001 0101 0101 1001 1000 0001 (dịch trái 1 bit so với C0)
D1 = 0101 0101 1001 1001 1110 0000 0001(dịch trái 1 bit so với D0)
Sau khi qua các vòng dịch ta thu được hệ thống khoá ứng với mỗi vòng và sẽ được đưa qua khối hoán vị và nén PC2 Với đầu vào là khối mã 56 bit sẽ cho đầu ra là chuỗi mã
48 bit theo quy tắc dưới đây:
Bảng 5: Thuật toán hoán vị và nén khoá
K1 = 000 010 110 000 001 001 100 111 100 110 110 100 100 110 100 101 (0B02679B49A5)
Dưới đây là kết quả của khoá K sau mỗi vòng sau khi đi qua khối hoán vị và nén PC2:
Trang 102.2.3 Cấu trúc các vòng của DES
Hình 3: Cấu trúc các vòng của DES
- Hàm Expand: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị
mở rộng với việc nhân đôi một số bit Giai đoạn này được ký hiệu là E trong sơ đồ
Trang 11
Bảng 6: Thuật toán Expand
IP(M) = 1000 0000 0010 0101 1100 1000 1110 0111 1000 0001 0000 0001 1001 0011
0100 0001
L0 = 1000 0000 0010 0101 1100 1000 1110 0111 (32 bit)
R0 = 1000 0001 0000 0001 1001 0011 0100 0001 (32 bit)
Chuỗi bit bên phải R0 sẽ được đưa qua hàm Expand cho ra kết quả là:
E(R0) = 100000 000010 100000 000011 110010 100110 101000 000011
- XOR khoá: 48 bit thu được sau quá trình mở rộng được XOR với khóa con Mười
sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một chu trình tạo khóa con
K1 000010 110000 001001 100111 100110 110100 100110 100101
E(R0) 100000 000010 100000 000011 110010 100110 101000 000011
K1 + E(R0) 100010 110010 101001 100100 010100 010010 001110 100110
Kết quả đầu ra khối XOR
- S-Box: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý qua hộp thay
thế S-box Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi phi tuyến được thực hiện bằng một bảng tra
Hình 4: Kiến trúc tạo đầu ra hàm S-Box
Trang 12Bảng 7: Hoạt động của hàm S-Box
Kết quả đầu ra của hàm S-Box:
K1 + E(R0) 100010 110010 101001 100100 010100 010010 001110 100110
S(B) 0001 1100 0100 1110 0110 1010 1000 1000
Đầu ra khối S-Box
- P-Box: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ tự
cho trước (còn gọi là P-box)
Bảng 8: Thuật toán P-Box
Đầu ra khối P-Box
Đầu ra của khối P-Box được đưa vào bộ cộng Module 2 với nửa trái của mã L0 tạo thành nửa chuỗi mã phải của vòng thứ nhất
Trang 13Dưới đây là kết quả của đầu ra sau khi kết thúc mỗi vòng Feistel:
III Độ an toàn của DES
3.1 Điểm yếu của DES
Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng Nguyên nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ Khóa DES đã từng bị phá trong vòng chưa đầy 24 giờ Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã
hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn
3.1.1 Tính bù
Giả sử phần bù của a ký hiệu là 𝑎̅ (ví dụ : 01001101 là phần bù của 10110010) thì
DES có tính chất sau:
C = DES (a,k) → 𝐶̅ = DES ( 𝑎̅, 𝑘̅)
Như vậy nếu ta biết mã C được mã hóa từ thông tin a với khóa k thì ta suy được bản
mã 𝐶̅ được mã hóa từ bản rõ 𝑎̅ với khóa 𝑘̅ Đây là một điểm yếu của DES khi kẻ tấn công thực hiện giải mã bằng phương pháp tấn công vét cạn khoá
3.1.2 Khoá yếu
Một điểm yếu nữa của DES là khi sử dụng thuật toán sinh khoá con thì có thể gặp trường hợp 16 khoá con đều trùng nhau, trường hợp này khoá đầu vào được gọi là khoá yếu Như vậy, ta có thể suy ra việc mã hoá và giải mã khoá yếu là như nhau
Trang 14Bảng 9: Các bộ khoá yếu
Ngoài ra, còn có thêm 5 cặp khoá nửa yếu, nghĩa là:
C = DES (a,k1) → C = DES (a,k2) Với cùng 1 bản mã khi mã khoá bằng 1 cặp mà nửa yếu thì sẽ tạo thành 2 bản mã giống hệt nhau
Bảng 10: Các bộ khoá nửa yếu
Tuy nhiên có thể dễ dàng tránh được những khóa này khi thực hiện thuật toán, có thể bằng cách thử hoặc chọn khóa một cách ngẫu nhiên Khi đó khả năng chọn phải khóa yếu là rất nhỏ
3.2 Các dạng tấn công
3.2.1 Tấn công vét cạn khóa
- Không chỉ với mật mã hoá khoá đối xứng DES, mà với bất kì phương thức mật mã hoá nào cũng gặp phải kiểu tấn công này Kẻ tấn công sẽ thử tất cả các khoá có thể lên một đoạn bản mã cho tới khi biên dịch được thành bản rõ
Trang 15- Nếu số lượng khoá là rất lớn, kiểu tấn công này rất khó để thực hiện Do đó, họ phải dựa trên việc phân tích bản mã, thường áp dụng các thử nghiệm thống kê
- Để sử dụng kiểu tấn công này, đa phần kẻ tấn công sẽ phải thử trung bình nửa số khoá để có thể đạt được thành công trong việc tìm ra bản rõ
3.2.2 Phá mã DES theo phương pháp vi sai
- Phương pháp phá mã vi sai là kiểu tấn công dựa vào các cặp bản rõ có lựa chọn phân tích giá trị khác nhau giữa hai bản rõ làm ảnh hưởng tới sự khác nhau giữa hai bản
mã tương ứng Sự khác nhau này được định nghĩa thông qua nhiều cách nhưng phép toán XOR thường được sử dụng
- Các cặp vi sai vào ra được gọi là XOR vào, XOR ra
- Quy trình phá mã vi sai DES:
o Tiền tính toán lập các bảng tham chiếu
o Giới hạn không gian tìm khoá
- Phương pháp phá mã vi sai này phá khoá tốn ít thời gian hơn so với tấn công vét
lựa chọn để có thể tìm ra khoá K Như vậy, mặc dù được cho là tốn ít lần thử hơn so với thuật toán vét cạn nhưng vi sai bị cho là bất khả thi
3.2.3 Phá mã DES theo phương pháp thử tuyến tính
- Phương pháp phá mã tuyến tính là một phương pháp tấn công DES được đưa ra vào
bản rõ bản mã Tuy nhiên, con số này là rất lớn nên phương pháp này cũng không khả thi để tấn công mật mã hoá DES
3.3 Một số phương pháp khắc phục yếu điểm của DES
3.3.1 Hiệu ứng lan truyền
- Trong một bản rõ hay một khoá, khi ta thay đổi chỉ một bit sẽ dẫn đến sự thay đổi nhiều bit trong bản mã Người ta gọi tính chất này là hiệu ứng lan truyền
- Nhờ vào tính chất này mà kẻ tấn công không thể giới hạn miền tìm kiếm của bản rõ hay khoá nên không thể thực hiện kiểu tấn công tuyến tính và vi sai mà bắt buộc phải phá mã bằng phương pháp vét cạn khoá
- DES là một phương pháp mã hoá có tính chất hiệu ứng lan truyền này
Trang 16Hình trên cho thấy kết quả khi ta thay đổi 1 bit đầu vào của bản rõ thì bản mã đầu ra từ quá trình mã hoá DES đã khác nhau hoàn toàn
C1 = 7F493A4307C11890
C2 = 352C108960A320B7
3.3.2 2DES
Phương pháp mã hoá Double DES sử dụng mã hoá 2 lần với 2 khoá khác nhau Khoá của hệ mã theo mô hình này là 112 bit Nhìn vào kích thước khoá có thể thấy độ an toàn của phương pháp này là tăng gấp đôi so với DES truyền thống
Trang 17Đầu tiên, bản rõ P được đi vào khối mã hoá sử dụng khoá K1 tạo ra bản mã X, sau
đó bản mã tiếp tục đưa vào khối mã hoá thứ 2 sử dụng khoá K2 để thu được bản mã cuối cùng là C
Hình 6: Sơ đồ giải mã 2DES
Việc giải mã được thực hiện ngược lại với quá trình mã hoá Bản mã C được đưa qua khối giải mã đầu tiên sử dụng khoá K2, sau đó được đưa qua khối giải mã sử dụng khoá K1 và cuối cùng cho ra bản rõ đầu vào P
Hạn chế của phương pháp này là việc mã hoá và giải mã sẽ tốn nhiều thời gian hơn
do không gian khoá được tăng lên gấp 2 lần
3.3.3 3DES
Một phương pháp để tăng tính bảo mật của mật mã hoá DES hơn nữa là sử dụng phương pháp mã hoá DES ba lần Khoá của Triple DES là 168 bit, trong trường hợp khoá thứ nhất bằng khoá thứ 3 thì kích thước khoá có độ dài là 112 bit (nhưng khác với Double DES)
- Triple DES 2 khoá:
Hình 7: Sơ đồ mã hoá 3DES 2 khoá
Đầu tiên, bản rõ P được đưa vào khối mã hóa E sử dụng khóa K1 tạo ra bản mã A Bản mã A sau đó được đưa vào khối giải mã D sử dụng khóa K2 tạo ra bản B Bản B tiếp tục đưa vào khối mã hoá E sử dụng khoá K1 và cuối cùng tạo ra bản mã C
Trang 18Hình 8: Sơ đồ giải mã 3DES 2 khoá
Bản mã C được đưa vào khối giải mã D sử dụng khoá K1 tạo ra bản B, sau đó B được đưa vào khối mã hoá E sử dụng khoá K2 tạo ra bản mã A Cuối cùng, bản mã A được đưa vào khối giải mã D sử dụng khoá K1 tạo ra bản rõ P
- Triple DES 3 khoá:
Hình 9: Sơ đồ mã hoá 3DES 3 khoá
Ở trường hợp này, cũng tương tự như ở Triple DES 2 khoá nhưng ở khối mã hoá cuối cùng sử dụng khoá thứ 3 K3
Hình 10: Sơ đồ giải mã 3DES 3 khoá
Giải mã ở đây cũng tương tự với Triple DES 2 khoá nhưng khoá K1 ở khối giải mã đầu tiên được thay bằng K3
Việc lựa chọn mã hoá và giải mã ở khoá thứ hai không làm thay đổi tính an toàn của Triple DES Một số lý thuyết về các cuộc tấn công Triple DES cho thấy hệ mật mã này vẫn được sử dụng mặc dù chậm hơn so với AES tới 6 lần