Khi nói đến mã hóa, chúng ta dễ liên tưởng đến những thước phim trình chiếu những đoạn mã số dài thườn thượt chạy nhấp nháy trên màn hình với những thông điệp khó hiểu. Hay cuộc chiến gần đây giữa Apple và FBI về vụ thông tin bị mã hóa mà chính phủ Mỹ buộc Apple phải giải mã thông tin trên chiếc iPhone của thủ phạm trong vụ xả súng ở San Bernardino, Mỹ. Nói đơn giản, mã hóa là một kỹ thuật làm cho nội dung không thể đọc được đối với bất kỳ ai không có chìa khóa. Gián điệp sử dụng mã hóa để gửi thông tin bí mật, các tướng chỉ huy quân đội gửi nội dung mã hóa để phối hợp chiến đấu cho đồng bộ, còn tội phạm sử dụng mã hóa để trao đổi thông tin và lên kế hoạch hành động.
Các hệ thống mã hóa cũng xuất hiện trong hầu hết mọi lĩnh vực liên quan đến công nghệ, không chỉ che dấu thông tin của tội phạm, kẻ thù hay gián điệp mà còn xác thực và làm rõ những thông tin rất cơ bản, rất cá nhân. Câu chuyện về mã hóa trong bài viết này bao hàm cả những kỹ thuật mã hóa cách nay nhiều thế kỷ, vì nó cũng phức tạp như chính thuật toán tạo dựng nên nó. Bài viết cũng có những nhận định, đánh giá của các chuyên gia mã hóa đầu ngành hiện nay, đề cập đến nhiều mặt của mã hóa: lịch sử, tình trạng hiện thời, và cách mã hóa đang ngấm vào đời sống như thế nào.
Khởi nguồn của mã hóa hiện đại
Giáo sư Martin Hellman ngồi tại bàn làm việc khá trễ vào một đêm tháng 5/1976. 40 năm sau, cũng tại chiếc bàn làm việc ấy ông đã nói về thứ mà ông viết ra vào đêm đó. Hellman đã viết ra một nghiên cứu với tiêu đề: "New Directions in Cryptography" (những hướng mới trong kỹ thuật mã hóa), và tập tài liệu nghiên cứu này đã làm thay đổi cách chúng ta giữ bí mật ngày nay, và ít nhiều tác động đến mã hóa internet lúc này.
Trước khi có tập tài liệu ấy, mã hóa là một nguyên tắc rất rõ ràng. Bạn có một chìa khóa để giải mã những nội dung bị mã hóa, không thể đọc được.
Và để mã hóa hoạt động hiệu quả, chìa khóa, hay mật mã, phải được bảo mật. Ngày nay, với các hệ thống mã hóa phức tạp, cũng áp dụng giống hệt như vậy. Tính phức tạp của công nghệ và tầm quan trọng của mật mã từ Thế chiến thứ 2 đã hình thành ra vài hệ thống mã hóa mà nhiều hệ thống mã hóa ngày nay vẫn còn dựa trên chúng.
Phe Đồng Minh có SIGSALY, một hệ thống có thể trộn lung tung giọng nói theo thời gian thực. Khóa của hệ thống này là những bản ghi phono giống hệ nhau, được cho phát đồng thời với nhau trong khi vẫn bật đoạn hội thoại. Khi một người nói trong điện thoại, giọng của người ấy được số hóa và được trộn với những tiếng ồn riêng. Tín hiệu mã hóa này sau đó được gửi đến trạm SIGSALY, là nơi sẽ giải mã âm thanh. Sau mỗi cuộc hội thoại, các bản ghi ấy đều bị huỷ và mỗi đoạn hội thoại đều có một bộ khóa khác nhau. Điều này khiến đối phương rất khó giải mã ngay được.
Phe Phát-xít lúc ấy cũng dựa trên một công nghệ tương tự nhưng dành để mã hóa văn bản: đó là cỗ máy Enigma có một bàn phím cứng, các loại cáp kết nối và một bảng cắm tương tự như bảng chuyển mạch của điện thoại, các bánh xoay và một bản mạch xuất. Nhấn vào một phím, thiết bị này sẽ khởi động một cơ chế cho ra các ký tự khác nhau, lần lượt xuất hiện trên bản mạch. Một cỗ máy Enigma được cấu hình giống hệt máy gốc cũng sẽ thực hiện quy trình ngược lại nhưng hoàn toàn giống với cỗ máy đầu. Từ đó, tin nhắn có thể mã hóa và giải mã rất nhanh ngay khi gõ, và mật mã đều thay đổi mỗi lần một ký tự được nhập vào. Ví dụ, bạn nhấn phím A, máy sẽ hiển thị chữ E, nhưng bạn nhấn phím A một lần nữa, máy sẽ hiển thị ký tự khác. Bản mạch cắm và các cấu hình thủ công có nghĩa là có vô vàn biến thể có thể áp dụng cho hệ thống này.
Enigma và SIGSALY có thể xem là những phiên bản sơ khai cho một thuật toán (hoặc nhiều thuật toán), cho thấy một hàm toán học được lập đi lập lại nhiều lần. Phá vỡ mật mã Enigma do nhà toán học thiên tài người Anh Alan Turing thực hiện, đã cho mọi người thấy được phương pháp mã hóa là như thế nào.
Nhưng xét trên nhiều phương diện khác, công trình của Hellman về mật mã lại khác biệt. Một trong số đó là ông và một nhà toán học cộng sự khác là Whitfield Diffie (cũng thuộc đại học Stanford) không làm việc cho một chính phủ nào. Điều khác biệt khác lúc ấy là mật mã đối với ông không có gì là mới mẻ.
Mã hóa khóa công khai (public key)
Hellman và Diffie, với sự giúp đỡ của cộng sự khác là Ralph Merkle, đưa ra một cách mã hóa hoàn toàn khác. Thay vì dựa trên một khóa duy nhất cho toàn hệ thống mã hóa, họ đưa ra hệ thống hai khóa. Khóa đầu tiên là khóa riêng (private key), được lưu trữ bí mật như cách mật khẩu truyền thống được cất giữ. Bất kỳ ai can thiệp vào tin nhắn chỉ có thể thấy được một loạt ký tự vô nghĩa. Và Hellman sẽ dùng khóa bí mật này để giải mã tin nhắn.
Giải pháp này ngay lập tức chứng tỏ tính khả thi, nhưng hãy nghĩ về SIGSALY. Để hệ thống này vận hành, cả người gửi và người nhận đều cần các khóa giống hệt nhau. Nếu người nhận đánh mất khóa, họ sẽ không có cách nào giải mã được tin nhắn. Nếu khóa bị đánh cắp hay bị sao chép, tin nhắn cũng có thể bị giải mã. Nếu kẻ xấu có đủ dữ liệu về tin nhắn và có thời gian phân tích tin nhắn, khả năng bị bẻ khóa cũng rất cao. Và nếu bạn muốn gửi một tin nhắn nhưng không có đúng chìa khóa thì bạn cũng không thể dùng SIGSALY để gửi tin nhắn đi được.
Hệ thống khóa public key của Hellman lại khác, nghĩa là khóa mã hóa không cần phải giữ bí mật. Bất kỳ ai dùng khóa public key cũng đều có thể gửi tin nhắn, nhưng chỉ có ai có được khóa private key thì mới có thể giải mã nó. Mã hóa public key cũng loại bỏ các phương tiện đảm bảo an toàn cho các khóa mã hóa. Máy Enigma và các thiết bị mã hóa khác đều được bảo vệ nghiêm ngặt, và Đức Quốc Xã sẵn sàng phá huỷ Enigma nếu bị phe Đồng minh phát hiện. Còn với một hệ thống public key, ai cũng có thể trao đổi public key với nhau, không gặp rủi ro nào. Người dùng có thể chia sẻ public key với nhau công khai và kết hợp chúng với private key (hoặc secret key) để tạo ra một khóa tạm gọi là shared secret. Loại khóa lai này có thể được dùng để mã hóa tin nhắn mà nhóm người tạo shared secret chia sẻ với nhau.
Một trong những yếu tố thúc đẩy Hellman đến với mã hóa là niềm đam mê toán học của ông, nhất là môn số học đồng dư (modular arithmetic). Theo Hellman, lý do mà ông áp dụng số học đồng dư vào mã hóa là phương pháp này dễ chuyển đổi dữ liệu thành những dữ liệu không liên tục, khó chuyển ngược lại và điều này rất quan trọng đối với mã hóa.
Do đó, cách đơn giản nhất để giải mã là "đoán mò". Phương pháp này còn gọi là brute-forcing, áp dụng được cho bất kỳ thứ gì khác, không riêng gì mã hóa. Ví dụ như bạn muốn mở khóa điện thoại của ai đó bằng cách kết hợp 4 phím số từ 0-9. Nếu dò lần lượt có thể mất rất nhiều thời gian.
Thực tế, Merkle trước đó đã phát triển hệ thống mã hóa khóa public key trước khi Diffie và Hellman công bố công trình "New Directions in Cyptography", nhưng lúc ấy hệ thống của Merkle quá rắc rối cho chính các nhà mã hóa, chưa nói đến người dùng. Và rắc rối này đã được Hellman và Diffie gỡ được.
Một bài toán hay
Bruce Schneier được xem là một trong vài nhà toán học nổi danh về mảng mã hóa trên thế giới, nhưng ông lại là nhân vật ẩn danh đối với nhiều người. Schneier rất thẳng thắn và ông hiểu được giá trị của một bài toán hay. Ông cho rằng hệ thống mã hóa là một bài toán hỗn hợp nhiều loại toán khác nhau, logic với nhau và theo một hệ phức tạp riêng. "Mã hóa là lý thuyết về con số, nó là lý thuyết về tính phức tạp. Có nhiều kiểu mã hóa rất tệ bởi vì người tạo ra nó không hiểu được giá trị của một bài toán hay."
Theo Shneier, thách thức cơ bản nhất trong mã hóa là tính an toàn của hệ thống, mà cách chứng minh tốt nhất là thử giải mã nó. Nhưng hệ thống mã hóa ấy chỉ thực sự được công nhận là tốt khi đã được cộng đồng chứng minh qua thời gian, qua phân tích và qua danh tiếng của nó.
Dĩ nhiên, toán học đáng tin hơn rất nhiều so với con người. Schneier cho biết: "Toán học không có đơn vị nào quản lý. Để một hệ thống mã hóa có đơn vị quản lý, nó cần được nhúng vào trong phần mềm, đưa nó vào một ứng dụng, chạy nó trên một máy tính có hệ điều hành và có người dùng. Và những yếu tố trên chính là kẽ hở của hệ thống mã hóa."
Đây là vấn đề lớn đối với ngành mã hóa. Một công ty nào đó có thể đưa ra hệ thống mã hóa và cam kết với người dùng rằng "Bạn đừng lo lắng, không ai biết được nội dung tin nhắn của bạn là gì đâu" vì chúng đã được mã hóa. Nhưng với một người dùng thông thường, ai biết được công ty ấy có thể làm được chuyện gì với hệ thống mã hóa kia, đặc biệt là khi hệ thống mã hóa ấy được cấp phép sở hữu trí tuệ riêng, không cho người ngoài kiểm tra và thử nghiệm. Còn các chuyên gia mã hóa lại không thể chứng minh được hệ thống đó có thực sự tốt hay không, đó là chưa kể trong hệ thống mã hóa có cài backdoor hay không.
Chữ ký số
Một trong những ứng dụng phổ biến của giải pháp mã hóa public key là chữ ký số để xác thực tính hợp lệ của dữ liệu. Tựa như chữ ký tay, mục đích của chữ ký số là xác nhận nội dung dữ liệu là đúng của người tạo ra nó.
Thông thường, khi bảo mật một tin nhắn bằng khóa public key, bạn phải sử dụng khóa public key của người nhận để mã hóa tin nhắn đó để không ai đọc được tin nhắn ấy nếu không có private key của người nhận. Nhưng chữ ký số thì hoạt động theo cách ngược lại. Bạn soạn một hợp đồng và sử dụng private key để mã hóa nó. Và bất kỳ ai có public key của bạn đều có thể xem được hợp đồng ấy nhưng không chỉnh sửa gì được (vì không có private key của bạn). Chữ ký số xác nhận tác giả của hợp đồng ấy, như một chữ ký, để khẳng định nội dung không có gì thay đổi.
Chữ ký số thường dùng với một phần mềm để xác thực nội dung được lấy từ một nguồn tin cậy và không bị kẻ xấu can thiệp vào. Ví dụ điển hình là vụ việc mở khóa chiếc iPhone 5c của FBI và Apple. Sau khi FBI cố gắng dùng kỹ thuật brute-force đoán mã PIN để đăng nhập 10 lần thất bại, thiết bị tự động xóa sạch nội dung. Apple đã gán cho hệ điều hành của thiết bị ấy một secret key riêng và mọi chiếc iPhone đều có một public key khác của Apple. Secret key được dùng để chứng thực cập nhật phần mềm.
Blockchain đang phát triển
Mã hóa không chỉ để che dấu nội dung mà còn để xác thực nội dung có đúng nguyên bản hay không. Do đó, blockchain xuất hiện, là công nghệ được xem là phổ biến như mã hóa.
Blockchain là một cuốn sổ cái cố định, phân tán, được thiết kế để hoàn toàn miễn nhiễm với các tác động số bất kỳ, cho dù bạn sử dụng nó cho tiền tệ số, cho hợp đồng. Bởi vì nó có tính chất phi tập trung hóa thông qua nhiều người dùng nên không có điểm nào để kẻ xấu tấn công được. Sức mạnh của nó nằm ở các con số.
Không blockchain nào giống blockchain nào. Ứng dụng nổi tiếng nhất của công nghệ này là tiền tệ số, như Bitcoin (đây là loại tiền tệ mà tội phạm mạng, kẻ tạo phần mềm tống tiền ransomware sử dụng nhiều nhất hiện nay). Nhưng IBM và một số công ty lớn khác cũng đang phổ biến tiền tệ số trong thế giới kinh doanh.
Hiện vẫn chưa có nhiều doanh nghiệp sử dụng blockchain, nhưng những tính năng của nó rất hấp dẫn. Không như các hệ thống lưu trữ thông tin khác, hệ thống blockchain dùng một tập hỗn hợp các giải pháp mã hóa và thiết kế cơ sở dữ liệu dạng phân tán.
Blockchain của IBM cho phép thành viên blockchain xác thực giao dịch của người khác mà không cần biết ai đang thực hiện giao dịch ấy trên blockchain và người dùng có thể thiết lập các ràng buộc về quyền truy cập, ai có thể thực hiện giao dịch. Ý tưởng thiết kế của blockchain là định danh của người thực hiện giao dịch được mã hóa, nhưng mã hóa bằng public key. Đứng giữa có người kiểm toán giao dịch, có public key để theo dõi giao dịch và xử lý các vấn đề giữa các thành viên giao dịch trên blockchain. Khóa kiểm toán của người đứng giữa có thể chia sẻ giữa các bên kiểm toán với nhau.
Do đó, sử dụng hệ thống này, các đối thủ cạnh tranh có thể giao dịch với nhau, trên cùng blockchain. Điều này thoạt nghe có vẻ không mấy trực quan nhưng blockchain lại mạnh hơn, an toàn hơn khi có nhiều người giao dịch hơn. Càng có nhiều người, càng khó phá vỡ blockchain. Nên thử hình dung nếu toàn bộ ngân hàng trong một quốc gia tham gia vào một blockchain, các giao dịch sẽ an toàn hơn rất nhiều.
Mã hóa ứng dụng
Mã hóa nội dung để gửi một tin nhắn an toàn là một trong những công nghệ cơ bản nhất. Nhưng mã hóa hiện nay không chỉ có thế mà còn áp dụng được cho nhiều công việc khác, mà nổi bật nhất là mua sắm trực tuyến.
Vì mỗi giai đoạn trong một giao dịch tài chính đều liên quan đến một kiểu mã hóa nào đó, hay một hình thức xác thực nào đó để xác nhận tin nhắn có đúng người đúng việc hay không. Và quan điểm về việc mã hóa những thông tin nhạy cảm để đảm bảo không có bên thứ ba nào can thiệp vào càng ngày càng rõ ràng hơn. Nhiều tổ chức ủng hộ người dùng internet dùng mạng riêng ảo VPN (virtual private network) để mã hóa đường kết nối internet của mình, nhất là khi họ phải dùng Wi-Fi công cộng. Một mạng Wi-Fi không an toàn có thể do kẻ xấu tạo ra để đánh cắp thông tin trên mạng Wi-Fi đó.
Ngoài ra, mã hóa ứng dụng không chỉ mã hóa thông tin nhạy cảm, dữ liệu cá nhân mà còn để người dùng chứng minh đó thực sự là "tôi". Ví dụ bạn đến một trang web ngân hàng, ngân hàng có một khóa mã hóa mà chỉ có những máy tính ở ngân hàng ấy nhận diện được. Đó là một khóa private khi trao đổi với một khóa public. Trong thanh địa chỉ trang web URL có một biểu tưởng chiếc khóa nhỏ ở đầu URL, nghĩa là khi bạn truy cập đến trang web ngân hàng, bên dưới đang có một trao đổi khóa ngầm để kết nối từ máy tính của bạn đến các máy tính của ngân hàng và quá trình xác thực đang diễn ra.
Chữ ký mã hóa cũng được dùng rộng rãi trong các giao dịch tài chính. Thẻ tín dụng/ghi nợ dùng công nghệ chip nhúng (không phải thẻ từ tính), cũng áp dụng giải pháp chữ ký mã hóa.
Theo các chuyên gia, mã hóa là công nghệ mà hiện người dùng chúng ta sử dụng rất nhiều nhưng thực sự ít hiểu về nó, từ thiết bị công nghệ cho đến giao dịch ngân hàng, phương tiện di chuyển...
Mã hóa lượng tử có thể thay đổi mọi thứ
Năm 1970, Martin Hellman cho biết đó là năm đột phá về factoring trong số học (chia thừa số), còn gọi là chia thừa số liên tục. Khó khăn của việc chia thừa số các con số lớn là điều giúp các hệ thống mã hóa vững vàng hơn, khó bị bẻ hơn. Nên bất kỳ kỹ thuật nào làm giảm đi tính phức tạp của việc chia thừa số cũng làm giảm tính bảo mật của hệ thống mã hóa. Sau đó, đến năm 1980, một đột phá khác về toán học đã làm cho việc chia thừa số dễ dàng hơn, nhờ vào sàng (sieve) toàn phương (bậc hai) của Pomerance và nghiên cứu của Richard Schroeppel. Dĩ nhiên, vào thời điểm ấy chưa có mã hóa máy tính. Kích thước khóa mã hóa tăng gấp đôi vào năm 1970, đến năm 1980 kích thước này tăng gấp đôi thêm lần nữa. Đến năm 1990, khóa lại tăng thêm gấp đôi. Cứ mỗi 10 năm từ 1970 đến 1990, kích thước khóa mã hóa càng lớn. Nhưng đến 2000, không có tiến bộ toán học nào về khóa mã hóa và Hellman cho rằng các nhà toán học đã đến giới hạn tối đa của các mẫu khóa mã hóa.
Nhưng điện toán lượng tử lại mở ra chân trời mới, bởi vì với một hệ thống lượng tử phân tích mã hóa, hệ thống ấy thực sự có thể bẻ được mọi cơ chế mã hóa hiện thời. Điện toán ngày nay dựa vào hệ nhị phân 0-1 để vận hành. Còn với một hệ thống lượng tử thì ngược lại, nó dựa vào các thuộc tính lượng tử rất riêng để hoạt động, không chỉ có trạng thái hoặc 0, hoặc 1 như của nhị phân, giúp hệ thống này có thể đồng thời thực hiện nhiều tính toán.
Với một hệ thống mã hóa như hiện nay, có thể mất hàng triệu triệu năm để một máy tính trung bình có thể giải mã được. Nhưng với một máy tính lượng tử, cũng với thuật toán giải mã đó thì hệ thống có thể chỉ mất từ vài phút đến vài giây để giải. Trên Internet chúng ta chỉ sử dụng vài thuật toán để mã hóa mọi thứ. Do vậy, với một hệ thống lượng tử hoàn thiện, các hệ thống mã hóa hiện thời có vẻ chỉ như tấm màn chắn mỏng manh mà thôi.
Nếu bạn tự hỏi tại sao nhiều quốc gia lớn như Mỹ, Trung Quốc đang chi rất nhiều tiền để đầu tư vào điện toán lượng tử, thì có thể bên trên là một phần của câu trả lời. Kết quả mà điện toán lượng tử mang lại vượt quá tầm của hệ thống điện toán hiện tại.
Nhưng khi điện toán lượng tử phổ biến, một nhánh toán học mới xuất hiện, sử dụng các phương pháp thống kê nhiều hơn, để đảm bảo khi thế hệ máy tính tiếp theo xuất hiện thì mã hóa không bị mất đi.
Chính lượng tử đã khiến Einstein bị lên cơn đau tim, nhưng đó mới chỉ là một trong vài mối đe dọa đối với mã hóa hiện đại mà thôi. Rắc rối thực sự hiện nay là nhiều chính phủ, tổ chức lớn đang cố tìm cách làm suy yếu mã hóa với lý do an ninh quốc gia. Thực chất sự xung đột này đã có từ hàng chục năm qua, như Crypto Wars của những năm 1990, như chip CLIPPR trong hệ thống của NSA được thiết kế là backdoor về mã hóa trong hệ thống truyền thông di động của Mỹ. Và dĩ nhiên, trong vài năm gần đây, chúng ta đang chuyển trọng tâm từ việc loại bỏ hệ thống mã hóa sang đưa ra backdoor hay "master key" để bẻ khóa tin nhắn bảo mật của những ứng dụng, hệ thống nhắn tin phổ biến.