Agent AI của DeepMind làm giảm chi phí tấn công RSA 1024-bit: con số thật và phần còn là lý thuyết

Suốt năm nay, chuyện “AI gặp phân tích mật mã” chủ yếu xoay quanh các kỷ lục phân tích thừa số. Tháng 9, Eric Lu, nhà nghiên cứu của Cognition, dùng agent Devin dựng một pipeline sàng trường số (number field sieve – NFS) chạy trên GPU và phân tích được số thử thách RSA-260 dài 862 bit. Mười sáu ngày sau, Stephen A. Weis, nhân viên kỹ thuật của Anthropic, công bố phân tích xong RSA-896 (896 bit), trong đó Claude chuyển bộ công cụ mã nguồn mở CADO-NFS sang chạy trên GPU. Cả hai đều là kỳ tích kỹ thuật chứ không phải toán học mới.

Đóng góp của Google DeepMind tuần này thuộc loại khác. Ngày 5–6/11/2026, Pushmeet Kohli, phó chủ tịch phụ trách khoa học của DeepMind, công bố hai bài nghiên cứu sơ bộ (working paper) về RSA 1024-bit đời cũ. Đồng tác giả là các nhà nghiên cứu DeepMind, dẫn dắt bởi Krishnamurthy “Dj” Dvijotham và Abhradeep Thakurta, cùng hai cái tên hàng đầu trong giới phân tích mật mã thực hành: Nadia Heninger (UC San Diego, Inria) và Emmanuel Thomé (Inria, một trong những người phát triển chính của CADO-NFS). Bài thứ nhất vừa có thuật toán mới vừa có một phép tính quy mô thật do agent AI gần như tự làm trọn. Bài thứ hai là một kết quả tiệm cận mới về việc phân tích nhiều khóa cùng lúc, phần đại số được kiểm chứng bằng trợ lý chứng minh Lean 4.

Cả hai bài đều mở đầu bằng cùng một lời cảnh báo đóng khung: kết quả “không đe dọa các hệ mật mã đang triển khai dựa trên RSA 2048-bit trở lên”. Câu này quan trọng, vì con số đang lan trên mạng xã hội, “nhanh hơn 1.600 lần”, cần được bóc tách khá kỹ.

Bài 1: giả mạo chữ ký khi chỉ được mượn thiết bị ký một thời gian

Bài thứ nhất, Modular Roots from a Restricted Oracle: Faster Affine Roots and a 1024-bit Computation, nghiên cứu một kịch bản do Joux, Naccache và Thomé đưa ra năm 2007. Kẻ tấn công được truy cập tạm thời vào một thiết bị ký, gọi là oracle, thiết bị này sẽ tính căn bậc e theo modulo RSA (tức là chữ ký) cho đầu vào do kẻ tấn công chọn. Sau đó oracle bị thu hồi, và kẻ tấn công phải tự ký các thông điệp ngẫu nhiên mới. Cách này rẻ hơn nhiều so với phân tích modulus: không cần lấy được khóa bí mật, chỉ cần gom đủ “viên gạch” đã ký để ghép thành chữ ký mới.

