I. MÃ HÓA ĐỐI XỨNG
3. Mô hình mã hóa đối xứng
Một hình thức mã hoá đối xứng điển hình có năm bộ phận hợp thành (hình 2.1):
Plaintext:Bản rõ, đọc được hoặc làdữ liệu đầu vào cho thuật toán mã hoá.
Thuật toán mã hóa:Thi hành các thay thế và dịch chuyển một cách có hệ thống trên plaintext.
Mật khóa: Khóa bí mật, cũng là đầu vào của thuật toán mã hóa. Mật khóa mang một giá trị độc lập với plaintext và thuật toán. Thuật toán sẽ cho kết quả khác nhau tùy thuộc vào nội dung mậtkhóa đã sử dụng. Phép thay thế, chuyển dịch đúng đắn của thuật toán tùy thuộc vào mật khóa.
Ciphertext:Bản mờ, là tài liệu đã được biến đổi,là đầu ra của thuật toán mã hoá. Nội dung của nóphụ thuộc vào plaintext và mật khóa. Cho trước một thông điệp, hai mật khóa khác nhau sẽ đưa ra hai ciphertext khác nhau. Ciphertext là một thông điệp mang một dáng vẻ ngẫu nhiên, thấy được nhưng không thể hiểu nội dung.
thuật toán mã hóa. Nó nhận ciphertext và mật khóa,phục hồi trở lại văn bản gốc. Có hai đòi hỏi an ninh trong sử dụng mã hóa qui ước:
Chúng ta cần một thuật toán mã hóa mạnh. Ít nhất, thuật toán mong muốn phải bảo đảm được rằng:cho dù kẻ biết được thuật toán và kể cả khi hắn đã truy cậpđược một hay nhiều đoạn ciphertext cũng không thể giải mã hay tìm được mật khóa. Đòi hỏi này còn được phát biểu đanh thép hơn: Địch thủ không thể giải mã được ciphertext, không thể khám phá ra mật khóa kể cả khi hắn có chiếm được một số ciphertext cùng với một số plaintext đã sinh ra ciphertext.
Người gửi và người nhận phải nhận có được các bản sao mật khóa một cách an toàn và phải giữ chúng bí mật. Nếu kẻ nào đó khám phá được mật khóa và biết thuật toán, tất cả giao dịch sử dụng khóa này sẽ bị phơi bày.
Chúng ta giả thiết rằng không thể giải mã một thông điệp mà chỉdựa trên ciphertext cộng với các kiến thức về thuật toán mã hóa và giải mã. Nói cách khác, chúng ta không cần giữ bí mật thuật toán, mà chỉ cần giữ bí mật đối với mật khóa. Đặc điểm này của mã hóa đối xứng làm cho nó được sử dụng rộng rãi. Thực tế, không cần giữ kín thuật toán, có nghĩa rằng, các nhà sản xuất có thể được phép phát triển các chip thi hành thuật toán mã hóa và giải mã với giá thành thấp. Các chip này đượccung cấp rộng rãi và phối hợp với các sản phẩm khác. Với việc sử dụng mã hóa đối xứng, nguyên tắc bảo mật là duy trì bí mật củamật khóa.
Hãy tiếp cận gần hơn nữa vào bản chất của từng thành phần trong mô hình mã hóa đối xứng, qua hình 2.2. Một nguồn trong hệ thống, cung cấp một plaintext X, vớiX = [X1, X2, ..., XM]. M phần tử của X là các ký tự trong một bảng chữ cái hữu hạn nào đó, chẳng hạn, nguồn này dùngbảng chữ cái tiếng Anh với 26 chữ hoa. Ngày nay, bảng chữ cái nhị phân {0, 1} thường được sử dụng. Để mã hóa, một mật khóa K, có dạng K = [K1, K2, ..., KJ] được sinh ra. Nếu khóa này được sinh ra bởi nguồn phát thông điệp, thì nó cũng phải đượcgiao tới đích bằng một kênh bảo mật nào đó. Một sự lựa chọn khác là, một bên tin cậy thứ ba sẽ sinh mật khóa và giao nó cho cả hai bên giao dịch là nguồn và đích một cách bí mật.
Lấy thông điệp X và mật khóa K làm đầu vào, thuật toán mã hóa thiết lập ciphertext,Y, màY = [Y1, Y2, ..., YN]. Chúng ta có thể viết quá trình mã hóa này theo
dạng Y = E(K, X)
Hình 2.2 Mô hình mã hóa qui ước
Ký hiệu này biểu thị rằng, Y được tạo ra bằng cách sử dụng thuật toán mã hóa E là hàm nhận các đối số gồm plaintext X và mật khóa K.Ởđầu kia, người nhận mong muốn, với việc sở hữu mật khóa, họ đủ khả năng nghịch đảo quá trình mã hóa để nhận lại được thông điệp gốc
X =D(K , X)
Một kẻ bẻ mã, nếu có chiếm được Y – nhưng không biết K hay X – sẽ cố mọi cách để có được K hay X, hoặc cả hai. Giả sử, hắn biết thuật toán mã hóa (E) và giải mã (D); vàgiả sử, hắn chỉ quan tâm đến mỗi thông điệp này, thì mọi cố gắng sẽ dành cho việc khôi phục X bằng cách tạo ra một plaintext dự đoán, X. Nhưng thường không dừng lại ở đó, hắn cũng rất quan tâm đến khả năng đọc được các thông điệp sau này nữa, nên hắn sẽ cố gắng phục hồi cho được mật khóa, và có thể y sẽ tạo ra được một khóa dự đoán, K.
3.1 Kỹ thuật mật mã
Các hệ thống mã hóa bao giờ cũng đặc trưng bởi ba yếu tố độc lập:
• Phương pháp biến đổi plaintext sang ciphertext: Tất cả các thuật toán mã hóa đều dựa trên hai nguyên tắc cơ bản: thay thế, mỗi phần tử của plaintext (bit, ký tự, hay nhóm các bit hoặc nhóm các ký tự) được ánh xạ đến phần tử khác; và, hoán vị, các phần tử trong plaintext được sắp xếp lại. Yêu cầu cơ bản là không mất
thông tin (tức là, tất cả các hành động đều phục hồi được). Hầu hết các hệ thống, thường gọi là các hệ thống sản xuất, bao gồm nhiều giai đoạn thay thế và hoán vị.
• Số mật khóa sử dụng: Nếu cả người gửi và người nhận sử dụng cùng một mật khóa, thì hệ thống gọi là mã hóa đối xứng, khóa đơn, mật khóa, hay mã hóa qui ước. Nếu người gửi và người nhận dùng các khóa khác nhau, thì hệ thống được gọi là bất đối xứng, hai khóa, hay mã hóa khóa-công-khai.
• Cách thức gia công plaintext: Một tiến trình mã hóakhối (block cipher) thì đầu vào cho mỗi lần thực hiện gồm một khối các phần tử, và cũng đưa ra một khối mật mã tương ứng. Một tiến trình mã hóa luồng (stream cipher) có đầu vào liên tục, xử lý mỗi lần một phần tử và cũng tương ứngkết xuất một phần tử.
3.2 Phân tích giải mã
Nói chung, mục tiêu tấn công vào hệ thống mã hóa là cố chiếm được mật khóa, từ đó dễ dàng phục hồi plaintext. Có hai phương pháp chung để tấn công một hệ thống mã hóa quy ước:
• Phân tích mã: Các tấn công giải mã dựa trên cấu trúc tự nhiên của thuật toán, cộng với một số kiến thức nào đó về các tính chất chung của plaintext hay dựa trên các cặp plaintext-ciphertext mẫu. Kiểu tấn công này khai thác đặc trưng của thuật toán để cố suy luận plaintext cụ thể hay suy luận ra mật khóa đang dùng.
• Tấn công thô bạo brute-force: Kẻ tấn công thử tất cả các khả năng có thể của mật khóa trên từng phần của ciphertext cho đến khi hắn đạt được điều gì đó có thể nhận thức được. Trung bình, để thành công, một nửa số khả năng khóa phải được thử.
Nếu một trong hai cách tấn công trên thành công trong việc suy luận mật khóa, thì hậu quả tất yếu là: tất cả các phần còn lại của thông điệp và những thông điệp tương lai vẫn dùng mật khóa đó sẽ lộ diện.Trước hết, chúng ta xem xét vấn đề phân tich mã, rồi sẽ thảo luận các tấn công brute-force.
Bảng 2.1 Các kiểu tấn công vào các thông điệp mã hóa
Kiểu tấn công Thông tin cần để bẻ mã
Chỉ biết ciphertext Thuật toán mã hóa
Ciphertext Đã biết plaintext
Thuật toán mã hóa Ciphertext
Một hay nhiều cặp plaintext-ciphertext cùng với mật khóa
Plaintext lựa chọn
Thuật toán mã hóa Ciphertext
Thông điệp dưới dạng plaintext được chọn bởi kẻ bẻ mã, cùng với ciphertext tương ứng
Ciphertext lựa chọn
Thuật toán mã hóa Ciphertext
Ciphertext thường gặp chọn bởi kẻ bẻ mã, cùng với plaintext đã được giải mã tương ứng
Văn bản lựa chọn
Thuật toán mã hóa Ciphertext
Plaintext được chọn trước bởi kẻ bẻ mã, cùng với ciphertext của nó đã sinh từ cùng khoá
Các ciphertext thường gặp lựa chọn bởi kẻ bẻ mã, cùng với plaintext đã được giải mã tương ứng
Bảng 2.1 tóm tắt các kiểu tấn công bẻ mã dựa trên một lượng thông tin thu được bởi kẻ phá mã. Khóbẻ mãnhất là khichỉ có ciphertext. Trong một số trường hợp, kể cả thuật toán cũng không biết, nhưng chúng ta vẫn cứ giả thiết rằng đối phương biết thuật toán mã hóa đã dùng. Một khả năng tấn công trong các tình huống này là phương pháp brute-force, thử tất cả khả năng của mật khóa. Nếu kích thước khóa rất lớn, kiểu tấn công này sẽ không thực tế. Do đó, đối phương phải dựa vào phân tích ciphertext, thông thường là áp dụng các hình thức kiểm tra thống kê cho nó. Để sử dụng phương pháp này, đối phương phải có một vài ý tưởngmơ hồ về plaintext đang bị che giấu, chẳng hạn như biết thông điệp có dạng tiếng Anh, hay Pháp, một tập tin EXE, một tập tin nguồn Java, một tập tin tài chính v.v…
Chống lại tấn công chỉ có ciphertext là dễ dàng nhất, bởi vì đối phương có ít thông tin nhất. Tuy nhiên trong nhiều trường hợp, kẻbẻ mã có nhiều thông tin hơn thế. Kẻ giải mã có thể đãbiết được một hay nhiều thông điệp dạng plaintext cùng với các bản mã hóa tương ứng của chúng. Hoặc, kẻ giải mã có thể biết chút ít về khuôn dạng thông điệp. Chẳng hạn, một tập tin được mã hóa dưới dạng Postscript thì luôn bắt đầu với cùng một khuôn mẫu, hoặc cũng rất có thể là một header tiêu chuẩn, hay một băng quảng cáo cho một giao dịch ngân hàng điện tử và, v.v… Tất cả các ví dụ loại này gọi là tấn côngđã biết plaintext. Với kiến thức này, kẻ giải mã rất có thể suy luận mật khóa dựa trên cơ sở của phương pháp mã hóa plaintext đang sử dụng.
Quan hệ mật thiết với tấn công đã biết plaintext, là một kiểu gọi là tấn công
từ chắc chắn. Nếu kẻ phân tích mã làm việc với một bài văn xuôi chung chung, hắn ta có thể biết chút kiến thức nào đó trong thông điệp. Rồi bằng cách này hay cách khác, vài phần của thông điệp cũng có thể bị hé lộ. Ví dụ, nếu toàn bộ tập tin tài chính được truyền đi, đối phương có thể biết chắc chắn vị trí sắp đặt của các từ khóa trong header của tập tin. Hoặc như trong một ví dụ khác, mã nguồn của một chương trình phát triển bởi công ty X, rất có thể nó bao gồm các phát biểu về tác quyền ở một số vị trí tiêu chuẩn.
Nếu kẻ giải mã xâm nhập được vào hệ thống nguồn để chèn vào hệ thống một thông điệp mà hắn ta đã chuẩn bị sẵn, thì một tấn công plaintext-lựa chọn là có thể xảy ra. Một ví dụ về thủđoạn này là giải mã vi sai, sẽ được giới thiệu đến trong Chương 3. Một cách tổng quát, nếu kẻ giải mã có khả năng lựa chọn thông điệp và gài nó vào văn bản mã hóa, thì sau đó, tội phạm có thể lấy nó làm mẫu phân tích và khám phá ra cấu trúc của mật khóa.
Bảng 2.1 liệt kê hai kiểu tấn công khác nữa là ciphertext-lựa chọn và văn bản-lựa chọn. Chúng ít được sử dụng nhưng không có nghĩa là không có thể.
Chỉ những thuật toán yếu kém là không chịu đựng được tấn công chỉ có-
ciphertext. Thông thường, một thuật toán mã hóa được thiết kế để chống lại tấn công đã biết-plaintext.
Hai khái niệm nữa cũng đáng chú ý vào lúc này. Một phương thức mã hóa là
an toàn tuyệt đối nếu ciphertext được sinh ra bởi phương thức không chứa đầy đủ thông tin để xác định tính duy nhất tương ứng đối với plaintext, không cần biết bao nhiêu ciphertext được sinh ra. Tức là, không cầnquan tâm đến thời gian mà đối phương có, không thể giải mã ciphertext, đơn giản bởi vì các thông tin hắn mong muốn không có mặt ở đó. Loại trừ một phương thức gọi là đệm một lần (one-time pad), không có một phương thức nào là an toàn tuyệt đối. Cho nên, tất cả người dùng thuật toán mã hóa đều phấn đấu vì một thuật toán nào đó mà nóđạt được một hoặc cả hai tiêu chí dưới đây:
•Chi phí phá mã vượt quá giá trị của thông tin mã hóa.
•Thời gian đòi hỏi cho phá mã vượt quá thời gian có ích của thông tin.
Một phương thức mã hóa được nói là an toàn tính toán nếu đạt được một
hoặc cả hai tiêu chí nêu trên. Sự cản trở bẻ mãlà dựa trên việc rất khó xác định được những nỗ lực cần có để giải mã thành công.
Bảng 2.2 Thời gian cần để dò tìm khóa theo thuật toán vét cạn
Kích thước khóa (bit)
Số lượng khóa tốiđa
Thời gian cầncho máy 1 phép giải mã /µs
Thời gian cần cho máy 106giải mã /µs 32 232=4,3 × 109 231µs= 35,8 phút 2,15 milli giây 56 256=7,2 × 1016 255µs= 1142 năm 10,01 giờ 128 2128= 3,4 × 1038 2127µs = 5,4 × 1024 năm 5,4 × 1018năm 168 2168= 3,7 × 1050 2167µs = 5,9 × 1036 năm 5.9 × 1030 năm 26 ký tự(hoán vị) 26! = 4 × 1026 2 × 1026µs =6,4 × 1012 năm 6,4 × 106 năm
Tất cả các hình thức bẻ mã đối với mã hóa đối xứng đều được thiết kế để khai thác một thực tế rằng dấu vết của cấu trúc hay hình mẫu plaintext vẫn còn tồn tại đâu đó và có thể nhận thấy được trong ciphertext. Điều này sẽ trở nên rõ ràng khi chúng ta khảo sát các kỹ thuật mã hóa đối xứng trong chương này. Chúng ta sẽ thấy
trong Phần II rằng, người bẻ mã các mật mã khóa-công-khai sẽ tiến hành từ các giả thuyết khác nhau của các tính chất toán trên cặp khóa, từ đó có thể suy luận từ khóa này ra khóa kia.
Một tấn công thô bạo brute-force bao gồm việc thử mọi khóa có thể cho đến khi thu được bản dịch đọc được từ ciphertext. Trung bình, nửa số khóa phải được thử. Bảng 2.2 trình bày lượng thời gian cần thiết cho một số không gian khóa khác nhau. Các kết quả minh họa bốn kích thước khóa nhị phân. Kích thước khóa 56 bit được dùng cho thuật toán DES (Data Encryption Standard), khóa 168 bit cho 3DES. Kích thước nhỏ nhất cho AES(Advanced Encryption Standard) là 128 bit. Các kết quả cũng minh họa cho cái gọi là các mã thay thế mà nósử dụng một khóa trong 26-ký tự (sẽ bàn đến sau), trong đó, tất cả các hoán vị có thể từ 26 ký tự sẽ đáp ứng như các khóa. Với mỗi kích thước khóa, các kết quả minh họa đều giả thiết rằng: sẽ mất 1 s để thực thi một bước giải mã, là một thời gian hợp lý để ước tính đối với các cỗ máy giải mã ngày nay. Bằng việc sử dụng các tổ chức vi xử lý song song, rất có thể tốc độ xử lý giải mã được rút ngắn đáng kể. Cột cuối cùng của bảng 2.2 xem xét các kết quả đối với một hệ thống có thể xử lý 1 triệu khóa trên một mili giây. Như bạn thấy, ở cấp độ thi hành này, DES không còn được coi là an toàn tính toán nữa.