Chuyển đến nội dung
Quay lại Nymchat

Cơ sở tri thức Nói chuyện với mọi người

Mã hóa kháng lượng tử

Tin nhắn riêng tư và cuộc trò chuyện nhóm giữa những người dùng Nymchat có thể được mã hóa để rằng việc ghi lại chúng ngày hôm nay chẳng mang lại lợi ích gì cho kẻ tấn công, ngay cả khi máy tính lượng tử xuất hiện.

Vấn đề nó giải quyết

Mã hóa Nostr thông thường — NIP-44, đó là cái gì tin nhắn riêng tưtrò chuyện nhóm được xây dựng trên - có hai nửa. Một nửa đó thực sự làm xáo trộn văn bản (ChaCha20, HMAC-SHA256, HKDF) vẫn hoạt động tốt trước lượng tử máy tính. Một nửa đồng ý về chìa khóa thì không.

Thỏa thuận quan trọng đó là đường cong elip Diffie-Hellman trên secp256k1, cùng một phép toán mà Bitcoin sử dụng. Thuật toán của Shor giải quyết nó hoàn toàn. Bất cứ ai chạy nó với khóa công khai sẽ khôi phục được khóa riêng và cùng với nó là mọi bí mật chung mà khóa đó từng tạo ra.

Thu hoạch ngay, giải mã sau

Đây không phải là vấn đề bắt đầu khi máy tính lượng tử xuất hiện. Đối thủ có đủ lưu trữ có thể ghi lại lưu lượng được mã hóa Hôm nay, ngồi trên đó và giải mã nó nhiều năm sau đó. Bất cứ điều gì bạn gửi bây giờ vẫn còn quan trọng thì đều đã bị lộ. Đó là điều cụ thể tấn công tính năng này đánh bại.

Nó hoạt động như thế nào

Nymchat để lại định dạng tin nhắn NIP-44 hoàn toàn một mình. thỏa thuận chính mà nó đã sử dụng không bị ảnh hưởng; một thỏa thuận thứ hai, độc lập được thêm xung quanh nó.

  • tiêu chuẩn secp256k1 ECDH, chính xác như trước đây;
  • ML-KEM-768, thuật toán hậu lượng tử NIST được chuẩn hóa thành FIPS 203. Tính bảo mật của nó dựa trên các vấn đề về mạng mà thuật toán của Shor không chạm tới.

Hai người này là Lớp, không hỗn hợpThông điệp được mã hóa với NIP-44 chính xác như nó luôn luôn, và văn bản mã hóa hoàn thành đó sau đó được niêm phong lần thứ hai bên trong lớp hậu lượng tử – ChaCha20-Poly1305, được khóa từ bí mật được chia sẻ ML-KEM. Chìa khóa của người gửi, chìa khóa của người nhận, văn bản mã hóa bao bì và chìa khóa ML-KEM của người nhận được gắn vào dẫn xuất đó như là bối cảnh, vì vậy một lớp không thể được nâng ra khỏi một trao đổi và phát lại trên một lớp khác.

Một kết hợp như X-Wing hoặc Signal's PQXDH trộn cả hai bí mật thành một phím thay vào đó. Nymchat không, và lý do là thực tế hơn là mã hóa: trộn cần đầu ra ECDH thô, và một phần mở rộng trình duyệt hoặc chữ ký từ xa sẽ không bao giờ chuyển nó trở lại - nó trả về một văn bản mã hóa hoàn thành, đó là toàn bộ điểm giữ phím nơi ứng dụng không thể tiếp cận nó. Layering giữ cho NIP-44 toàn bộ và được sản xuất bởi bất cứ thứ gì giữ phím nhận dạng, chữ ký bao gồm, vì vậy những đăng nhập đó là những người tham gia bình thường chứ không phải những người bị loại trừ.

Tài sản quan trọng là như nhau: kết quả là ít nhất là mạnh mẽ như một nửa mạnh mẽ hơnĐọc thông điệp có nghĩa là vượt qua cả hai lớp.Nếu mã hóa lưới trở nên yếu hơn mong đợi, phá vỡ ML-KEM chỉ xé lớp bên ngoài và để lại NIP-44 ngày nay bên dưới.Nếu secp256k1 rơi vào một máy tính lượng tử, lớp bên trong mở ra nhưng lớp bên ngoài không.Một kẻ tấn công phải phá vỡ cả hai.

