Bài giảng Bài 2: Mã đối xứng trang bị cho người học kiến thức về các thành phần mã đối xứng; các nguyên lý mã đối xứng; thuật toán mã đối xứng DES, AES, RC4; chế độ thao tác mã khối ECB, CBC, CFB.
Bài 2: Mã đối xứng BÀI 2: MÃ ĐỐI XỨNG Nội dung Mục tiêu Hiểu yếu tố ảnh hưởng đến an toàn dùng mã đối xứng Biết cách sử dụng DES chế độ thao tác khối Dùng mã nâng cao 3DES, AES mã dòng RC4 Biết hai kiểu mã đối xứng: mã khối mã dòng ứng dụng mạng Dùng mã đối xứng bảo mật thông điệp IT201_Bai 2_v1.0011103219 Các thành phần mã đối xứng Các nguyên lý mã đối xứng Các thuật toán mã đối xứng: DES, AES, RC4 Các chế độ thao tác mã khối: ECB, CBC, CFB Vị trí đặt thiết bị mã: mã kết nối, mã đầu cuối Thời lượng học tiết 15 Bài 2: Mã đối xứng TÌNH HUỐNG DẪN NHẬP Tình Làm để che giấu nội dung thông điệp người gửi, không cho người khác đọc nội dung, ngoại trừ người nhận có thẩm quyền Phát triển kỹ thuật mã hóa thao tác khối liệu dòng bit, tạo thuật tốn mã hóa hiệu dễ dàng sử dụng Câu hỏi Có thể đưa số yêu cầu, nguyên lý thống để thiết kế mã khối mã dịng cách hiệu khơng? Làm để có số mã chuẩn nghiên cứu kỹ càng, có khả chống thám mã, tốc độ xử lý nhanh để đưa sử dụng rộng rãi giao thức mạng? Mô tả số mã đại sử dụng rộng rãi Trên mơ hình mạng, mã thường đặt đâu đem lại lợi ích gì? 16 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng 2.1 Các khái niệm mã đối xứng 2.1.1 Mật mã đối xứng Mật mã đối xứng sử dụng khóa cho việc mã hóa giải mã Có thể nói mã đối xứng mã khóa hay mã khóa chia sẻ Ở người gửi người nhận chia sẻ khóa chung K, mà họ trao đổi bí mật với Ta xét hai hàm ngược nhau: E hàm mã hóa biến đổi rõ thành mã D hàm giải mã biến đổi mã trở rõ Giả sử X văn cần mã hóa gọi rõ Y dạng văn thay đổi qua việc mã hóa gọi mã Khi ta ký hiệu: Y = EK(X) X = DK(Y) Mọi thuật toán mã cổ điển mã khóa đối xứng, thơng tin khóa chia sẻ người gửi người nhận Mã đối xứng kiểu trước phát minh khóa mã cơng khai vào năm 1970, mã cơng khai cịn gọi mã không đối xứng Hiện mã đối xứng cơng khai tiếp tục phát triển hồn thiện Mã công khai đời hỗ trợ mã đối xứng khơng thay nó, mã đối xứng đến sử dụng rộng rãi Sau ta đưa định nghĩa số khái niệm mã hóa Bản rõ X tin gốc Bản rõ chia nhỏ để có kích thước phù hợp Bản mã Y tin gốc mã hố Nói chung kích thước mã khơng nhỏ kích thước rõ Nhưng ta thường xét phương pháp mã hóa mà khơng làm thay đổi kích thước rõ, tức chúng có độ dài Mã thuật tốn E chuyển rõ thành mã Thông thường cần thuật tốn mã hóa mạnh, cho dù kẻ thù biết thuật tốn, khơng biết thơng tin khóa, khơng tìm rõ Khóa K thơng tin tham số dùng để mã hố, có người gửi nguời nhận biết Khóa độc lập với rõ có độ dài phù hợp với yêu cầu bảo mật Mã hoá trình chuyển rõ thành mã, thơng thường bao gồm việc áp dụng thuật tốn mã hóa số q trình xử lý thơng tin kèm theo Giải mã chuyển mã thành rõ, trình ngược lại mã hóa Mật mã chun ngành khoa học Khoa học máy tính nghiên cứu nguyên lý phương pháp mã hoá Hiện người ta đưa nhiều chuẩn an ninh cho lĩnh vực khác công nghệ thông tin Thám mã nghiên cứu nguyên lý phương pháp giải mã mà khơng biết khóa Thơng thường đưa mã mạnh làm chuẩn dùng chung người sử dụng, mã kẻ thám mã người phát triển mã tìm hiểu nghiên cứu kỹ phương pháp giải phần mã với thông tin không đầy đủ Lý thuyết mã bao gồm mật mã thám mã Nó thể thống nhất, để đánh giá mã mạnh hay không, phải xét từ hai khía cạnh Các nhà khoa học mong muốn tìm mơ hình mã hóa khái qt cao đáp ứng nhiều sách an ninh khác IT201_Bai 2_v1.0011103219 17 Bài 2: Mã đối xứng Mơ hình mã đối xứng Khóa mật chia sẻ người gửi người nhận Khóa mật chia sẻ người gửi người nhận Bản mã truyền Bản rõ vào 2.1.2 Thuật tốn mã hóa (như des) Thuật tốn mã hóa (ngược thuật toán mã) Bản rõ Các yêu cầu Một mã đối xứng có đặc trưng cách xử lý thơng tin thuật tốn mã, giải mã, tác động khóa vào mã, độ dài khóa Mối liên hệ rõ, khóa mã phức tạp tốt, tốc độ tính toán chấp nhận Cụ thể hai yêu cầu để sử dụng an tồn mã khóa đối xứng là: Thuật tốn mã hố mạnh; có sở tốn học vững đảm bảo công khai thuật toán, người biết, việc thám mã khó khăn phức tạp, khơng biết khóa Khóa mật có người gửi người nhận biết; có kênh an tồn để phân phối khóa người sử dụng chia sẻ khóa Mối liên hệ khóa mã khơng thể nhận biết 2.1.3 Hệ mật mã Hệ mật mã đặc trưng yếu tố sau : Kiểu thao tác mã hoá sử dụng rõ: o Phép – thay ký tự rõ ký tự khác mã o Hốn vị – thay đổi vị trí ký tự rõ, tức thực hoán vị ký tự rõ o Tích chúng, tức kết hợp hai kiểu thay hoán vị ký tự rõ Số khóa sử dụng mã hóa giải mã: khóa – khóa đối xứng hai khóa – khóa khơng đối xứng Ngồi cịn xem xét số khóa dùng có nhiều khơng Khóa nhiều, việc mị tìm khóa lâu Một đặc trưng mã cách mà rõ xử lý, theo: o Khối – liệu chia thành khối có kích thước xác định áp dụng thuật tốn mã hóa với tham số khóa cho khối o Dịng – đơn vị thông tin đầu vào thường bit byte xử lý liên tục tạo phần tử đầu tương ứng 2.1.4 Tìm duyệt tổng thể (Brute-Force) Về mặt lý thuyết phương pháp duyệt tổng thể thực được, tiến hành thử khóa, mà số khóa hữu hạn Phần lớn cơng sức công tỷ lệ thuận với kích thước khóa Khóa dài thời gian tìm kiếm lâu thường 18 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng tăng theo hàm mũ Ta giả thiết kẻ thám mã dựa vào bối cảnh để biết nhận biết rõ Sau số thống kê mối liên hệ độ dài khóa, kích thước khơng gian khóa, tốc độ xử lý thời gian tìm duyệt tổng thể Chúng ta nhận thấy với độ dài khóa từ 128 bit trở lên, thời gian yêu cầu lớn, lên đến hàng tỷ năm, coi phương pháp duyệt tổng thể khơng thực Kích thước khóa 32 56 2.1.5 Số khóa 232 = 4,3 × 109 56 38 128 = 7,2 × 10 Thời gian địi hỏi cho mã Thời gian đòi hỏi cho 106 mã/s 231s = 35,8 phút 2,15 mili giây 55 10,01 s = 1142 năm năm 5,4 × 1018 năm 2168 = 3,7 × 1050 2167s = 5,9 × 1036 năm 5,9 × 1030 năm 26! = × 1026 2×1026s = 6,4 × 1012 năm 6,4 × 106 năm 128 168 26 characters (permulation) = 3,4 × 10 117 24 s = 5,4 × 10 Độ an tồn Có thể phân loại an toàn thành hai kiểu sau: An tồn khơng điều kiện: Ở cho dù máy tính thực phép tốn giây, mã hố khơng thể bị bẻ, mã không cung cấp đủ thông tin để xác định rõ Việc dùng đệm ngẫu nhiên lần làm khóa để mã dịng cho liệu mà ta xét cuối coi an tồn khơng điều kiện Ngồi chưa có thuật tốn mã hóa coi an tồn khơng điều kiện An tồn tính tốn: Với nguồn lực máy tính có giới hạn thời gian có hạn (chẳng hạn thời gian tính tốn khơng q tuổi vũ trụ) mã hố coi khơng thể bị bẻ Trong trường hợp khơng quan trọng máy tính mạnh nào, coi mã hóa an tồn mặt tính tốn Nói chung từ sau, thuật tốn mã hóa mà an tồn tính tốn, coi an toàn 2.2 Mã cổ điển Mã hoá cổ điển phương pháp mã hoá đơn giản xuất lịch sử mã hoá Thuật toán đơn giản dễ hiểu Những phương pháp mã hoá sở cho việc nghiên cứu phát triển thuật toán mã hoá đối xứng sử dụng ngày Mọi mã cổ điển mã đối xứng có hai loại mã cổ điển mã thay mã hoán vị (hay gọi dịch chuyển): Mã thay phương pháp mà kí tự (nhóm kí tự) rõ thay kí tự (một nhóm kí tự) khác để tạo mã Bên nhận cần thay ngược lại mã để có rõ ban đầu Mã hốn vị phương pháp mà kí tự rõ giữ nguyên, chúng xếp lại vị trí để tạo mã, tức kí tự rõ hồn tồn khơng bị thay đổi kí tự khác mà đảo chỗ chúng để tạo thành mã Trước hết ta xét mã cổ điển sử dụng phép thay chữ rõ chữ khác bảng chữ để tạo thành mã Ở chữ rõ thay chữ số ký tự khác IT201_Bai 2_v1.0011103219 19 Bài 2: Mã đối xứng Hoặc xem rõ mơt dãy bit, phép thay mẫu bit rõ mẫu bit mã 2.2.1 Mã Caesar Đây mã biết sớm nhất, nghĩ Julius Caesar Lần sử dụng quân Việc mã hoá thực đơn giản thay chữ rõ chữ thứ ba bảng chữ Ví dụ Mã rõ: “Meet me after the toga party” mã: “PHHW PH DIWHU WKH WRJD SDUWB” Ở thay chữ m chữ đứng thứ sau m p (vì thứ tự từ điển từ m là: m, n, o, p); thay chữ e chữ đứng thứ sau e h (vì thứ tự từ điển từ e e, f, g, h) Ta viết chữ mã chữ in hoa cho dễ phân biệt rõ với mã Có thể định nghĩa việc mã hố qua ánh xạ bảng chữ sau: chữ dòng mã chữ tương ứng dòng trên: a b c d e f g h i j k l m n o p q r s t u v w x y z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Về toán học, ta gán số thứ tự cho chữ bảng chữ cái, thứ tự 0, chữ dịng có số thứ tự tương ứng số dòng dưới: a b c d e f g h i j k l m 10 11 12 n o p q r s t u v w x y z 13 14 15 16 17 18 19 20 21 22 23 24 25 Khi mã Caesar định nghĩa qua phép tịnh tiến chữ sau: c = E(p) = (p + k) mod (26) p = D(c) = (c – k) mod (26) Ở đây, p số thứ tự chữ rõ c số thứ tự chữ tương ứng mã; k khóa mã Caesar Khóa k số bước tịnh tiến chữ bảng chữ Do có 26 khóa khác Độ dài khóa biểu diễn qua bit 5, số bit cần thiết để biểu diễn 26 giá trị khác Thám mã Caesar việc làm đơn giản, số khóa có Chỉ có 26 khóa có thể, a ánh xạ vào số 26 chữ bảng chữ tiếng Anh: A, B, C,… Các chữ khác xác định số bước tịnh tiến tương ứng a Kẻ thám mã thử khóa một, tức sử dụng phương pháp tìm duyệt tổng thể Vì số khóa nên việc tìm duyệt khả thi Cho trước mã, thử 26 cách dịch chuyển khác nhau, ta đốn nhận thơng qua nội dung rõ nhận Ví dụ Bẻ mã: "GCUA VQ DTGCM" cách thử phép tịnh tiến khác bảng chữ, ta chọn bước tịnh tiến thích hợp 24 cho rõ "easy to break" 2.2.2 Các mã hoán vị cổ điển Trong mục trước xét số mã thay thế, chữ rõ thay chữ khác mã Bây xét đến loại mã khác, 20 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng mã hốn vị, chữ rõ khơng thay chữ khác mà thay đổi vị trí, tức việc mã hố dịch chuyển vị trí tương đối chữ rõ Như vậy, giấu rõ cách thay đổi thứ tự chữ, khơng thay đổi chữ thực tế dùng Do mã có phân bố tần suất xuất chữ gốc Tính chất tạo điều kiện để thám mã phát Mã dịch chuyển dịng Giả sử lấy số cột xác định chọn hốn vị số cột làm khóa Viết chữ rõ theo dịng với số cột xác định Sau đọc lại chúng theo cột với thứ tự số dịng khóa để nhận mã Q trình giải mã thực ngược lại Ví dụ: Khóa: 431 25 Bản rõ: a t t a c k p o s t po n e d u n t i l t wo amxy z Ta đọc theo thứ tự cột từ đến để nhận mã: Bản mã: TTNAAPTMTSUOAODWCOIXKNLYPETZ Rõ ràng mã khóa hốn vị 7, nên số khóa khác có 7! =4032 Chúng ta cần 12 bit để biểu diễn không gian khóa (vì 11< log2 4032 ≤ 12) Người ta cịn nói độ dài khóa biểu diễn dạng bit 12 2.2.3 Bộ đệm lần Nếu khóa thực ngẫu nhiên dùng có độ dài rõ ta nói đệm lần Việc mã hóa (giải mã) thực phép tốn XOR bit bit có vị trí tương ứng rõ (bản mã) khóa Vì khóa dùng lần ngẫu nhiên, nên mã hố an tồn Mã khơng bẻ được, mã khơng có liên quan thống kê với rõ, đệm sinh ngẫu nhiên Có thể nói mã đệm lần an tồn tuyệt đối, với rõ mã bất kỳ, ln tồn khóa để ánh xạ rõ sang mã cho Về mặt lý thuyết, xác suất để mẩu tin (có độ dài với rõ) bảng chữ mã mã rõ cho trước Khóa sử dụng lần, nên lần mã độc lập với Vấn đề khó khăn mã đệm lần việc sinh ngẫu nhiên khóa phân phối khóa an tồn Do đệm lần sử dụng dùng trường hợp đòi hỏi bảo mật cao 2.2.4 Mã tích Mã dùng hốn vị dịch chuyển khơng an tồn đặc trưng tần suất ngôn ngữ không thay đổi Mã cổ điển sử dụng hai phương pháp thay hốn vị Có thể sử dụng số mã liên tiếp làm cho mã khó Do người ta nghĩ đến việc kết hợp hai phương pháp mã sử dụng đan xen lặp nhiều vịng Đơi ta tưởng lặp nhiều lần loại mã tạo nên mã phức tạp hơn, thực tế số trường hợp IT201_Bai 2_v1.0011103219 21 Bài 2: Mã đối xứng chất chúng tương đương với lần mã loại như: tích hai phép phép thế; tích hai phép hoán vị phép hoán vị Nhưng hai loại mã khác tạo nên mã phức tạp hơn, phép nối tiếp phép dịch chuyển tạo nên mã khó nhiều Đây cầu nối từ mã cổ điển sang mã đại Điểm yếu mã cổ điển Phương pháp mã hố cổ điển nói riêng mã đối xứng nói chung dễ dàng bị giải mã cách đoán chữ dựa phương pháp thống kê tần xuất xuất chữ mã so sánh với bảng thống kê quan sát rõ Để dùng mã hoá cổ điển bên mã hố bên giải mã phải thống với chế mã hoá giải mã Nếu khơng hai bên khơng thể làm việc với 2.3 Chuẩn mã liệu DES Bây xét mã khối đại Đây kiểu mã sử dụng rộng rãi thuật tốn mã hố Đồng thời sử dụng kết hợp với thủ tục khác nhằm cung cấp dịch vụ an toàn xác thực Trước hết tập trung vào chuẩn mã liệu DES (Data Encryption Standards) để minh họa cho nguyên lý mã khối 2.3.1 Cấu trúc mã khối Fiestel Các nguyên lý mã khối o Hầu hết mã khối đối xứng dựa cấu trúc mã Fiestel, nhà bác học Fiestel đề xuất năm 1973 Đây điều cần thiết, cần phải có khả giải mã mã cách có hiệu 64 o Mã khối coi giống phép cực lớn Cần bảng có đầu vào cho mã khối 64 bit, bảng lớn Do thay cách tạo khối nhỏ o Sử dụng ý tưởng dùng mã tích Ở kết hợp mã thay mã hoán vị, đồng thời sử dụng nhiều vòng lặp Rối loạn khuếch tán o Một tính chất quan trọng mã tốt mã cần phải che giấu hồn tồn tính chất thống kê tin gốc Như ta thấy mã đệm lần làm điều đó, tính ngẫu nhiên khóa đệm độ dài tin o Shannon nghiên cứu đề xuất phương pháp thực tế kết hợp thành phần khác rõ để xử lý qua nhiều lần nhận mã o Khuếch tán làm tan biến cấu trúc thống kê rõ mã Điều đạt bit rõ tác động đến giá trị nhiều bit mã hay bit mã chịu tác động nhiều bit rõ o Rối loạn làm cho quan hệ mã khóa phức tạp tốt Bản mã có tính rối loạn cao làm cho việc tìm mị khóa trở nên khó khăn, kẻ cơng có đặc trưng thống kê mã biết cách khóa tác động đến mã (nếu mã an tồn vơ điều kiện thỏa mãn tính chất này) Cấu trúc mã Fiestel o Horst Fiestel sáng tạo nên mã Fiestel dựa mã tích nghịch đảo được, tức kết hợp mã với mã hoán vị qui trình giải mã giống với mã hố, cần 22 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng Rn Rn+1 Ln Ln+1 Kn Ri Bản mã (2w bits) F F Vòng n Li » » Vòng i Vòng L1 L0 » w bits F Bản rõ (2w bits) w bits R0 R1 Ki K1 thay đổi vai trò khối mã với khối rõ thứ tự khóa dùng Từ khóa sinh cho vịng lặp khóa o Chia khối đầu vào thành hai nửa nhau: Thực phép nửa trái Sử dụng hàm vòng nửa phải khóa con, tác động đến nửa trái Sau hốn vị nửa, nửa phải chưa xử lý Xử lý vòng Đây thể mã kết hợp với hoán vị Shannon Ta xem xét cụ thể cấu trúc mã Fiestel gồm n vòng: Nguyên tắc thiết kế mã khối Fiestel: o Tăng kích thước khối làm tăng độ an toàn làm giảm tốc độ mã o Tăng kích thước khóa làm tăng độ an tồn – tìm khóa khó hơn, làm chậm mã o Tăng số vịng làm tăng độ an tồn làm chậm mã o Phát sinh khóa phức tạp làm cho việc thám mã khó làm chậm mã o Hàm vòng phức tạp làm cho việc thám mã khó làm chậm mã o Phần mềm mã hố/giải mã nhanh khó thám mã tiêu chí hay đề cập đến ứng dụng kiểm nghiệm thực tế 2.3.2 Chuẩn mã liệu (DES) DES (Data Encryption Standards) mã khối sử dụng rộng rãi giới thời gian vừa qua Nó đưa năm 1977 NBS – văn phòng chuẩn Quốc gia Hoa Kỳ (bây NIST – Viện chuẩn công nghệ Quốc gia) DES mã khối với khối liệu 64 bit dùng khóa dài 56 bit Nó sử dụng rộng rãi tranh luận kỹ mặt an toàn Lịch sử DES Cuối năm 1960, IBM phát triển mã Lucifer, lãnh đạo Fiestel Ban đầu Lucifer sử dụng khối liệu 64 bit khóa 128 bit Sau tiếp tục phát triển mã thương mại Năm 1973, NBS yêu cầu đề xuất chuẩn mã Quốc gia IBM đề nghị sửa đổi Lucifer, sau gọi DES Đã có tranh luận thiết kế DES Vì chuẩn DES cơng khai, người đóng góp ý kiến tốc độ, độ dài khóa IT201_Bai 2_v1.0011103219 23 Bài 2: Mã đối xứng mức độ an toàn, khả thám mã Người ta đề xuất chọn khóa 56 bit thay 128 để tăng tốc độ xử lý đưa tiêu chuẩn thiết kế chuẩn mã liệu Các suy luận phân tích chứng tỏ thiết kế phù hợp Do DES sử dụng rộng rãi, đặc biệt lĩnh vực tài 2.3.3 Sơ đồ mã DES Sinh khóa DES o Tạo 16 khóa sử dụng cho 16 vịng DES 56 bit khóa đầu vào sử dụng bảng x 8, cột thứ khơng sử dụng o Hốn vị ban đầu khóa PC1 tách 56 bit thành hai nửa 28 bit o 16 giai đoạn bao gồm Ở vòng nửa trái nửa phải dịch trái vòng quanh tương ứng bit Hai nửa dùng tiếp cho vòng sau Đồng thời hai nửa cho qua hoán vị PC2 chọn nửa 24 bit gộp lại thành 48 bit để sinh khóa o Ứng dụng thực tế phần cứng phần mềm hiệu Hoán vị ban đầu IP: bước tính tốn liệu, hốn vị IP đảo thứ tự bit đầu vào: bit chẵn sang nửa trái bit lẻ sang nửa phải Hoán vị dễ dàng thực phần cứng Mỗi số hệ 16 biểu diễn bit, 16 số thể 64 bit Mỗi bit có vị trí xác định qua hốn vị ban đầu Thực 16 vịng: vịng sử dụng khóa riêng Cấu tạo vòng DES Sử dụng hai nửa 32 bit trái 32 bit phải Như mã Fiestel, nửa phải vòng trước chuyển qua nửa trái bước sau lấy đầu hàm vòng 24 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng nửa phải khóa cộng số với nửa trái Có thể biểu diễn cơng thức sau: Li = Ri–1 Ri = Li–1 xor F(Ri–1, Ki) Ở F lấy 32 bit nửa phải R, mở rộng thành 48 bit nhờ hoán vị E, cộng vào với khóa 48 bit Sau chia thành cụm bit cho qua S-box để nhận kết 32 bit Đảo lần cuối sử dụng hoán vị 32 bit nhận 32 bit đầu ra, cộng với nửa trái để chuyển thành nửa phải bước sau 2.4 Chuẩn mã nâng cao AES Rõ ràng cần phải thay DES, có cơng mặt lý thuyết bẻ Một số cơng nghiên cứu thấu đáo khóa trình diễn Người ta thấy rằng, cần sử dụng Triple DES (sử dụng DES ba lần liên tiếp) cho ứng dụng đòi hỏi tăng cường bảo mật 2.4.1 Triple DES Mã DES nhiều lần giải pháp để tăng cường độ mật mã Rõ ràng DES cần thay thế, Các cơng mặt lý thuyết bẻ gãy Tấn cơng khóa tồn diện trình diễn AES mã thay Trước người ta sử dụng lặp DES, tức sử dụng nhiều lần thuật tốn, với khóa khác Triple DES dạng chọn, lặp DES ba lần Tại lại Triple DES, mà lặp hai lần Double DES: lặp hai lần khơng hồn tồn trùng với lần DES đó, o Có thể dùng hai lần DES block với hai khóa K1 K2 : C = EK2(EK1(P)) o o Vấn đề rút gọn bước không? Double DES gặp công mức trung gian, tức sử dụng mã hai lần trên, ta có: X = EK1[P] = DK2[C] o Khi kẻ thám mã cơng cách phán đốn rõ P mã với khóa lưu lại Và giải mã mã C với khóa sánh trùng mức trung gian X Có thể cần O(256) bước dị tìm Triple DES với hai khóa o Để tránh cơng mức trung gian, cần sử dụng ba lần mã, nói chung dùng ba khóa khác o Nhưng để đơn giản sử dụng khóa theo trình tự: E–D–E, tức mã, giải mã, lại mã: C = EK1[DK2[EK1[P]]] IT201_Bai 2_v1.0011103219 25 Bài 2: Mã đối xứng o Về mặt an toàn mã giải mã tương đương Nếu K1 = K2, Triple DES làm việc tương đương với lần DES, nên K1 phải khác K2 Mơ hình chưa thấy cơng thực tế Triple DES với ba khóa o Mặc dù chưa có cơng thực tế, Triple DES với hai khóa có số định để tránh rơi vào số trường hợp đặc biệt o Do cần phải sử dụng ba lần DES với ba khóa để tránh điều C = EK3[DK2[EK1[P]]] o 2.4.2 Được chấp nhận dùng số ứng dụng Internet: PGP, S/MIME Chuẩn mã nâng cao AES Rõ ràng Triple DES có q trình mã giải mã chậm, đồng thời với khối liệu nhỏ Do Viện chuẩn quốc gia Hoa Kỳ US NIST lời kêu gọi tìm kiếm chuẩn mã vào năm 1997 Sau có 15 đề cử chấp nhận vào tháng năm 1998 Và rút gọn ứng cử viên vào tháng năm 1999 Đến tháng 10 năm 2000, mã Rijndael chọn làm chuẩn mã nâng cao Yêu cầu AES Là mã khối khóa đối xứng với kích thước khối liệu 128 bit độ dài khóa tùy biến: 128, 192 256 bit Chuẩn mã phải mạnh nhanh Triple DES Mã có sở lý thuyết mạnh để thời gian sống chuẩn khoảng 20-30 năm (cộng thêm thời gian lưu trữ) Khi đưa thành chuẩn yêu cầu cung cấp chi tiết thiết kế đặc tả đầy đủ, đảm bảo chuẩn mã cài đặt hiệu C Java Viện chuẩn Hoa Kỳ NIST in rút gọn đề xuất, phân tích tìm kiếm chuẩn mã nâng cao Tiêu chuẩn triển khai AES An toàn tổng thể, dễ cài đặt phần mềm phần cứng, chống công mặt cài đặt, mềm dẻo mã/giải mã, khóa yếu tố khác Chuẩn mã nâng cao AES – Rijndael Cuối Rijndael chọn chuẩn mã nâng cao Nó thiết kế Rijmen – Daemen Bỉ, có đặc trưng sau: có 128/192/256 bit khóa 128 bit khối liệu, thao tác vòng lặp khác với Fiestel Trong mơ hình Fiestel, vịng xử lý nửa, vòng AES xử lý toàn liệu: Chia liệu thành nhóm – byte; Thao tác khối vòng; Thiết kế để chống lại công biết, tốc độ nhanh nén mã nhiều CPU Rijndael có thiết kế rõ ràng, xử lý khối liệu 128 bit nhóm byte: 128 = 4*4*8 bit Mỗi nhóm nằm hàng, bố trí thành ma trận hàng, cột với phần tử byte coi trạng thái xử lý qua vịng mã hố giải mã Khóa mở rộng thành mảng gồm 44 từ, từ 32 bit w[i] với i = 0, , 43 Mỗi vịng dùng từ khóa Có tùy chọn 9/11/13 vịng, vịng bao gồm: o Phép byte (dùng S box để xác định phần tử cho byte); o Dịch hàng (hoán vị byte nhóm/cột); 26 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng Trộn cột (sử dụng nhân ma trận cột) Cộng khóa vịng (XOR trạng thái liệu với khóa vịng) o Mọi phép tốn thực với XOR bảng tra, nên nhanh hiệu Sơ đồ Rijndael o Key Cộng khóa vịng w[0,3] Các byte Khóa mở rộng Bản rõ Cộng khóa vòng Trả lại byte Dịch hàng Trả lại Trả lại các hang hàng dịch dịch Trộn cột Trả lại cột trộn Cộng khóa vịng w[4,7] Vịng 10 Bản rõ Cộng khóa vịng Trả lại byte Vòng Vòng o Trả lại Trả lại các hang hàng dịch dịch Các byte Cộng khóa vịng Vịng 10 Trả lại cột trộn Trộn cột w[36,39] Cộng khóa vịng Các byte Trả lại byte Dịch hàng Trả lại Trả lại các hang hàng dịch dịch Cộng khóa vịng Bản mã w[40,43] Vịng Vịng Dịch hàng Cộng khóa vịng Bản mã Một vịng mã AES Phép byte o Phép byte đơn giản; o Sử dụng bảng 16 × 16 byte chứa hoán 256 giá trị khác có độ dài bit; o Mỗi byte trạng thái thay byte hàng xác định bit trái cột xác định bit phải o Chẳng hạn {95} thay phần tử hàng 9, cột 5, mà giá trị {2A} o Thiết kế để chống công biết Dịch hàng o Dịch hàng vòng quanh hàng: Hàng không đổi; Hàng dịch vòng quanh byte sang trái; Hàng dịch vòng quanh byte sang trái; Hàng dịch vòng quanh byte sang trái; IT201_Bai 2_v1.0011103219 27 Bài 2: Mã đối xứng o o Giải mã thực dịch ngược lại sang phải Vì trạng thái xử lý cột, bước thực chất hoán vị byte cột Trộn cột o Mỗi cột xử lý riêng biệt o Mỗi byte thay giá trị phụ thuộc vào tất byte cột Cộng khóa vịng o XOR trạng thái với 128 bit khóa vịng o Mọi bước trước khơng sử dụng đến khóa nghịch đảo mà khơng cần khóa o Khóa vịng sinh số giả ngẫu nhiên dùng đệm lần, nên mã giải mã nhanh hiệu o Thiết kế sinh khóa vịng đơn giản có thể, địi hỏi thêm số bước tăng độ phức tạp tính an tồn Mở rộng khóa AES o Dùng khóa 128 bit (16 byte) mở rộng thành mảng gồm 44/52/60 từ 32 bit o Bắt đầu việc copy khóa vào từ o Sau tạo quay vòng từ mà phụ thuộc vào giá trị vị trí trước vị trí sau: trường hợp XOR chúng Mỗi thứ có S box kết hợp quay XOR với số trước đó, trước XOR Thiết kế chống cơng biết Thuật tốn sinh khóa vịng mơ tả chương trình giả mã sau: KeyExpansion(byte key[16], word w[44]) { word temp for (i = 0, i < 4; i++) w[i] = (key[4*i], key[4*i + 1] , key[4*i + 2], key[4*i + 3]); for(i = 4, i < 44, i++) { temp = w[i-1]; if (i mod = 0) temp = Subword(RotWord (temp) XOR Rcon[i/4]; w[i] = w[i-4] XOR temp } } Trong o RotWord thực dịch trái vòng quanh byte từ o Subword thực byte hộp S box o Kết bước XOR với số cho trước vòng Rcon[i/4] 28 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng Giải mã AES o Thơng thường thuật tốn giải mã sử dụng mở rộng khóa theo thứ tự ngược lại thuật tốn giải mã AES khơng giống thuật tốn mã hóa o Trước hết khẳng định bước vịng nghịch đảo Như ta có phép tốn ngược bước vịng mã o Do vịng ta thực bước theo thứ tự: dịch hàng ngược, byte ngược, cộng khóa vịng trộn cột ngược Trạng thái S Các byte S Trạng thái Dịch hàng Trạng thái Trộn cột M M Trạng thái F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 Cộng khóa vịng Trạng thái Lý mở rộng khóa Các tiêu chuẩn thiết kế bao gồm o Giả sử biết phần khóa, khơng đủ để biết nhiều hơn, tức khóa khác khóa nói chung o Phép biến đổi nghịch đảo được, nhanh nhiều kiểu CPU o Sử dụng số vòng để làm tính đối xứng o Khuếch tán bit khóa thành khóa cho vịng o Có đủ tính phi đối xứng để chống thám mã o Đơn giản việc giải mã Các khía cạnh cài đặt: o Có thể cài đặt hiệu CPU 32 bit, sử dụng từ 32 bit o Có thể tính trước bảng với 256 đầu vào o Sau cột vịng tính cách tra bảng XOR o Cần 16 Kb để lưu bảng để đẩy nhanh tốc độ tính tốn o Những nhà thiết kế tin tưởng việc cài đặt hiệu yếu tố việc chọn mã AES làm chuẩn nâng cao IT201_Bai 2_v1.0011103219 29 Bài 2: Mã đối xứng 2.5 Mã dòng RC4 mã đăng ký quyền RSADSI, thiết kế Ronald Rivest RC4 đơn giản, hiệu quả, có nhiều cỡ khóa mã bit dịng Mã sử dụng rộng rãi (web SSL/TLS, thuật toán bảo mật cho mạng khơng dây WEP) Khóa thực hốn vị ngẫu nhiên giá trị bit Sử dụng hốn vị để khuấy thơng tin đầu vào xử lý byte Sinh khóa RC4 Bắt đầu từ mảng S với biên độ: 255 Sau sử dụng khóa để xáo trộn thực Mảng S tạo trạng thái mã Tổng quan RC4 S T S t Mã RC4 Mã tiếp tục trộn giá trị mảng Dựa vào tổng cặp trộn để chọn giá trị khóa dịng từ hoán vị XOR S[t] với byte tin để mã/giải mã: i=j=0 for each message byte Mi i = (i + 1) (mod 256) j = (j + S[i]) (mod 256) swap(S[i], S[j]) t = (S[i] + S[j]) (mod 256) Ci = Mi XOR S[t] 30 IT201_Bai 2_v1.0011103219 Bài 2: Mã đối xứng An toàn RC4 Mã dịng RC4 đảm bảo an tồn chống cơng biết, có số thám mã, không thực tế Mã cho kết phi tuyến RC4 mã dịng nên khơng sử dụng lại khóa 2.6 Bảo mật thơng điệp 2.6.1 Các chế độ thao tác khối Mã khối mã block có kích thước cố định Chẳng hạn DES mã block 64 bit với khóa 56 bit cần phải có cách áp dụng vào thực tế thơng tin cần mã có kích thước tùy ý Trước có kiểu thao tác định nghĩa cho DES theo chuẩn ANSI: ANSI X3.106-1983 Modes of Use Bây mở rộng thêm có cách cho DES chuẩn mã nâng cao (AES – Advanced Encryption Standards) Trong có kiểu áp dụng cho khối có kiểu áp dụng cho mã dòng Sau ta xem xét ba chế độ Sách mật mã điện tử (Electronic Code Book - ECB) o Mẫu tin chia thành khối độc lập, sau mã khối o Mỗi khối giá trị cần thay dùng sách mã, có tên o Mỗi khối mã độc lập với mã khác Ci = DESK1(Pi) o Khi dùng: truyền an toàn giá trị riêng lẻ Nhược điểm ECB: lặp mã nhận biết việc lặp rõ, đặc biệt dóng khối thường xảy với hình ảnh với tin mà thay đổi trở thành đối tượng để thám mã o Do nhược điểm khối mã độc lập; nên sử dụng chủ yếu gửi liệu có kích thước nhỏ Dây chuyền mã khối (Cipher Block Chaining - CBC) o Các mẫu tin chia thành khối, chúng liên kết với q trình mã hố o Các block thành dãy, có tên vậy: o Sử dụng vectơ ban đầu IV để bắt đầu trình Ci = DESK1(Pi XOR Ci-1) o C-1 = IV o IT201_Bai 2_v1.0011103219 Dùng khi: mã liệu lớn cho mục đích xác thực 31 Bài 2: Mã đối xứng Ưu điểm CBC o Mỗi khối mã phụ thuộc vào tất khối rõ, nên khối mã giống nói chung có mã khác o Sự thay đổi tin kéo theo thay đổi khối mã, nên dùng khối cuối làm đặc trưng thông điệp Nhược điểm CBC o Cần giá trị vectơ ban đầu IV biết trước người gửi người nhận Tuy nhiên IV gửi công khai, kẻ cơng thay đổi bit thay đổi IV để bù trừ Vậy IV cần phải có giá trị cố định trước mã hố chế độ ECB gửi trước phần lại mẩu tin o Chế độ mã CBC thực chậm, khối sau phải chờ khối trước thực xong o Lỗi khối trước lan truyền sang khối Bộ đệm Ở cuối tin, để kiểm sốt block ngắn cịn lại Có thể bổ sung giá trị liệu NULL dùng đệm cuối với số byte đếm kích thước Ví dụ [ b1 b2 b3 0 0 5]