Mật mã khoá công khai dựa trên những phép toán làm xuôi thì dễ mà làm ngược thì cực khó. Nhân hai số nguyên tố dài hàng trăm chữ số với nhau thì máy tính làm trong chớp mắt, còn từ tích đó tìm lại hai số nguyên tố ban đầu thì máy mạnh nhất hiện nay cũng phải mất thời gian dài không tưởng. Nhờ vậy, ai cũng có thể khoá thông tin gửi cho bạn, nhưng chỉ bạn mới mở được.
Chào bạn, đây là Nhà Toán Học. Mỗi lần bạn đăng nhập ngân hàng trên điện thoại hay thấy biểu tượng ổ khoá nhỏ trên thanh địa chỉ trình duyệt, những con số nguyên tố mà mình đã kể từ tập Euclid đang âm thầm làm việc. Tập này mình giải thích ý tưởng đó mà không cần công thức nào.
Bài toán cũ của mật mã: trao chìa khoá
Mật mã cổ điển giống một cái hộp có khoá với hai chìa giống hệt nhau. Bạn khoá, người nhận mở bằng chìa thứ hai. Vấn đề là làm sao trao chìa cho người nhận mà không bị ai nhìn trộm trên đường.
Với hai người quen nhau, có thể gặp mặt trao chìa trước. Nhưng với hàng triệu người mua bán trên mạng, chưa từng gặp nhau, chuyện trao chìa trước là không thể.
Giữa những năm bảy mươi của thế kỷ hai mươi, các nhà nghiên cứu công bố một ý tưởng đột phá: dùng hai chìa khác nhau, một chìa để khoá phát công khai cho cả thế giới, một chìa để mở giữ bí mật tuyệt đối.
Về sau người ta còn biết rằng một cơ quan của chính phủ Anh đã nghĩ ra ý tưởng tương tự sớm hơn vài năm nhưng giữ bí mật, cho tới khi được công bố hàng chục năm sau.
Hình ảnh ổ khoá bấm
Hãy hình dung bạn phát cho mọi người những chiếc ổ khoá bấm đang mở. Ai muốn gửi đồ cho bạn thì bỏ vào hộp, bấm ổ khoá lại. Bấm thì ai cũng bấm được, không cần chìa.
Nhưng một khi đã bấm, chỉ có chìa của bạn mở được. Kẻ gian nhặt được ổ khoá đang mở cũng chẳng làm gì được, vì cái họ cần là chìa, mà chìa bạn chưa bao giờ đưa ra khỏi nhà.
Trong toán học, ổ khoá đang mở chính là khoá công khai, còn chiếc chìa là khoá bí mật. Thách thức là tạo ra cặp ổ khoá và chìa sao cho nhìn vào ổ khoá không suy ra được chìa.
Đó là lúc cần những phép toán một chiều: dễ đi xuôi, cực khó đi ngược.
Vì sao nhân thì dễ mà phân tích thì khó?
Thử nhân ba với năm, ra mười lăm, tức thì. Ngược lại, cho mười lăm, hỏi là tích của hai số nguyên tố nào, bạn cũng trả lời ngay. Nhưng thử ba trăm chín mươi mốt xem. Phải thử chia một lúc mới ra là mười bảy nhân hai mươi ba.
Khi các số nguyên tố dài hàng trăm chữ số, phép nhân vẫn nhanh với máy tính, còn việc tìm ngược hai thừa số thì với những phương pháp đã biết, thời gian cần tăng vọt tới mức vô vọng. Khoá công khai chứa tích, khoá bí mật gắn với hai thừa số.
Phép toán dùng trong các hệ mã này còn cần đồng dư, chính là phép tính trên mặt đồng hồ mình đã kể ở tập thi học sinh giỏi, chỉ có điều mặt đồng hồ ở đây có hàng trăm chữ số.
Một điều thú vị: chưa ai chứng minh được phân tích thừa số là khó thật sự. Mọi người chỉ biết rằng các nhà toán học giỏi nhất đã cố hàng chục năm mà chưa tìm ra cách nhanh với máy tính thông thường. An toàn của mật mã dựa trên một bài toán chưa ai giải được.
Mối lo từ máy tính lượng tử
Máy tính lượng tử hoạt động theo nguyên lý khác hẳn máy tính thường. Từ những năm chín mươi, người ta đã chỉ ra rằng một máy tính lượng tử đủ lớn sẽ phân tích thừa số nhanh hơn rất nhiều, đe doạ những hệ mã dựa trên bài toán này.
Hiện nay chưa có máy tính lượng tử nào đủ mạnh để làm việc đó với các khoá dùng trong thực tế, và chưa ai chắc khi nào sẽ có. Nhưng giới mật mã không chờ.
Các tổ chức tiêu chuẩn quốc tế đã bắt đầu công bố những thuật toán mật mã mới, dựa trên những bài toán khác mà người ta tin là khó cả với máy tính lượng tử. Việc chuyển đổi các hệ thống sang thuật toán mới là một công trình lớn, kéo dài nhiều năm.
Đây là ví dụ rõ về toán học ứng dụng: một kết quả lý thuyết về thuật toán có thể buộc cả thế giới thay đổi cách bảo vệ thông tin.
Nghề mật mã cần học gì?
Người làm mật mã học cần số học, đại số trừu tượng, xác suất, lý thuyết thông tin, và tất nhiên là lập trình. Đây là lĩnh vực nơi toán thuần tuý, từng bị cho là vô dụng, trở nên thiết yếu.
Phần lớn người làm an toàn thông tin không tự thiết kế thuật toán mã hoá mới, mà dùng đúng các thuật toán đã được kiểm chứng. Lỗi trong thực tế thường không nằm ở toán, mà ở cách dùng sai: giữ khoá cẩu thả, cấu hình nhầm.
Với người dùng bình thường, bài học thực tế là đừng bao giờ đưa mã xác thực cho ai, kể cả người tự xưng là nhân viên ngân hàng. Toán học đã khoá cửa rất chắc, kẻ gian chỉ còn cách lừa bạn tự mở cửa.
Câu đố nhỏ: thử phân tích một trăm bốn mươi ba thành tích của hai số nguyên tố mà không dùng máy tính. Rồi hình dung việc đó với một số dài ba trăm chữ số.
Câu hỏi thường gặp
Mật mã khoá công khai là gì?
Đó là hệ mật mã dùng hai khoá khác nhau: khoá công khai để mã hoá, ai cũng có được, và khoá bí mật để giải mã, chỉ người nhận giữ. Nhờ vậy hai bên không cần gặp nhau để trao khoá trước.
Vì sao số nguyên tố quan trọng trong mật mã?
Vì nhân hai số nguyên tố lớn thì dễ nhưng từ tích tìm lại hai số đó thì cực khó với máy tính thông thường. Sự chênh lệch độ khó này là nền tảng an toàn của một số hệ mã khoá công khai.
Máy tính lượng tử có phá được mật mã ngân hàng không?
Về lý thuyết, một máy tính lượng tử đủ lớn có thể phá một số hệ mã đang dùng. Hiện chưa có máy như vậy, và các tổ chức tiêu chuẩn đã công bố những thuật toán mới được thiết kế để chống lại máy tính lượng tử.
Biểu tượng ổ khoá trên trình duyệt nghĩa là gì?
Nó cho biết kết nối giữa trình duyệt và trang web được mã hoá, người ngoài khó đọc trộm nội dung trên đường truyền. Nó không bảo đảm trang web đó đáng tin, nên vẫn phải kiểm tra đúng địa chỉ trang.
Học gì để làm nghề mật mã?
Cần nền tảng vững về số học, đại số, xác suất và lập trình. Nhiều người đi theo hướng toán tin hoặc khoa học máy tính, rồi chuyên sâu về an toàn thông tin.