Mỗi tin nhắn đều nhận được một trao đổi hậu lượng tử mới, do đó việc khôi phục khóa của một tin nhắn sẽ tiết lộ không có gì về những người khác.

Nửa hậu lượng tử cần một chìa khóa riêng của nó, và từ đâu mà chìa khóa đó đến là điều quyết định liệu toàn bộ điều đó có đáng giá gì không. không Làm việc từ của bạn nsecMột máy tính lượng tử phá vỡ nửa cổ điển phục hồi nsec từ khóa công cộng của bạn, và bất cứ điều gì bắt nguồn từ nsec bởi một công thức được công bố đi ra với nó — hai khóa mở bằng một break. Mã hậu lượng tử cho mỗi tài khoản, một lần, từ các byte ngẫu nhiên mà không có giá trị công khai phơi bày. nympq1… Và ngồi bên cạnh bạn nsec Nó không phải là một mật khẩu và không phải là một đăng nhập thứ hai: nó là tài liệu quan trọng bạn có thể lưu, giống như nsec.

Không có gì để bật

Đây không phải là một thiết lập. Mã hóa hậu lượng tử chỉ đơn giản là cách Nymchat nói chuyện với Nymchat, giống như cách mã hóa thông thường là cách nó giao tiếp với mọi thứ khác. Nó tự động áp dụng cho mọi tin nhắn riêng tư và trò chuyện nhóm với người dùng Nymchat khác.

Cài đặt › Quyền riêng tư & Bảo mật cho thấy nếu nó đang hoạt động và có bao nhiêu liên hệ của bạn hiện đang tiếp cận, nhưng chỉ là thông tin - không có chuyển đổi.

Điều này hoạt động bất cứ cách nào bạn đăng nhập. Một phần mở rộng trình duyệt (NIP-07) hoặc đăng nhập từ xa (NIP-46) không bao giờ gửi chìa khóa nhận dạng của bạn cho ứng dụng, đó là toàn bộ điểm của việc sử dụng một - và nó không phải. Hai nửa của mã hóa được giữ riêng: người ký của bạn làm phần nó luôn làm, và ứng dụng làm phần hậu lượng tử với mã khôi phục của bạn, mà nó giữ trực tiếp. phần mở rộng và đăng nhập từ xa là những người tham gia bình thường theo cả hai hướng. đường trạng thái trong Cài đặt cho biết những gì áp dụng cho bạn.

Không có gì bạn đã có bị ảnh hưởng.Mỗi tin nhắn trong lịch sử của bạn vẫn có thể đọc được trên mọi thiết bị với không có gì ngoại trừ nsec, chính xác như trước đây, và ở lại như vậy cho cuộc sống của tài khoản. nympq1… mã phục hồi là tài liệu kháng lượng tử được viết từ bây giờ: tin nhắn mới, và các thiết lập đồng bộ và kho lưu trữ đi cùng với chúng.

Vì vậy, một thiết bị phải giữ mã đó trước khi nó có thể mở chúng, và thêm một thiết bị bây giờ mất một bước thêm. nympq1… mã từ một thiết bị đã có nó. Nó là một lần cho mỗi thiết bị, không phải một lần cho mỗi đăng nhập. Bước đó không phải là ma sát chúng tôi không thể loại bỏ: một mã có thể đến trên một thiết bị mới một mình sẽ phải đi du lịch ở đó trong một thông điệp thông thường, và thông điệp đó chính xác là những gì kẻ tấn công tính năng này tồn tại để ngăn chặn đang ghi lại.

App này tạo ra các nympq1… mã cho bạn, vì vậy không có gì để lựa chọn và không có gì để phát minh. để xem nó: chạm vào nym của bạn để mở Xem hoặc chỉnh sửa Nym's DetailsSau đó Mở khóa riêng và mã khôi phục của nymNó nằm ngay bên dưới của bạn nsecBạn không bao giờ phải suy nghĩ về nó cho đến ngày bạn thêm một thiết bị thứ hai.

Một thiết bị không liên kết không bị khóa trong khi đó. nó tiếp tục đọc mọi thứ được viết dưới mã hóa cũ và tiếp tục gửi bình thường, và một khi bạn liên kết nó, nó quay trở lại và mở các tin nhắn kháng lượng tử mà nó không thể đọc trước đó.

Các thiết bị khác của bạn

