MỤC ĐÍCH CỦA TIỂU LUẬN - Giới thiệu về hệ thống mã hóa DES - Đi sâu nghiên cứu phương pháp mã hóa DES - Rút ra nhận xét và đánh giá - Tìm hiểu ứng dụng thực tế của DES PHẠM VI CỦA TIỂU L
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
- -
TIỂU LUẬN HỌC PHẦN
“AN NINH MẠNG THÔNG TIN”
ĐỀ TÀI TIỂU LUẬN
“TIÊU CHUẨN MẬT MÃ HÓA DỮ LIỆU DES”
Giảng viên : NGUYỄN THANH TRÀ
Trang 2
PHÂN CÔNG CÔNG VIỆC CỦA NHÓM
- Tìm hiểu về CHƯƠNG 1 : GIỚI THIỆU CHUNG
1.1: Cấu trúc
1.2: Các phép hoán vị
1.3: Các vòng mật mã
- Tìm hiểu về CHƯƠNG 2 : MẬT MÃ HÓA DỮ LIỆU DES
2.1: Thuật toán mã hóa DES (5 bước)
2.2: Tính an toàn của DES
2.3: DES trong thực tế
2.4: Nhận xét và đánh giá
- Thực hiện làm Mở đầu, Kết luận,các phụ lục kèm theo, chỉnh sửa bản word đủ các phần và theo đúng yêu cầu của giảng viên
Trang 3MỤC LỤC
DANH MỤC BẢNG BIỂU, HÌNH VẼ 3
MỤC ĐÍCH CỦA TIỂU LUẬN 4
PHẠM VI CỦA TIỂU LUẬN 4
HƯỚNG TIẾP CẬN 4
MỞ ĐẦU 5
1.1 Cấu trúc DES 6
1.2 Các phép hoán vị 7
1.3 Các vòng mật mã của DES 8
CHƯƠNG 2: MẬT MÃ HÓA DỮ LIỆU DES 12
2.1 Thuật toán mã hóa DES 12
2.2 Tính an toàn của DES 20
2.2.1 Điểm yếu 20
2.2.1.1 Tính bù 20
2.2.1.2 Khóa yếu 20
2.2.2 Các dạng tấn công DES 20
2.2.2.1 Tấn công vét cạn khóa (Brute Force Attack) 20
2.2.2.2 Phá mã DES theo phương pháp vi sai (differential cryptanalysis) 21
2.2.2.3 Phá mã DES theo phương pháp thử tuyến tính(linear cryptanalysi) 21
2.2.2.4 Phá mã Davies 21
2.3 DES trong thực tế 21
2.4 Nhận xét và đánh giá 22
KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 24
Trang 4Hình 1.1: Thuật toán mật mã DES
Hình 1.2: Hoán vị khởi tạo và kết thúc trong DES
Hình 1.4: Cấu trúc 1 vòng mật mã DES
Hình 2.1: Mô tả thuật toán sinh khóa con
Hình 2.5: Một vòng(vòng thứ i) của DES
Hình 2.6: Sơ đồ hoạt động của hàm f(Ri-1, Ki)
Hình 2.11: Quá trình mã hóa và giải mã DES
Trang 5MỤC ĐÍCH CỦA TIỂU LUẬN
- Giới thiệu về hệ thống mã hóa DES
- Đi sâu nghiên cứu phương pháp mã hóa DES
- Rút ra nhận xét và đánh giá
- Tìm hiểu ứng dụng thực tế của DES
PHẠM VI CỦA TIỂU LUẬN
-Gồm 2 chương:
+ Chương 1: Giới thiệu chung
Nội dung của chương này sẽ chủ yếu tìm hiểu về cấu trúc của DES, các phép hoán vị
và các vòng mật mã của DES
+ Chương 2: Mật mã hóa dữ liệu DES
Nội dung của chương này sẽ đi sâu vào nghiên cứu phương pháp mã hóa DES, có lấy
ví dụ minh họa, rồi đưa ra nhận xét và đánh giá và cuối cùng tìm hiểu ứng dụng của phương pháp mã hóa trong thực tế
HƯỚNG TIẾP CẬN
- Phương pháp nghiên cứu: Phận tích – tổng hợp
Trước hết phân tích là phân tách những vấn đề nhỏ( ở đây là phân tách thành từng chương, trong từng chương thì gồm có nhiều yếu tố nghiên cứu),và bàn luận về nó Từ
đó, chúng ta có thể hiểu được một cách sâu sắc, chi tiết và cụ thể nhất trong từng khía cạnh khác nhau
Sau khi phân tích từng khía cạnh một cách tách bạch, chúng ta sẽ có cái nhìn tổng quát vào vấn đề, đề tài Chính lúc ấy, chúng ta sử dụng phương pháp tổng hợp để tóm gọn lại những nội dung chính, những vấn đề cần lưu ý và thông điệp của tiểu luận
- Cách giải quyết vấn đề: Tìm những thông tin, tài liệu trên sách và internet rồi đưa ra
những phân tích và cả những ví dụ cụ thể để làm rõ cho các vấn đề, mà đặc biệt là phương pháp mã hóa DES
Trang 6MỞ ĐẦU
Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện tử - viễn thông và công nghệ thông tin không ngừng phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Một trong các biện pháp hữu hiệu nhất hiện nay là mã hóa.Khái niệm mã hóa dữ liệu để cập đến những phép tính toán học và chương trình thuật toán chuyển văn bản gốc thành dạng văn bản mã hóa Người nhận tin nhắn mã hóa sẽ sử dụng một khóa tạo nên cơ chế thuật toán đề giải mã dữ liệu, chuyển nó trở về phiên bản văn bản ban đầu
Trước khi có Internet, phương pháp mã hóa dữ liệu rất ít khi được sử dụng rộng rãi vì nó được coi là công cụ bảo đảm an ninh trong lĩnh vực ngoại giao và quân sự nhiều hơn Tuy nhiên từ khi dịch vụ ngân hàng, mua sắm trực tuyển và các dịch vụ khác trở nên phố biến thì ngay cả những người chỉ có nhu cầu sử dụng Internet cơ bản tại nhà cũng biết đến mã hóa dữ liệu
Một số giải pháp mã hóa dữ liệu tối ưu có thể được sử dụng qua nhiều thể kỷ, trong khi các phương pháp giải mã khác có thể bị phá vỡ bởi những người có kỹ năng
về lĩnh vực này trong thời gian ngắn Một số chuẩn mã hóa dữ liệu phổ biến là: DES, AES (Acvanced Encryption Standard Tiêu chuẩn mã hóa nâng cao),
Lý do chọn đề tài: Đề tài tiểu luận của nhóm em là “Tiêu chuẩn mật mã hóa dữ
liệu DES” bởi vì là thuật toán DES là thuật toán mã hóa khối ra đời sớm và có nhiều ảnh hưởng (Data Encryption Standard - Tiêu chuẩn mã hóa dữ liệu) Nó cũng là 1 trong những mật mã hóa quan trọng mà bọn em được giới thiệu và giảng dạy trong bộ môn “An Ninh Mạng Thông Tin”
Trang 7CHƯƠNG 1: GIỚI THIỆU CHUNG
DES (Data Encryption Standard) là chuẩn mã hóa dữ liệu đầu tiên trên thế giới,
do Cơ quan an ninh Quốc gia Hoa Kỳ (NSA) đề xuất trên cơ sở cải tiến thuật toán
Lucifer do hãng IBM công bố năm 1964 DES đã được sử dụng rộng rãi ở Hoa Kỳ và
nhiều quốc gia khác trong các thập kỷ 70, 80, 90 cho đến khi được thay thế bởi Tiêu
chuẩn mã hóa dữ liệu tiên tiến AES (Advanced Encryption Standard) vào năm 2002
1.1 Cấu trúc DES
➢ Mật mã DES có các đặc điểm sau:
- Là mã thuộc mã Feistel có 16 vòng, ngoài ra DES có thêm một hoán vị khởi tạo trước khi bắt đầu vòng 1 và một hoán vị kết thúc sau vòng 16
- Kích thước khối là 64 bit
- Kích thước khóa là 56 bit
- Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra từ khóa chính
➢ Cấu trúc mật mã hóa của mã DES:
Hình 1.1: Thuật toán mật mã DES
Đầu tiên, bản rõ 64 bit được chuyển tới 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ị Tiếp theo đó là 16 vòng mật mã Feistel Đầu ra của vòng cuối cùng (vòng 16) gồm 64 bit là một hàm của bản rõ đầu vào và khóa K.Sau đó, nửa trái và nửa phải của 64 bit này sẽ được tráo đổi cho nhau Cuối cùng,
Trang 8các bit đã được tráo đổi đó được đưa qua bộ hoán vị kết thúc, đây là một hàm hoán vị nghịch đảo của hoán vị khởi tạo, và cho ra 64 bit bản mã
Tiếp theo bên khóa 64 bit, mô tả cách thức khóa 56 bit được sử dụng Ban đầu, khóa 64 bit được chuyển qua bộ hoán vị khóa Sau đó, đối với mỗi 16 vòng, khóa con
Ki được tạo ra bằng cách kết hợp dịch vòng trái và hoán vị Hàm hoán vị là giống nhau
ở mỗi vòng, nhưng khóa con khác nhau được tạo ra bởi các dịch vòng trái được lặp lại
ở các bit khóa
1.2 Các phép hoán vị
Hình 1.2 cho thấy các hoán vị khởi tạo và kết thúc Mỗi hoán vị này có 64-bit nhập và hoán vị chúng theo một quy tắc xác định trước Hình 2.1 chỉ hiển thị một số cổng đầu vào và các cổng đầu ra tương ứng Các hoán vị này là các hoán vị thẳng không khóa là nghịch đảo của lẫn nhau Ví dụ, trong hoán vị khởi tạo, bit thứ 58 trong đầu vào sẽ trở thành bit đầu tiên trong đầu ra Tương tự, trong hoán vị kết thúc, bit đầu tiên trong đầu vào sẽ trở thành bit thứ 58 trong đầu ra Trong nói cách khác, nếu các vòng giữa hai hoán vị này không tồn tại, thì bit thứ 58 đi vào phần đầu hoán vị giống như bit thứ 58 để lại hoán vị cuối cùng
Hình 1.2: Hoán vị khởi tạo và kết thúc trong DES
Quy tắc hoán vị này được trình bày trong Bảng 2.2 Mỗi mặt của bảng có thể được suy nghĩ dưới dạng một mảng 64 phần tử Lưu ý rằng, như với bất kỳ bảng hoán
vị nào giá trị của mỗi phần tử xác định số cổng đầu vào và thứ tự (chỉ số) của phần tử xác định đầu ra số cổng
Trang 9Bảng 1.3: Bảng hoán vị khởi tạo và kết thúc
Hoán vị khởi tạo: bit đầu tiên của đầu ra được lấy từ bit thứ 58 của đầu vào; bit thứ hai từ bit thứ 50, v.v., với bit cuối cùng của đầu ra được lấy từ bit thứ 7 của đầu vào
Hoán vị kết thúc: là nghịch đảo của hoán vị ban đầu, tức là đâu ra của hoán vị cuối cùng có 40 bit của đầu ra làm bit đầu tiên, bit 8 làm bit thứ 2, v.v., cho đến bit 25 của đầu ra là bit cuối cùng của đầu ra
1.3 Các vòng mật mã của DES
- DES sử dụng 16 vòng, mỗi vòng của DES là một mật mã Feistel
- Hình 3.1 đây minh họa một vòng Feistel của DES Trong đó, hàm F được mô tả như sau:
F(R , i−1 K i)= P - box(S – boxes(Expand(R i−1)K i))
Hình 1.4: Cấu trúc 1 vòng mật mã DES
Trang 10Trong đó, hàm Expand (R i−1) mở rộng R i−1 từ 32 bit thành 48 bit Ngược lại, hàm
S-boxes nén 48 bit thành 32 bit Hàm P-box thực hiện hoán vị 32 bit Cụ thể hoạt động của các hàm này như sau:
- Hàm Expand(R i−1): đánh số các bit của R i− 1 theo thứ tự từ trái qua phải 0, 1, 2,…,31 Hàm này sẽ thực hiện vừa hoán vị vừa mở rộng 32 bit thành 48 bit theo quy tắc sau:
- Hàm S-boxes: biến đổi 48 bit thành 32 bit S-boxes được chia thành 8 S-box con, mỗi hàm biến đổi 6 bit thành 4 bit
• S1:
• S2:
Trang 12VD: S-box 1
- Hàm P-box: thực hiện hoán vị 32 bit đầu vào theo quy tắc:
Trang 13CHƯƠNG 2: MẬT MÃ HÓA DỮ LIỆU DES
2.1 Thuật toán mã hóa DES
Đầu vào của DES là khối 64 bit, đầu ra cũng là khối 64 bit Khóa mã hóa có độ dài
56 bit, nhưng thực chất ban đầu là 64 bit, được lấy đi các bit ở vị trí chia hết cho 8 là các bít chẵn lẻ dung để kiểm soát lỗi
DES là thuật toán mã hóa theo khối, nó xử lý từng khối thông tin của bản rõ có độ dài xác định là 64 bit Trước khi đi vào 16 chu trình chính, khối dữ liệu cần bảo mật sẽ được tách ra thành từng khối 64 bit, và từng khối 64 bit này sẽ lần lượt được đưa vào
16 vòng mã hóa DES để thực hiện
Để mã hóa Plaintext (64 bit) bằng khóa K (64 bit) ta thực hiện theo các bước sau:
Bước 1:
Sinh khóa con: Sử dụng thuật toán sinh khóa con từ khóa K ta sẽ được 16 khóa con K1, K2, … K16
Quá trình sinh khóa con được thực hiện như sau:
16 vòng lặp của DES chạy cùng thuật toán như nhau nhưng với 16 khóa con khác nhau Các khóa con đều được sinh ra từ khóa chính của DES bằng thuật toán sinh khóa con
Hình 2.1: Mô tả thuật toán sinh khóa con
Trang 14Khóa ban đầu là 1 xâu có độ dài 64 bit, bit thứ 8 của mỗi byte sẽ được lấy ra để kiểm tra phát hiện lỗi, tạo ra chuỗi 56 bit Sau khi bỏ các bit kiểm tra ta sẽ hoán vị chuỗi 56 bit này Tiến hành tra bảng Pairity drop để thu được kết quả
Bảng 2.2: Bảng Pairity drop
Tiếp theo ta chia kết quả thành 2 phần: C0: 28 bit đầu D0: 28 bit cuối Mỗi phần
sẽ được xử lý 1 cách độc lập Tiến hành dịch trái 1 hoặc hai bit cho mỗi phần tùy theo
Trang 15Bảng 2.4 : Bảng IP
Kết quả nhận được chia thành 2 nửa: L0 là 32 bit đầu, R0 là 32 bit cuối
Bước 3:
Với i chạy từ i = 1 đến 16 (tương ứng với 16 round) ta thực hiện:
Hình 2.5: Một vòng(vòng thứ i) của DES
Tính các Li và Ri theo công thức:
Li = Ri-1 Ri = Li-1 f(Ri-1, Ki)
Trong đó, f(Ri-1, Ki) được tính như sau:
Trang 16Hình 2.6: Sơ đồ hoạt động của hàm f(R i-1 , K i )
Ki là khóa con sinh ra trong quá trình tạo khóa ở mỗi round tương ứng Tuy nhiên khóa K có 48 bit, trong khi Ri-1 có 32 bit, ta cần chuyển đổi Ri-1 sang 48 bit như sau:
Hoặc có thể sử dụng bảng Expasion P-Box dưới đây để chuyển đổi
Bảng 2.7: Bảng Expasion P-Box
Sau khi thu được Ri-1 (48 bit) ta thực hiện phép XOR với Ki Kết quả thu được được chia thành 8 khối, mỗi khối 6 bit Tra mỗi khối 6 bit này với mỗi bảng S-box tương ứng, ta thu được f(Ri-1, Ki) 32 bit
Trang 17Bảng 2.8: Bảng S-box
Tra bảng Straight P-box để thu được kết quả cuối cùng
Bảng 2.9: Bảng Straight P-box
Bước 5: Sử dụng phép hoán vị kết thúc FP (Final Permutation – nghịch đảo với
hoán vị khởi đầu IP) ta thu được bản mã cần tìm
Bảng 2.10: Bảng FP
Trang 18Quá trình ngược lại với mã hóa DES là quá trình giải mã DES
Hình 2.11: Quá trình mã hóa và giải mã DES
Chia thành hai đoạn mã, C0 = 1111000 0110011 0010101 0101111 và D0 =
0101010 1011001 1001111 0001111, với C0 và D0 xác định, ta tiến hành dịch trái 1 hoặc 2 bit:
Trang 20Chuyển đổi IP-1 về dạng thập lục phân ta được: 85E813540F0AB405
Vậy Ciphertext: 85E813540F0AB405
Trang 212.2 Tính an toàn của DES
tấn công có thể loại trừ một nửa số khóa cần phải thử khi tiến hành phép thử – giải mã
theo kiểu tìm kiếm vét cạn không gian khóa
2.2.1.2 Khóa yếu
Các 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 đều như nhau Z1 = Z2= Z3= …= Z15= Z16 điều đó khiến cho phép sinh mã và giải mã đối với các khóa yếu này là giống hệt nhau
Đồng thời có 10 khóa yếu với thuộc tính là tồn tại Z, Z’ sao cho:
DES-1z= DESz’ hay DES-1z’= DES
2.2.2 Các dạng tấn công DES
Ta xem xét tính an toàn của DES trước một vài phương pháp tấn công phá mã:
2.2.2.1 Tấn công vét cạn khóa (Brute Force Attack)
Vì khóa của mã DES có chiều dài là 56 bít nên để tiến hành brute-force attack, cần kiểm tra 256 khóa khác nhau Hiện nay với những thiết bị phổ dụng, thời gian gian
để thử khóa là rất lớn nên việc phá mã là không khả thi (xem bảng) Tuy nhiên vào năm 1998, tổ chức Electronic Frontier Foundation (EFF) thông báo đã xây dựng được một thiết bị phá mã DES gồm nhiều máy tính chạy song song, trị giá khoảng 250.000$ Thời gian thử khóa là 3 ngày Hiện nay mã DES vẫn còn được sử dụng trong thương mại, tuy nhiên người ta đã bắt đầu áp dụng những phương pháp mã hóa khác có chiều dài khóa lớn hơn (128 bít hay 256 bít) như TripleDES hoặc AES 49
Trang 222.2.2.2 Phá mã DES theo phương pháp vi sai (differential cryptanalysis)
Năm 1990 Biham và Shamir đã giới thiệu phương pháp phá mã vi sai Phương pháp vi sai tìm khóa ít tốn thời gian hơn brute-force Tuy nhiên phương pháp phá mã này lại đòi hỏi phải có 247 cặp bản rõ - bản mã được lựa chọn (chosen-plaintext) Vì vậy phương pháp này là bất khả thi dù rằng số lần thử có thể ít hơn phương pháp brute-force
2.2.2.3 Phá mã DES theo phương pháp thử tuyến tính(linear cryptanalysi)
Năm 1997 Matsui đưa ra phương pháp phá mã tuyến tính Trong phương pháp này, cần phải biết trước 2 43 cặp bản rõ-bản mã (known-plaintext) Tuy nhiên 243 cũng là một con số lớn nên phá mã tuyến tính cũng không phải là một phương pháp khả thi
2.2.2.4 Phá mã Davies
Trong khi phá mã vi sai và phá mã tuyến tính là các kỹ thuật phá mã tổng quát,
có thể áp dụng cho các thuật toán khác nhau, phá mã Davies là một kỹ thuật dành riêng cho DES Dạng tấn công này được đề xuất lần đầu bởi Davies vào cuối những năm 1980 và cải tiến bởi Biham và Biryukov (1997) Dạng tấn công mạnh nhất đòi hỏi
250 văn bản rõ, độ phức tạp là 250 và có tỷ lệ thành công là 51%
Ngoài ra còn có những kiểu tấn công dựa trên bản thu gọn của DES - DES với
ít hơn 16 chu trình Những nghiên cứu này cho chúng ta biết số lượng chu trình cần có
và ranh giới an toàn của hệ thống
*Nhận xét: Mặc dù đã có nhiều nghiên cứu về phá mã DES hơn bất kỳ phương pháp
mã hóa khối nào khác nhưng phương pháp phá mã thực tế nhất hiện nay vẫn là tấn công Brute-force Nhiều đặc tính mật mã hóa của DES đã được xác định và từ đó ba phương pháp phá mã khác được xác định với mức độ phức tạp nhỏ hơn Tuy nhiên các phương pháp này đòi hỏi một số lượng bản rõ quá lớn nên hầu như không thể thực hiện được trong thực tế
P, và việc tính toán k1, k2,…, k16 tất cả được thực hiện trong thời gian ngắn bởi bảng tìm kiếm trong phần mềm hoặc cách nối dây cứng chúng vào một mạch Những thi