Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
753,5 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT - - BÀI TẬP LỚN AN TOÀN VÀ BẢO MẬT THÔNG TIN ĐỀ TÀI: HỆ MÃ HÓA KHỐI DES GV hướng dẫn: SV thực hiện: Lớp: MSSV: Hà Nội, 4/2013 LỜI NÓI ĐẦU Từ trước công nguyên người phhải quan tâm tới việc làm để đảm bảo an toàn bí mật cho tài liệu, văn quan trọng, đặc biệt lĩnh vực quân sự, ngoại giao Ngày nay, với xuất máy tính, tài liệu văn giấy tờ thông tin quan trọng số hóa xử lý máy tính, truyền môi trường mà mặc định không an toàn Do yêu cầu việc có chế, giải pháp để bảo vệ an toàn bí mật thông tin nhạy cảm, quan trọng ngày trở nên cấp thiết Mật mã học ngành khoa học đảm bảo cho mục đích Nó dựa tảng thuật toán toán học, số học, xác suất môn khoa học khác để tạo hệ mã hóa Và đặc biệt phải kể đến hệ mã hóa khối mà điển hình hệ mã hóa khối DES (Data Encryption Standard), số hệ mã hóa khối sử dụng rộng rãi tảng cho nhiều hệ mã hóa khối khác I Tổng quan hệ mã hóa khối Trong mật mã học, mã hóa khối thuật toán mã hóa đối xứng hoạt động khối thông tin có độ dài xác định (block) với chuyển đổi xác định Chẳng hạn thuật toán mã hóa khối xử lý khối 128 bits đầu vào biến thành khối 128 bits đầu Quả trình chuyển đổi sử dụng thêm tham số nữa: khóa bí mật để cá biệt hóa trình Việc giải mã diễn tương tự: xử lý khổi mã hóa 128 bits với khóa để trả khối 128 bits rõ ban đầu Để mã hóa văn có độ dài vượt độ dài khối, người ta sử dụng thuật toán theo chế mã hóa khối Phân biệt với mã hóa khối mã hóa dòng Mã hóa dòng làm việc bits dòng liệu trình biến đổi thay đổi theo trình mã hóa Tuy nhiên, phân biệt hai phương pháp nhiều không rõ ràng mã hóa khối hoạt động theo chế có tác dụng phương pháp mã hóa dòng Quá trình mã hóa khối bao gồm thuật toán: mã hóa - ký hiệu E giải mã - ký hiệu E-1 Cả thuật toán tác động lên khối đầu vào n bít sử dụng khóa k bít khối đầu n bít Đối với khóa nào, giải mã hàm ngược mã hóa, nghĩa là: M khối thông tin K khóa Với khóa K, EK hoán vị (song ánh) khối đầu vào Mỗi khóa xác định hoán vị tổng số khả Độ dài khối thông tin, ký hiệu n, thông thường cố định 64 128 bít Một số thuật toán có độ dài khối thay đổi không phổ biến Tính đến trước năm thập kỷ 1990 độ dài 64 bít thường sử dụng Từ trở sau khối 128 bít sử dụng rộng rãi Trong chế độ mã hóa khối người ta thường phải bổ sung thêm số bít cho văn (tiếng Anh: padding) để văn chứa số nguyên lần khối Mỗi chế độ mã hóa có đặc tính khác lan truyền lỗi (lỗi mã hóa khối ảnh hưởng tới khối khác), khả truy xuất ngẫu nhiên khả chống lại kiểu công khác Độ dài thông thường khóa k 40, 56, 64, 80, 128, 192 256 bít Cho đến năm 2006 80 bít độ dài tối thiểu khóa để chống lại công kiểu duyệt toàn Hầu hết thuật toán mã hóa khối sử dụng lặp lặp lại hàm đơn giản Phương pháp gọi mã hóa khối lặp Mỗi chu kỳ lặp gọi vòng (round) thông thường thuật toán có từ tới 32 vòng Rất nhiều thuật toán mã hóa khối có tính chất mạng Feistel, hay tổng quát hệ thống hoán vị Các thành phần sử dụng thuật toán hàm toán học, hàm logic (đặc biệt hàm XOR), hộp (S-box) phương pháp hoán vị Điều kiện để mã hóa khối an toàn: • Kích thước khối phải đủ lớn để chống lại phương án công phương pháp thống kê Tuy nhiên điều dẫn đến thời gian mã hóa tăng lên • Không gian khóa, tức chiều dài khóa phải đủ lớn để chống lại phương án công vét cạn Tuy nhiên khóa phải đủ ngắn để việc tạo khóa, phân phối lưu trữ khóa dễ dàng Khi thiết kế hệ mã hóa khối, phải đảm bảo hai yêu cầu sau: • Sự hỗn loạn (confusion): Sự phụ thuộc rõ mã phải thực phức tạp để gây khó khăn với việc tìm quy luật thám mã Mối quan hệ tốt phi tuyến • Sự khuếch tán (diffusion): Mỗi bit rõ khóa pahri ảnh hưởng lên nhiều bit mã tốt II Chuẩn mã hóa liệu khối DES Mô tả sơ đồ mã hóa khối DES DES thuật toán mã hóa với input khối 64 bit, output khối 64 bit Khóa mã hóa có độ dài 56 bit, thực xác phải 64 bit với bit vị trí chia hết cho sử dụng cho bit kiểm tra tính chẵn lẻ Số khóa không gian khóa K 256 Hình 1: Chuẩn mã hóa liệu DES Thuật toán thực 16 vòng Từ khóa input K, 16 khóa 48 bit K i sinh ra, khóa thay bit thành bit S i (còn gọi hộp Si) chọn lựa kỹ cố định, ký hiệu chung S sử dụng Bản rõ 64 bit sử dụng chia thành hai nửa L R0 Các vòng có chức giống nhau, nhận input Li-1 Ri-1 từ vòng trước sinh output xâu 32 bit Li Ri sau: Li = Ri-1; (1) Ri = Li-1 f(Ri-1, Ki) f(Ri-1, Ki) = P(S(E(Ri-1) Ki)); (2) Trong đó: ký hiệu phép tuyển loại trừ (XOR) hai xâu bit theo modulo - Hàm f hàm phi tuyến - E hoán vị mở rộng ánh xạ R i-1 từ 32 bit thành 48 bit (đôi tất bit sử dụng bit sử dụng lần) - P hoán vị cố định khác 32 bit Một hoán vị bit khởi đầu (IP) sử dụng cho vòng đầu tiên; sau vòng cuối nửa trái phải đổi ngược cho cuối xâu kết hoán vị bit lần cuối hoán vị ngược IP (IP-1) Quá trình giải mã diễn tương tự với khóa ứng dụng vào vòng theo thứ tự ngược lại Có thể hình dung đơn giản phần bên phải vòng (sau mở rộng input 32 bit thành ký tự bit – xâu 48 bit) thực tính toán thay phụ thuộc khóa ký tự xâu 48 bit, sau sử dụng phép chuyển bit cố định để phân bố lại bit ký tự kết hình thành nên output 32 bit Các khóa Ki ( chứa 48 bit K) tính cách sử dụng bảng PC1 PC2 (Permutation Choice 2) Trước tiên bit (k 8, k16,…, k64) K bị bỏ (áp dụng PC1) 56 bit lại hoán vị gán cho hai biến 28 bit C D, sau 16 vòng lặp C D quay bit, khóa 48 bit Ki chọn từ kết việc ghép hai xâu với Như ta mô tả toàn thuật toán sinh mã DES dạng công thức sau: Trong đó: - T mô tả phép hoán vị khối LiRi (1 ≤ i ≤ 15) - fi mô tả việc dùng hàm f với khóa Ki (1 ≤ i ≤ 16) Thuật toán chi tiết: Input: Bản rõ M = m1m2…m64, khóa 64 bit K = k 1k2…k64 (bao gồm bit chẵn lẽ, việc thêm bit chẵn lẻ cho đoạn khóa bit có số bit lẻ) Output: mã 64 bit C = c1c2…c64 i Sinh khóa Tính khóa theo thuật toán sinh khóa bên ii (L0,R0) ←IP(m1m2…m64) (Sử dụng bảng hoán vị IP để hoán vị bit, kết nhận chia thành hai nửa L0 = m58m50…m8, R0 = m57m49…m7.) iii (16 vòng) for i = to 16 Tính Li Ri theo công thức (1) (2), việc tính f(Ri-1,Ki) = P(S(E(Ri-1) Ki)) thực sau: a) Mở rộng Ri-1 = r1r2…r32 từ 32 bit thành 48 bit cách sử dụng hoán vị mở rộng E T←E(Ri-1) (Vì T = r32r1r2…r32r1) b) T’←T Ki Biểu diễn T’ xâu gồm ký tự bit T’ = (B1,…,B8) c) T’’←(S1(B1), S2(B2),…, S8(B8)) Trong Si(Bi) ánh xạ b1b2…b8 thành xâu bit phần tử thuộc hàng r cột bảng Si(Sbox) r=2*b1 + b6 c = b2b3b4b5 số nhị phân từ tới 15 Chẳng hạn S1(011011) cho r = c = 13 kết biểu diễn dạng nhị phân 0101 d) T’’’←P(T’’) P hoán vị cố định để hoán vị 32 bit T’’ = t1t2…t32 sinh t16t7…t25 iv b1b2…b64←(R16,L16) (đổi vị trí khối cuối L16, R16 v C←IP-1(b1b2…b64) (biến đổi sử dụng IP-1, C = b40b8…b25) Sơ đồ 16 vòng lặp DES: Hình 2: Sơ đồ mã hóa DES Hóa vị IP hoán vị ngược IP-1 Bảng hoán vị IP đưa bảng đây: 50 42 34 26 18 10 60 52 44 36 62 54 46 38 30 22 14 64 56 48 40 57 49 41 33 25 17 59 51 43 35 61 53 45 37 29 21 13 63 55 47 39 Bảng 1: Bảng hoán vị IP 48 16 56 24 64 32 39 47 15 46 14 54 22 62 37 45 13 36 44 12 52 20 60 35 43 11 34 42 10 50 18 58 26 33 41 Bảng 2: Bảng hoán vị ngược IP-1 Hai hoán vị IP IP -1 ý nghĩa mặt mật nhằm tạo điều kiện cho việc “chip hóa” thuật toán DES Sơ đồ cấu trúc vòng DES: Hình 3: Sơ đồ vòng DES 28 20 12 32 24 16 27 19 11 31 23 15 55 23 63 31 53 21 61 29 51 19 59 27 49 17 57 25 mã mà hoàn toàn Thuật toán sinh khóa Mười sáu vòng lặp DES chạy thuật toán với 16 khóa khác Các khóa sinh từ khóa DES thuật toán sinh khóa Khóa K (64bit) qua 16 bước biến đổi, bước biến đổi khóa sinh với độ dài 48 bit Có thể mô tả thuật toán sinh khóa chi tiết sau: Input: khóa 64 bit K = k1k2…k64 (bao gồm bit kiểm tra tính chẵn lẻ) Output: 16 khóa 48 bit Ki, ≤ i ≤ 16 i Định nghĩa vi, ≤ i ≤ 16 sau: v i = i ϵ { 1, 2, 9, 16}; v i = cho trường hợp khác (Đây giá trị dịch trái cho vòng 28 bit bên dưới) ii T ← PC1(K); biểu diễn T thành nửa 28 bit (C 0, D0) (Sử dụng bảng PC1 để chọn bit từ K: C0 = k57k49…k36, D0 = k63k55…k4.) iii For i from to 16, tính K i sau: Ci ← (Ci-1 ← vi), Di ← (Di-1 ← vi), Ki ← PC2(Ci, Di) (Sử dụng PC2 để chọn 48 bit từ xâu ghép b 1b2… b56 Ci Di Ki = b14b17…b32 ‘←’ ký hiệu dịch vòng trái) Sơ đồ sinh khóa DES: Hình 4: Sơ đồ tạo khóa DES 64 bit đầu vào giảm xuống 56 bit cách bỏ bit (ở vị trí chia hết cho 8), bit dùng để kiểm tra bit chẵn lẻ Sau 56 bit lại trích lấy 48 bit để sinh cho 16 vòng khóa DES Bảng trật tự khóa (PC-1): 57 49 41 33 25 17 58 50 42 34 26 18 10 59 51 43 35 27 19 11 60 52 44 36 63 55 47 39 31 23 15 62 54 46 38 30 22 14 61 53 45 37 29 21 13 28 20 12 Bảng 4: Bảng PC-1 Đầu tiên 56 bit khóa chia thành hai nửa 28 bit Sau đó, hai nửa 28 bit dịch vòng trái hoặc bit phụ thuộc vào số bit dịch tương ứng với vòng Số bit dịch vòng (LS): Vòng lặp 10 11 12 13 14 15 16 Số bit dịch 1 2 2 2 2 2 Bảng 5: Bảng dịch bit vòng lặp DES Sau dịch vòng, bảng chọn 48 bit sử dụng Vì cách hoán vị bit chọn tổ hợp bit nên gọi “hoán vị nén” hay “trật tự nén” Bảng trật tự nén (PC-2): 14 17 11 24 28 15 21 10 23 19 12 26 16 27 20 13 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Bảng 6: Bảng PC-2 Ví dụ nhận thấy bit vị trí 33 khóa dịch sang vị trí 35 ngoài, bit vị trí 18 khóa bị bỏ qua Chính việc dịch vòng tạo nên tập hợp khóa sử dụng tổ hợp khóa, dù tất bit sử dụng cách xác lúc lần sử dụng Mô tả hàm f Hàm f(Ri-1, Ki) hàm có hai biến vào: biến thứ Ri-1 xâu bit có độ dài 32 bit Hàm f hàm nhiên nguồn gốc “sức mạnh” DES nằm hàm f nên việc chọn hàm f phải cẩn thận để tránh bị phá mã cách dễ dàng Thông thường hàm f chọn thường hàm có tính chất f = f-1, tức f(f(x)) = x Trong sơ đồ mô tả mã hóa DES công bố Ủy ban Tiêu chuẩn Quốc gia Hoa Kỳ (The Untied Nation Bureau of Standard), hàm f thực việc sau: • Biến thứ Ri-1 mở rộng thành xâu bit có độ dài 48 bit theo hàm mở rộng cố định E Thực chất hàm mở rộng E(R i-1) hoán vị có lặp lặp lại 16 bit Ri-1 • Đưa khối Bi vào bảng S1, S2, …, S8 (được gọi hộp SBox) Mỗi hộp S-Box bảng 4*16 cố định có cột từ đến 15 hàng từ đến Với xâu bit B i = b1b2b3b4b5b6, ta tính Si(Bi) sau: hai bit b1b6 xác định hàng r hộp S i, bốn bit b2b3b4b5 xác định cột c hộp Si Khi đó, Si(Bi) xác định phần tử Ci = Si(r,c), phần tử viết dạng nhị phân bit Như vậy, khối bit Bi (1 ≤ i ≤ 8) cho khối bit Ci với (1 ≤ i ≤ 8) • Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit hoán vị theo phép hoán vị P (hộp P-Box) Kết P(C) kết hàm f(Ri-1, Ki), Ri cho vòng sau Hàm f mô tả hình vẽ sau: Hình 5: Sơ đồ hàm f Hàm (ánh xạ) mở rộng (E) Hàm mở rộng € tăng độ dài Ri từ 32 bit lên 48 bit cách thay đổi thứ tự bit lặp lại bit Việc thực nhằm hai mục đích: • Làm độ dài Ri cỡ với khóa K để thực việc cộng modulo XOR • Cho kết dài để nén suốt trình thay Tuy nhiên, hai mục đích nhằm mục tiêu bảo mật liệu Bằng cách cho phép bit chèn vào hai vị trí thay thế, phụ thuộc bit đầu với bit đầu vào trải rộng DES thiết kế với điều kiện bit mã phụ thuộc vào bit cảu rõ khóa Sơ đồ hàm mở rộng: Hình 6: Sơ đồ hàm mở rộng (E) Đôi gọi hàm E-Box, bit khối vào, bit thứ bit thứ tư tương ứng với bit đầu ra, bit thứ bit thứ tương ứng với bit đầu Bảng sau miêu tả vị trí bit so với bit vào Bảng mô tả hàm mở rộng (E): 32 5 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 Bảng 7: Bảng mô tả hàm mở rộng E Ví dụ bit vị trí số khối vào di chuyển đến vị trí số khối bit vị trí 21 đầu vào di chuyển đến vị trí 30 32 đầu Mô tả hộp S-box Hộp P-box III Ví dụ mã hóa khối DES IV Hạn chế mã hóa khối DES Tính bù Khóa yếu DES có cấu trúc đại số Không gian khóa k [...]... Bảng 7: Bảng mô tả hàm mở rộng E Ví dụ như bit ở vị trí số 3 của khối vào sẽ di chuyển đến vị trí số 4 của khối ra và bit ở vị trí 21 ở đầu vào sẽ di chuyển đến vị trí 30 và 32 ở đầu ra 6 Mô tả hộp S-box 7 Hộp P-box III Ví dụ về mã hóa khối DES IV Hạn chế của mã hóa khối DES 1 2 3 4 Tính bù Khóa yếu DES có cấu trúc đại số Không gian khóa k ... cùng cỡ với khóa K để thực hiện việc cộng modulo XOR • Cho kết quả dài hơn để có thể được nén trong suốt quá trình thay thế Tuy nhiên, cả hai mục đích này đều nhằm một mục tiêu chính là bảo mật dữ liệu Bằng cách cho phép 1 bit có thể chèn vào hai vị trí thay thế, sự phụ thuộc của các bit đầu ra với các bit đầu vào sẽ trải rộng ra DES được thiết kế với điều kiện là mỗi bit của bản mã phụ thuộc vào mỗi bit... kiện là mỗi bit của bản mã phụ thuộc vào mỗi bit cảu bản rõ và khóa Sơ đồ hàm mở rộng: Hình 6: Sơ đồ hàm mở rộng (E) Đôi khi nó được gọi là hàm E-Box, mỗi 4 bit của khối vào, bit thứ nhất và bit thứ tư tương ứng với 2 bit của đầu ra, trong khi bit thứ 2 và bit thứ 3 tương ứng với 1 bit ở đầu ra Bảng sau đây miêu tả vị trí của bit ra so với bit vào Bảng mô tả hàm mở rộng (E): 32 1 2 3 4 5 4 5 6 7 8 9 8