Một thiết bị thứ hai cần hai thứ: một phiên bản hiện tại của ứng dụng, và nympq1… Một build cũ vẫn hoạt động - nó không bị cắt - nhưng nó không thể đọc định dạng hiện tại, vì vậy trong khi nó vẫn còn trên tài khoản, các bản sao bạn giữ cho chính mình rơi trở lại một bản cũ mà nó có thể. Một thiết bị cập nhật chưa được liên kết vẫn đọc lịch sử cũ của bạn và yêu cầu mã.

Bạn nhận nó với ai

Cả hai bên đều cần nó. Mỗi khách hàng Nymchat xuất bản một thông báo nhỏ được ký kết, hết hạn nói như vậy, và bao gồm khóa hậu lượng tử của nó khi nó có một. Giữ một thông báo hợp lệ cho ai đó là những gì làm cho ứng dụng sử dụng trao đổi mạnh mẽ hơn với họ. Không có cuộc đàm phán để can thiệp: hoặc khóa là có hoặc nó không có, và vì thông báo được ký bởi tác giả của nó, một khóa thay thế sẽ phải được giả thay vì chỉ được phục vụ.

Một kẻ tấn công nào kiểm soát một relay Có thể Do là giữ lại thông báo, vì vậy người gửi không bao giờ nhìn thấy một khóa và rơi trở lại mã hóa thông thường. Điều đó đáng nói rõ ràng. Nó chi phí bảo vệ hậu lượng tử cho những tin nhắn đó; nó không thể làm cho một không thể đọc được, và nó không thể làm cho bạn chấp nhận một khóa không phải của bạn. Khách hàng yêu cầu một số chuyển tiếp, vì vậy ngăn chặn nó chiếm quyền kiểm soát tất cả chúng.

Những thông báo đó kéo dài một tuần và tự làm mới hàng ngày trong khi bạn sử dụng ứng dụng.Nếu bạn ở xa hơn thế, thông tin của bạn bị mất và bạn được đọc như một khách hàng thông thường của Nostr trong một thời gian: tin nhắn gửi cho bạn trong khoảng cách đó được mã hóa theo cách bình thường chứ không phải theo cách kháng lượng tử.Họ vẫn đến, và bạn vẫn có thể đọc chúng - và không có gì bạn nhận được trước đó bị ảnh hưởng.Mở ứng dụng sẽ tái xuất bản thông báo của bạn, và mã hóa mạnh mẽ hơn sẽ tiếp tục.

Mọi người khác vẫn tiếp tục làm việc chính xác như trước. Bitchat người dùng và bất kỳ khách hàng khác của chúng tôi nhận được tiêu chuẩn NIP-17Không có gì bị phá vỡ khi bạn nhắn tin cho ai đó bên ngoài Nymchat.

Một thông điệp hậu lượng tử thay thế cái tiêu chuẩn thay vì được gửi cùng với nó. Việc gửi cả hai sẽ là vô nghĩa: kẻ tấn công sẽ chỉ phá vỡ bản sao yếu hơn.

Các bản sao gửi tới Bạn hãy tải nó — cái mà các thiết bị khác của bạn đọc, cái lưu trữ đằng sau nó và các cài đặt đã đồng bộ hóa của bạn, hoạt động theo cùng một cách và mang theo danh sách cuộc trò chuyện, khóa nhóm và lịch sử tin nhắn của bạn. Để lại bất kỳ cái nào trong số đó trên cái cũ mã hóa sẽ khiến chúng trở thành thứ yếu nhất mà bạn lưu trữ: có thể đọc được bởi bất kỳ ai vi phạm mật mã ngày nay, bất kể bản thân các tin nhắn đã được niêm phong cẩn thận đến mức nào.

Luôn có thể đọc được bởi Bitchat

Bitchat không thể đọc định dạng tin nhắn của Nymchat, vì vậy trước đây Nymchat đã gửi bản sao thứ hai của mọi tin nhắn ở định dạng của Bitchat cho bất kỳ ai có thể đang sử dụng nó — đối với ai đó bạn chưa bao giờ nghe nói đến, có nghĩa là tất cả mọi người.

