CHƯƠNG 1: TỔNG QUAN VỀ HỆ MẬT MÃ DÒNG VÀ MÃ HÓA CÓ XÁC THỰC Chương này trình bày những kiến thức tổng quan về hệ mật mã dòng và mã hóa có xác thực bao gồm: tổng quan về hệ mã dòng, khái niệm về mã hóa có xác thực, các thành phần và cấu trúc chung của mã hóa có xác thực và mã hóa có xác thực với dữ liệu liên kết. Hệ mật mã dòng 1. Định nghĩa về hệ mật mã dòng Hệ mật mã dòng là hệ mã mà trong đó mỗi ký tự của bản rõ được mã hóa tách biệt [1]. Trong hệ mã dòng, một dòng khóa z = z1z2.
được sinh ra và được dùng để mã hóa một xâu bản rõ R = r1r2. theo quy tắc sau: M = m1m2. Sơ đồ mã hóa của hệ mã dòng Một hệ mã dòng đồng bộ được định nghĩa như sau: Định nghĩa: Một hệ mã dòng đồng bộ là một bộ (R,M,K, L,E,D) thỏa mãn các điều kiện sau: 1. R là một tập hữu hạn các bản rõ có thể.
M là tập hữu hạn các bản mã có thể. K là tập hữu hạn các khóa (mầm khóa) có thể. L là tập hữu hạn các ký tự của dòng khóa. g là bộ tạo dòng khóa.
Với đầu vào là khóa K, g sẽ tạo một dòng khóa z = z1z2. Với mỗi dòng khóa z = z1z2. có một quy tắc mã Ez E và một quy tắc giải mã Dz D tương ứng. Ez :R → M và Dz : M →R là các hàm thỏa mãn Dz (Ez (R)) = R với mọi bản rõ R R.
Một số đặc điểm của hệ mã dòng Trong hệ mã dòng, phép lập mã và phép dịch mã là các phép biến đổi đơn giản và tuyến tính theo dòng khóa được sử dụng [1]. Hệ mã dòng có một số đặc điểm sau: - Phép lập mã và phép dịch mã được thực hiện trên cùng một dòng khóa. - Độ dài bản rõ và độ dài bản mã là như nhau và bằng độ dài dòng khóa. - Biết bản rõ và bản mã dễ dàng tính ra dòng khóa tương ứng.
- Độ bảo mật của hệ mã dòng phụ thuộc vào độ bảo mật của khóa. - Nếu là khóa ngẫu nhiên và dùng một lần thì hệ mã dòng có độ bảo mật cao nhất. - Một hệ mã dòng được gọi là tuần hoàn với chu kỳ d nếu zi+d = zi với mọi số nguyên i 1. - Trong hệ mã dòng, bảng chữ cái rõ, bảng chữ cái mã, và bảng chữ cái khóa thường được mô tả trong bộ chữ nhị phân {0,1}, tức là R = M = L = Z2.
Trong trường hợp này, phép lập mã và dịch mã là phép cộng modulo 2: Ez (r) = (r + z)mod 2 và Dz (m) = (m + z) mod 2. zi zi mi mi ri Kênh không ri an toàn Hình 1. Sơ đồ mã hóa và giải mã với hệ mã dòng. Phân loại mã dòng -Hệ mã dòng đồng bộ: là hệ mã dòng mà dòng khóa được sinh ra không phụ thuộc vào xâu bản rõ.
Tức là dòng khóa được sinh ra từ hàm của mầm khóa S. Hệ mã dòng này có ưu điểm là không có hiệu ứng lan truyền lỗi, mỗi bit lỗi khi truyền sẽ dẫn đến sai lệch chỉ một bit bản mã khi dịch. Hơn nữa, hệ mã này còn bảo vệ khỏi việc chèn, xóa hay dùng lại các ký tự của bản mã, các thao tác này sẽ làm mất đồng bộ và ngay lập tức sẽ bị phát hiện ở bên nhận [1]. - Hệ mã dòng tự đồng bộ: là hệ mã dòng mà mỗi phần tử của dòng khóa zi phụ thuộc vào một phần tử rõ hoặc các phần tử rõ trước đó ( r1r2., ri−1 và/hoặc m1m2 ., mi−1 ) và khóa K.
Hệ mã dòng này có nhược điểm là lan truyền các lỗi. Hơn nữa, rất khó để phát hiện ra việc chèn, xóa hay dùng lại các ký tự của bản mã, nếu phát hiện được thì cũng không dịch đúng bản mã. - Hệ mã dòng với khóa đệm dùng một lần (one-time-pad): là hệ mã dòng với khóa được chọn ngẫu nhiên và không dùng lại. Nguyên lý cơ bản của hệ mật khóa ngẫu nhiên dùng một lần là đảm bảo tính độc lập thống kê giữa bản rõ và bản mã bằng cách sử dụng dãy khóa ngẫu nhiên đúng.
Một hệ mật được gọi là có độ mật hoàn thiện (hay còn gọi là có độ an toàn vô điều kiện) nếu thông tin tương hỗ giữa bản rõ và bản mã tương ứng là bằng không, độc lập với độ dài của bản rõ đó. Khi nhận được bản mã, thám mã không thể suy diễn bất kỳ thông tin gì về bản rõ được mã hóa, mà vẫn chỉ có phân bố xác suất tiên nghiệm trên tập các bản rõ có thể. Hệ mật khóa ngẫu nhiên dùng một lần có độ mật hoàn thiện. Tuy nhiên, dãy khóa ngẫu nhiên sử dụng trong hệ mã một lần cần phải tạo ra trước và phân phối trước tới cả người gửi và người nhận.
Đây là vẫn đề rất khó trong thực tế sử dụng, đặc biệt là trong các hệ thống tự động hóa. Trong thực tế không thể có được dãy ngẫu nhiên lý tưởng, điều đó dẫn đến nghiên cứu các phương pháp tạo dãy gần ngẫu nhiên, giả ngẫu nhiên. Đây 7 là cách tiếp cận tuy có làm giảm đi độ bảo mật của hệ mã dòng nhưng lại làm cho quá trình sinh khóa và phân phối khóa dễ dàng với khối lượng lớn tùy ý. Việc sinh khóa giả ngẫu nhiên đòi hỏi phải thỏa mãn về tốc độ sinh khóa, và các tiêu chí về độ bảo mật.
Khóa giả ngẫu nhiên được sinh ra từ một đoạn mầm khóa và một thuật toán sinh khóa phải thỏa mãn tính chất sau: - Dù cho mã thám biết mọi điều trừ mầm khóa thì cũng không đồng bộ được dòng khóa dịch mã để tìm ra bản rõ. - Biết những đoạn hoặc phần khóa rời rạc không đủ khả năng sinh lại được cả dòng khóa trừ khi biết mầm khóa. Việc sử dụng khóa giả ngẫu nhiên sẽ rất thuận lợi đối với những máy mã hoặc những hệ thống mật mã tự động cần khối lượng khóa lớn với tốc độ sinh khóa nhanh. Tuy nhiên, do sử dụng các quy luật toán học để sinh khóa nên độ bảo mật sẽ bị ảnh hưởng từ quan điểm đại số và độ phức tạp tính toán.
Mặt khác, dãy khóa giả ngẫu nhiên phải có đủ các tính chất ngẫu nhiên của dãy ngẫu nhiên. Đây là những vấn đề lớn đang được nghiên cứu nhằm làm cho hệ mã dòng có độ bảo mật và năng suất thực hiện cao nhất để đáp ứng yêu cầu thực tế ngày càng cao hiện nay. Khái niệm Mã hóa có xác thực là một dạng mã hóa đối xứng có mục tiêu bảo vệ đồng thời tính bí mật, xác thực và toàn vẹn cho dữ liệu [3]. Ví dụ: Một bác sĩ muốn gửi thông tin tình trạng bệnh cho bệnh nhân là Alice.
Trong trường hợp này họ muốn cả sự riêng tư và xác thực. - Cả hai đều muốn thông tin tình trạng bệnh của Alice được giữ bí mật để đảm bảo riêng tư. - Alice muốn xác thực thông tin nhận được là do chính bác sĩ gửi cho mình và đảm bảo thông tin không bị sửa đổi. Vì vậy trong trường hợp này cần sử dụng mã hóa có xác thực.
8 Mã hóa có xác thực được thiết kế xuất phát từ yêu cầu kết hợp giữa chế độ bí mật và chế độ xác thực. Khái niệm này được tập trung nghiên cứu vào khoảng những năm 2000. Đặc biệt, sau khi Charanjit Jutla đưa ra chế độ mã hóa có xác thực là IAPM [8]. Điều này đã gây được sự quan tâm của cộng đồng khoa học mật mã thế giới.
Đã có nhiều nghiên cứu dẫn đến sự ra đời một số chế độ mã hoá có xác thực khác nhau là: OCB, Key Wrap, CCM, EAX, và GCM. Các chế độ này đã được chuẩn hóa trong ISO/IEC 19772:2009. Ngoài ra, mã hóa có xác thực đã được đưa vào trong các giao thức ứng dụng thực tế như SSH, SSL, IPSec. Ngoài bảo vệ tính toàn vẹn và bí mật thông tin, mã hóa có xác thực có thể được dùng để chống lại các tấn công lựa chọn bản mã.
Trong kiểu tấn công này, mã thám sẽ cố gắng để đạt được một số lợi thế so với hệ mật (ví dụ như thông tin về khóa bí mật) bằng cách chọn các bản mã, gửi nó tới người nhận và phân tích kết quả giải mã. Các thuật toán mã hóa có xác thực có thể nhận ra các bản mã không phải từ đúng người gửi và từ chối giải các bản mã đó. Điều này sẽ ngăn chặn các tấn công yêu cầu giải mã bất kỳ bản mã nào. Trong lược đồ mã hóa có xác thực, người gửi mã hóa thông báo với khóa để cho ra bản mã và một thẻ xác thực.
Quá trình giải mã được thực hiện bởi người nhận có cùng khóa với người gửi dùng để giải mã bản mã cho ra thông báo từ người gửi hoặc một cảnh báo chỉ ra rằng bản mã là không hợp lệ. Một lược đồ mã hóa có xác thực có thể được tổng quát cấu trúc bằng việc kết hợp một lược đồ mã hóa đối xứng (Symmetric Encryption scheme – SE) với một mã xác thực thông báo (Message Authentication Code - MAC). Lược đồ mã hóa đối xứng là bộ SE = (M,C,K thỏa mãn các điều ,E,D) kiện sau: 1. M là không gian thông báo bao gồm một tập hữu hạn các thông báo M có thể.
C là không gian mã bao gồm một tập hữu hạn các bản mã C có thể. K là không gian khóa bao gồm một tập hữu hạn các khóa K có thể. Với mỗi khóa K K có một quy tắc mã EK E và một quy tắc giải mã DK D. Trong đó, mỗi EK : M → và DK :C → M là các hàm mã C hóa đảm bảo DK (EK (M )) = M với mọi thông báo M M.
Trong các điều kiện trên thì điều kiện 4 là quan trọng nhất, điều kiện này chỉ ra rằng, khi mã hóa một thông báo bằng hàm lập mã EK , thì ta có thể giải mã nó bằng hàm giải mã DK. Đây là yêu cầu thông thường và bắt buộc của lược đồ mã hóa đối xứng. Theo mô hình của lược đồ mã hóa đối xứng (Hình 1.3), người gửi A tạo một thông báo M trong không gian thông báo M. Để mã hóa M, phải chọn ngẫu nhiên một khóa K K.
Nếu khóa K đã được tạo bởi người gửi thì sau đó khóa này phải được phân phối tới người nhận qua kênh an toàn.