Oracle có hai dạng. Oracle không hạn chế ký bất cứ thứ gì (trong chuẩn PKCS#11 là cơ chế RSA thô CKM_RSA_X_509). Oracle affine chỉ ký đầu vào có định dạng cố định, trong đó người gọi chỉ kiểm soát một phần nhỏ. Thiết bị ký thật hoạt động đúng như vậy: nó bọc dữ liệu bạn đưa vào bằng padding PKCS#1 v1.5 rồi mới ký.

Bài báo có ba kết quả:

  1. Khi nào padding hết tác dụng. Nhóm tác giả chứng minh rằng khi người gọi kiểm soát khoảng một nửa số bit của đầu vào (cỡ √N giá trị), oracle affine có thể mô phỏng oracle không hạn chế, chỉ tốn gấp đôi số lần truy vấn. Cụ thể, với CKM_RSA_PKCS ở độ dài 1024 bit, nếu người gọi được đưa vào hơn khoảng nửa khối dữ liệu, hoặc một digest 64 byte, thì bài toán không khó hơn trường hợp RSA thô. Digest 32 byte (như SHA-256) nằm dưới ngưỡng này. Những thiết bị tự băm thông điệp bên trong thì nằm ngoài cả hai mô hình.
  2. Thuật toán nhanh hơn cho trường hợp khó (affine). Chi phí cho mỗi chữ ký giả giảm từ LN[1/3; 1,8171] xuống LN[1/3; 1,5803], và có thể đánh đổi để đẩy chi phí trực tuyến xuống gần LN[1/3; 1,3867]. Cải thiện đến từ kỹ thuật “loại sớm” (early abort) nhiều tầng tối ưu khi kiểm tra tính trơn (smoothness) và một cơ sở thừa số thông minh hơn. Con số 1.600 lần chính là từ đây: thế mức giảm số mũ vào ký hiệu L ở độ dài 1024 bit, bỏ qua các số hạng o(1), sẽ ra hệ số khoảng 1.600. Thông báo của Kohli ghi rõ đây là “theo ước tính lý thuyết của chúng tôi”; bài báo chưa hề chạy thuật toán affine ở bất kỳ kích thước mật mã thực tế nào và coi việc làm cho nó khả thi là bài toán mở chính.
  3. Một phép tính 1024-bit thật. Đây mới là phần đã chạy. Các agent tái hiện phép tính năm 2026 của Shea, Haller, Suhl, Heninger và Thomé, vốn dùng oracle không hạn chế với một modulus 1024 bit. Cùng thuật toán, cùng đa thức, cùng giới hạn, chữ ký giả đầu tiên tốn 391 năm-lõi CPU (318 ngoại tuyến, 73 trực tuyến), so với 1.380 của lần trước, tức ít hơn 3,5 lần. Nhóm tác giả nói thẳng mức cải thiện này đến từ “cách hiện thực và vận hành, không phải từ thuật toán”: bộ sàng được tối ưu của họ nhanh hơn CADO-NFS gốc 1,8–4,4 lần trên cùng máy. Để so sánh, phân tích thẳng modulus đó ước tính tốn 500.000 đến 1.000.000 năm-lõi.

Cách tổ chức agent mới là điều dân lập trình nên đọc

Mục 6 của bài báo đọc như một case study về kỹ thuật phần mềm bằng agent. Hai agent dựa trên mô hình ngôn ngữ (bài báo chỉ gọi là “Model A” và “Model B”, không nêu tên model) chia việc:

  • Model A, người giám sát, viết tài liệu thiết kế, đặt ngân sách CPU và bộ nhớ cho từng giai đoạn, định nghĩa các phép kiểm tra mà mỗi giai đoạn phải qua, kiểm duyệt mọi kết quả và quyết định đi tiếp hay dừng. Nó còn sinh ra một sub-agent chuyên trách cho đúng một việc: tăng tốc 5 lần bước sinh tuyến tính trong thuật toán block Wiedemann.
  • Model B, người thực thi, viết và kiểm thử code, khởi chạy và theo dõi các job phân tán, sửa lỗi khi hỏng.
  • Nhà nghiên cứu con người đặt mục tiêu và phê duyệt các bước không thể đảo ngược, tổng cộng khoảng 20 tin nhắn, phần lớn là “làm theo đề xuất của bạn” và “tiếp tục”.

Các con số: 33.500 dòng code mới (24.000 dòng C++/CUDA, 8.400 dòng Python), 336 thí nghiệm phân tán, 16.292 lần gọi công cụ, 218 tin nhắn qua lại giữa hai agent, đỉnh điểm khoảng 300.000 lõi CPU và 16 GPU, và 3,2 ngày từ job sàng quy mô đầy đủ đầu tiên đến khi có chữ ký được xác minh (lần trước mất khoảng năm tháng). Quy trình có cổng kiểm soát: mỗi giai đoạn chạy trước trên một mẫu thử hoặc một lát “canary” 1%, và đợt truy vấn oracle, thứ chỉ làm được một lần, chỉ bắt đầu khi mọi phép kiểm tra đã thống nhất trước đều đạt. Các agent phát hiện và sửa được những lỗi mà bản tập dượt nhỏ không lộ ra, trong đó có một lỗi tràn chỉ số 32-bit khiến kết quả tính lần đầu bị sai.

Với ai đang xây CI pipeline hay chạy job batch lớn, mô hình này mới là bài học dùng được, chẳng liên quan gì đến mật mã: có tài liệu thiết kế, có ngân sách, có canary, người kiểm duyệt tách khỏi người làm, con người chỉ can thiệp ở các bước không thể quay lại.

Bài 2: “nhà máy hình quạt” để phân tích hàng loạt khóa

Bài thứ hai, Fan Factories: Multiple Number Fields in Factorization Factories and Batch NFS (ghi ngày 5/11), đặt câu hỏi: nếu kẻ tấn công muốn phân tích nhiều khóa RSA cùng kích thước thì sao? “Nhà máy phân tích thừa số” của Coppersmith đã cho phép tính trước phần sàng phía hữu tỉ một lần rồi dùng lại, nhưng chỉ có lợi khi bỏ ra chi phí ban đầu rất lớn. Nếu ngân sách ban đầu chỉ cỡ một lần phân tích thông thường, phương pháp tốt nhất cho mỗi khóa từ năm 1993 đến nay vẫn là sàng đa trường số (MNFS) của Coppersmith.

Ý tưởng mới là cho mỗi khóa mục tiêu một “quạt” gồm nhiều trường số riêng, tất cả cùng dùng chung phần tính trước. Với ngân sách bằng một lần phân tích, mỗi khóa tiếp theo tốn L[1/3; 1,793] thay vì 1,902. Ở 1024 bit, xét bậc dẫn đầu, mỗi khóa thêm chỉ tốn khoảng 1/58 chi phí phân tích NFS thông thường, rẻ hơn MNFS 30 lần. Gộp nhiều khóa mà không tính trước thì lợi ích rất nhỏ, tối đa khoảng 1,75 lần.

Chính bài báo nêu hai điểm cần lưu ý: “chưa có nhà máy hình quạt nào được hiện thực”, và các con số bỏ qua số hạng bậc thấp. Phần chứng minh do một bộ hai agent làm: một model sinh chứng minh, model kia kiểm tra, các đẳng thức đại số được Lean 4 xác minh.

Ý nghĩa, và những chỗ nên dè dặt

Với đội bảo mật, không có gì ở đây phá được RSA-2048. NIST đã không cho dùng khóa RSA dưới 2048 bit để tạo chữ ký mới từ nhiều năm nay, nhưng khóa 1024 bit vẫn còn sót trong bản ghi DKIM, cấu hình HSM cũ, ký firmware nhúng và hạ tầng PKI đời cũ. Bài học thực tế hẹp nhưng có thật: một HSM cho phép ký RSA thô, hoặc ký PKCS#1 v1.5 trên dữ liệu do người gọi đưa vào hay digest 64 byte, với khóa 1024 bit, đang nằm đúng trong mô hình tấn công vừa rẻ đi 3,5 lần trên thực tế. Bù lại, kiểu tấn công này cần hàng tỷ lần ký (phép tính 1024-bit đã gọi khoảng 4 × 10⁹ lần), đủ để giới hạn tần suất và nhật ký truy cập phát hiện.

Với ngành AI, điều đáng chú ý là tốc độ của vòng lặp nghiên cứu. Trong một lĩnh vực mà các hằng số trong ký hiệu L cả chục năm mới nhích một lần, nay có hai cải tiến tiệm cận mới và một phép tính cỡ kỷ lục ra đời cùng lúc, với agent lo phần kỹ thuật và soạn chứng minh dưới sự giám sát của chuyên gia. Đó là một tuyên bố mạnh hơn, và hệ quả lớn hơn, so với “AI phân tích được một số lớn”.

Vẫn còn nhiều câu hỏi mở. Đây là bài sơ bộ, chưa qua bình duyệt; các con số 1.600 lần và 1/58 là ước tính bậc dẫn đầu đã bỏ o(1), mà ở 1024 bit phần này có thể làm kết quả lệch đi rất nhiều; model của các agent không được nêu tên nên người ngoài không thể tái lập; còn mức 3,5 lần đo được chủ yếu nhờ code tốt hơn và khả năng song song trên hạ tầng cỡ Google. Tóm tắt trung thực nhất vẫn là câu của chính nhóm tác giả: công trình giúp hình dung rõ hơn các chuẩn chữ ký cũ chịu được đến đâu, và cho thấy nghiên cứu có AI hỗ trợ giờ đây có thể tiến nhanh đến mức nào.

Nguồn