Thông báo trên làm cho việc đoán đó trở nên không cần thiết. Nếu ai đó đã xuất bản một cuốn sách, họ đang chạy Nymchat, do đó bản sao Bitchat bị loại bỏ và chỉ có tin nhắn mạnh hơn mới được gửi. Nếu họ chưa, không có gì thay đổi: họ vẫn nhận được cả hai định dạng, chính xác như trước, vì vậy không có gì bạn gửi có thể không đọc được vì ứng dụng đã đoán sai về ứng dụng khách mà ai đó sử dụng.

Giống như mã hóa, việc này diễn ra tự động và không cần cài đặt.

Tại sao không chỉ đoán từ hoạt động công cộng

Nymchat có thể suy ra ai đang điều hành cái gì từ hoạt động kênh công cộng và nó sẽ phát hiện ra mọi người sớm hơn. Nhưng suy luận đó đôi khi sai, và sai ở đây có nghĩa là gửi cho ai đó một tin nhắn mà ứng dụng của họ không thể mở được, không có lỗi và không cần thử lại. Một công bố thông báo có chữ ký của tác giả và không thể làm giả nên được sử dụng thay thế.

Trong cuộc trò chuyện nhóm

Tin nhắn nhóm đã được mã hóa riêng cho từng thành viên nên một nhóm có thể kết hợp cả hai loại một cách tự do — các thành viên có khách hàng hỗ trợ sẽ nhận được mã hóa mạnh hơn, những thành viên còn lại nhận được tiêu chuẩn và nhóm hoạt động bình thường theo cả hai cách.

Do đó, một tin nhắn nhóm chỉ được đánh dấu kháng lượng tử khi mọi thành viên đã nhận được nó theo cách đó. Nếu thậm chí một bản sao sử dụng trao đổi tiêu chuẩn, bản sao đó mang cùng một tin nhắn, do đó toàn bộ tin nhắn chỉ được bảo vệ như bản sao yếu nhất của nó. Ứng dụng này nói "kháng lượng tử tới 8 trên 10 thành viên" chứ không phải làm tròn số.

Cuộc trò chuyện nhóm cũng giữ nguyên xoay phím một lần, ẩn ai trong nhóm từ bất cứ ai đang xem một chương trình tiếp sức. Sự bảo vệ đó không bị ảnh hưởng và hoạt động chính xác như cũ.

Đọc huy hiệu

Mỗi tin nhắn riêng tư và tin nhắn nhóm mang một cái khiên Bên cạnh padlock. tapping either mark explains what it is showing.

Đánh dấuNghĩa
Ổ khóaAi đã gửi nó - chữ ký có khớp với tác giả được xác nhận hay không.
KhiênCả hai bên đều giữ một mã hậu lượng tử của riêng họ, và trao đổi lai được sử dụng cho mỗi bản sao của thông điệp này.
Khiên tiêu tanMột phần kháng lượng tử - một thông điệp nhóm chỉ có một số thành viên nhận được một bản sao được bảo vệ.Bởi vì những người khác mang cùng một văn bản, đối xử với thông điệp như được mã hóa thông thường nói chung.
Bàn phím Struck-through ShieldMã hóa tiêu chuẩn NIP-44 - vẫn được mã hóa từ đầu đến cuối, và vẫn không thể đọc được bởi bất cứ ai ngoại trừ những người tham gia ngày nay.
Không có lá chắnKhông phải là một thông điệp được mã hóa. bài đăng kênh công cộng có thể đọc được trên truyền phát theo thiết kế, vì vậy không có dấu mã hóa áp dụng.

Một dấu hiệu bị thiếu sẽ không rõ ràng - nó cũng có thể có nghĩa là “không kháng lượng tử”, “sự xây dựng này quá cũ”, hoặc “tín hiệu bị hỏng” - và một chỉ số bảo mật không thể phân biệt được với một cái bị hỏng không nói với bạn bất cứ điều gì.

Nó ngồi bên cạnh ổ khóa thay vì thay thế nó vì hai người trả lời các câu hỏi khác nhau, và một thông điệp có thể là một mà không có khác - kháng lượng tử nhưng từ một người gửi chưa được xác minh, hoặc xác minh nhưng được mã hóa thông thường.

Thông điệp cũ giữ cho lá chắn xuyên qua vĩnh viễn. Bất cứ điều gì được gửi trước khi cả hai bên trên một xây dựng kháng lượng tử đã được niêm phong với trao đổi thông thường, và rằng văn bản mã hóa đã tồn tại trên các relay - nó không thể được niêm phong lại sau khi thực tế.

