- Signal giới thiệu Sparse Post Quantum Ratchet (SPQR, ratchet hậu lượng tử thưa), giúp nâng cao đáng kể mức độ bảo mật của Signal Protocol, tăng khả năng chống chịu trước các mối đe dọa điện toán lượng tử trong tương lai, đồng thời vẫn duy trì các ضمان bảo đảm Forward Secrecy (FS) và Post-Compromise Security (PCS) hiện có
- Signal Protocol là một tập hợp các đặc tả mật mã cung cấp mã hóa đầu cuối cho các liên lạc riêng tư được hàng tỷ người trên thế giới sử dụng mỗi ngày, và kể từ khi được công bố năm 2013, không chỉ ứng dụng Signal mà cả nhiều sản phẩm nhắn tin lớn khác cũng đã áp dụng
- PQXDH được công bố trước đó đã tích hợp bí mật mã hóa kháng lượng tử khi thiết lập phiên chat để bảo vệ trước các cuộc tấn công harvest-now-decrypt-later, nhưng SPQR đạt được các bảo đảm FS và PCS theo cách an toàn trước lượng tử để giảm thiểu thiệt hại và khôi phục khi cuộc trò chuyện tiếp diễn
- SPQR được trộn với Double Ratchet hiện có của Signal để tạo thành tổ hợp gọi là Triple Ratchet; trải nghiệm người dùng không thay đổi, mọi cuộc trò chuyện tự động chuyển sang giao thức mới và bảo vệ cả liên lạc hiện tại lẫn tương lai
- Thông qua nghiên cứu học thuật (các bài báo Eurocrypt 25, USENIX 25), chia khối dựa trên erasure code và kiểm chứng hình thức (ProVerif, hax/F*), giao thức được kiểm chứng cơ học về tính đúng đắn và các thuộc tính bảo mật, đồng thời được tái kiểm chứng sau mỗi thay đổi trong pipeline CI để trở thành một phần động của quy trình phát triển
Tổng quan
- Signal nâng mức bảo mật của Signal Protocol lên một bậc với việc giới thiệu Sparse Post Quantum Ratchet (SPQR)
- Dựa trên nền tảng bảo mật vốn đã mạnh, SPQR tăng cường hơn nữa cấu trúc bảo đảm Forward Secrecy (FS) và Post-Compromise Security (PCS) để ứng phó với các mối đe dọa điện toán lượng tử trong tương lai
- Hệ thống được áp dụng một cách tự nhiên trên toàn bộ nền tảng đến mức người dùng hầu như không cảm nhận được thay đổi, đồng thời bảo đảm môi trường trong đó nội dung hội thoại vẫn được bảo vệ an toàn ngay cả khi máy tính lượng tử trở thành hiện thực
Tình trạng hiện tại của Signal Protocol
- Signal Protocol là tiêu chuẩn nhắn tin mã hóa đầu cuối được sử dụng rộng rãi hằng ngày
- Trong giao thức hiện tại, cấu trúc double ratchet đã triển khai forward secrecy bằng hàm băm (an toàn trước lượng tử) và post-compromise security bằng Elliptic Curve Diffie-Hellman (ECDH)
- ECDH hiện nay có mức an toàn cao, nhưng về lâu dài có nguy cơ trở nên dễ bị tấn công bởi máy tính lượng tử
- Ratchet là kỹ thuật tạo ra khóa bí mật mới trong suốt cuộc trò chuyện để ngăn nội dung của các tin nhắn trước đó hoặc sau đó bị lộ
- Alice và Bob định kỳ thỏa thuận thông tin bí mật ECDH mới để làm mới phiên
Nhu cầu kết hợp yếu tố bảo mật lượng tử
- Máy tính lượng tử có thể vô hiệu hóa các phương thức mật mã bất đối xứng truyền thống như ECDH
- Để chuẩn bị cho điều đó, phương thức triển khai ban đầu là PQXDH đã trộn thông tin bí mật an toàn trước lượng tử tại thời điểm bắt đầu phiên
- Nhu cầu trao đổi khóa liên tục bằng Key Encapsulation Mechanism (KEM) dựa trên thuật toán an toàn trước lượng tử trong quá trình trò chuyện ngày càng trở nên rõ rệt
- KEM tạo bí mật chia sẻ giống như Diffie-Hellman, nhưng cần trao đổi các thông điệp bất đối xứng có thứ tự
- Các KEM đã được chuẩn hóa như ML-KEM được dùng để tạo ra bí mật liên tục, an toàn trước lượng tử trong suốt phiên
Tối ưu hóa state machine và băng thông
- Vì phương thức KEM có kích thước dữ liệu trao đổi khóa lớn (khoảng 1000 byte), tối ưu hóa băng thông truyền thông là vấn đề quan trọng
- Logic state machine được dùng để quản lý việc Alice và Bob sẽ gửi cho nhau dữ liệu nào (Encapsulation Key, Ciphertext, v.v.) và vào thời điểm nào
- Bằng cách chia dữ liệu thành các chunk và sử dụng erasure code, dữ liệu lớn được tách thành các mảnh nhỏ để dễ khôi phục khi có mất mát hoặc thất lạc thông điệp
- Giao thức cũng được thiết kế để khiến việc kẻ tấn công cố ý chỉ loại bỏ các chunk trao đổi khóa nhằm làm gián đoạn giao thức trở nên khó khăn
- Nhờ đó, có thể xử lý hiệu quả các tình huống mất gói, đảo thứ tự và độ trễ vốn phổ biến trong môi trường di động thực tế
Đánh đổi giữa hiệu quả và an toàn, cùng các tối ưu hóa
- Nếu tăng tốc độ tạo shared secret một cách vô điều kiện, ngược lại có thể làm tăng rủi ro toàn bộ thông tin bí mật tại một thời điểm nào đó bị lộ khi có tấn công
- Signal đã chạy nhiều mô phỏng state machine để tìm điểm cân bằng giữa an toàn và hiệu quả trong khoảng giữa truyền song song và truyền tuần tự
- Phân tích chi tiết quy trình ML-KEM và áp dụng các kỹ thuật như chia nhỏ chunk để truyền đồng thời giúp tối đa hóa hiệu quả sử dụng băng thông
- Signal gọi quá trình này là ML-KEM Braid và sử dụng nó như một mô-đun trong giao thức riêng của mình
Cấu trúc Triple Ratchet
- Double Ratchet (hiện có) và SPQR (mới, an toàn trước lượng tử) cùng hoạt động, rồi các khóa được kết hợp để tạo ra khóa mã hóa theo phương thức lai
- Với Triple Ratchet, chỉ khi cả hai thuật toán đều bị phá thì mới có nguy cơ lộ tin nhắn, nên mức độ bảo mật tăng lên đáng kể
- Trong triển khai thực tế, khóa được lấy riêng từ double ratchet và SPQR rồi kết hợp thêm một lần nữa bằng hàm dẫn xuất khóa
- Cấu trúc triple ratchet bảo đảm cả an toàn trước lượng tử lẫn an toàn truyền thống cho các tin nhắn trong quá khứ và tương lai
Triển khai không đồng nhất và xử lý tương thích
- Vì việc nâng cấp được áp dụng dần dần, có thể phát sinh vấn đề tương thích với người dùng chưa hỗ trợ SPQR
- Trong quá trình thương lượng tin nhắn ban đầu, hệ thống cho phép hạ cấp tạm thời để hai người dùng có thể liên lạc bằng phương thức tương thích với nhau
- Khi dữ liệu SPQR được đính kèm vào tin nhắn, nó được bảo vệ bằng mã xác thực để ngăn kẻ tấn công ép buộc hạ cấp
- Một khi hai bên hoàn tất thương lượng tương thích, quyết định sử dụng SPQR sẽ được cố định cho toàn bộ phiên sau đó
- Khi tất cả người dùng đã nâng cấp lên phiên bản hỗ trợ SPQR, các phiên cũ sẽ được lưu trữ/kết thúc và các phiên mới sẽ áp dụng SPQR đầy đủ
Kiểm chứng độ an toàn của giao thức và công cụ xác minh
- Ngay từ giai đoạn thiết kế giao thức, Signal đã hợp tác chặt chẽ với giới học thuật, PQShield, AIST, NYU và các bên khác
- Thông qua các bài báo hội nghị như Eurocrypt 25 và USENIX 25, giao thức được chứng minh về mặt lý thuyết là đáp ứng cả tính an toàn trước lượng tử lẫn các yêu cầu bảo đảm hiện có
- Trong 6 giao thức ratchet hậu lượng tử được đề xuất, SPQR và Katana (giao thức mới sử dụng KEM) là những phương án còn trụ lại
- Formal Verification được vận hành tự động thường trực bằng các công cụ như Cryspen, ProVerif, hax, F* cùng pipeline CI
- Sự đồng bộ giữa phần triển khai bằng Rust và mô hình kiểm chứng giúp bảo đảm tính nhất quán giữa thiết kế và mã thực tế
- Trong quá trình triển khai, các bất biến (assertion) cũng được đưa tích cực vào mã; nếu xảy ra lỗi, ứng dụng sẽ dừng để ngăn ngừa lỗ hổng tiềm ẩn từ sớm
Kiểm chứng song hành với phát triển liên tục
- Quy trình kiểm chứng hình thức không phải công việc một lần, mà được tự động lặp lại mỗi khi codebase có thay đổi
- Nếu kiểm chứng thất bại khi hợp nhất mã mới, bản dựng cũng sẽ không thể hoàn tất
- Theo kinh nghiệm thực tế, chỉ cần quản lý rõ ràng lỗi biên cùng các điều kiện trước/sau thì việc bảo trì sẽ thuận lợi hơn và mức độ hoàn thiện của giao thức cũng có thể được tối đa hóa
Tóm tắt kết luận
- Signal hướng tới việc cung cấp bảo mật kháng lượng tử cho mọi tin nhắn bằng cách đưa vào cấu trúc Triple Ratchet đáng tin cậy (Double Ratchet + SPQR)
- Việc chuyển đổi giao thức sẽ diễn ra theo từng giai đoạn, không làm gián đoạn dịch vụ hay gây bất tiện cho người dùng
- Lượng dữ liệu truyền thêm được giữ ở mức tối thiểu, nên hầu như không tạo thêm gánh nặng chi phí trong môi trường di động
- Giao thức có khả năng chống tấn công trung gian (MITM) mạnh vì để thao túng thành công, kẻ tấn công sẽ phải gây ra trạng thái từ chối dịch vụ
- Mã và thiết kế được kiểm chứng hình thức một cách có hệ thống, và sẽ tiếp tục duy trì tính bảo mật trong tương lai
- Từ góc nhìn người dùng Signal, môi trường được bảo vệ sẽ khiến các thay đổi của giao thức hay mối đe dọa từ máy tính lượng tử gần như không thể nhận thấy
1 bình luận
Bình luận trên Hacker News
Dù Signal liên tục công bố những bài báo mật mã thực sự xuất sắc, nhưng ở góc độ sản phẩm thì lại có cảm giác họ đang thử hết thứ này đến thứ khác vì không biết điều gì sẽ thành công. Họ đang thử các hướng mới như bắt tay hậu lượng tử, Stories, chuyển tiền, nhưng vẫn thiếu SDK, API và hỗ trợ bot. Thư viện chính thức cũng còn dang dở, lại không có tài liệu. Nhiều tính năng vẫn bị giấu trong client. Họ có công bố đặc tả giao thức, nhưng bảo người khác tự dựa vào đó mà làm thư viện thì là một thái độ vô trách nhiệm, hoàn toàn xa rời cách vận hành sản phẩm thực tế. Một nền tảng có hàng triệu người dùng mà lại thiếu những thứ cơ bản ở mức này. Các ứng dụng như WhatsApp hay iMessage vẫn mở ra cho nhà phát triển một thứ gì đó, còn Signal thì có cảm giác loại bỏ triệt để mọi thứ liên quan đến developer. Khó mà nhìn ra một chiến lược rõ ràng, đến mức khiến người ta tự hỏi có phải họ không có product manager hay không. Với tư cách là người dùng Signal lâu năm và cũng từng tích cực quảng bá nó, tôi thấy Signal giống một ứng dụng nhắn tin dán chồng đủ loại công nghệ mật mã nóng hổi lên trên, còn khép kín với nhà phát triển hơn cả hệ sinh thái Apple. Dù vậy, tôi vẫn biết ơn những người đã làm ra sản phẩm này
Đồng ý. Đặc biệt là tính năng "Stories" thực sự cho cảm giác kiểu cứ ném ra xem có thành gì không. Tôi nghĩ vì Signal là một tổ chức phi lợi nhuận mang màu sắc vô chính phủ nên mục tiêu của họ vốn đã khác công ty bình thường. Ứng dụng vẫn làm tốt nhiệm vụ cốt lõi nên cũng ổn, nhưng nếu có SDK thì sẽ thực sự tuyệt vời
Tôi tự hỏi liệu các tính năng như API hay bot cho doanh nghiệp có thực sự quan trọng không. WhatsApp và iMessage có API cho doanh nghiệp, nhưng với tư cách người dùng phổ thông tôi chưa từng thực sự tương tác với doanh nghiệp qua đó. Thay vào đó chỉ thỉnh thoảng bị bot làm phiền. Vấn đề thật sự của Signal là nếu ứng dụng âm thầm trở nên quá cũ hoặc ngừng cập nhật thì nó không cảnh báo và bạn có thể bỏ lỡ tin nhắn hoàn toàn. Đây là sứ mệnh cốt lõi của một ứng dụng nhắn tin mà lại không làm được
Thực ra với tôi, việc không có API và bot lại là một điểm cộng
Tôi muốn họ tập trung vào việc làm một ứng dụng nhắn tin an toàn và hữu dụng như hiện tại, thay vì thêm những tính năng đó
Điều thực sự làm tôi bực ở Signal là âm chuông mà người gọi nghe được vẫn phát ra ngay cả khi điện thoại người nhận thực tế không hề đổ chuông. Đây là chính sách chính thức mà họ đã bảo vệ từ lâu, nói rằng họ cố tình làm như vậy. Tình trạng này vẫn tiếp diễn kể từ sau khi họ bỏ âm thanh tàu ngầm ngày xưa
Tôi khá bất ngờ khi thấy giao thức của Signal tên là SPQR. SPQR là viết tắt trong tiếng Latin của "Senatus Populusque Romanus" xem Wikipedia. Quá ngầu
Dùng SPQR làm tên cho một giao thức hướng tới tương lai lại cho cảm giác hơi kiểu Ozymandias
Cách đặt tên rất thông minh. Tôi biết cụm này vì nó hay xuất hiện dưới dạng hình xăm của lính lê dương La Mã trong mini-series "Rome" của BBC Wikipedia về Rome
Strength and Honor (Sức mạnh và Danh dự)
Tôi nghĩ chỉ trên Hacker News mới thấy được kiểu hài hước này. Nó làm tôi nhớ đến truyện tranh về "cách một nhà toán học nhớ số tủ đồ của mình". ("1975 à? Đó là căn bậc hai của 3,900,625!")
Hay là họ chỉ đặt tên vậy vì "SPQR" nghe giống "Speaker", hợp với một ứng dụng chat? Không nhất thiết cái gì cũng phải gắn với La Mã
Điểm yếu lớn nhất của Signal là cách phân biệt danh tính bằng số điện thoại. Không chỉ hacker mà cả các chính phủ độc tài cũng có thể chiếm quyền số điện thoại bất cứ lúc nào. Nghĩ đến các mối đe dọa tương lai cũng quan trọng, nhưng ưu tiên đang bị đặt sai chỗ
Chia sẻ cho ai chưa biết: Giới thiệu tính năng ẩn số điện thoại bằng username trên Signal (tháng 2/2024)
Nhiều ứng dụng nhắn tin bảo mật hoạt động tốt mà không cần số điện thoại, thậm chí còn xóa cả metadata khi cung cấp dịch vụ. Ở những quốc gia mà số điện thoại và SIM bị gắn với danh tính cá nhân, cách làm của Signal là một rào cản gia nhập
Việc yêu cầu số điện thoại là một cách vừa dễ vừa đáng tin để chống spam
Bản thân việc xác thực danh tính bằng số điện thoại không khiến tôi thấy đó là một vấn đề chí mạng. Dù chính phủ độc tài có chiếm được số thì cũng không đồng nghĩa lấy được lịch sử tin nhắn. Người dùng nhận tín hiệu đó cũng sẽ được cảnh báo. Signal không phải không có vấn đề, và việc chỉ ra tiêu chuẩn cũng như phê bình là hoàn toàn cần thiết, nhưng đây vẫn là ứng dụng nhắn tin duy nhất có mã hóa đầu cuối đầy đủ và bảo vệ metadata mà người bình thường có thể dùng được. Có những dịch vụ còn mạnh hơn về bảo mật/quyền riêng tư, nhưng việc cả bà tôi cũng dùng được mới là điều thực sự quan trọng. Tôi muốn Signal, sau khi đã đủ vững về bảo mật, giờ hãy tập trung hơn vào quyền riêng tư. Dù có phê bình, tôi vẫn rất khuyến nghị nó và thường xuyên giới thiệu cho bạn bè. Tôi cũng đã quyên góp nhiều lần xem báo cáo minh bạch của Signal
Signal có tính năng "khóa đăng ký", nên nếu đặt mật khẩu thì có thể ngăn tài khoản bị chiếm do cướp SIM
Tôi muốn biết sau khi Signal áp dụng SPQR (ratchet kháng lượng tử) lần này thì nó đang ở đâu nếu so với PQ3 của iMessage. Cũng muốn nghe thêm đánh giá về các nỗ lực nhắn tin kháng lượng tử trước đây của Cyph và Simplex. Giới thiệu iMessage PQ3 / Cyph - Post-Quantum Castle / Simplex - tính năng kháng lượng tử
SPQR của Signal cũng là cấu trúc ratchet dựa trên ML-KEM tương tự PQ3, nhưng cách truyền khóa khác nhau. Vì khóa ML-KEM dài nên PQ3 chỉ gửi khóa định kỳ, thỉnh thoảng mới gửi, còn Signal thì chia nhỏ và gửi kèm theo tin nhắn. Đánh giá của họ là với băng thông ẩn, về mặt bảo mật thì việc chunking lại an toàn và hiệu quả hơn. Do mã sửa lỗi nên tổng băng thông có thể tăng lên, nhưng kích thước mỗi tin nhắn sẽ đều hơn. Apple kiểm soát mạng mạnh hơn nên có lẽ sẽ dễ phòng thủ việc ép thay khóa lại tích cực hơn
Tôi không chắc iMessage có thực sự ý nghĩa trong bối cảnh hiện tại không. Vì đa số người dùng iPhone dùng sao lưu iCloud mà không có E2E, còn sao lưu mã hóa hoàn toàn chỉ là tùy chọn. Nghĩa là nếu có yêu cầu từ cơ quan thực thi pháp luật thì Apple vẫn có thể giải mã giúp, nên chưa cần đến máy tính lượng tử thì đã đủ yếu rồi
Nhìn cái tên SPQR (Sparse Post-Quantum Ratchet) là tôi đoán trong đội Signal có người mê lịch sử La Mã
Mọi người nghĩ về Đế chế La Mã với tần suất bao lâu?
Cũng có thể đây là một biến tấu của từ "Speaker", một từ rất hợp với ứng dụng chat
Điểm yếu lớn nhất của Signal là xác thực danh tính dựa trên số điện thoại. Không chỉ hacker mà cả chính phủ độc tài cũng luôn có nguy cơ chiếm quyền sở hữu số. Nghĩ đến đe dọa tương lai thì được thôi, nhưng thứ tự ưu tiên nên khác đi
Tôi muốn Signal trở thành lớp nền truyền tin, tức một "bus truyền tải". Ví dụ, nếu tôi có thể yêu cầu và gửi vị trí của mình một cách an toàn cho một liên hệ cụ thể nào đó (như vợ tôi), thì sẽ không cần phải đi qua Google. Họ đã giải được bài toán xác thực danh tính rồi, nên giờ nên khuyến khích xây ứng dụng trên Signal. Tôi cũng nghĩ làm 2FA qua Signal sẽ an toàn hơn SMS
Tôi cũng rất muốn thấy phần so sánh giữa Signal Protocol hiện đại với Matrix, MLS và những thứ tương tự. Mọi thứ thay đổi quá nhanh nên khó theo kịp; tôi muốn biết bức tranh quan hệ giữa chúng ở thời điểm hiện tại
Matrix là một open standard, dùng tổ hợp Olm + Megolm (double ratchet + group-key ratchet), còn metadata thì theo cấu trúc lộ ra cho server thấy (cấu trúc nhóm lộ cho server, các giá trị thuộc tính lưu dạng plaintext, dù đang có nỗ lực cải thiện: Blog Element - kế hoạch mã hóa metadata của phòng). Do là kiến trúc phân tán nên ai cũng có thể tự dựng server.
Cuối cùng, MLS (RFC 9420) là giao thức membership nhóm và trao đổi khóa, có thể thay thế double ratchet, và gần đây cũng có các đề xuất bổ sung hậu lượng tử. Hiệu năng của nó hiệu quả ở mức O(log N) cho mỗi nhóm. Nó vẫn chưa thực sự trưởng thành và phức tạp hơn double ratchet. Việc phổ biến còn chậm, nhưng là tiêu chuẩn IETF và đã được Google dùng trong RCS, Discord/Webex VoIP, v.v. Nó không cung cấp khả năng che giấu metadata hay tính phủ nhận mật mã (deniability)
Đây là bài viết về mật mã hay nhất mà tôi từng đọc. Tôi vốn nghĩ mình có mức hiểu biết nhất định về lĩnh vực này, nhưng với những bài khác cùng chủ đề thì đến giữa bài là mắt tôi thật sự mỏi mệt, còn bài này thì dù nói về một chủ đề hoàn toàn xa lạ tôi vẫn theo kịp mạch lập luận từ đầu đến cuối
Có ai hiểu rõ về mối đe dọa từ mật mã hậu lượng tử có thể giải thích dễ hiểu hơn việc giao thức mới nhất của Signal đã an toàn hơn như thế nào không? Tôi đọc mà vẫn chưa hiểu chính xác vì sao nó an toàn hơn. Cũng tò mò liệu hiệu năng thực tế có bị chậm đi không
Giải thích ngắn gọn thì, kịch bản đe dọa tiêu chuẩn là phía đối địch của ta "không giải mã được bây giờ, nhưng một ngày nào đó khi máy tính lượng tử khả thi, họ sẽ lấy toàn bộ bản mã đang thu thập hiện tại và giải một lượt trong tương lai". Đây là mô hình "Harvest and decrypt". Nếu bí mật trong Signal cần được giữ lâu dài từ bây giờ về sau, thì ngay từ hôm nay đã cần thỏa thuận khóa hậu lượng tử. Đó là lý do cần các giao thức mới như PQXDH.
Ratchet hậu lượng tử quan trọng vì còn một mối đe dọa rất thực tế khác: ngoài việc thu thập bản mã lâu dài, kẻ tấn công rồi có thể hack thiết bị hoặc khai thác lỗi triển khai nào đó để làm lộ khóa. Khi đó cần hai lớp phòng thủ là forward secrecy và post-compromise security. Nếu khóa liên tục được làm mới theo từng thời điểm, thì dù có một lần bị lộ cũng không kéo theo việc cả tin nhắn quá khứ lẫn tương lai đều gặp nguy hiểm. Muốn cơ chế phòng thủ này hoạt động đúng cả trong môi trường hậu lượng tử, thì phải nâng cấp toàn bộ cấu trúc ratchet lên hậu lượng tử. Nếu không, kẻ tấn công sẽ chỉ nhắm vào đoạn ratchet và toàn bộ tính an toàn sẽ sụp đổ
Cách triển khai mật mã kháng lượng tử trước đây của Signal không có PCS (post-compromise security). Lần này thì đã có. Tôi cũng thấy vui vì cuối cùng đã hiểu PCS nghĩa là gì. Vì đây là một khái niệm mới nên tôi từng khá kỳ vọng, nhưng hơi tiếc là hóa ra OTR (Off-the-Record) đã dùng cách này từ trước rồi. Việc trao đổi khóa này không diễn ra thường xuyên nên hiệu năng thực tế hầu như không bị ảnh hưởng
Tóm tắt từ blog chính thức:
Sono pazzi, questi Romani (Người La Mã đúng là điên thật)