Chương 1 – Lý thuyết cơ bản về mã hóa mật mã 1. Những bước phát triển của kỹ thuật mã hóa mật mã Mật mã là kỹ thuật bảo mật làm biến đổi dữ liệu từ hình thức đơn giản, rõ ràng sang hình thức dữ liệu biến thành mật mã, chỉ những ai có được thông tin giải mã cần thiết mới có thể giải mã và đọc được nội dung dữ liệu. Một bản ghi hoặc dữ liệu đã được mã hóa mật mã gọi là bản tin mật mã (ciphertext), bản ghi hoặc dữ liệu chưa mã hóa mật mã gọi là bản tin gốc (plaintext). Hoạt động trong quá trình chuyển từ dữ liệu mật mã sang bản tin gốc được gọi là giải mã hóa mật mã.
Mã hóa mật mã ngày nay được sử dụng với mục đích chính tạo ra các cơ chế truyền tin bảo mật. Phân tích mã hóa mật mã đối lập với mã hóa mật mã bởi nó tìm mọi cách phá mật mã để lấy được các bản tin gốc từ dữ liệu đã được mã hóa mật mã mà không dùng các cơ chế hoặc thuật toán giải mã. Nghiên cứu mã hóa mật mã cùng với phân tích mã hóa mật mã tạo ra khoa học mật mã. Mặc dù với nhiều kỹ thuật khoa học hiện đại nhưng mã hóa mật mã vẫn là môn khoa học cổ điển.
Một ví dụ thông dụng nhất của mã hóa mật mã cổ điển đã xuất hiện từ lâu là Julius Caesar, người đã tạo ra các bức thư tín được mật mã dùng chủ yếu trong mục đích quân sự, được gọi là “mật mã Caesar” với kỹ thuật mã hóa rất cơ bản: mỗi chữ cái trong bức thư tín được thay thế bởi chữ cái khác ở vị trí thứ ba trở xuống trong bảng chữ cái. Thuật toán mật mã như vậy là một ví dụ điển hình của kỹ thuật mật mã thay thế từng ký tự trong bản ghi gốc bằng những ký tự chữ cái hoặc ký tự khác tạo ra bản ghi mật mã. Những thuật toán mật mã như vậy đã được sử dụng rộng rãi cho đến khi Al-Kindi – nhà toán học Ả-rập phát triền thành công kỹ thuật phân tích tần suất vào thế kỷ thứ 9. Kỹ thuật phân tích này dựa trên thực tế của các 5 Nghiên cứu các giải thuật mã hóa bảo mật hỗn loạn ngôn ngữ với những chữ cái khác nhau có tần suất xuất hiện khác nhau và kiểm tra tần suất xuất hiện của các chữ cái có trong bản ghi mật mã để tìm ra các chữ cái có trong bản ghi gốc.
Để chống lại kỹ thuật phân tích tần suất xuất hiện các chữ cái, thuật toán mật mã thay thế nhiều ký tự chữ cái đã được tạo ra vào khoảng thế kỷ thứ 16 và đã loại bỏ hoàn toàn thuật toán mật mã thay thế từng ký tự. Một trong những thuật toán nổi tiếng là “mật mã Vigenere”, trong nhiều năm liền thuật toán mật mã này không hề bị phá vỡ cho đến khi kỹ thuật phân tích tần suất xuất hiện được cải tiến và bổ sung thêm các tính năng mới. Nhiều thuật toán làm giả đa ký tự đã được phát triển và đưa vào sử dụng trong những thế kỷ 19 và 20, hoàn toàn hoạt động dựa trên các thiết bị máy móc. Một ví dụ điển hành là máy Enigma được sử dụng nhiều trong truyền thông tin qua sóng vô tuyến bởi quân đội Đức trong chiến tranh thế giới lần thứ 2.
Máy Enigma sau đó đã bị phá mã bởi mã Allies do nhà toán học người Anh Alan Turing (được coi là cha đẻ nghành khoa học máy tính hiện đại). Hầu hết các thuật toán mã hóa mật mã dù sớm hay muộn đều bị phá vỡ, từ đó người ta bắt đầu nghiên cứu và tạo ra các nguyên lý thiết kế các kỹ thuật mã hóa mật mã. Luật Kerckhoffs là một trong những luật nổi tiểng đã được sử dụng tương đối rộng rãi cho đến ngày nay trong mã hóa mật mã: tính bảo mật của một hệ thống mã hóa mật mã chỉ có một tham số bảo mật duy nhất đó là khóa. Nói cách khác, các nguyên lý của một hệ thống mã hóa mật mã cần phải được bảo mật cho dù mọi thứ có thể công khai nhưng trừ khóa.
Năm 1949, nhà toán học người Mỹ Claude Shannon đã xuất bản một bài báo có tính chất như sự khởi nguồn về lý thuyết mã hóa mật mã dựa trên lý thuyết thông tin. Claude Shannon phát triển rằng chỉ có một cách duy nhất để đạt được tính bảo mật hoàn hảo chỉ khi mỗi bản ghi mật mã sử dụng một khóa khác nhau với các yêu cầu, với mỗi cách mã hóa mật mã, số lượng các khóa có thể sử 6 Nghiên cứu các giải thuật mã hóa bảo mật hỗn loạn dụng sẽ bằng số lượng các bản ghi gốc có thể giải mã được. Các yêu cầu được đưa ra như vậy dường như không thực tế và khó áp dụng được trong mã hóa mật mã. Claude Shannon đã đưa ra một vài nguyên lý thiết kế để đạt được độ bảo mật cao, tăng khả năng chống lại các phương pháp phá mã.
Một trong những số đó trở thành nguyên lý cơ bản trong thiết kế các thuật toán mã hóa mật mã ngày nay. Mã hóa mật mã đã có nhiều cải tiến và phát triển mới vào cuối thế kỷ thứ 19 cùng với sự phát triển của khoa học máy tính và các thiết bị điện tử khác. Do đó đã xuất hiện nhiều công nghệ mới tạo ra các thuật toán mã hóa mật mã phức tạp. Một trong số đó là thuật toán mã hóa mật mã xuất hiện năm 1970 được phát minh bởi một nhóm nghiên cứu mã hóa mật mã của IBM, trong đó có Horst Feistel và Don Coppersmith.
Thuật toán mã hóa mật mã đầu tiên mà họ đã tạo ra là chuẩn mã hóa mật mã dữ liệu (DES), đã được sử dụng rộng rãi cho đến ngày nay. Năm 1976, một bài báo được xuất bản bởi hai nhà khoa học chuyên về mật mã người Mỹ là Whitfield Diffie và Martin Hellman trong đó đề cập đến nội dung mã hóa mật mã khóa công khai và sự liên hệ giữa lý thuyết phức tạp và mật mã, họ đã tạo ra một bộ mặt mới cho ngành khoa học mật mã. Kỹ thuật mã hóa mật mã hiện đại Kỹ thuật mã hóa mật mã ngày nay là một nhánh của việc ứng dụng toán học và khoa học máy tính: những hệ thống mật mã đều sử sụng các chương trình máy tính (hoặc các mạch điệnt tử) với kiến trúc thuật toán dựa trên những công cụ của toán học. Mục tiêu của kỹ thuật mật mã hiện đại là tạo ra những tính năng bảo mật sử dụng trong việc truyền tin trên những phương thức truyền không bảo mật, ví dụ: điện thoại, sóng vô tuyến, internet,… Mã hóa mật mã bất đối xứng sẽ làm cho các chữ ký số của các văn bản điện tử sẽ có hiệu lực và tính pháp lý tương tự như chữ ký của các văn bản 7 Nghiên cứu các giải thuật mã hóa bảo mật hỗn loạn giấy tờ bình thường.
Chữ ký số cũng có những tính pháp lý trong việc chứng nhận các văn bản. Cùng với sự phát triển của kỹ thuật mã hóa mật mã hiện đại, rất nhiều các thuộc tính bảo mật đã được tạo ra như khả năng tính toán đa tác vụ bảo mật, nhóm đa chữ ký,… Mọi hệ thống mã hóa mật mã về mặt lý thuyết đều có thể bị phá vỡ bởi kỹ thuật dò tìm toàn bộ các khóa. Một cặp bản tin mật mã – bản tin gốc thường không bao giờ bị nhầm lẫn trong việc xác định khóa được sử dụng trong việc mã hóa mật mã dữ liệu. Trong trường hợp cả cặp bản tin mật mã và bản tin gốc bị nghe trộm, các khóa có thể được dùng trong việc mã hóa mật mã sẽ được đưa ra dùng để kiểm tra việc giải mã hóa bản tin mật mã thành bản tin gốc.
Dù cho việc dò tìm toàn bộ các khóa như vậy có thể thành công, nhưng để có được một kho dữ liệu khóa đủ lớn dùng để giải mật mã từ bản tin mật mã thành bản tin là điều không thể. Ví dụ, nếu một khóa được mã hóa bởi 128 bit (đây là sự so sánh rất nhỏ so với các bộ nhớ máy tính hiện đại) thì số lượng khóa có thể xảy ra và sẽ dùng trong việc dò tìm khóa là 2128. Như vậy P P việc quét tìm toàn bộ các khóa dùng trong mã hóa mật mã cần đến 2128 các P P tiến trình mã hóa và giải mã. Giả sử rằng một kẻ tấn công có khoảng hai triệu máy tính và có thể thực hiện được năm triệu tiến trình mã hóa trên một giây (tốc độ xử lý nhanh hơn rất nhiều so với các máy tính hiện tại), như vậy thời gian tính toán sẽ mất khoảng một nghìn tỷ năm.
Với kỹ thuật dò tìm toàn bộ các khóa có thể dùng trong việc mã hóa mật mã để tìm ra khóa đúng nhất là điều không thể thực hiện được. Kỹ thuật mã hóa mật mã được chia thành hai nhánh chính: mã hóa mật mã đối xứng và mã hóa mật mã bất đối xứng. Mã hóa mật mã đối xứng thường được xem như có độ bảo mật cao nếu như không tồn tại kỹ thuật phá mã nào có hiệu quả hơn việc dò tìm toàn bộ khóa. Tuy nhiên, sự bảo mật của kỹ thuật mã hóa mật mã cũng chỉ được an toàn trong vài năm mà không bị tấn công phá mã.
Mặt khác, các hệ thống mã hóa mật mã bất đối xứng thường 8 Nghiên cứu các giải thuật mã hóa bảo mật hỗn loạn được xây dựng dựa trên các vấn đề khó của lý thuyết số học. Một vấn đề được xem là khó khi khả năng tính toán của vấn đề đó không thể thực hiện được. Mã hóa mật mã đối xứng Mã hóa mật mã đối xứng, cũng có tên gọi là mã hóa mật mã khóa bảo mật, dựa trên sự giả định rằng hai đối tượng trao đổi thông tin với nhau cùng sử dụng một khóa bảo mật chung k. Quá trình mật mã đối xứng Một dữ liệu mã hóa mật mã đối xứng là một song ánh enc được tham số hóa bởi khóa bảo mật k và hoạt động trên các bản ghi có độ dài tùy ý.
Mã hóa một bản tin gốc p, thành bản tin mật mã c bởi một khóa bảo mật k được xác định như sau: c = enck (p) R R (1.1) Giải mã hóa mật mã của một bản tin mật mã là quá trình tính toán ngược lại của hàm enck-1 .