Lập trình đối xứng - Bài 2: Mã đối xứng
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình đối xứng - Bài 2: Mã đối xứng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- lap_trinh_doi_xung_bai_2_ma_doi_xung.pdf
Nội dung text: Lập trình đối xứng - Bài 2: Mã đối xứng
- Bài 2: Mã đối xứng BÀI 2: MÃ ĐỐI XỨNG Nội dung 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 các thiết bị mã: mã kết nối, mã đầu cuối. Mục tiêu Thời lượng học Hiểu được các yếu tố ảnh hưởng đến sự 6 tiết. an toàn khi dùng mã đối xứng. Biết cách sử dụng DES và các chế độ thao tác khối. Dùng các mã nâng cao như 3DES, AES và mã dòng RC4. Biết hai kiểu mã đối xứng: mã khối và mã dòng và ứng dụng trên mạng. Dùng mã đối xứng bảo mật thông điệp. IT201_Bai 2_v1.0011103219 15
- Bài 2: Mã đối xứng TÌNH HUỐNG DẪN NHẬP Tình huống Làm sao để che giấu nội dung thông điệp của người gửi, không cho người khác đọc được nội dung, ngoại trừ những người nhận có thẩm quyền. Phát triển kỹ thuật mã hóa thao tác trên khối dữ liệu hoặc dòng bit, tạo ra thuật toán mã hóa hiệu quả dễ dàng sử dụng. Câu hỏi 1. Có thể đưa ra một số yêu cầu, nguyên lý thống nhất để thiết kế mã khối và mã dòng một cách hiệu quả được không? 2. Làm thế nào để có một số mã chuẩn được nghiên cứu kỹ càng, có khả năng chống thám mã, tốc độ xử lý nhanh để đưa ra sử dụng rộng rãi trên các giao thức của mạng? 3. Mô tả một số mã hiện đại đang được sử dụng rộng rãi. 4. Trên mô hình mạng, mã thường được đặt ở đâu và đ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 về mã đối xứng 2.1.1. Mật mã đối xứng Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa và giải mã. Có thể nói mã đối xứng là mã một khóa hay mã khóa chia sẻ. Ở đây người gửi và người nhận chia sẻ khóa chung K, mà họ có thể trao đổi bí mật với nhau. Ta xét hai hàm ngược nhau: E là hàm mã hóa biến đổi bản rõ thành bản mã và D là hàm giải mã biến đổi bản mã trở về bản rõ. Giả sử X là văn bản cần mã hóa gọi là bản rõ và Y là dạng văn bản đã được thay đổi qua việc mã hóa gọi là bản mã. Khi đó ta ký hiệu: Y = EK(X) X = DK(Y) Mọi thuật toán mã cổ điển đều là mã khóa đối xứng, vì ở đó thông tin về khóa được chia sẻ giữa người gửi và người nhận. Mã đối xứng là kiểu duy nhất trước khi phát minh ra khóa mã công khai vào những năm 1970, mã công khai còn được gọi là mã không đối xứng. Hiện nay các mã đối xứng và công khai tiếp tục phát triển và hoàn thiện. Mã công khai ra đời hỗ trợ mã đối xứng chứ không thay thế nó, do đó mã đối xứng đến nay vẫn được sử dụng rộng rãi. Sau đây ta đưa ra định nghĩa một số khái niệm cơ bản về mã hóa. Bản rõ X là bản tin gốc. Bản rõ có thể được chia nhỏ để có kích thước phù hợp. Bản mã Y là bản tin gốc đã được mã hoá. Nói chung kích thước bản mã không nhỏ hơn kích thước bản rõ. Nhưng ở đây ta thường xét phương pháp mã hóa mà không làm thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài. Mã là thuật toán E chuyển bản rõ thành bản mã. Thông thường chúng ta cần thuật toán mã hóa mạnh, cho dù kẻ thù biết được thuật toán, nhưng khi không biết thông tin về khóa, cũng không tìm được bản rõ. Khóa K là thông tin tham số dùng để mã hoá, chỉ có người gửi và nguời nhận biết. Khóa là độc lập với bản rõ và có độ dài phù hợp với yêu cầu bảo mật. Mã hoá là quá trình chuyển bản rõ thành bản mã, thông thường bao gồm việc áp dụng thuật toán mã hóa và một số quá trình xử lý thông tin kèm theo. Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã hóa. Mật mã là chuyên ngành khoa học của Khoa học máy tính nghiên cứu về các nguyên lý và phương pháp mã hoá. Hiện nay người ta đưa ra nhiều chuẩn an ninh cho các lĩnh vực khác nhau của công nghệ thông tin. Thám mã nghiên cứu các nguyên lý và phương pháp giải mã mà không biết khóa. Thông thường khi đưa các mã mạnh ra làm chuẩn dùng chung giữa các người sử dụng, các mã đó đã được các kẻ thám mã cũng như những người phát triển mã tìm hiểu nghiên cứu kỹ về các phương pháp giải một phần bản mã với các thông tin không đầy đủ. Lý thuyết mã bao gồm cả mật mã và thám mã. Nó là một thể thống nhất, để đánh giá một mã mạnh hay không, đều phải xét từ cả hai khía cạnh đó. Các nhà khoa học mong muốn tìm ra các mô hình mã hóa khái quát cao đáp ứng nhiều chính sách an ninh khác nhau. 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ẻ giữa Khóa mật chia sẻ giữa người gửi và người nhận người gửi và người nhận Bản mã truyền Bản rõ vào Bản rõ ra Thuật toán mã Thuật toán mã hóa (ngược hóa (như des) của thuật toán mã) 2.1.2. Các yêu cầu Một mã đối xứng có các đặc trưng trong cách xử lý thông tin của thuật toán mã, giải mã, tác động của khóa vào bản mã, độ dài của khóa. Mối liên hệ giữa bản rõ, khóa và bản mã càng phức tạp càng tốt, nếu tốc độ tính toán là chấp nhận được. Cụ thể hai yêu cầu để sử dụng an toàn mã khóa đối xứng là: Thuật toán mã hoá mạnh; có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán, mọi người đều biết, nhưng việc thám mã là rất khó khăn và phức tạp, nếu không biết khóa. Khóa mật chỉ có người gửi và người nhận biết; có kênh an toàn để phân phối khóa giữa các người sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không thể nhận biết được. 2.1.3. Hệ mật mã Hệ mật mã được đặc trưng bởi các yếu tố sau : Kiểu của thao tác mã hoá được sử dụng trên bản rõ: o Phép thế – thay thế các ký tự trên bản rõ bằng các ký tự khác trên bản mã. o Hoán vị – thay đổi vị trí các ký tự trong bản rõ, tức là thực hiện hoán vị các ký tự của bản rõ. o Tích của chúng, tức là kết hợp cả hai kiểu thay thế và hoán vị các ký tự của bản rõ. Số khóa được sử dụng khi mã hóa và giải mã: một khóa duy nhất – khóa đối xứng hoặc hai khóa – khóa không đối xứng. Ngoài ra còn xem xét số khóa có thể được dùng có nhiều không. Khóa càng nhiều, thì việc mò tìm khóa càng lâu. Một đặc trưng của mã nữa là cách mà bản rõ được xử lý, theo: o Khối – dữ liệu được chia thành từng khối có kích thước xác định và áp dụng thuật toán mã hóa với tham số khóa cho từng khối. o Dòng – từng đơn vị thông tin đầu vào thường là bit hoặc byte được xử lý liên tục tạo phần tử đầu ra 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ể là luôn thực hiện được, do có thể tiến hành thử từng khóa, mà số khóa là hữu hạn. Phần lớn công sức của các tấn công đều tỷ lệ thuận với kích thước khóa. Khóa càng dài thời gian tìm kiếm càng lâu và thường 18 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng tăng theo hàm mũ. Ta có thể giả thiết là kẻ thám mã có thể dựa vào bối cảnh để biết hoặc nhận biết được bản rõ. Sau đây là một số thống kê về mối liên hệ giữa độ dài khóa, kích thước không gian khóa, tốc độ xử lý và 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à rất lớn, lên đến hàng tỷ năm, như vậy có thể coi phương pháp duyệt tổng thể là không hiện thực. Kích thước Số khóa có thể Thời gian đòi hỏi cho 1 Thời gian đòi hỏi cho 6 khóa mã 10 mã/s 32 232 = 4,3 × 109 231s = 35,8 phút 2,15 mili giây 56 256 = 7,2 × 1038 255s = 1142 năm 10,01 giờ 128 2128 = 3,4 × 109 2117s = 5,4 × 1024 năm 5,4 × 1018 năm 168 2168 = 3,7 × 1050 2167s = 5,9 × 1036 năm 5,9 × 1030 năm 26 characters 26! = 4 × 1026 2×1026s = 6,4 × 1012 6,4 × 106 năm (permulation) năm 2.1.5. Độ an toàn Có thể phân loại an toàn thành hai kiểu như sau: An toàn không điều kiện: Ở đây cho dù máy tính thực hiện được bao nhiêu phép toán trong một giây, mã hoá không thể bị bẻ, vì bản mã không cung cấp đủ thông tin để xác định duy nhất bản rõ. Việc dùng bộ đệm ngẫu nhiên một lần làm khóa để mã dòng cho dữ liệu mà ta sẽ xét cuối bài này được coi là an toàn không điều kiện. Ngoài ra chưa có thuật toán mã hóa nào được coi là an toàn không điều kiện. An toàn tính toán: Với nguồn lực máy tính có giới hạn và thời gian có hạn (chẳng hạn thời gian tính toán không quá tuổi của vũ trụ) mã hoá coi như không thể bị bẻ. Trong trường hợp này không quan trọng máy tính mạnh như thế nào, có thể coi như mã hóa an toàn về mặt tính toán. Nói chung từ nay về sau, một thuật toán mã hóa mà an toàn tính toán, sẽ được coi là an toàn. 2.2. Mã cổ điển Mã hoá cổ điển là phương pháp mã hoá đơn giản nhất xuất hiện đầu tiên trong lịch sử mã hoá. Thuật toán đơn giản và dễ hiểu. Những phương pháp mã hoá này là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hoá đối xứng được sử dụng ngày nay. Mọi mã cổ điển đều là mã đối xứng và có hai loại mã cổ điển là mã thay thế và mã hoán vị (hay còn gọi là dịch chuyển): Mã thay thế là phương pháp mà từng kí tự (nhóm kí tự) trong bản rõ được thay thế bằng một kí tự (một nhóm kí tự) khác để tạo ra bản mã. Bên nhận chỉ cần thay thế ngược lại trên bản mã để có được bản rõ ban đầu. Mã hoán vị là phương pháp mà các kí tự trong bản rõ vẫn được giữ nguyên, chúng chỉ được sắp xếp lại vị trí để tạo ra bản mã, tức là các kí tự trong bản rõ hoàn toàn không bị thay đổi bằng kí tự khác mà chỉ đảo chỗ của chúng để tạo thành bản mã. Trước hết ta xét các mã cổ điển sử dụng phép thay thế các chữ của bản rõ bằng các chữ khác của bảng chữ để tạo thành bản mã. Ở đây các chữ của bản rõ được thay bằng các chữ hoặc các số hoặc các ký tự khác. IT201_Bai 2_v1.0011103219 19
- Bài 2: Mã đối xứng Hoặc nếu xem bản rõ như môt dãy bit, thì phép thế thay các mẫu bit bản rõ bằng các mẫu bit bản mã. 2.2.1. Mã Caesar Đây là mã thế được biết sớm nhất, được nghĩ ra bởi Julius Caesar. Lần đầu tiên được sử dụng trong quân sự. Việc mã hoá được thực hiện đơn giản là thay mỗi chữ trong bản rõ bằng chữ thứ ba tiếp theo trong bảng chữ cái. Ví dụ. Mã bản rõ: “Meet me after the toga party” bằng bản mã: “PHHW PH DIWHU WKH WRJD SDUWB”. Ở đây thay chữ m bằng chữ đứng thứ 3 sau m là p (vì thứ tự từ điển từ m là: m, n, o, p); thay chữ e bằng chữ đứng thứ 3 sau e là h (vì thứ tự từ điển từ e là e, f, g, h). Ta viết các chữ trong bản mã bằng chữ in hoa cho dễ phân biệt bản rõ với bản mã. Có thể định nghĩa việc mã hoá trên qua ánh xạ trên bảng chữ cái như sau: các chữ ở dòng dưới là mã của các 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, nếu ta gán số thứ tự cho mỗi chữ trong bảng chữ cái, bắt đầu từ thứ tự 0, thì các chữ ở dòng trên có số thứ tự tương ứng là số ở dòng dưới: a b c d e f g h i j k l m 0 1 2 3 4 5 6 7 8 9 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 được định nghĩa qua phép tịnh tiến các chữ như sau: c = E(p) = (p + k) mod (26) p = D(c) = (c – k) mod (26) Ở đây, p là số thứ tự của chữ trong bản rõ và c là số thứ tự của chữ tương ứng của bản mã; k là khóa của mã Caesar. Khóa k là số bước tịnh tiến các chữ trong bảng chữ. Do đó có 26 khóa khác nhau. Độ dài khóa biểu diễn qua bit ở đây là 5, vì đó là số bit ít nhất cần thiết để biểu diễn 26 giá trị khác nhau. Thám mã Caesar là việc làm đơn giản, do số khóa có thể có là rất ít. Chỉ có 26 khóa có thể, vì a chỉ có thể ánh xạ vào một trong số 26 chữ cái của bảng chữ cái tiếng Anh: A, B, C, Các chữ khác sẽ được xác định bằng số bước tịnh tiến tương ứng của a. Kẻ thám mã có thể thử lần lượt từng khóa một, tức là sử dụng phương pháp tìm duyệt tổng thể. Vì số khóa ít nên việc tìm duyệt là khả thi. Cho trước bản mã, thử 26 cách dịch chuyển khác nhau, ta sẽ đoán nhận thông qua nội dung các bản rõ nhận được. Ví dụ. Bẻ bản mã: "GCUA VQ DTGCM" bằng cách thử các phép tịnh tiến khác nhau của bảng chữ, ta chọn được bước tịnh tiến thích hợp là 24 và cho bản rõ là "easy to break". 2.2.2. Các mã hoán vị cổ điển Trong các mục trước chúng ta đã xét một số mã thay thế, ở đó các chữ của bản rõ được thay thế bằng các chữ khác của bản mã. Bây giờ chúng ta xét đến loại mã khác, 20 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng mã hoán vị, các chữ trong bản rõ không được thay thế bằng các chữ khác mà chỉ thay đổi vị trí, tức là việc mã hoá chỉ dịch chuyển vị trí tương đối giữa các chữ trong bản rõ. Như vậy, nó giấu bản rõ bằng cách thay đổi thứ tự các chữ, nó không thay đổi các chữ thực tế được dùng. Do đó bản mã có cùng phân bố tần suất xuất hiện các chữ như bản gốc. Tính chất này tạo điều kiện để thám mã có thể phát hiện được. Mã dịch chuyển dòng Giả sử lấy một số cột xác định và chọn một hoán vị chỉ số của các cột đó làm khóa. Viết các chữ của bản rõ lần lượt theo các dòng với số cột xác định. Sau đó đọc lại chúng theo các cột với thứ tự chỉ số ở dòng khóa để nhận được bản mã. Quá trình giải mã được thực hiện ngược lại. Ví dụ: Khóa: 4 3 1 2 5 6 7 Bản rõ: a t t a c k p o s t p o n e d u n t i l t w o a m x y z Ta đọc theo thứ tự các cột từ 1 đến 7 để nhận được bản mã: Bản mã: TTNAAPTMTSUOAODWCOIXKNLYPETZ Rõ ràng trong mã trên mỗi khóa là một hoán vị của 7, nên số khóa khác nhau có thể có là 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 là 12. 2.2.3. Bộ đệm một lần Nếu khóa thực sự ngẫu nhiên được dùng và có độ dài bằng bản rõ thì ta nói đó là bộ đệm một lần. Việc mã hóa (giải mã) được thực hiện bằng phép toán XOR từng bit giữa các bit có vị trí tương ứng ở bản rõ (bản mã) và khóa. Vì khóa chỉ được dùng một lần và ngẫu nhiên, nên mã hoá sẽ an toàn. Mã sẽ không bẻ được, vì bản mã không có liên quan thống kê gì với bản rõ, do bộ đệm được sinh ngẫu nhiên. Có thể nói mã bộ đệm một lần là an toàn tuyệt đối, vì với bản rõ bất kỳ và bản mã bất kỳ, luôn tồn tại một khóa để ánh xạ bản rõ đó sang bản mã đã cho. Về mặt lý thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã là mã của một bản rõ cho trước là như nhau. Khóa chỉ sử dụng một lần, nên các lần mã là độc lập với nhau. Vấn đề khó khăn của mã bộ đệm một lần là việc sinh ngẫu nhiên khóa và phân phối khóa an toàn. Do đó bộ đệm một lần ít được sử dụng và chỉ dùng trong trường hợp đòi hỏi bảo mật rất cao. 2.2.4. Mã tích Mã dùng hoán vị hoặc dịch chuyển không an toàn vì các đặc trưng tần suất của ngôn ngữ không thay đổi. Mã cổ điển chỉ sử dụng một trong hai phương pháp thay thế hoặc hoán vị. Có thể sử dụng một số mã liên tiếp nhau sẽ làm cho mã khó hơn. Do đó người ta nghĩ đến việc kết hợp cả hai phương pháp này trong cùng một mã và có thể sử dụng đan xen hoặc lặp nhiều vòng. Đôi khi ta tưởng lặp nhiều lần cùng một loại mã sẽ tạo nên mã phức tạp hơn, nhưng trên thực tế trong một số trường hợp về bản IT201_Bai 2_v1.0011103219 21
- Bài 2: Mã đối xứng chất chúng cũng tương đương với một lần mã cùng loại nào đó như: tích của hai phép thế sẽ là một phép thế; tích của hai phép hoán vị sẽ là một phép hoán vị. Nhưng nếu hai loại mã đó khác nhau thì sẽ tạo nên mã mới phức tạp hơn, chính vì vậy phép thế được nối tiếp bằng phép dịch chuyển sẽ tạo nên mã mới khó hơn rất nhiều. Đây chính là chiếc cầu nối từ mã cổ điển sang mã hiện đại. Điểm yếu của mã cổ điển Phương pháp mã hoá cổ điển nói riêng và mã đối xứng nói chung có thể dễ dàng bị giải mã bằng cách đoán chữ dựa trên phương pháp thống kê tần xuất xuất hiện các chữ cái trên mã và so sánh với bảng thống kê quan sát của bản rõ. Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải thống nhất với nhau về cơ chế mã hoá cũng như giải mã. Nếu không thì hai bên sẽ không thể làm việc được với nhau. 2.3. Chuẩn mã dữ liệu DES Bây giờ chúng ta xét các mã khối hiện đại. Đây là kiểu mã được sử dụng rộng rãi nhất của các thuật toán mã hoá. Đồng thời nó cũng được sử dụng kết hợp với các thủ tục khác nhằm cung cấp các dịch vụ an toàn và xác thực. Trước hết chúng ta tập trung vào chuẩn mã dữ liệu DES (Data Encryption Standards) để minh họa cho các 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 các mã khối đối xứng dựa trên cấu trúc mã Fiestel, do nhà bác học Fiestel đề xuất năm 1973. Đây là điều cần thiết, vì cần phải có khả năng giải mã các bản mã một cách có hiệu quả. 64 o Mã khối được coi giống như phép thế cực lớn. Cần bảng có 2 đầu vào cho mã khối 64 bit, bảng như vậy là rất lớn. Do đó có thể thay thế bằng cách tạo các khối nhỏ hơn. o Sử dụng ý tưởng dùng mã tích. Ở đây sẽ kết hợp giữa mã thay thế và mã hoán vị, đồng thời sử dụng nhiều vòng lặp như vậy. Rối loạn và khuếch tán o Một tính chất quan trọng của mã tốt là mã cần phải che giấu hoàn toàn các tính chất thống kê của bản tin gốc. Như ta đã thấy mã bộ đệm một lần có thể làm được điều đó, do tính ngẫu nhiên của khóa đệm và độ dài bằng bản tin của nó. o Shannon nghiên cứu và đề xuất phương pháp thực tế hơn là kết hợp các thành phần khác nhau của bản rõ để xử lý qua nhiều lần và nhận được bản mã. o Khuếch tán là làm tan biến cấu trúc thống kê của bản rõ trên bản mã. Điều đó đạt được nếu mỗi bit của bản rõ tác động đến giá trị của rất nhiều bit trên bản mã hay mỗi bit của bản mã chịu tác động của nhiều bit bản rõ. o Rối loạn là làm cho quan hệ giữa bản mã và khóa càng phức tạp càng tốt. Bản mã có tính rối loạn cao sẽ làm cho việc tìm mò khóa trở nên rất khó khăn, ngay cả khi kẻ tấn công có các đặc trưng thống kê của bản mã và biết cách khóa tác động đến bản mã (nếu mã an toàn vô điều kiện thì sẽ 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 trên mã tích nghịch đảo được, tức là kết hợp mã thế với mã hoán vị và qui trình giải mã là giống với mã hoá, chỉ cần 22 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng thay đổi vai trò khối bản mã với khối bản rõ và thứ tự các khóa con được dùng. Từ khóa chính sinh ra cho mỗi vòng lặp một khóa con. o Chia khối đầu vào thành hai nửa bằng nhau: . Thực hiện phép thế trên nửa trái. Sử dụng hàm vòng trên nửa phải và khóa con, rồi tác động đến nửa trái. . Sau đó hoán vị các nửa, nửa phải chưa được xử lý. . Xử lý vòng tiếp theo. Đây là một thể hiện của mã thế kết hợp với hoán vị của Shannon. Ta xem xét cụ thể cấu trúc mã Fiestel gồm n vòng: 1 i n K K K 1 i n n+1 0 R R R R R w bits F F F Bản rõ (2w bits) Bản mã (2w bits) w bits 0 » » » L 1 i n L L L n+1 L Vòng i Vòng n Vòng 1 Nguyên tắc thiết kế mã khối Fiestel: o Tăng kích thước khối sẽ làm tăng độ an toàn nhưng làm giảm tốc độ mã. o Tăng kích thước khóa sẽ làm tăng độ an toàn – tìm khóa khó hơn, nhưng làm chậm mã. o Tăng số vòng làm tăng độ an toàn nhưng làm chậm mã. o Phát sinh khóa con càng phức tạp làm cho việc thám mã khó hơn nhưng làm chậm mã. o Hàm vòng càng phức tạp làm cho việc thám mã khó hơn nhưng làm chậm mã. o Phần mềm mã hoá/giải mã nhanh và khó thám mã là tiêu chí hay được đề cập đến đối với ứng dụng và kiểm nghiệm thực tế. 2.3.2. Chuẩn mã dữ liệu (DES) DES (Data Encryption Standards) là mã khối sử dụng rộng rãi nhất trên thế giới trong thời gian vừa qua. Nó được đưa ra năm 1977 bởi NBS – văn phòng chuẩn Quốc gia Hoa Kỳ (bây giờ là NIST – Viện chuẩn và công nghệ Quốc gia). DES là mã khối với mỗi khối dữ liệu 64 bit và dùng khóa dài 56 bit. Nó được sử dụng rộng rãi và đã được tranh luận kỹ về mặt an toàn. Lịch sử DES Cuối những năm 1960, IBM phát triển mã Lucifer, được lãnh đạo bởi Fiestel. Ban đầu Lucifer sử dụng khối dữ liệu 64 bit và khóa 128 bit. Sau đó tiếp tục phát triển như mã thương mại. Năm 1973, NBS yêu cầu đề xuất chuẩn mã Quốc gia. IBM đề nghị bản sửa đổi Lucifer, sau này gọi là DES. Đã có các tranh luận về thiết kế của DES. Vì chuẩn của DES được công khai, mọi người đóng góp ý kiến về tốc độ, độ dài khóa và IT201_Bai 2_v1.0011103219 23
- Bài 2: Mã đối xứng mức độ an toàn, khả năng thám mã. Người ta đề xuất chọn khóa 56 bit thay vì 128 để tăng tốc độ xử lý và đưa ra các tiêu chuẩn thiết kế một chuẩn mã dữ liệu. Các suy luận và phân tích chứng tỏ rằng thiết kế như vậy là phù hợp. Do đó DES được sử dụng rộng rãi, đặc biệt trong lĩnh vực tài chính. 2.3.3. Sơ đồ mã DES Sinh khóa con của DES o Tạo 16 khóa con sử dụng cho 16 vòng của DES. 56 bit khóa đầu vào được sử dụng như bảng 8 x 8, trong đó cột thứ 8 không sử dụng. o Hoán vị ban đầu của khóa PC1 và tách 56 bit thành hai nửa 28 bit. o 16 giai đoạn bao gồm . Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tương ứng 1 và 2 bit. Hai nửa này được dùng tiếp cho vòng sau. . Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa 24 bit gộp lại thành 48 bit để sinh khóa con. o Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả. Hoán vị ban đầu IP: đây là bước đầu tiên của tính toán dữ liệu, hoán vị IP đảo thứ tự các bit đầu vào: các bit chẵn sang nửa trái và các bit lẻ sang nửa phải. Hoán vị trên dễ dàng thực hiện trên phần cứng. Mỗi số trong hệ 16 biểu diễn bởi 4 bit, 16 số được thể hiện bởi 64 bit. Mỗi bit có một vị trí xác định qua hoán vị ban đầu. Thực hiện 16 vòng: mỗi vòng sử dụng một khóa con riêng. Cấu tạo một vòng của DES Sử dụng hai nửa 32 bit trái và 32 bit phải. Như đối với mọi mã Fiestel, nửa phải của vòng trước được chuyển qua nửa trái của bước sau và lấy đầu ra của hàm vòng 24 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng trên nửa phải và khóa con cộng cơ số 2 với nửa trái. Có thể biểu diễn bằng công thức như sau: Li = Ri–1 Ri = Li–1 xor F(Ri–1, Ki) Ở đây F lấy 32 bit nửa phải R, mở rộng thành 48 bit nhờ hoán vị E, rồi cộng vào với khóa con 48 bit. Sau đó chia thành 8 cụm 6 bit và cho qua 8 S-box để nhận được kết quả 32 bit. Đảo lần cuối sử dụng hoán vị 32 bit nhận được 32 bit đầu ra, rồi cộng với nửa trái để chuyển thành nửa phải của bước sau. 2.4. Chuẩn mã nâng cao AES Rõ ràng cần phải thay thế DES, vì có những tấn công về mặt lý thuyết có thể bẻ được nó. Một số tấn công nghiên cứu thấu đáo khóa đã được 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 các ứ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 là giải pháp để tăng cường độ mật của mã. Rõ ràng DES cần được thay thế, vì Các tấn công về mặt lý thuyết có thể bẻ gãy nó. Tấn công khóa toàn diện đã được trình diễn. AES là mã mới thay thế. Trước nó người ta đã sử dụng lặp DES, tức là sử dụng nhiều lần cùng một thuật toán, nhưng có thể với khóa khác nhau. Triple DES là dạng đã được chọn, ở đây lặp DES ba lần. Tại sao lại là Triple DES, mà không phải là lặp hai lần Double DES: khi lặp hai lần không hoàn toàn là trùng với một lần DES nào đó, nhưng cũng có thể là như vậy. o Có thể dùng hai lần DES trên một block với hai khóa K1 và K2 : C = EK2(EK1(P)) o Vấn đề là có thể rút gọn về một bước không? o Double DES gặp tấn công ở mức trung gian, tức là khi sử dụng một mã nào đó hai lần như trên, thì ta có: X = EK1[P] = DK2[C] o Khi đó kẻ thám mã tấn công bằng cách phán đoán bản rõ P và mã với mọi khóa và lưu lại. Và giải mã bản mã C với các khóa và sánh trùng nhau ở mức trung gian X. Có thể chỉ ra rằng cần O(256) bước dò tìm. Triple DES với hai khóa o Để tránh tấn công ở mức trung gian, cần sử dụng ba lần mã, nói chung có thể dùng ba khóa khác nhau. o Nhưng để đơn giản hơn có thể sử dụng 2 khóa theo trình tự: E–D–E, tức là mã, giải mã, rồi 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ã và giải mã tương đương nhau. Nếu K1 = K2, thì Triple DES làm việc tương đương với một lần DES, nên K1 phải khác K2. Mô hình này chưa thấy tấn công thực tế. Triple DES với ba khóa o Mặc dù chưa có tấn công thực tế, nhưng Triple DES với hai khóa có một số chỉ định để tránh rơi vào một 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 Được chấp nhận dùng trong một số ứng dụng trên Internet: PGP, S/MIME. 2.4.2. Chuẩn mã nâng cao AES Rõ ràng Triple DES có quá trình mã và giải mã chậm, đồng thời với khối dữ liệu nhỏ. Do đó Viện chuẩn quốc gia Hoa Kỳ US NIST ra lời kêu gọi tìm kiếm chuẩn mã mới vào năm 1997. Sau đó có 15 đề cử được chấp nhận vào tháng 6 năm 1998. Và được rút gọn còn 5 ứng cử viên vào tháng 6 năm 1999. Đến tháng 10 năm 2000, mã Rijndael được chọn làm chuẩn mã nâng cao. Yêu cầu của AES Là mã khối khóa đối xứng với kích thước khối dữ liệu 128 bit và độ dài khóa là tùy biến: 128, 192 hoặc 256 bit. Chuẩn mã mới phải mạnh và nhanh hơn Triple DES. Mã mới có cơ sở lý thuyết mạnh để thời gian sống của chuẩn khoảng 20-30 năm (cộng thêm thời gian lưu trữ). Khi đưa ra thành chuẩn yêu cầu cung cấp chi tiết thiết kế và đặc tả đầy đủ, đảm bảo rằng chuẩn mã mới cài đặt hiệu quả trên cả C và Java. Viện chuẩn Hoa Kỳ NIST in rút gọn mọi đề xuất, phân tích tìm kiếm chuẩn mã nâng cao. Tiêu chuẩn triển khai của AES An toàn tổng thể, dễ cài đặt phần mềm và phần cứng, chống được tấn công về mặt cài đặt, mềm dẻo trong mã/giải mã, khóa và các yếu tố khác. Chuẩn mã nâng cao AES – Rijndael Cuối cùng Rijndael được chọn là chuẩn mã nâng cao. Nó được thiết kế bởi Rijmen – Daemen ở Bỉ, có các đặc trưng sau: có 128/192/256 bit khóa và 128 bit khối dữ liệu, thao tác trong các vòng lặp hơi khác với Fiestel. Trong mô hình Fiestel, mỗi vòng chỉ xử lý một nửa, còn mỗi vòng AES xử lý toàn bộ dữ liệu: Chia dữ liệu thành 4 nhóm – 4 byte; Thao tác trên cả khối mỗi vòng; Thiết kế để chống lại các tấn công đã biết, tốc độ nhanh và nén mã trên nhiều CPU. Rijndael có thiết kế rõ ràng, xử lý khối dữ liệu 128 bit như 4 nhóm của 4 byte: 128 = 4*4*8 bit. Mỗi nhóm nằm trên một hàng, bố trí thành ma trận 4 hàng, 4 cột với mỗi phần tử là 1 byte coi như trạng thái được xử lý qua các vòng mã hoá và giải mã. Khóa mở rộng thành mảng gồm 44 từ, mỗi từ 32 bit w[i] với i = 0, , 43. Mỗi vòng dùng 4 từ khóa. Có tùy chọn 9/11/13 vòng, trong đó mỗi vòng bao gồm: o Phép thế byte (dùng S box để xác định phần tử thế cho 1 byte); o Dịch hàng (hoán vị byte giữa nhóm/cột); 26 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng o Trộn cột (sử dụng nhân ma trận của các cột) o Cộng khóa vòng (XOR trạng thái dữ liệu với khóa vòng). o Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả. Sơ đồ Rijndael Bản rõ Key Bản rõ Cộng khóa vòng w[0,3] Cộng khóa vòng Các byte thế Khóa mở rộng Trả lại các byte thế Dịch các hàng Trả lạilại cáccác hanghàng dịchdịch Vòng 10 Trộn các cột Trả lại các cột trộn Vòng 1 Cộng khóa vòng w[4,7] Cộng khóa vòng Trả lại các byte thế Vòng 9 Trả lạilại cáccác hanghàng dịchdịch Các byte thế Dịch các hàng Trả lại các cột trộn Vòng 9 Trộn các cột Cộng khóa vòng w[36,39] Cộng khóa vòng Các byte thế Trả lại các byte thế Dịch các hàng Trả lại các hang dịch Trả lại các hàng dịch Vòng 1 Vòng 10 Cộng khóa vòng w[40,43] Cộng khóa vòng Bản mã Bản mã Một vòng mã AES Phép thế byte o Phép thế byte đơn giản; o Sử dụng một bảng 16 × 16 byte chứa hoán vị của tất cả 256 giá trị khác nhau có độ dài 8 bit; o Mỗi byte trạng thái được thay bởi byte trên hàng xác định bởi 4 bit trái và cột xác định bởi 4 bit phải. o Chẳng hạn {95} được thay bởi phần tử ở hàng 9, cột 5, mà giá trị sẽ là {2A}. o Thiết kế để chống mọi tấn công đã biết. Dịch hàng o Dịch hàng vòng quanh trên mỗi hàng: . Hàng 1 không đổi; . Hàng 2 dịch vòng quanh 1 byte sang trái; . Hàng 3 dịch vòng quanh 2 byte sang trái; . Hàng 4 dịch vòng quanh 3 byte sang trái; IT201_Bai 2_v1.0011103219 27
- Bài 2: Mã đối xứng o Giải mã thực hiện dịch ngược lại sang phải. o Vì trạng thái được xử lý bởi cột, bước này thực chất là hoán vị byte giữa các cột. Trộn các cột o Mỗi cột được xử lý riêng biệt. o Mỗi byte được thay bởi một giá trị phụ thuộc vào tất cả 4 byte trong cột. Cộng khóa vòng o XOR trạng thái với 128 bit khóa của vòng đó. o Mọi bước trước đều không sử dụng đến khóa và có thể nghịch đảo được mà không cần khóa. o Khóa vòng được sinh như một số giả ngẫu nhiên và dùng như bộ đệm một lần, nên mã và giải mã nhanh và hiệu quả. o Thiết kế sinh khóa vòng đơn giản nhất có thể, đòi hỏi thêm một số bước tăng độ phức tạp và tính an toàn. Mở rộng khóa AES o Dùng khóa 128 bit (16 byte) và mở rộng thành mảng gồm 44/52/60 từ 32 bit. o Bắt đầu bằng việc copy khóa vào 4 từ đầu tiên. o Sau đó tạo quay vòng các từ mà phụ thuộc vào giá trị ở các vị trí trước và 4 vị trí sau: . 3 trong 4 trường hợp chỉ là XOR chúng cùng nhau. . Mỗi cái thứ 4 có S box kết hợp quay và XOR với hằng số trước đó, trước khi XOR cùng nhau. . Thiết kế chống các tấn công đã biết. Thuật toán sinh khóa vòng được mô tả trong 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 4 = 0) temp = Subword(RotWord (temp) XOR Rcon[i/4]; w[i] = w[i-4] XOR temp } } Trong đó o RotWord thực hiện dịch trái vòng quanh 1 byte trong từ đó. o Subword thực hiện thế byte trên hộp S box. o Kết quả các bước 1 và 2 được XOR với hằng số cho trước của 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 các thuật toán giải mã sử dụng mở rộng khóa theo thứ tự ngược lại nhưng thuật toán giải mã AES không giống thuật toán mã hóa. o Trước hết khẳng định rằng 4 bước trong mỗi vòng đều có thể nghịch đảo được. Như vậy ta sẽ có các phép toán ngược của các bước trong một vòng mã. o Do đó mỗi vòng ta thực hiện các bước theo thứ tự: dịch hàng ngược, thế byte ngược, cộng khóa vòng và trộn cột ngược. Trạng thái Các byte thế S 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ý do mở rộng khóa. Các tiêu chuẩn thiết kế bao gồm o Giả sử biết một phần khóa, khi đó không đủ để biết nhiều hơn, tức là các khóa con khác hoặc khóa nói chung. o Phép biến đổi nghịch đảo được, nhanh đối với nhiều kiểu CPU. o Sử dụng hằng số vòng để làm mất tính đối xứng. o Khuếch tán bit khóa thành khóa con cho các vòng. o Có đủ tính phi đối xứng để chống thám mã. o Đơn giản trong việc giải mã. Các khía cạnh cài đặt: o Có thể cài đặt hiệu quả trên CPU 32 bit, sử dụng từ 32 bit. o Có thể tính trước 4 bảng với 256 đầu vào. o Sau đó mỗi cột trong mỗi vòng có thể tính bằng cách tra 4 bảng và 4 XOR. o Cần 16 Kb để lưu các bảng để đẩy nhanh tốc độ tính toán. o Những nhà thiết kế tin tưởng rằng việc cài đặt rất hiệu quả này là yếu tố cơ bản trong 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 là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest. RC4 đơn giản, nhưng hiệu quả, có nhiều cỡ khóa và là mã bit dòng. Mã được 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 hiện hoán vị ngẫu nhiên cả 8 giá trị bit. Sử dụng hoán vị đó để khuấy thông tin đầu vào được xử lý từng byte. Sinh khóa RC4 Bắt đầu từ mảng S với biên độ: 0 255. Sau đó sử dụng khóa để xáo trộn đều thực sự. Mảng S sẽ tạo trạng thái trong của mã. Tổng quan RC4 S T S t Mã RC4 Mã tiếp tục trộn các giá trị của mảng. Dựa vào tổng của các cặp trộn để chọn giá trị khóa dòng từ hoán vị và XOR S[t] với byte tiếp theo của bản 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 toàn chống các tấn công đã biết, có một số thám mã, nhưng không thực tế. Mã cho kết quả rất phi tuyến và vì RC4 là mã dòng nên không được 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ã các block có kích thước cố định. Chẳng hạn DES mã các block 64 bit với khóa 56 bit cần phải có cách áp dụng vào thực tế vì các thông tin cần mã có kích thước tùy ý. Trước kia có 4 kiểu thao tác được định nghĩa cho DES theo chuẩn ANSI: ANSI X3.106-1983 Modes of Use. Bây giờ mở rộng thêm có 5 cách cho DES và chuẩn mã nâng cao (AES – Advanced Encryption Standards). Trong đó có kiểu áp dụng cho khối và có kiểu áp dụng cho mã dòng. Sau đây ta xem xét ba chế độ cơ bản. Sách mật mã điện tử (Electronic Code Book - ECB) o Mẫu tin được chia thành các khối độc lập, sau đó mã từng khối. o Mỗi khối là giá trị cần thay thế như dùng sách mã, do đó có tên như vậy. o Mỗi khối được mã độc lập với các mã khác Ci = DESK1(Pi). o Khi dùng: truyền an toàn từng giá trị riêng lẻ. o Nhược điểm của ECB: lặp trên bản mã sẽ nhận biết được việc lặp trên bản rõ, đặc biệt nếu dóng đúng khối và thường xảy ra với hình ảnh hoặc với bản tin mà thay đổi rất ít sẽ trở thành đối tượng để thám mã. o Do nhược điểm là các khối được mã độc lập; nên được sử dụng chủ yếu khi gửi dữ 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 được chia thành các khối, nhưng chúng được liên kết với nhau trong quá trình mã hoá. o Các block được sắp thành dãy, vì vậy có tên như vậy: o Sử dụng vectơ ban đầu IV để bắt đầu quá trình Ci = DESK1(Pi XOR Ci-1) C-1 = IV o Dùng khi: mã dữ liệu lớn và cho mục đích xác thực. IT201_Bai 2_v1.0011103219 31
- Bài 2: Mã đối xứng Ưu điểm của CBC o Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ, nên các khối bản mã giống nhau nói chung sẽ có các bản mã khác nhau. o Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối mã, nên có thể dùng khối cuối làm đặc trưng của cả thông điệp. Nhược điểm của CBC o Cần giá trị vectơ ban đầu IV được biết trước bởi người gửi và người nhận. Tuy nhiên nếu IV được gửi công khai, kẻ tấn công có thể thay đổi bit đầu tiên và thay đổi cả IV để bù trừ. Vậy IV cần phải có giá trị cố định trước hoặc mã hoá trong chế độ ECB và gửi trước phần còn lại của mẩu tin. o Chế độ mã CBC thực hiện chậm, vì khối sau phải chờ các khối trước thực hiện xong. o Lỗi ở các khối trước lan truyền sang các khối kế tiếp. Bộ đệm Ở cuối bản tin, để kiểm soát các block ngắn còn lại. Có thể bổ sung các giá trị không phải dữ liệu như NULL hoặc dùng bộ đệm cuối với số byte đếm kích thước của nó. Ví dụ [ b1 b2 b3 0 0 0 0 5] <- 3 data bytes, vậy có 5 bytes dành cho đệm và đếm. Mã phản hồi ngược (Cipher Feed Back - CFB) Bản tin coi như dòng các bit, bổ sung vào đầu ra của mã khối. Kết quả phản hồi trở lại cho giai đoạn tiếp theo, vì vậy có tên như vậy. Nói chung cho phép số bit phản hồi là 1, 8, 64, hoặc tuỳ ý: ký hiệu tương ứng là CFB1, CFB8, CFB64, Thường hiệu quả sử dụng cả 64 bit Ci = Pi XOR DESK1(Ci-1) C-1 = IV 32 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng Được dùng cho mã dữ liệu dòng và mục đích xác thực CM-1 P1 PM C CM C1 2 (a) Mã hóa P P P 1 2 (b)Giải mã M Ưu điểm của mã phản hồi ngược o Được dùng khi dữ liệu đến theo byte/bit, chế độ dòng thường gặp nhất; o Lặp trên bản rõ không tạo lặp trên bản mã. Nhược điểm của mã phản hồi ngược o Hạn chế là cần ngăn chuồng khi mã khối sau mỗi n bit để chỉ cho phép lỗi lan ra một vài block sau đó. o Mã/giải mã chậm, do các khối sau phải chờ các khối trước thực hiện xong. 2.6.2. Các vị trí đặt mã Yêu cầu: mã đối xứng truyền thống được dùng để giữ bí mật bản tin. Xét kịch bản tiêu biểu o Các máy trạm ở một mạng LAN truy cập vào các máy trạm và máy chủ ở một mạng LAN khác. o Các mạng được kết nối sử dụng chuyển mạch và đường truyền (Switches/Routers). o Với các đường truyền vật lý hoặc liên kết vô tuyến/vệ tinh. Xét việc tấn công và cách đặt mã trong kịch bản trên o Điều tra từ một máy trạm khác; o Sử dụng kết nối đến mạng hoặc máy chủ để tìm kiếm thông tin; o Sử dụng kết nối ngoài để xâm nhập và điều tra; o Theo dõi và/hoặc làm thay đổi việc truyền ở kết nối bên ngoài. IT201_Bai 2_v1.0011103219 33
- Bài 2: Mã đối xứng Có hai phương pháp chính xác định chỗ đặt mã: Mã kết nối (Link Encryption) o Mã xảy ra độc lập trên mỗi kết nối. o Suy ra cần phải giải mã truyền tin giữa các kết nối. o Đòi hỏi nhiều thiết bị và các cặp khóa. Mã đầu cuối (End to end Encryption): o Mã xảy ra giữa điểm gốc và điểm đích. o Cần thiết bị tại mỗi đầu cuối và khóa chia sẻ. Thám mã thông tin truyền Khi dùng mã đầu cuối cần phải để thông tin đầu của nó rõ ràng, vì như vậy mạng mới định hướng đúng đắn thông tin. Vì vậy tuy nội dung tin được bảo vệ, nhưng khuôn dòng tin truyền thì không. Tốt nhất là muốn bí mật cả hai. Mã đầu cuối bảo vệ thông tin nội dung trên cả đường truyền và cung cấp danh tính. Còn mã kết nối bảo vệ luồng truyền khỏi việc theo dõi. Vị trí mã Có thể đặt mã ở nhiều tầng khác nhau trong mô hình Hệ thống truyền thông mở OSI. o Mã kết nối thực hiện ở tầng 1 hoặc 2. o Mã đầu cuối có thể thực hiện ở tầng 3, 4, 6, 7. o Dịch chuyển đến tầng càng cao, càng ít thông tin được mã hóa, nhưng càng đảm bảo tính riêng tư hơn do người sử dụng giữ bí mật được khóa, tuy nhiên phức tạp hơn với nhiều đối tượng và khóa. Thám mã thông tin truyền. Thám mã là theo dõi dòng thông tin truyền giữa hai đối tác: o Được dùng cả trong quân sự và thương mại; o Có thể được dùng để tạo kênh giám sát; o Mã kết nối che lấp chi tiết đầu tin, nhưng xét trên toàn mạng và ở các đầu cuối nó vẫn nhìn thấy được. o Bộ đệm truyền có thể che được dòng tin, nhưng với phải truyền liên tục với tần suất truyền hầu như không đổi theo thời gian. 34 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng TÓM LƯỢC CUỐI BÀI Sau khi học xong bài này, anh/chị cần nắm được: Khái niệm mã đối xứng; Cấu trúc mã khối Fiestel; Chuẩn mã dữ liệu DES và các chế độ mã; Triple DES và chuẩn mã nâng cao ; Mã dòng; Chỗ đặt mã: mã link và mã đầu cuối; Phân phối khóa: khóa chủ và khóa phiên. IT201_Bai 2_v1.0011103219 35
- Bài 2: Mã đối xứng CÂU HỎI TỰ LUẬN 1. Các khái niệm cơ bản của mã đối xứng là gì? 2. Hai thuật toán cơ bản nào được dùng trong mã hóa? Các thuật toán như thế nào là mạnh? 3. Hai kiểu thao tác cơ bản nào được dùng trong các thuật toán mã hoá? 4. Có bao nhiêu khóa cần cho hai người để trao đổi thông qua mã đối xứng? Không gian khóa như thế nào là tốt? Làm sao để gây khó khăn cho việc thám mã dò tìm khóa? 5. Sự khác biệt giữa mã khối và mã dòng. 6. Nêu cấu trúc mã khối Fiestel. 7. Mô tả các đặc trưng của DES và nêu các thao tác trong một vòng của mã DES. 8. Mã hoá 3DES là gì? Ưu điểm và nhược điểm của 3 DES. 9. Mô tả các đặc trưng của AES và nêu các thao tác trong một vòng của mã AES. 10. Nêu các chế độ thao tác mã khối, công dụng, ưu và nhược điểm của từng chế độ đó. 11. Có chế độ nào trong mã khối có thể được dùng cho mã dòng được không? Hãy mô tả cách dùng. 12. Mô tả thao tác của mã dòng RC4. 13. Nêu công dụng và nơi đặt mã đầu cuối. 14. Nêu công dụng và nơi đặt mã kết nối. 15. Theo bạn, khi hai người sử dụng dùng chung khóa và mã đối xứng trao đổi thông tin với nhau, có thể có biện pháp gì để chống từ chối và tạo chữ ký điện tử để tách vai trò hai người đó không? BÀI TẬP TRẮC NGHIỆM 1. Mã Caesar là mã (A) phép thế trên nhiều bảng chữ; (B) phép thế trên một bảng chữ; (C) phép dịch chuyển, tức là đảo chữ trên bản rõ để nhận được bản mã; (D) phép thế kết hợp với dịch chuyển. 2. Mã Vigenere là mã (A) phép thế trên một bảng chữ; (B) phép thế trên nhiều bảng chữ; (C) phép dịch chuyển, tức là đảo chữ trên bản rõ để nhận được bản mã; (D) phép thế kết hợp với dịch chuyển. 3. Mã DES có khối dữ liệu, khóa (bit) và số vòng tương ứng như sau (A) 128, 56 và 16; (B) 64, 64 và 16; (C) 64, 56 và 16; (D) 64, 56 và 12. 4. Trong sơ đồ sinh khóa của DES từ khóa chính 56 bit sinh (A) 8 khóa con mỗi khóa 48 bit, mỗi khóa dùng cho 1 vòng; 36 IT201_Bai 2_v1.0011103219
- Bài 2: Mã đối xứng (B) 16 khóa con mỗi khóa 32 bit, mỗi khóa dùng cho 1 vòng; (C) 12 khóa con mỗi khóa 32 bit, mỗi khóa dùng cho 1 vòng; (D) 16 khóa con mỗi khóa 48 bit, mỗi khóa dùng cho 1 vòng . 5. Một vòng của DES không thực hiện thao tác nào? (A) Hoán vị đầu và cuối ngược nhau; (B) Đổi vị trí hai nửa, nửa trái mới giữ nguyên và xử lý nửa phải; (C) Không tách 2 nửa, xử lý cả khối 64 bit ; (D) Mở rộng nửa phải 32 bit thành 4 bit, cộng với khóa con, thế qua 8 hộp box. 6. Trong thuật toán mã DES điều khẳng định nào là đúng? (A) Tám hộp S cố định và hoán vị ban đầu phụ thuộc vào khóa; (B) Tám hộp S phụ thuộc vào khóa và hoán vị ban đầu là cố định; (C) Tám hộp S và hoán vị ban đầu phụ thuộc vào khóa; (D) Tám hộp S và hoán vị ban đầu là cố định. 7. Các chế độ làm việc của DES. Khẳng định nào sau đây là sai (A) ECB: khối mã trước quay vòng tác động vào khối mã sau; (B) CBC: khối mã trước cộng nhị phân với khối bản tin sau rồi mã? (C) CFB: bản tin như dòng bit cộng nhị phân đầu ra của mã, rồi phản hồi; (D) OFB: đầu ra mã phản hồi và cộng nhị phân với dòng bit của bản tin. 8. Với chuẩn mã nâng cao AES, điều khẳng định nào sau đây là đúng? (A) 128 bit dữ liệu, 128 bit khóa và 11 vòng; (B) 128 bit dữ liệu, 192 bit khóa và 13 vòng; (C) 128 bit dữ liệu, 256 bit khóa và 9 vòng; (D) 128 bit dữ liệu, 128/192/256 bit khóa và 9/11/13 vòng. 9. Một vòng mã AES không thực hiện thao tác nào? (A) Khối dữ liệu 128 bit chia thành 16 byte bố trí thành 4 hàng, 4 cột, thực hiện phép thế byte; (B) Tách thành 2 nửa, mỗi nửa 64 bit, đảo vị trí 2 nửa; (C) Chia dữ liệu thành 4 hàng, mỗi hàng dịch qua phải số vị trí tùy theo số thứ tự của hàng; (D) Trộn cột dựa vào phép nhân với một ma trận, rồi cộng với khóa con của vòng. 10. Số giả ngẫu nhiên được ứng dụng nhiều, điều gì sau đây là không đúng? (A) Làm nhãn đặc trưng cho bản tin; (B) Tạo khóa phiên dùng chung giữa hai người sử dụng; (C) Sinh khóa chung cộng cơ số 2 với dòng dữ liệu trong cơ chế mã và giải mã dòng; (D) Sinh ra số nguyên tố dùng làm khóa. 11. Trong chế độ ECB, nếu có lỗi ở bản mã truyền đi, chỉ có khối bản rõ đó bị ảnh hưởng. Tuy nhiên trong chế độ CBC lỗi này sẽ lan truyền. Chẳng hạn lỗi sinh ra ở khối mã thứ nhất, khi đó nó sẽ tác động đến bao nhiêu khối mã? (A) Một khối mã ngay sau đó; IT201_Bai 2_v1.0011103219 37
- Bài 2: Mã đối xứng (B) Không tác động đến khối mã sau đó; (C) Tác động đến mọi khối mã sau khối có lỗi; (D) Chỉ tác động đến khối mã cuối cùng. 12. Nếu lỗi sinh ra trong quá trình truyền một ký tự 8 bit của bản mã trong chế độ OFB, lỗi này lan truyền như thế nào? (A) Một khối mã ngay sau đó; (B) Không tác động đến khối mã sau đó; (C) Tác động đến mọi khối mã sau khối có lỗi; (D) Chỉ tác động đến khối mã cuối cùng. 13. Giả sử một người đề xuất cách sau đây để khẳng định các bạn gồm hai người đều sở hữu cùng một khóa mật. Bạn tạo một xâu bit ngẫu nhiên có độ dài bằng khóa, XOR nó với khóa và gửi kết quả trên kênh. Đối tác của bạn XOR block đến với cùng khóa của bạn và gửi lại. Bạn kiểm tra xem xâu bạn nhận có phải là dãy bit ngẫu nhiên gốc không, bạn sẽ kiểm chứng được đối tác của bạn có cùng khóa mật không, chứ bạn không bao giờ truyền khóa đi. Trong sơ đồ đó có khiếm khuyết nào? (A) Nếu biết xâu gửi đến và xâu trả lời, kẻ thám mã sẽ thực hiện phép XOR hai xâu và nhận được khóa; (B) Xác thực tốt người nhận có cùng khóa mật với mình và an toàn; (C) Không xác thực được người có cùng khóa; (D) Chỉ cần thám mã được một trong 2 block truyền đi hoặc truyền lại là có thể biết được khóa mật. 14. Mã đối xứng đầu cuối đặt ở máy người gửi và máy người nhận chia sẻ khóa dùng chung, làm nhiệm vụ bảo mật nội dung thông điệp trao đổi, không đặt ở tầng nào sau đây? (A) Tầng vật lý 1 và tầng liên kết dữ liệu 2; (B) Tầng mạng 3; (C) Tầng giao vận 4; (D) Tầng trình diễn 6 và tầng ứng dụng 7. 15. Mã kết nối bảo mật thông tin trên đường truyền, không đặt ở tầng nào sau đây? (A) Tầng vật lý 1; (B) Tầng liên kết dữ liệu 2; (C) Tầng giao vận 4; (D) Tầng ứng dụng 7. 38 IT201_Bai 2_v1.0011103219