Những gì nó không làm

Điều này bảo vệ nội dung tin nhắn của bạn. Nó không làm cho mọi phần của Nostr chứng minh lượng tử và cần phải xác định chính xác sự khác biệt.

  • Chữ ký vẫn là secp256k1. Danh tính Nostr ký với Schnorr trên cùng một đường cong. Một đối thủ đã có máy tính lượng tử đang hoạt động có thể giả mạo một chữ ký và mạo danh ai đó trong thời gian thực. Những gì sàn giao dịch lai dừng đọc lưu lượng được ghi lại - bảo mật, không xác thực.
  • Không có bí mật phía trước. Cả hai phím đều có tuổi thọ lâu dài: NIP-44 lấy chìa khóa của nó từ nsec, và lớp hậu lượng tử được đóng gói vào phím ML-KEM đằng sau nympq1… Mỗi thông điệp được đóng gói mới, vì vậy khóa của một thông điệp không mở khóa tiếp theo - nhưng bất cứ ai cuối cùng nắm giữ các khóa dài hạn đó có thể đọc mọi thứ họ từng ghi lại, không chỉ những gì đến sau. Expired Tin nhắn giảm, và đó là lý do tại sao tính năng này nhằm mục đích thu hoạch - bây giờ - giải mã - sau đó chứ không phải vào một phím được lấy.
  • Siêu dữ liệu không thay đổi. Rơle vẫn thấy rằng một sự kiện đã được gửi tới một chìa khóa và đại khái là khi nào. Việc đó được xử lý bởi gói quà và chìa khóa dùng một lần, không phải bởi cái này.
  • Mesh Bluetooth không được bao phủ. Một thông điệp được truyền qua của mesh đi du lịch trong một phiên Noise XX, mà là mạnh mẽ, mã hóa hiện tại nhưng một trao đổi phím cổ điển - vì vậy nó không mang lớp hậu lượng tử, ngay cả giữa hai người dùng Nymchat. biểu tượng phản ánh điều này: một thông điệp được gửi qua lưới không được đánh dấu là kháng lượng tử. Thêm nó có nghĩa là thay đổi tay cầm của chính nó, mà cả hai đồng nghiệp sẽ phải làm cùng một lúc, không có chuyển tiếp để rơi trở lại và trong khi vẫn có thể đọc được bởi Bitchat.
  • Mã khôi phục của bạn là một điều thứ hai để giữ. Nó bắt đầu với nympq1 Và bạn sẽ tìm thấy nó trong Chi tiết của Nym, trong cùng một bảng như của bạn nsec - chạm vào nym của bạn, sau đó “Release this nym's private key and recovery code”. nsec Bản thân nó không xây dựng lại khóa hậu lượng tử của bạn - đó chính xác là lý do tại sao nó hoạt động - vì vậy nếu không có thiết bị nào giữ mã đó và bạn không có bản sao của nó, những gì đã được niêm phong vào nó không thể mở lại. nsec.
  • Nó không thể bảo vệ những gì phía bên kia làm. Người nhận vẫn có thể chụp màn hình, sao chép hoặc giữ một tin nhắn.

Đây chính là vị trí mà Signal đảm nhận với bản nâng cấp sau lượng tử của chính mình: sửa lỗi trao đổi khóa bây giờ, bởi vì đó là phần mà kẻ tấn công có thể hành động hồi tố và coi chữ ký là vấn đề riêng biệt khi các tiêu chuẩn bắt kịp.

Kiểm tra công việc

Việc thực hiện ML-KEM đang được thử nghiệm chống lại chính thức test vector NIST công bốFIPS 203, vì vậy nó được kiểm tra chống lại chính tiêu chuẩn chứ không chỉ chống lại chính nó. Ứng dụng web và ứng dụng di động cũng được giữ cho một tập hợp các vector thử nghiệm được chia sẻ, đó là những gì đảm bảo một thông điệp được viết bởi một người có thể được đọc bởi người khác.

Cả hai đều Nguồn mở theo AGPL-3.0, và các build của ứng dụng web có thể tái tạo — xem xác minh bản dựng.

Đi sâu hơn: Post-Quantum Key Agreement tại Nymchat - một whitepaper kỹ thuật về cách phân phối khóa ML-KEM mà không có thư mục, cấu trúc chính xác kết hợp hai trao đổi khóa, và các thiết kế đã bị từ chối.