Tập bài giảng An toàn và bảo mật thông tin phần 2 gồm 3 chương: Chuẩn mã dữ liệu DES, Mật mã công khai, Các sơ đồ chữ kí số. Với nội dung 3 chương trên sẽ giúp nghiên cứu sâu hơn về lĩnh vực an toàn thông tin trên mạng cũng như cách thức thực hiện các thao tác giúp bảo mật thông tin.
Nội dung trích xuất từ tài liệu:
Tập bài giảng An toàn và bảo mật thông tin: Phần 2 - Nguyễn Văn Tảo Chương 3 Chuẩn mã dữ liệu DES (Data Encryption Standard) 3.1. Giới thiệu chung về DES Chuẩn mã hoá dữ liệu DES được Văn phòng tiêu chuẩn của Mỹ (U.S National Bureau for Standards) công bố năm 1971 để sử dụng trong các cơ quan chính phủ liên bang. Giải thuật được phát triển tại Công ty IBM dựa trên hệ mã hoá LUCIFER của Feistel. DES là thuật toán mã hoá khối (block algrithm), với cỡ của một khối là 64 bít. Một khối 64 bít bản rõ được đưa vào, sau khi mã hoá dữ liệu đưa ra là một khối bản mã 64 bít. Cả mã hoá và giải mã đều sử dụng cùng một thuật toán và khoá. Khoá mã có độ dài 64 bít, trong đó có 8 bít chẵn lẻ được sử dụng để kiểm soát lỗi. Các bít chẵn lẻ nằm ở các vị trí 8, 16, 24,..., 64. Tức là cứ 8 bít khoá thì trong đó có 1 bít kiểm soát lỗi, bít này qui định số bít có giá trị “1” của khối 8 bít đó theo tính bù chẵn. Nền tảng để xây dựng khối của DES là sự kết hợp đơn giản của các kỹ thuật thay thế và hoán vị bản rõ dựa trên khoá. DES sử dụng 16 vòng lặp, nó áp dụng cùng một kiểu kết hợp của các kỹ thuật trên khối bản rõ 16 lần (Như sơ đồ mã) Thuật toán chỉ sử dụng các phép toán số học và lôgíc trên các số 64 bít, vì vậy nó dễ dàng thực hiện vào những năm 1970 trong điều kiện về công nghệ phần cứng lúc bấy giờ. Ban đầu, sự thực hiện các phần mềm kiểu này rất thô sơ, nhưng hiện tại thì việc đó đã tốt hơn, và với đặc tính lặp 55 đi lặp lại của thuật toán đã tạo nên ý tưởng sử dụng chíp với mục đích đặc biệt này. DES có một số đặc điểm sau: ♦ Sử dụng khoá 56 bít. ♦ Xử lý khối vào 64 bít, biến đổi khối vào thành khối ra 64 bít. ♦ Mã hoá và giải mã được sử dụng cùng một khoá. ♦ DES được thiết kế để chạy trên phần cứng. DES thường được sử dụng để mã hoá các dòng dữ liệu mạng và mã hoá dữ liệu được lưu trữ trên đĩa. 56 3.2. Mô tả thuật toán 57 DES thực hiện trên từng khối 64 bít bản rõ. Sau khi thực hiện hoán vị khởi đầu, khối dữ liệu được chia làm hai nửa trái L 0 và phải R0, mỗi nửa 32 bít. Từ L0 và R0 sẽ lặp 16 vòng, tại mỗi vòng tính: Li=Ri-1 Ri=Li-1⊕f(Ri-1,Ki) với i= 1, 2,…,16 Tại vòng thứ 16, R16 đổi chỗ cho L16. Sau đó ghép 2 nửa R16, K16 cho đi qua hoàn vị nghịch đảo của hoàn vị IP sẽ tính được bản mã. Bản mã cũng có độ dài 64 bít. Trong đó hàm f được thực hiện như sau: Sơ đồ tính hàm f(Ri-1,Ki) 58 Ri-1 Ki E E(Ri-1) + B1B2B3B4B5B6B7B8 S1 S2 S3 S4 S5 S6 S7 S8 c1c2c3c4c5c6c7c8 f(Ri-1,Ki) Khối Ri-1 có độ dài 32 bít cho đi qua hoàn vị mở rộng E được một khối có độ dài 48 bít. Khối này XOR với khóa K i, kết quả được một khối có độ dài 48 bit. Khối này sẽ được chia làm 8 khối B 1, B2,…., B8. Mỗi khối này có độ dài là 6 bít. Từng khối B i cho đi qua hộp Si sẽ biến một khối có độ dài 6 bit thành một khối Ci có độ dài 4 bít. Các khối Ci ghép lại được một khối có độ dài 32 bit. Khối này cho đi qua hoàn vị P cho ra kết quả của hàm f(Ri-1, Ki). Mỗi hộp S là một bảng gồm 4 hàng và 16 cột được đánh số từ 0. Như vậy mỗi hộp S có hàng 0,1,2,3. Cột 0,1,2,…,15. Mỗi phần tử của hộp là 59 một số 4 bít. Sáu bít vào hộp S sẽ xác định số hàng và số cột để tìm kết quả ra. Mỗi khối Bi có 6 bít kí hiệu là b1, b2, b3, b4, b5 và b6. Bít b1 và b6 được kết hợp thành một số 2 bít, nhận giá trị từ 0 đến 3, tương ứng với một hàng trong bảng S. Bốn bít ở giữa, từ b2 tới b5, được kết hợp thành một số 4 bít, nhận giá trị từ 0 đến 15, tương ứng với một cột trong bảng S. Ví dụ, giả sử khối B6 là 110010 ta đưa qua hộp S 6. Bít đầu tiên và bít cuối cùng kết hợp thành 10, tương ứng với hàng thứ 2 của hộp S 6. Bốn bít giữa kết hợp thành 1001, tương ứng với cột thứ 9 của hộp S 6. Phần tử hàng 2 cột 9 của hộp S6 là 0. Giá trị 0000 được thay thế cho 110010. Sơ đồ tính khóa K1, K2, …, K16 K PC-1 C0 D0 D0 LS1 LS1 C1 D1 D1 PC-2 K1 . . LS16 LS16 C16 D16 D16 PC-2 K16 60 Từ khóa K bí mật có độ dài 64 bít đi qua hoán vị chọn PC1 cho một khối có độ dài 56 bit. Khối này chia làm 2 nửa C 0 và D0 mỗi nửa 28 bít. Từ khối này sẽ thực hiện qua 16 vòng lặp. C0 và D0 sẽ dịch vòng trái LS1 bít cho khối C1 và D1. Hai khối C1 và D1 sẽ ghép lại thành một khối 56 bít rồi cho qua hoán vị chọn PC2 được khóa K1 có độ dài 48 bít. Từ khối C1 và D1 dịch vòng trái LS2 bít được khối C2 và D2, ghép 2 khối C2 và D2 được một khối 56 bit. Cho khối này qua hoán vị chọn PC2 được khóa K2 cũng có độ dài 48 bít. Tương tự cho đến khóa K16. Trong đó bảng số bít dịch trái tại mỗi vòng là: Vòng i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Số bít dịch 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 3.3.Hoán vị khởi đầu Hoán vị khởi đầu đổi chỗ khối dữ liệu vào, thay đổi vị trí của các bít trong khối dữ liệu vào. Bảng hoán vị khởi đầu này, và tất cả các bảng khác sau này, được đọc từ trái qua phải, từ trên xuống dưới. Ví dụ, hoán vị khởi đầu chuyển bít 1 thành bít 58, bít 2 thành bít 50, bít 3 thành bít 42,... ...