Chương 1. GIỚI THIỆU CHUNG VỀ MÃ HÓA CÓ THỂ CHỐI TỪ 1. Giới thiệu chung về mã hóa có thể chối từ Một hệ thống bao gồm thuật toán tạo khóa, thuật toán mã hóa, thuật toán giải mã được gọi chung là một hệ mã hóa. Một hệ mã hóa mà trong đó khóa dùng để mã hóa và khóa dùng để giải mã là như nhau, được gọi là một hệ mã hóa khóa bí mật.
Hệ mã hóa khóa bí mật đang được dùng phổ biến nhất hiện nay là AES với các biến thể cho khóa bí mật là 128, 192 và 256 bits. Ưu điểm của các hệ mã hóa khóa bí mật là tốc độ mã hóa và giải mã nhanh do các phép toán được thực hiện trên bits. Nhược điểm của các hệ này là giữa người gửi và người nhận phải tiếp xúc trước với nhau để thống nhất một khóa bí mật chung, điều mà rất khó thực hiện trong môi trường mạng hiện nay. Để giải quyết vấn đề này khái niệm hệ mã hóa khóa công khai đã được giới thiệu, trong đó khóa dùng để mã hóa gọi là khóa công khai và khóa dùng để giải mã là khóa bí mật.
Khóa công khai của người nhận được công bố trước, mỗi người gửi khi muốn gửi thông tin cho người nhận sẽ dùng khóa công khai này để mã hóa thông tin (không cần tiếp xúc trước với người nhận để thỏa thuận khóa bí mật chung), người nhận sẽ có một khóa bí mật tương ứng với khóa công khai này dùng để giải mã. Như vậy trong một hệ mã hóa khóa công khai mỗi người dùng (người gửi hoặc người nhận) tham gia hệ thống sẽ có một cặp khóa công khai và bí mật, khóa công khai được công bố công khai trước, trong khi khóa bí mật được giữ bí mật riêng mình. Whitfield Diffie and Martin Hellman có thể được xem là những người đầu tiên đề xuất cụ thể một hệ mã hóa khóa công khai, một số hệ mã hóa khóa công khai hiện được dùng phổ biến hiện nay như hệ RSA hay Elgamal. Ngoài ra nếu với bản rõ m cho trước khi thực hiện mã hóa dưới khóa k luôn cho ra bản mã m’ không đổi, hệ mã hóa như vậy gọi là hệ mã hóa có tính chất đơn định.
Một hệ mã hóa có tính chất đơn định dễ bị tấn công bởi phương pháp tấn công từ điển. Tức là kẻ tấn công sẽ lưu trữ các cặp bản rõ/bản mã trong “từ điển”, sau đó khi thu được một bản mã nào đó sẽ so sánh với các bản 4 mã có sẵn trong “từ điển”, nếu thấy giống nhau lập tức suy ra bản rõ tương ứng trong khi không cần biết khóa bí mật để giải mã. Để chống lại tấn công từ điển, phương pháp hiện nay là xây dựng tất cả các hệ mã có tính chất xác suất. Tức là với cùng bản rõ m và khóa bí mật k, tuy nhiên mỗi lần mã hóa khác nhau lại cho ra một bản mã m’ khác nhau.
Để thực hiện điều đó, mỗi lần mã hóa khác nhau người lập mã sẽ chọn một giá trị ngẫu nhiên khác nhau tức là bản rõ m’ = E(m, k, r), do r mỗi lần khác nhau là khác nhau nên m’ cũng sẽ khác nhau ở mỗi lần mã hóa. Tuy nhiên khi giải mã ngược lại luôn thu lại được duy nhất m. Với tính chất đó kẻ tấn công dù có lưu trữ các cặp bản rõ/bản mã cũng không thể dùng phương pháp so sánh bản mã để tìm ra bản rõ tương ứng, vì các bản mã lúc này là khác nhau ở các lần mã hóa khác nhau. Mã hóa có thể chối từ là một trường hợp đặc biệt của mã hóa để giải quyết bài toán trong đó kẻ tấn công thu được bản mã m’ và có quyền “cưỡng ép” người lập mã hoặc người giải mã (hoặc cả hai) phải đưa ra toàn bộ thông tin về hệ mã hóa và khóa tương ứng.
Để giải quyết bài toán này Cannetti cùng các đồng nghiệp [8] đã đề xuất một phương pháp trong đó người lập mã và người giải mã xây dựng hai hệ thống mã hóa khác nhau sao cho mã hóa hai văn bản khác nhau m1 và m2 cho ra cùng một bản mã như nhau m’. Như vậy khi đối phương thu được bản mã m’, để giấu thông tin m1 người lập mã hoặc người giải mã có thể đưa ra hệ thống mã hóa giả mạo tương ứng với m2, phương pháp như trên hiện nay được gọi là mã hóa có thể chối từ. Lưu ý rằng để đối phương tin rằng hệ thống giả mạo là thật, bản rõ giả mạo phải có ý nghĩa thực tế. Một hệ mã hóa bao gồm hai hệ mã hóa con, trong đó có một hệ là giả mạo có chức năng như trên được gọi là một hệ mã hóa có thể chối từ.
Hệ như vậy được mô tả như sau: Giả sử Alice muốn gửi bản rõ bí mật m1 cho Bob, Alice sẽ chọn một bản rõ giả mạo m2 có ý nghĩa sau đó thực hiện mã hóa theo các bước sau đối với hệ mã hóa khóa bí mật. Alice mã hóa: m’ = E(m1, k, r1) = E(m2, k, r2), với E là thuật toán mã hóa, k là khóa mã, r1, r2 là các số ngẫu nhiên chọn khác nhau ở mỗi lần mã hóa. Alice gửi m’ cho Bob. Bob nhận được bản mã m’, để thu lại bản rõ bí mật m1, Bob dùng khóa bí mật k đã thống nhất trước với Alice để giải mã m1 = D(m’, k, r1), với D là thuật toán giải mã.
Trong trường hợp Alice hoặc Bob (hoặc cả Alice và Bob) bị ép buộc phải đưa ra giải thuật mã hóa, giải mã và khóa bí mật. Alice và Bob sẽ đưa ra giá trị ngẫu nhiên r2 và bản rõ giả mạo m2 thỏa mãn m’ = E(m2, k, r2). Do m2 có ý nghĩa trong thực tế nên kẻ tấn công có thể tin rằng Alice đã gửi thông điệp m2 cho Bob. Trong trường hợp Alice dùng hệ mã hóa khóa công khai để gửi bản rõ bí mật m1, sơ đồ được thực hiện như sau.
Alice mã hóa m1 dưới khóa công khai pkB của Bob: m’ = E(m1, r1, pkB) = E(m2, r2, pkB), với E là thuật toán mã hóa, r1, r2 là các số ngẫu nhiên khác nhau. Alice gửi bản mã m’ cho Bob. Khi Bob nhận được m’, Bob sẽ dùng khóa bí mật của mình là sk B để thực hiện giải mã thu lại bản rõ bí mật m1: m1 = D(m’, r’1, skB), với D là thuật toán giải mã và r’1 là ngẫu nhiên cục bộ bí mật của Bob dùng để giải mã ứng với bản rõ mà Alice sử dụng r1 để mã hóa. Trong trường hợp Alice hoặc Bob (hoặc cả hai) bị cưỡng ép phải đưa ra giải thuật và các thành phần bí mật.
Alice sẽ đưa ra thành phần ngẫu nhiên giả mạo r2 và bản rõ giả mạo m2. Bob sẽ đưa ra thành phần ngẫu nhiên giả mạo tương ứng r’2, thỏa mãn m’ = E(m2, r2 , pkB) và m2 = D(m’, r’2, skB). Trong đó bản rõ giả mạo m2 có ý nghĩa trong thực tế.1 là mô hình tấn công nghe lén thông thường hiện nay, khi kẻ tấn công cắt đường truyền và thu được bản mã. Với trường hợp này miễn là kẻ tấn công không biết khóa bí mật thì thông điệp truyền đi giữa người lập mã và người giải mã vẫn đảm bảo an toàn.
6 Kẻ tấn công Hình 1.1 Mô hình tấn công nghe lén thông thường (Nguồn ảnh Internet) Hình 1.2 là trường hợp kẻ tấn công có quyền ép buộc người lập mã và người giải mã phải đưa ra hệ mã hóa và các thông tin liên quan. Với trường hợp này rõ ràng người lập mã và người giải mã không có khả năng bảo vệ an toàn cho thông điệp mật mình gửi. Thông điệp Kẻ tấn công Thông điệp mật mật Hình 1.2 Mô hình tấn công cưỡng ép trong mã hóa thông thường (Nguồn ảnh Internet) Hình 1.3 là phương pháp dùng mã hóa có thể chối từ để giải quyết trường hợp kẻ tấn công có quyền cưỡng ép cả người lập mã và người giải mã phải đưa ra hệ mã hóa cũng như các thông tin về khóa liên quan.3 Mô hình tấn công cưỡng ép trong MHCTCT (Nguồn ảnh Internet) Tùy về mặt chức năng là hệ mã hóa khóa bí mật hay công khai cũng như khả năng cưỡng ép bên lập mã, bên giải mã hay cả hai ta có thể phân ra các dạng hệ mã hóa có thể chối từ như sau. Mã hóa có thể chối từ khóa bí mật Với hệ mã hóa dạng này bên lập mã và giải mã phải có sự trao đổi trước để thống nhất các tham số khóa.
Ví dụ khi Alice và Bob muốn truyền thông điệp bí mật m1 dùng dạng mã hóa One Time Pad (OTP) các bước Alice và Bob thực hiện sẽ như sau: Alice và Bob sẽ chọn thông điệp giả mạo m2 có ý nghĩa trong thực tế và khóa bí mật tương ứng k1 Tính bản mã m’ = m1 k1 Tính khóa k2 = m’ m2 Như vậy khi kẻ tấn công thu được bản rõ m’ và yêu cầu Alice và Bob đưa ra giải thuật mã hóa và khóa bí mật tương ứng, Alice và Bob có thể đưa ra khóa giả mạo k2 và thông điệp giả mạo m2 vẫn thỏa mãn m’ = m2 k2. Trong đó thông điệp m2 vẫn có ý nghĩa trong thực tế. Dễ thấy rằng cũng như hệ mã hóa khóa bí mật, nhược điểm lớn nhất của 8 hệ mã hóa có thể chối từ khóa bí mật là hai bên truyền dữ liệu phải thống nhất trước với nhau các thông tin. Ngoài ra do không biết trước được thời điểm và khi nào sẽ bị cưỡng ép nên có thể thông tin m2 không mang được tính thời sự để có ý nghĩa trong thực tế.
Mã hóa có thể chối từ khóa công khai Khác với hệ mã hóa khóa bí mật, hệ mã hóa khóa công khai có ưu điểm hai bên truyền dữ liệu không cần thống nhất trước các tham số trước khi truyền dữ liệu. Thông điệp giả mạo m2 có thể được lựa chọn tại thời điểm bị cưỡng ép do đó có tính thời sự và có ý nghĩa thực tiễn cao hơn. Với hệ mã hóa có thể chối từ khóa công khai ta phân ra làm các dạng khác nhau tùy thuộc vào việc kẻ tấn công có khả năng cưỡng ép những bên nào đưa ra thông tin. Ví dụ như nếu chỉ cưỡng ép bên gửi thông tin thì người gửi không có nghĩa vụ phải trình ra khóa bí mật vì khóa bí mật chỉ có mình người nhận biết (khác với trường hợp mã hóa khóa bí mật cả hai bên đều biết khóa bí mật).