Nymchat เทคนิค whitepaper
ข้อตกลงที่สําคัญหลังเคาน์เตอร์ใน Nymchat
การกระจายกุญแจสาธารณะ ML-KEM-768 ผ่าน Nostr โดยไม่มีไดเรกทอรีหรือบันทึกและปลูกพวกเขาออกจากความลับที่ไม่มีมูลค่าสาธารณะเปิดเผย
การเพิ่มการแลกเปลี่ยนคีย์หลังควันต์ไปยังผู้ส่งจดหมายส่วนใหญ่ไม่ได้เป็นปัญหาการเข้ารหัส ข้อมูลต้นฉบับได้รับการมาตรฐานและห้องสมุดมีอยู่ ส่วนที่ยากที่สุดคือทุกผู้เข้าร่วมตอนนี้ต้องการการเข้ารหัส ประการที่สอง กระดาษนี้อธิบายวิธีการ Nymchat ตอบว่า - จากที่คีย์ที่สองมาจากวิธีที่มันถึงผู้ที่ต้องการมันและสิ่งที่อินเตอร์เฟซที่ได้รับอนุญาตให้เรียกร้องเกี่ยวกับผลลัพธ์ - และในส่วนสุดท้ายสิ่งที่ผลลัพธ์นั้นไม่ได้ป้องกัน
หน้านี้แปลด้วยเครื่องเพื่อความสะดวก ต้นฉบับภาษาอังกฤษเป็นเวอร์ชันที่ใช้
1ปัญหา
ข้อความส่วนตัวของเรามีการเข้ารหัสด้วย เอ็นไอพี-44, ซึ่งมีสองครึ่งที่สามารถแยกได้ ส่วนหนึ่งที่ขัดแย้งกับข้อความธรรมดา - ChaCha20 พร้อมแท็ก HMAC-SHA256, ปุ่มผ่าน ฮาร์ดคอร์ (RFC 5869) - ไม่เป็นภัยคุกคามอย่างมีนัยสําคัญโดยคอมพิวเตอร์ควันต์ อัลกอริทึมของ Grover ค่าใช้จ่ายการเพิ่มความเร็วสี่เหลี่ยมรากเมื่อเทียบกับคีย์ symmetric และ 256 บิตดูดซับ ยอมรับ บนกุญแจคือเส้นโค้ง Elliptic Diffie-Hellman over ชิป256k1, และอัลกอริทึมของ Shor แก้ไขโลกรัมที่แยกต่างหากโดยตรง การกู้คืนคีย์ส่วนตัวจากคู่ค้าสาธารณะของมันเปิดเผยความลับที่แชร์ทั้งหมดที่คีย์เคยผลิต
ความคุกคามที่สร้างขึ้นโดยนี้ไม่ได้ถูกล่าช้าจนกว่าเครื่องดังกล่าวมีอยู่ ผู้ต่อสู้ที่มีการจัดเก็บข้อมูลสามารถบันทึกการเข้ารหัสข้อความในวันนี้และถอดรหัสได้ทุกครั้งที่ความสามารถมาถึง สิ่งใดที่ส่งมาตอนนี้ที่ยังคงสําคัญแล้วก็ถูกทําลายแล้ว นี่คือการโจมตีที่เฉพาะเจาะจงที่การแลกเปลี่ยนกุญแจโพสต์ควันตัมประสบความสําเร็จและเป็นเหตุผลที่งานไม่สามารถรอให้เครื่องถูกสร้างขึ้น
1.1 คําถามที่บทความนี้ตอบ
การบรรเทาความเข้าใจเป็นอย่างดี: ดําเนินการกลไกการปิดผนึกคีย์หลังเคาน์เตอร์พร้อมกับแลกเปลี่ยนคลาสสิกดังนั้นผู้โจมตีต้องทําลายทั้งสองเพื่ออ่านอะไร Nymchat ใช้ ML-KEM-768 (ฟิลิปสติก 203). ซึ่งทันทีนําไปสู่ปัญหาการกระจาย:
เพื่อส่งข้อความ Alice วันนี้คุณต้องการสิ่งหนึ่ง: npub เธอ เพิ่มการแลกเปลี่ยนหลังปริมาณและคุณต้องการคีย์สาธารณะ ML-KEM ของเธอ จากไหนที่คีย์นั้นมีชีวิตอยู่และวิธีที่คุณจะได้รับมันก่อนที่คุณสามารถส่งเธออะไรได้
คีย์สาธารณะ ML-KEM-768 คือ 1,184 บิต คุณสามารถเขียนบนกระดาษอ่านเสียงหรือสแกนจากหน้าจอและมันเป็นทุกอย่างที่ทุกคนต้องการเข้ารหัสให้คุณ คีย์สาธารณะ ML-KEM-768 คือ 1,184 บิต ไม่สามารถอ่านเสียงมันจะไม่เข้ากันได้ในชื่อผู้ใช้และมันไม่ได้เป็นส่วนหนึ่งของรหัส QR นอกเหนือจากตัวตนที่มีเพียง 32 บิต
ขนาดเป็นส่วนที่ง่าย ส่วนที่ยากที่สุดคือคีย์ที่สองนําไปสู่ปัญหาที่แตกต่างกันสามปัญหาและส่วนที่เหลือของบทความนี้เป็นส่วนใหญ่คําตอบสําหรับพวกเขา:
- สามารถแทนที่ได้ คีย์ที่ไม่มีใครสามารถอ่านได้ในครั้งเดียวคือสิ่งที่ผู้โจมตีแลกเปลี่ยนด้วยตัวเอง ส่วนที่ 4 เชื่อมโยงมันกับบุคลิกภาพด้วยลายเซ็นซึ่งแก้ไขสิ่งนี้โดยตรง
- มันต้องเข้ากันได้ทั่วอุปกรณ์ของผู้ใช้ บัญชีเดียวกันบนโทรศัพท์และแล็ปท็อปต้องมีคีย์เดียวกันหรือข้อความที่ปิดผนึกไว้ที่หนึ่งไม่สามารถเปิดได้ในส่วนที่อื่นได้
- สามารถสูญเสียได้ คีย์สาธารณะถูกเผยแพร่ใหม่จากความลับดังนั้นสิ่งที่ต้องอยู่รอดเป็นความลับนั้นและโดยการก่อสร้างไม่มีอะไรอื่น ๆ ที่จะสร้างขึ้นใหม่ได้ ส่วนที่ 10.1 แสดงให้ชัดเจนว่าค่าใช้จ่ายคืออะไรเพราะความลับนี้ไม่ได้แก้ไขมากเท่าที่จ่าย
2การออกแบบข้อ จํากัด
สี่ข้อ จํากัด ปรับแต่งคําตอบและพวกเขายกเลิกการออกแบบที่ชัดเจนส่วนใหญ่ก่อนที่จะเขียนโค้ดใด ๆ
- ความลับน้อยที่สุดเท่าที่จะเป็นไปได้ ผู้ใช้ของเรากําลังถือความลับหนึ่งอย่างแน่นอน nsec ทุกความลับเพิ่มเติมเป็นวิธีอื่นในการสูญเสียประวัติศาสตร์ของคุณและใครบางคนที่รู้ว่าจะสํารองข้อมูล nsec จะไม่ทราบว่าจะสํารองข้อมูลอื่นใด ส่วนที่ 3.1 แสดงให้เห็นว่าคนนี้ไม่สามารถตอบสนองได้โดยตรง - คีย์หลังควันต์ที่มาจาก nsec ไม่ให้การป้องกันหลังควันต์เลย - ดังนั้นการออกแบบใช้ความลับหนึ่งอย่างแน่นอนและไม่เพิ่มเติม: ชิ้นส่วนเดียวของวัสดุกุญแจที่สร้างขึ้นครั้งเดียวต่อตัวตนนําเสนอในรูปแบบเดียวกันกับ nsec และในสถานที่เดียวกันเพื่อให้ผู้ที่รู้วิธีรักษาคนหนึ่งรู้วิธีการรักษาคนอื่น ๆ ส่วนที่ 10.1 เป็นจริงเกี่ยวกับค่าใช้จ่ายที่ยังคงมี
- ไม่มีอํานาจ ไม่มีเซิร์ฟเวอร์ที่สามารถเชื่อถือได้เพื่อบอกคีย์ใดเป็นของใคร เซิร์ฟเวอร์ใด ๆ จะกลายเป็นจุดที่ข้อความสามารถเปลี่ยนทิศทางได้
- อุปกรณ์หลายอุปกรณ์หนึ่งตัวตน การระบุตัวตนของ Nostr มักจะใช้จากลูกค้าหลายคนพร้อมกัน วัสดุสําคัญใด ๆ ที่มีอยู่ต้องจบลงเหมือนกันในทั้งหมดของพวกเขาและเส้นทางที่นํามันไปที่นั่นไม่จําเป็นต้องสามารถอ่านได้โดยคู่แข่งที่มีคุณลักษณะที่ปกป้องกับ
- ไม่มีการเจรจา การแลกเปลี่ยนในแบนด์ใด ๆ ของ “คุณสนับสนุนการเข้ารหัสใด?” เป็นพื้นผิวที่ผู้โจมตีสามารถตัดเพื่อบังคับให้ตัวเลือกที่อ่อนแอ การออกแบบไม่จําเป็นต้องมีอะไรที่จะลดระดับ
3รากความลับที่เป็นอิสระ
การตัดสินใจที่สําคัญคือคีย์ decapsulation ML-KEM จะเป็นเมล็ดจากวัสดุสําคัญที่ไม่มีมูลค่าสาธารณะเปิดเผย แต่ละตัวตนจะได้รับความลับรากหนึ่งครั้งที่สร้างขึ้น:
pqRoot = 32 bytes from a CSPRNG, generated ONCE per identity
seed = HKDF-Expand(
HKDF-Extract(salt = "nym-pq-root-v2", IKM = pqRoot),
info = "mlkem768/epoch/" || epoch,
64 bytes)
(ek, dk) = ML-KEM-768.KeyGen(seed)
รากจะถูกนําเสนอให้ผู้ใช้ในลักษณะ nsec คือ: บีช32 ด้วยตัวอักษรที่สามารถอ่านได้จากมนุษย์
nympqดังนั้นมันอ่านเหมือน nympq1…, แสดงอยู่ข้างหน้า nsec ในหน้าจอตัวตนที่อยู่เบื้องหลังการโต้ตอบการเปิดเผยเดียวกันคัดลอกด้วยควบคุมเดียวกันไม่เข้าสู่ระบบและไม่ส่งไปยังที่ใดในที่ชัดเจน มันไม่ได้เป็นรหัสผ่านและไม่ใช่การเข้าสู่ระบบ มันเป็นวัสดุสําคัญที่ผู้ใช้สามารถบันทึกได้เช่นเดียวกับ nsec
โลหะเป็นโดเมนที่แยกออกด้วยวัตถุประสงค์ดังนั้นไม่มีความลับอื่น ๆ ที่สามารถสร้างคีย์คู่เดียวกันได้ epoch การควบคุมการหมุน (ส่วน 9)
3.1 ทําไมกุญแจไม่สามารถถอดออกจากกุญแจประจําตัวได้
การออกแบบที่ชัดเจนคือการเมล็ดแป้นพิมพ์จากความลับที่ผู้ใช้มีอยู่แล้ว:
seed = HKDF(salt = "…", IKM = nsec) // do not do this
มันน่าดึงดูดด้วยเหตุผลสี่เหตุผลซึ่งทั้งหมดเป็นจริง: ไม่มีอะไรใหม่ที่จะสํารองข้อมูลเพราะ nsec เป็นการสํารองข้อมูลแล้ว; ทุกอุปกรณ์ที่ยอมรับโดยการก่อสร้างโดยไม่มีโปรโตคอลการซิงโครไนซ์ที่จะไปผิด; โฆษณาหนึ่งที่สามารถเปลี่ยนได้ต่อตัวตนเป็นอย่างชัดเจนถูกต้องเพราะอุปกรณ์ไม่สามารถไม่เห็นด้วยกับคีย์และคีย์ที่มีอยู่ก่อนที่จะเผยแพร่เพื่อให้ลูกค้าสามารถปิดกั้นบางสิ่งบางอย่างให้กับตัวเองในครั้งแรก
ทั้งสี่ข้อดีนั้นไร้ค่าด้วยเหตุผลหนึ่ง อัลกอริทึมของ Shor ทํางานกับ npub ที่เผยแพร่ให้ nsec อัลกอริทึมของเมล็ดเป็นอัลกอริทึมของสาธารณะเหนือ nsec ดังนั้นผู้ต่อสู้ที่ทําลายครึ่งคลาสสิกจะสร้างครึ่งหลังของ quantum โดยใช้ HKDF เดียวกันที่ทุกคนทํางาน กับการเก็บเกี่ยว - ตอนนี้ - decrypt-later - ความเสี่ยงหนึ่งที่คุณลักษณะมีอยู่เพื่อหยุด - คีย์ที่มาจากวิธีนี้ไม่เพิ่มอะไรเลย
คีย์ decapsulation ML-KEM ควรมาจาก entropy ซึ่งไม่ได้มาจาก nsec และไม่ได้ส่งผ่านภายใต้การเข้ารหัสแบบคลาสสิกเท่านั้น
ข้อกําหนดที่สองของกฎนั้นทํางานมากเท่าที่ครั้งแรก ความลับที่สร้างขึ้นโดยอิสระซึ่งจะซิงโครไนซ์ระหว่างอุปกรณ์ของผู้ใช้ภายในข้อความ NIP-44 แบบธรรมดาคือความล้มเหลวเดียวกันด้วยขั้นตอนเพิ่มเติม: ผู้ต่อสู้บันทึกข้อความในวันนี้และกู้คืนคีย์คลาสสิกของเขาในภายหลังและรากจะหายไป นั่นคือเหตุผลที่เส้นทางในส่วนถัดไปเป็นเส้นทางที่พวกเขาเป็นและเหตุผลที่ไม่มีใครส่งไปยังอุปกรณ์อื่นของคุณ
3.2 ได้รับรากไปยังอุปกรณ์อื่น ๆ ของผู้ใช้
ข้อ จํากัด 3 ของส่วน 2 - หนึ่งตัวตนหลายอุปกรณ์ - ไม่สามารถตอบสนองได้โดยคํานวณที่นี่เพราะจุดทั้งหมดคือคีย์ไม่ได้เป็นฟังก์ชั่นของสิ่งที่อุปกรณ์ที่มีอยู่แล้ว มันต้องตอบสนองโดยการขนส่งแทนและมีเพียงวิธีเดียว: ผู้ใช้ย้าย nympq1… รหัสตัวเอง
รากจะแสดงให้เห็นว่า nympq1… ด้านข้างของ nsec และอุปกรณ์ที่สองยอมรับมันติดในแผงเดียวกัน นั่นคือกลไกทั้งหมด อุปกรณ์ที่ไม่ได้ได้รับรหัสไม่สามารถเข้าร่วมซึ่งส่วนที่ 4.2 อธิบาย
การถ่ายโอนด้วยตนเองเป็นขั้นตอนที่ตั้งใจแทนขั้นตอนแรก กฎในส่วน 3.1 กล่าวว่ารากอาจไม่เคยเดินทางภายใต้การเข้ารหัสแบบคลาสสิกเท่านั้นและกลไกใด ๆ ที่จะทําให้การเข้ารหัสนี้เป็นอัตโนมัติ - การซิงค์ผ่านรีเลย์บรรจุกับกุญแจประจําตัว - ขัดแย้งกับสิ่งที่แน่นอน ขั้นตอนที่ผู้ใช้ดําเนินการคือเหตุผลที่การป้องกันเป็นจริง
รูปแบบช่วยให้มีพื้นที่สําหรับเส้นทางบรรจุ: บันทึกอาจมีรายการบรรจุ, แต่ละรายการ AEAD blob ภายใต้คีย์ที่ผู้ใช้สามารถทําซ้ําบนอุปกรณ์อื่น ๆ - ตัวอย่างเช่นการส่งออก PRF passkey ไม่มีอะไรจัดส่งหนึ่งในวันนี้และจนกว่าสิ่งบางอย่างจะทํา nympq1… รหัสเป็นวิธีเดียวข้าม ส่วนที่ 10.1 อธิบายค่าใช้จ่าย
บันทึกตัวเองอยู่ในหมวดหมู่การตั้งค่าของตัวเอง nymchat-pq-rootแม้จะไม่ได้บรรจุมันทํางานที่จําเป็น: การปรากฏตัวของมันคือวิธีการที่อุปกรณ์ที่สองเรียนรู้ว่าตัวตนนี้มีรากแล้วซึ่งเป็นสิ่งที่หยุดให้เขากับคู่แข่งหนึ่ง (ส่วน 3.3)
โซ nymchat-pq-root หมวดหมู่ ไม่ จะถูกเข้ารหัสไปยังกุญแจ ML-KEM ที่มาจากราก เหล่านี้มีสําเนาเดียวของรากดังนั้นการปิดผนึกภายใต้กุญแจที่มาจากรากคือล็อคที่มีกุญแจอยู่ภายในกล่อง: ไม่มีอุปกรณ์ใดที่สามารถเปิดมันได้รวมถึงผู้เขียนมัน มันถูกปิดผนึกคลาสสิก - NIP-44 ด้วยตัวเอง - หรือไม่เลย นี่คือสถานที่เดียวที่การออกแบบยอมรับการป้องกันคลาสสิกเท่านั้นและสามารถจ่ายได้: สายนี้ไม่มีรากในวันนี้เท่านั้นที่หนึ่งมีอยู่
หมวดหมู่การตั้งค่าอื่น ๆ ทั้งหมดสามารถและควรใช้คีย์ที่มาจากราก นี่เป็นข้อยกเว้นเดียวและเป็นข้อยกเว้นเกี่ยวกับวงกลมแทนเกี่ยวกับความแข็งแรง
3.3 การสร้างและ adoption
เมื่อบูตด้วยตัวตนที่ยั่งยืนลูกค้าทํางานตามลําดับนี้:
- ค้นหาที่มีอยู่
nymchat-pq-rootบันทึก - บันทึกที่พบและอุปกรณ์นี้สามารถปลดล็อคได้ -ยอมรับมันและประกาศความเป็นตัวตนนี้เป็นสถิติที่สามารถ
- บันทึกที่พบและอุปกรณ์นี้ไม่สามารถปลดล็อคได้ — ไม่สร้างรากใหม่และไม่เผยแพร่โฆษณาใด ๆ โปรดปรึกษาผู้ใช้เพื่อเชื่อมโยงอุปกรณ์นี้โดยการป้อน
nympq1…รหัสจากอุปกรณ์ที่มีอยู่แล้ว - ไม่มีบันทึก — สร้างรากโพสต์บันทึกประกาศและแสดง
nympq1…รหัสไปยังผู้ใช้ครั้งเดียวเพื่อให้สามารถบันทึกได้
ขั้นตอนที่ 3 เป็นขั้นตอนที่ง่ายต่อการทําผิดและเป็นเหตุผลที่คําสั่งจะถูกเขียนลงแทนที่จะถูกทิ้งไว้สําหรับแต่ละการประยุกต์ใช้ สองอุปกรณ์ที่แต่ละอุปกรณ์ตัดสินใจที่จะสร้างรากผลิตสองรากที่เป็นอิสระภายใต้เอกลักษณ์เดียวและนี่คือความล้มเหลวที่คําสั่งนี้มีอยู่เพื่อป้องกัน
4การประกาศความสามารถ
ครึ่งสาธารณะของคีย์พารามิเตอร์ที่มาจากจะเผยแพร่เป็น addressable
นีพี-01
เหตุการณ์ — kind 30078, tagged nym-pq:
{
"kind": 30078,
"tags": [
["d", "nym-pq"],
["t", "nym-pq"],
["expiration", "<unix seconds>"]
],
"content": {
"v": 2,
"alg": "mlkem768",
"nym": 1,
"epoch": 0,
"pk2": "<base64url ML-KEM-768 encapsulation key>",
"exp": <unix seconds>,
"devices": [ ... ]
}
}
Addressable หมายความว่ารีเลย์จะเก็บเหตุการณ์หนึ่งครั้งต่อ (kind, pubkey, d-tag) ดังนั้น republish จะแทนที่การประกาศก่อนหน้านี้ ดังนั้นแต่ละตัวตนจึงมีบันทึกปัจจุบันเพียงอย่างเดียวซึ่งเป็นสิ่งที่ทําให้ “look up Alice's key” a single unambiguous fetch rather than a list to reconcile
การลงนามเป็นข้อบังคับ เหตุการณ์จะถูกลงนามโดยคีย์ประจําตัวดังนั้นการเรียกร้องว่าคีย์ ML-KEM นี้เป็นของ npub นี้จึงมีความแข็งแกร่งเช่นเดียวกับ npub ตัวเอง การแทนที่คีย์ encapsulation ที่แตกต่างกันต้องทําลายการลงนาม secp256k1 นักโจมตีที่สามารถทําเช่นนั้นไม่จําเป็นต้องกังวลกับ KEM
ประกาศหมดอายุ วันเจ็ด เอ็นไอพี-40 การหมดอายุ, โพสต์อีกครั้งทุก 24 ชั่วโมง, บันทึกการประกาศเกี่ยวกับลูกค้าที่ยังคงทํางานแทนหนึ่งที่เคยเป็น. รากตัวเองไม่เคยหมดอายุ; เฉพาะการเรียกร้องเกี่ยวกับมันเท่านั้น
การแจ้งเตือนที่หายไปจะถูกอ่านอย่างแม่นยําเช่นเดียวกับที่ไม่มีกุญแจ: peers ส่ง NIP-44 โดยปกติซึ่งแต่ละการเข้าสู่ระบบสามารถอ่านได้และลูกค้าจะต่ออายุการแลกเปลี่ยนหลังการเชื่อมต่อที่ถัดไปเมื่อมีการเผยแพร่ใหม่ ดังนั้นการเงียบสงบเป็นเวลานานกว่าหนึ่งสัปดาห์มีค่าใช้จ่ายในการป้องกันข้อความที่ส่งในระหว่างช่องว่าง - พวกเขามีการเข้ารหัสคลาสสิกแทนที่จะทนต่อปริมาณ - และไม่มีค่าใช้จ่ายอื่น การส่งมอบไม่ได้รับผลกระทบสิ่งใดที่ได้รับแล้วไม่สามารถอ่านได้และไม่มีการกระทําที่จําเป็นในการคืนเงิน
ความไม่สม่ําเสมอนั้นเป็นสาเหตุของการหมดอายุแทนที่จะเป็นเหตุผลของมัน โดยไม่มีหนึ่งบันทึกมีอายุมากกว่าที่สําคัญที่มันเรียกว่า: อุปกรณ์ที่ถูกลบรีเซ็ตหรือมีการเปลี่ยนรากของมันปล่อยให้คําสั่งยืนเพื่อ encapsulate ไปยังกุญแจที่ไม่มีใครถืออีกต่อไปและข้อความที่ส่งภายใต้มันจะหายไปโดยไม่มีข้อผิดพลาดในทั้งสองด้าน 7 วันขัดขวางหน้าต่างนั้นและปล่อยให้รีเลย์ลดบันทึกตัวเองแทนที่จะพึ่งพาลูกค้าที่จะสังเกตเห็น
พื้นที่คีย์ชื่อรูปแบบของมัน พื้นที่คือ pk2, และตัวเลขเป็นส่วนหนึ่งของสัญญาแทนการตกแต่ง: มันหมายถึงรูปแบบการโหลดที่มีประโยชน์ที่คีย์สามารถใช้กับ. ผู้อ่านที่ไม่ได้รับรู้ฟิลด์สรุป “ลูกค้า Nymchat, ไม่มีคีย์โพสต์ควันต์” และส่ง NIP-44 ทั่วไปซึ่งแต่ละการเข้าสู่ระบบสามารถอ่านได้ นั่นคือทิศทางความล้มเหลวที่ถูกต้องและมันเป็นมูลค่าที่จะกล่าวถึงเป็นกฎที่การหมายเลขรูปแบบมีอยู่เพื่อบังคับใช้: การเรียกร้องความสามารถที่ไม่ได้รับการรับรู้ต้องเสียค่าใช้จ่ายการป้องกันไม่เคยส่งมอบ คีย์ที่คู่ค้าไม่สามารถใช้คือแย่กว่าไม่มีคีย์ทั้งหมดเพราะข้อความที่มันผลิตจะหายไปโดยไม่มีข้อผิดพลาดในทั้งสองด้าน
4.1 การขาดแคลนมีความหมายและประเมินสาม
รายละเอียดที่ละเอียดอ่อน แต่สําคัญ: การประกาศจะถูกเผยแพร่โดยลูกค้า Nymchat ทุกคนไม่เพียง แต่ผู้ที่สามารถโพสต์ควันตัมและฟิลด์คีย์เป็นตัวเลือก ซึ่งส่งผลให้สามสถานะที่โดดเด่นแทนสอง:
| มุมมอง | วิธี | ส่งพฤติกรรม |
|---|---|---|
| การประกาศด้วยคีย์ | Nymchat, post-quantum สามารถ | ไฮบริด |
| ประกาศไม่มีกุญแจ | Nymchat, คลาสสิคเท่านั้น - ปิดโพสต์ควันไทม์หรืออุปกรณ์ที่ยังไม่ได้เชื่อมโยงกับรากของตัวตน | คลาสสิค NIP-17 |
| ไม่มีการประกาศ | ลูกค้าที่ไม่รู้จัก อาจเป็นผู้ใช้ Nostr หรือ Bitchat ใด ๆ | คลาสสิครวมถึงแพลตฟอร์มความเข้ากันได้ |
การล้มเหลวของแถวที่สามลงในแถวที่สี่จะเป็นการสูญเสียที่แท้จริง การประกาศที่ไม่มีกุญแจคือการประกาศที่ลงนามว่าผู้ส่งเรียกใช้ Nymchat ซึ่งช่วยให้เส้นทางส่งล้มเหลวการบรรจุโปรโตคอลข้ามการคาดการณ์ที่อาจต้องรวมถึงสําหรับทุกคนที่ไม่สามารถระบุได้
4.2 อุปกรณ์ที่ไม่สามารถเปิดรากจะเงียบ
การประกาศสามารถแทนที่ได้: หนึ่งเหตุการณ์ต่อบุคลิกภาพชนะการเขียนครั้งสุดท้าย นี่คือสิ่งที่ทําให้การออกแบบบันทึกเดี่ยวทํางานและยังเป็นสิ่งที่ทําให้อุปกรณ์ที่ไม่มีการเชื่อมโยงเป็นอันตรายถ้ามันเผยแพร่ อุปกรณ์ที่ประกาศคีย์ที่เธอได้กําหนดเองจะขัดขวางบันทึกที่แท้จริงและส่งทุกเพื่อนร่วมงานเพื่อเข้ารหัสภายใต้คีย์ที่อุปกรณ์อื่น ๆ ไม่สามารถเปิดได้
ดังนั้นอุปกรณ์ที่รู้ว่ารากมีอยู่ แต่ไม่สามารถเปิดมันได้เผยแพร่ประกาศไม่ได้ มันไม่ได้แตกและไม่ได้ล็อคออกจากแอปพลิเคชัน: มันยังอ่านข้อความทุกข้อความที่มีกุญแจและยังส่งคลาสสิกในขณะที่กระตุ้นให้ผู้ใช้เชื่อมโยงมัน ความเงียบเป็นพฤติกรรมที่ถูกต้องสําหรับอุปกรณ์ที่ไม่สามารถพูดถึงตัวตน
5การค้นพบและการตัดสินใจส่ง
ลูกค้าเรียนรู้คีย์ของเพื่อนร่วมงานในสองวิธี การสมัครสมาชิกยืนครอบคลุมผู้ที่ผู้ใช้จริงตรงกับ - การสนทนาที่เปิดและสมาชิกในกลุ่ม - ดังนั้นการประกาศของพวกเขาจะมาถึงเป็นเหตุการณ์ปกติ สําหรับเพื่อนร่วมงานที่พบครั้งแรกคําถามแบบเดี่ยวจะทํางานในเวลาส่ง จํากัด ใน 2.5 วินาที หากไม่แก้ไขข้อความจะกลายเป็นคลาสสิกซึ่งเป็นพฤติกรรมที่มีอยู่ก่อนที่ post-quantum ถูกเพิ่มแทนที่จะเป็นโหมดล้มเหลวใหม่
ผลลัพธ์เชิงลบจะถูกแคชเป็นเวลาสิบนาทีแทนที่จะเป็นตลอดไป ผู้ใช้ที่เชื่อมต่ออุปกรณ์ใหม่หรือผู้ที่ย้ายจากการเข้าสู่ระบบการขยายตัวเบราว์เซอร์ไปยังคีย์ท้องถิ่นจะกลายเป็นโพสต์ควันต์ที่มีความสามารถในการสนทนากลางและแคชอย่างถาวร “ ไม่” จะเก็บไว้ในการเข้ารหัสคลาสสิกตลอดชีวิตของโฆษณา
5.1 ทําไมไม่มีการโจมตีลดระดับ
การตัดสินใจเกี่ยวกับเส้นทางจะลดลงเป็นคําถามเดียว:
pq = (we hold a signed, unexpired ML-KEM key for this recipient)
ไม่มีการเจรจาความสามารถไม่มีรายการอัลกอริทึมที่ได้รับการสนับสนุนและไม่มีฟิลด์ใด ๆ ที่ผู้โจมตีสามารถทําความสะอาดได้เพื่อบังคับใช้เส้นทางที่อ่อนแอ เป็น โหมดการล้มเหลวของโฆษณาที่ถูกลบหรือถูกลบคือข้อความจะกลายเป็นคลาสสิก - สถานะที่มีอยู่ก่อนคุณลักษณะนี้ - แทนที่ข้อความไฮบริดจะลดลงเป็นสิ่งที่สามารถล้มเหลวได้
ตรงกันข้ามยังถือและสําคัญยิ่งขึ้น: ลูกค้าส่งไฮบริด เฉพาะ เมื่อมันถือกุญแจและถือกุญแจเป็นหลักฐานที่ผู้รับสามารถ decapsulate ไม่มีสถานะที่ข้อความจะถูกส่งไป post-quantum ไปยังคนที่ไม่สามารถอ่านมัน
6การก่อสร้างไฮบริด
Nymchat ไม่แทนที่ NIP-44 มันห่อมัน ข้อความการเข้ารหัส NIP-44 ไม่มีการเปลี่ยนแปลงเป็นชั้นภายในและ ML-KEM คีย์ AEAD กลางแจ้งรอบมัน:
inner = nip44_encrypt(plaintext, conversation_key(sender, recipient))
info = "nymchat-pq2" || sender_secp_pk || recip_secp_pk || kem_ct || recip_kem_pk
prk = HKDF-Extract(salt = "nymchat-pq2-v1", IKM = kem_ss)
key = HKDF-Expand(prk, info || "key", 32)
nonce = HKDF-Expand(prk, info || "nonce", 12)
outer = ChaCha20-Poly1305(key, nonce, plaintext = inner, aad = info)
payload = "pq2." || base64url(kem_ct) || "." || base64url(outer)
ทั้งสองความลับยังคงต้องได้รับการกู้คืนเพื่ออ่านข้อความ: ชั้นภายนอกจะสร้างข้อความเข้ารหัส NIP-44 เท่านั้นและเปิดที่ต้องการ ECDH คลาสสิค ผู้ต่อต้าน quantum ที่ทําลาย secp256k1 ได้รับคีย์ภายในและยังคงเผชิญกับ ML-KEM; การทําลายของ ML-KEM ตัดชั้นภายนอกและปล่อยให้ NIP-44 ยืนอยู่ แต่ละ input ได้รับสถานที่:
kem_ssปุ่มชั้นภายนอกเท่านั้น ไม่มีอะไรในการส่งออกนี้สัมผัสการส่งออก ECDH วัตถุดิบซึ่งเป็นสิ่งที่ Section 6.1 กลายเป็นkem_ct,recip_kem_pkและคีย์ประจําตัวทั้งสองมีส่วนร่วมในฐานะข้อมูลที่เกี่ยวข้องดังนั้นชั้นภายนอกจึงมุ่งมั่นที่จะมีการคัดลอกที่ถูกต้องที่ผลิตมัน การสลับข้อความเข้ารหัสไปยังเอกสารประจําตัวของผู้ส่งคนอื่นไม่ได้รับการรับรองความถูกต้องแทนการเข้ารหัส.
encapsulation จะดําเนินการใหม่ในแต่ละข้อความ คีย์ ML-KEM ของผู้รับมีอายุการใช้งานยาวนาน แต่แต่ละข้อความมีข้อความเข้ารหัสที่เป็นอิสระและดังนั้นจึงเป็นอิสระ
kem_ssนี่คือสิ่งที่ทําให้การทํากําเนิด nonce แทนที่จะ randomize มันเสียง:
ChaCha20-โพลี1305
ทําลายโดยใช้คู่ (คีย์, nonce) อีกครั้งและที่นี่คีย์ตัวเองเป็นใหม่สําหรับแต่ละข้อความดังนั้นคู่ไม่สามารถทําซ้ําได้
6.1 ทําไมชั้นยังคงแยกออก
ทางเลือกคือการผสมผสานทั้งสองความลับลงในคีย์การสนทนาเดียวและส่งไปยัง NIP-44:
ck = HKDF-Extract(salt = "…",
IKM = ecdh_x || kem_ss || …) // do not do this
การก่อสร้างนั้นมีเสียงคล้ายคลึงกับการเข้ารหัสลับ มันมีปัญหาโครงสร้างเดียว: มันต้อง
ecdh_x, วัตถุดิบ x-coordinate ของเอาต์พุต ECDH เป็นวัสดุหลัก - และส่วนขยายเบราว์เซอร์ (เอ็นไอพี-07) หรือการลงนามระยะไกล (เอ็นไอพี-46) ไม่เคยคืนค่าที่ มันดําเนินการ NIP-44 ในนามของผู้เรียกและกลับข้อความการเข้ารหัสซึ่งเป็นจุดทั้งหมดของการถือกุญแจที่ที่แอปพลิเคชันไม่สามารถเข้าถึงได้
การผสมความลับจึงยกเว้นการเข้าสู่ระบบแต่ละรายที่เก็บรหัสบุคลิกภาพในตัวลงนามซึ่งหมายความว่าผู้ใช้ที่ระมัดระวังมากที่สุดและไม่มีจํานวนการทํางานเกี่ยวกับการกําเนิดกุญแจที่สามารถเปลี่ยนได้ การเคลือบจะกําจัดความเสี่ยง: NIP-44 เก็บอยู่ทั้งและผลิตโดยสิ่งใดที่เก็บรหัสบุคลิกภาพรวมถึงผู้ลงนามในขณะที่ครึ่ง KEM จะคํานวณจากรหัสกู้คืนที่ลูกค้าถือโดยตรง การเข้าสู่ระบบบุคลิกภาพเป็นผู้เข้าร่วม post-quantum โดยปกติในทั้งสองทิศทาง
ค่าใช้จ่ายคือความกว้างแบนด์วิดธ์และมันไม่ได้เล็กน้อย ข้อความการเข้ารหัส ML-KEM คือ 1,088 บิตและขับรถบนข้อความแต่ละข้อความ, base64url-เข้ารหัสถึง 1,451 ตัวอักษร; AEAD กลางแจ้งเพิ่มแท็ก Poly1305 16 บิตและขยายโหลดประโยชน์ NIP-44 มันห่อด้วยหนึ่งในสาม ข้อความ 50 ตัวจะเติบโตจาก 176 บิตถึง 1,712 และ 2000 ตัวอักษรหนึ่งจาก 2,820 ถึง 5,238 ข้อความอยู่ประมาณ 1.5 กิโลไบต์ต่อข้อความไม่ว่าข้อความจะสั้นเท่าไหร่ซึ่งเป็นราคาของการห่อหุ้มใหม่ทุกครั้งแทนที่จะใช้ความลับที่ใช้ร่วมกันอีกครั้ง
6.2 Payloads คําอธิบายตนเอง
โซ pq2. ปลั๊กอินทําให้การใช้งานเพิ่มขึ้น: มันเป็นการอธิบายตนเองดังนั้นลูกค้าเลือกเส้นทางการเข้ารหัสโดยการตรวจสอบโหลดประโยชน์แทนที่จะเชื่อถือแท็กหรือจําไว้สิ่งที่ผู้ร่วมมือสนับสนุน ผู้อ่านที่ไม่รู้จักปลั๊กอินไม่สามารถเปิดโหลดประโยชน์ได้แทนที่จะอ่านผิดและข้อความที่ปิดผนึกไว้ก่อนทั้งสองด้านสามารถทํา post-quantum ให้อ่านได้เหมือน NIP-44 โดยปกติโดยไม่มีการย้าย
ML-KEM decapsulation ได้รับการออกแบบมาเพื่อไม่เคยล้มเหลว: ด้วยข้อความการเข้ารหัสที่ผิดปกติการแปลง Fujisaki-Okamoto จะส่งกลับความลับแบบสุ่มแบบสุ่มที่กําหนดเองแทนที่จะเป็นข้อผิดพลาด ดังนั้นคีย์ที่ผิดพลาดจึงไม่ได้ปรากฏบนชั้น KEM ทั้งหมด - มันปรากฏเป็นความล้มเหลวของ HMAC ภายใน NIP-44, ซึ่งเป็นวิธีเดียวกันกับพื้นผิวคีย์คลาสสิกที่ไม่ถูกต้อง ผู้เรียกใช้ปฏิบัติต่อทั้งสองอย่างเหมือนกันดังนั้นความล้มเหลวจึงไม่มีสัญญาณที่โดดเด่น นี่คือสิ่งที่ทําให้รายการผู้สมัครของ Section 9.1 ทํางานได้: ลูกค้าพยายามคีย์แต่ละครั้งและอนุญาตให้ NIP-44 กล่าวว่าสิ่งที่ถูกต้อง
6.3 เคลือบของขวัญทั้งสองชั้น
A เอ็นไอพี-17 ข้อความส่วนตัวเป็น a เอ็นไอพี-59 แพคเกจของขวัญ: รูปลักษณ์ที่ไม่ได้รับการลงนามปิดผนึกภายใต้คีย์ประจําตัวของผู้ส่ง (ประเภท 13) จากนั้นห่อไว้ภายใต้คีย์ที่สร้างขึ้นโดยการส่งข้อความ (ประเภท 1059) บนการเข้าสู่ระบบที่ถือคีย์ประจําตัวโดยตรง Nymchat ไฮบริดไซด์ทั้งสองชั้นแต่ละชั้นด้วย encapsulation ของตัวเอง
การเข้าสู่ระบบผู้ลงนามจะได้รับชั้นภายนอกเท่านั้น การปิดผนึกจะผลิตโดยผู้ลงนามในฐานะ NIP-44 โดยปกติ - แอปพลิเคชันไม่เคยเห็นคีย์ที่ทําให้มัน - ดังนั้นจึงไม่สามารถไฮบริดไซด์ได้ในสถานที่ สิ่งนี้ไม่เสียค่าใช้จ่ายใด ๆ กับการโจมตีในเรื่องนี้: การปิดผนึกสามารถเข้าถึงได้เฉพาะผ่านบรรจุภัณฑ์และปิดผนึกเป็นสิ่งที่เครื่องบันทึกเก็บไว้ ผู้ต่อสู้ที่มีการจราจรที่บันทึกไว้ต้องทําลาย ML-KEM ก่อนที่ปิดผนึกจะมองเห็นได้เพื่อโจมตี
7ข้อความกลุ่มและการครอบคลุมบางส่วน
ข้อความของกลุ่มไม่ได้เป็นข้อความการเข้ารหัสเท่านั้น มันเป็นข้อความธรรมดาเดียวกันที่ถูกส่งออกไปยังสมาชิกแต่ละรายแต่ละสําเนา encapsulated ไปยังกุญแจ ML-KEM ของตัวเองของสมาชิกนั้น สมาชิกที่เผยแพร่กุญแจได้รับห่อไฮบริด; คนที่ไม่ได้รับห่อคลาสสิก
สิ่งนี้ทําให้เกิดปัญหาการบัญชีที่การประยุกต์ใช้ที่สุภาพจะผิด หากห้าในสิบสมาชิกได้รับสําเนาไฮบริดข้อความนี้จะ ไม่ ปกป้องแปดสิบ ข้อต่อต้องใช้สําเนาแบบคลาสสิกของข้อความธรรมดาที่เหมือนกันในทุกสิบดังนั้นข้อความจะได้รับการปกป้องเฉพาะหาก ทั้งหมด คัดลอก
Nymchat ดังนั้นติดตามการครอบคลุมต่อข้อความในระหว่าง fan-out - การคํานวณสามารถทราบได้เฉพาะในขณะที่บรรจุภัณฑ์จะถูกสร้างขึ้น - และสัญลักษณ์รายงาน “quantum-resistant ไปยัง 8 ของสมาชิก 10” แทนที่จะเรียกร้องว่าข้อความได้รับการปกป้อง ที่ไม่มีการคํานวณที่มีอยู่ซึ่งเป็นกรณีปกติสําหรับสมาชิก ได้รับ ข้อความกลุ่ม (ผู้ส่งเท่านั้นที่คํานวณ fan-out) อินเทอร์เฟซรายงานการป้องกันบางส่วนแทนการป้องกันเต็มรูปแบบ การเรียกร้องการป้องกันเต็มรูปแบบจากความแข็งแรงของสําเนาของตัวเองเท่านั้นจะทําให้ข้อความทั้งหมดเกินไป
7.1 สิ่งที่คณะกรรมการรายงาน
ตะแกรงกล่าวความจริงเกี่ยวกับ ข้อความ, ไม่เกี่ยวกับซอฟต์แวร์ที่ส่งมัน:
- การป้องกันเต็มรูปแบบ: แต่ละสําเนาของข้อความธรรมดานี้ออกเป็นไฮบริด
- ส่วนหนึ่ง: บางสําเนาของข้อความกลุ่มออกคลาสสิก การวาดลดลงมากกว่าเต็มเพราะหนึ่งสําเนาคลาสสิกของข้อความธรรมดาที่คล้ายกันในทั้งหมดของพวกเขาเป็นความต้องการของฝ่ายตรงข้าม
- คลาสสิคจะแสดงโดยตรงแทนที่จะแสดงเป็นไม่มีสัญญาณเพราะตัวบ่งชี้ที่ขาดไม่ได้เป็นข้อสงสัยระหว่าง “ unprotected”, “broken” และ “การสร้างนี้ขาดคุณสมบัติ”
ข้อสรุปจะถูกบันทึกเมื่อข้อความถูกปิดผนึกแทนที่จะเรียกเก็บจากสิ่งที่เพื่อนร่วมงานโฆษณาในภายหลัง Ciphertext ที่มีอยู่แล้วไม่สามารถได้รับการปกป้องได้ดีกว่าเดิมและอินเตอร์เฟซที่รีดข้อความเก่าเกี่ยวกับความแข็งแกร่งของโฆษณาใหม่จะยืนยันสิ่งที่ผิดเกี่ยวกับบิตบนรีเลย์
กฎกลุ่มด้านบน stack ด้านบนนี้แทนที่จะแทนที่มัน: ข้อความกลุ่มจะถูกปกป้องอย่างเต็มที่เท่านั้นเมื่อสําเนาของแต่ละสมาชิกและข้อความกลุ่มที่ได้รับโดยไม่มีการคํานวณการครอบคลุมแสดงเป็นส่วนหนึ่ง
8คัดลอกที่อยู่กับตัวคุณเอง
สิ่งหลายอย่างที่ลูกค้าจัดเก็บจะถูกเข้ารหัสเพื่อระบุตัวตนของผู้ใช้เอง: การตั้งค่าที่ซิงค์รายการการสนทนาคีย์กลุ่มและบันทึกข้อความ เหล่านี้มีข้อมูลเกี่ยวกับผู้ใช้มากกว่าข้อความเดี่ยวส่วนใหญ่ดังนั้นการปล่อยให้เป็นคลาสสิกจะทําให้พวกเขามีความอ่อนแอที่สุดโดยไม่คํานึงถึงความระมัดระวังที่ข้อความตัวเองถูกปิดผนึก พวกเขาใช้คีย์ไฮบริดเดียวกันซึ่งถูกปิดผนึกไว้กับคีย์รากของผู้ใช้ด้วยตัวอักษรหนึ่งที่อธิบายไว้ในส่วน 3.2 nymchat-pq-root ประเภทของตัวเองซึ่งไม่สามารถปิดผนึกภายใต้กุญแจเท่านั้นที่สามารถผลิตได้
สิ่งอํานวยความสะดวกเหล่านี้เป็นสถานที่ที่การออกแบบมีความสําคัญมากที่สุด บล็อกการตั้งค่าหรือแถบเก็บข้อมูลนั่งอยู่ในสถานที่เดียวเป็นเวลาหลายปีซึ่งเป็นรูปร่างของสิ่งที่ผู้ต่อสู้ถูกรวบรวม - มากกว่าข้อความเดียวใด ๆ ซึ่งอย่างน้อยเป็นครั้งคราวในจิตใจของผู้ใช้เอง
หนึ่งข้อ จํากัด ควบคุมรูปแบบที่นี่แทนที่คีย์ คัดลอกที่อยู่ด้วยตนเองต้องสามารถอ่านได้โดย ทั้งหมด อุปกรณ์บนบัญชีดังนั้นอุปกรณ์แต่ละอุปกรณ์โฆษณาสิ่งที่สามารถเปิดได้ในตารางที่โฆษณาของมันมีและบัญชีจะเขียนสิ่งที่ทุกคนสามารถอ่านได้ การเขียนสิ่งอื่น ๆ จะล็อคอุปกรณ์ออกจากการตั้งค่าของตัวเอง - ความล้มเหลวแบบเงียบ ๆ เหล่านี้ Section 3.2 หลีกเลี่ยงด้วยวิธีการอื่น ๆ ที่มาจากทิศทางที่แตกต่างกัน
อุปกรณ์ที่ถือตัวตน แต่ไม่ได้เป็นรากไม่สามารถเปิดสิ่งใดที่ปิดผนึกไว้กับคีย์ที่มาจากรากรวมถึงการตั้งค่าของตัวเอง นี่คือผลลัพธ์ที่ตั้งใจไม่ใช่การดูแลและนี่คือเหตุผลที่ Section 3.3 มีอุปกรณ์ที่แนะนําให้เชื่อมโยงแทนที่จะติดรากใหม่: รากที่สองจะไม่ทําให้บล็อกสามารถอ่านได้มันจะแบ่งวัสดุกุญแจของตัวตนเป็นสองเท่านั้น จนกว่าผู้ใช้จะเชื่อมโยงมันอุปกรณ์ยังคงทํางาน - มันอ่านสิ่งที่มีคีย์และส่งตามคลาสสิก
อุปกรณ์ที่ขับเคลื่อนด้วยส่วนขยายเบราว์เซอร์หรือตัวลงนามระยะไกล (NIP-46) ไม่มี nsec ที่จะมาจาก แต่ก็ถือโค้ดการกู้คืนและภายใต้โครงสร้างชั้นของส่วน 6.1 ซึ่งเป็นครึ่งหลังของปริมาณที่ต้องการทั้งหมด: ผู้ลงนามผลิตชั้น NIP-44 ตามที่เคยมีและลูกค้าคีย์ชั้นภายนอกเอง การเข้าสู่ระบบดังกล่าวเป็นผู้เข้าร่วมปกติในทั้งสองทิศทาง
9การหมุนเวียน
โซ epoch ตารางในการส่งออกเป็นสิ่งที่ทําให้การหมุนเป็นไปได้โดยไม่ต้องมีวัสดุกุญแจใหม่ การเพิ่มมันจะให้คู่กุญแจใหม่จากรากเดียวกันและโฆษณาที่เผยแพร่อีกครั้ง คู่มือจับคีย์ใหม่จากบันทึกที่สามารถเปลี่ยนได้ ดังนั้นการหมุนไม่ได้ขอให้ผู้ใช้เขียนอะไรลงครั้งที่สอง: รากจะถูกสร้างขึ้นครั้งเดียวต่อตัวตนและยุคจะทําการหมุน
9.1 epochs เก่าถูกเก็บไว้และไม่มีอะไรถูกเข้ารหัสใหม่
ไม่มีอะไรจะถูกเขียนใหม่เมื่อกุญแจหมุน ลูกค้าสร้างตัวเลือกการถอดรหัสจากยุคปัจจุบันลงไปสู่ epoch − 3 ดังนั้นข้อความที่ปิดผนึกไม่นานก่อนการหมุนยังคงเปิดกับคู่กุญแจที่มีอยู่เมื่อถูกส่ง
หน้าต่างนั้นเป็นสิ่งที่ทําให้การหมุนปลอดภัยเลย: ไม่มีมันการหมุนแต่ละครั้งจะเสียอะไรที่อยู่ในเที่ยวบิน สิ่งที่ปิดผนึกไว้ยังคงสามารถอ่านได้ตลอดชีวิตของเอกลักษณ์เพราะข้อความที่ผู้ใช้ไม่สามารถเปิดได้อีกต่อไปจะแย่ลงอย่างเคร่งครัดสําหรับพวกเขากว่าข้อความที่มีการป้องกันไม่สามารถปรับปรุงได้แบบย้อนกลับ (ส่วน 10.5)
10สิ่งที่ไม่ได้ป้องกัน
กระดาษที่รายชื่อสิ่งที่การออกแบบบรรลุเท่านั้นไม่ได้อธิบายระบบและเกินค่าคุณสมบัติความปลอดภัยในอินเตอร์เฟซเป็นเรื่องแย่กว่าการลืมสิ่งต่อไปนี้นอกเหนือจากสิ่งที่การก่อสร้างนี้ปกป้อง
10.1 รากเป็นความลับที่สองและการสูญเสียมันไม่สามารถกู้คืนได้
นี่คือราคาที่แท้จริงของการออกแบบ ข้อ จํากัด ในส่วนที่ 2 ที่ผู้ใช้ควรมีสิ่งที่ต้องเก็บไว้ไม่สามารถตอบสนองได้: nsec เท่านั้นไม่สามารถสร้างใหม่คีย์หลังควันต์เพราะจุดสําคัญทั้งหมดคือไม่มีมูลค่าสาธารณะและไม่มีความลับอื่น ๆ ที่เปิดเผยมัน หากไม่มีอุปกรณ์ที่ถือรากและไม่มีแบริ่งใด ๆ ของส่วนที่ 3.2 สามารถเปิดได้วัสดุที่ปิดผนึกไปยังคีย์ที่มาจากรากไม่สามารถกู้คืนได้ ไม่มีแบริ่งและไม่มีอํานาจที่สามารถถือได้
ด้วยการถ่ายโอนด้วยตนเองเส้นทางเดียวนี้มีความคมชัดมากขึ้นกว่าที่สามารถอ่านได้ครั้งแรก ผู้ใช้ที่ไม่เคยคัดลอก nympq1… รหัสทุกที่มีสําเนาเพียงหนึ่งของมันบนอุปกรณ์เดียวและสูญเสียอุปกรณ์นั้นสูญเสียข้อความ post-quantum ทุกการตั้งค่า blob และแถวเก็บข้อมูลที่ปิดผนึกไว้กับมัน
nsec ไม่ช่วย; นี่คือคุณสมบัติที่การออกแบบทั้งหมดขึ้นอยู่กับ
การโจมตีจะโจมตีเส้นทางที่ถูกที่สุดดังนั้นแผนกจึงคุ้มค่าเท่าเส้นทางการกู้คืนที่อ่อนแอที่สุดของมัน - ตัวอย่างเช่นพาสซฟราซ่าที่น่าจดจําจะใส่สิ่งทั้งหมดในสิ่งที่พาสซฟราซ่าคุ้มค่าและบรรทัดที่พาสซฟราซ่าเป็นสิ่งประดิษฐ์ที่ศัตรูที่เก็บรวบรวมและขัดแบบออฟไลน์ในอิสระ
10.2 การรับรองความถูกต้องตามที่แตกต่างจากความลับ
ทุกการลงนามใน Nostr เป็น Schnorr บน secp256k1 และที่ยังคงอยู่ที่นี่. ผู้ต่อสู้ที่มีคอมพิวเตอร์ควันต์สามารถปลอมลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลายลาย
นอกจากนี้ยัง จํากัด สิ่งที่ประกาศในส่วน 4 สามารถสัญญา การผูกพันระหว่าง npub และ ML-KEM Key คือการลงนาม secp256k1 ดังนั้นผู้ต่อสู้ที่สามารถปลอมเหล่านั้นสามารถแทนที่คีย์ของตัวเอง ความลับกับคู่ต่อสู้ในอนาคตไม่เหมือนกับความจริงกับหนึ่ง
10.3 ข้อมูลเมตาเดท
บรรจุของขวัญซ่อนผู้ส่งผู้รับมากกว่าหนึ่ง p แท็กประเภทและเวลาของข้อความภายใน มันไม่ได้ซ่อนว่าเหตุการณ์มีอยู่ขนาดของมันหรือเมื่อรีเลย์ได้รับมัน การวิเคราะห์การจราจรไม่ได้รับการจัดการโดยส่วนใด ๆ ของการออกแบบนี้
10.4 ตาข่ายออฟไลน์
การขนส่งตาข่ายบลูทู ธ ของ Nymchat เป็นโปรโตคอลแยกต่างหากที่มีการจับมือของตัวเองและไม่ได้ครอบคลุมโดยงานนี้ ข้อความผ่านตาข่ายเป็นคลาสสิก
10.5 ข้อความที่ส่งแล้ว
Ciphertext ที่บันทึกไว้ในขณะที่ทั้งสองด้านยังคงเป็นคลาสสิกคคลาสสิกอย่างถาวร มันมีอยู่แล้วและไม่สามารถปิดผนึกใหม่ การป้องกันเริ่มต้นที่ข้อความที่ทั้งสองด้านถือคีย์หลังควันต์ไม่ใช่ในขณะที่คุณลักษณะถูกเปิด
11ทางเลือกที่พิจารณา
| การเข้าถึง | ทําไมไม่ |
|---|---|
| เอาคีย์ post-quantum จากคีย์ตัวตน | ถูกปฏิเสธ การกําเนิดเป็นอัลกอริทึมสาธารณะกว่า nsec และคู่แข่งควันต์จะกู้คืน nsec จาก npub ที่เผยแพร่ดังนั้นจึงทําลายครึ่งคลาสสิกมือเหนือครึ่งหลังควันต์ด้วยมัน มันแก้ปัญหาการกระจายทุกอย่างในบทความนี้และป้องกันไม่ให้ใครบางคน ส่วนที่ 3.1. |
| ส่งรากไปยังอุปกรณ์อื่น ๆ ของผู้ใช้ผ่าน NIP-44 | ถูกปฏิเสธด้วยเหตุผลเดียวกันในเสื้อผ้าที่แตกต่างกัน รากที่ถ่ายโอนภายใต้การเข้ารหัสคลาสสิกเท่านั้นสามารถกู้คืนได้โดยทุกคนที่บันทึกข้อความและทําลายกุญแจของมันในภายหลังซึ่งเป็นศัตรูที่รากมีอยู่เพื่อหยุด |
| คู่คีย์ ML-KEM ที่สร้างขึ้นแยกต่างหากในแต่ละอุปกรณ์ | ถูกปฏิเสธ อุปกรณ์จะถือคีย์ decapsulation ที่แตกต่างกันและโฆษณาที่สามารถแทนที่ได้ต่อตัวตนไม่สามารถถือได้ทั้งหมด Peers จะเข้ารหัสไปยังที่คีย์ถูกเผยแพร่ครั้งล่าสุดและอุปกรณ์อื่น ๆ ทั้งหมดจะไม่สามารถอ่านผลลัพธ์ได้ หนึ่งรากต่อตัวตนเคลื่อนย้ายโดยเส้นทางของ Section 3.2 คือสิ่งที่หลีกเลี่ยง |
| บรรจุรากภายใต้ PIN | การปฏิเสธ PIN สี่ตัวเลขประมาณ 13 บิตเมื่อเทียบกับผู้โจมตีแบบออฟไลน์ที่ถือแถวที่ห่อไว้ การนําเสนอมันพร้อมกับสองเส้นทาง 256 บิตจะแสดงให้เห็นผิดว่าแอบที่อ่อนแอที่สุดมีมูลค่าอะไร |
| การขยาย npub เพื่อให้มีทั้งสองคีย์ | 1,184 บิตไม่ใช่ตัวระบุที่สามารถแบ่งปันได้และจะทําลายการคัดลอกที่อยู่อีเมลที่กําหนดไว้เป็น 32 บิตโดยลูกค้าของเรา |
| บริการ directory ที่สําคัญ | แนะนําอํานาจที่เครือข่ายมีอยู่เพื่อหลีกเลี่ยง ผู้ตอบคําถามตัดสินใจว่าใครสามารถอ่านข้อความ |
| เข้าร่วมกุญแจกับข้อความแต่ละข้อความ | ไม่แก้อะไร: ผู้ส่งต้องการ ผู้รับ คีย์ก่อนข้อความแรกซึ่งเป็นกรณีที่ไม่มีข้อความก่อนที่จะนํามัน |
| ความสามารถในการเจรจาในแบนด์ | สร้างพื้นผิวลดระดับ นักโจมตีที่สามารถถอดธงความสามารถบังคับให้เส้นทางคลาสสิก |
| โพสต์ควันต์เท่านั้นไม่มีขาคลาสสิก | ละลายการวิเคราะห์ secp256k1 หลายทศวรรษเพื่อแลกเปลี่ยนสําหรับโบราณที่หนุ่มสาวมากขึ้น หนึ่งไฮบริดจะล้มเหลวเฉพาะเมื่อ ทั้งคู่ ละลาย |
12การประยุกต์ใช้ Parity
Nymchat จัดการสองการใช้งานที่เป็นอิสระของโครงสร้างนี้ - หนึ่งใน JavaScript สําหรับแอพพลิเคชันเว็บหนึ่งใน Dart สําหรับแอพพลิเคชันมือถือรวมถึงพอร์ต ML-KEM-768 จากจุดสิ้นสุด สองการใช้งานของต้นฉบับเดียวกันมักจะเป็นความรับผิดชอบดังนั้นพวกเขาจะติดกับแต่ละอื่น ๆ แทนที่จะไว้วางใจที่จะเห็นด้วย
การประยุกต์ใช้ Dart ML-KEM ได้รับการยืนยันกับเจ้าหน้าที่
NIST ACVP
การทดสอบการตอบสนองที่รู้จักสําหรับ ML-KEM-768 (ML-KEM-*-FIPS203) — 25 คีย์ Generation, 25 encapsulation และ 10 decapsulation cases, run as their own suite. These are the vectors NIST publishes to validate a implementation, so passing them is proof the port is correct, not merely evidence that the two clients agree with each other. ขึ้นไปจากนั้น, a shared fixture of test vectors — seed derivation, encapsulation, both payload formats, and complete gift wraps — is generated from the JavaScript reference and checked by both test suites. The root secret extends that fixture rather than replacing it: root to seed, root to keypair, the root's public fingerprint, and the derived key, nonce and associated data of the outer layer are vectors of their own, so the two clients cannot disagree about what a
nympq1… รหัสหมายถึงหรือเกี่ยวกับตัวอักษรที่ข้อความถูกปิดผนึกด้วย ความแตกต่างในประยุกต์ใช้ทั้งสองประยุกต์ใช้ไม่ได้สร้างแทนที่จะผลิตข้อความที่ลูกค้าอื่นไม่สามารถเปิดได้
เป็นสิ่งที่บอกอุปกรณ์นี้คือรากที่ฉันถือจาก “นี่เป็นหนึ่งที่แตกต่างกัน “ และลูกค้าที่ไม่สามารถทําซ้ําลายนิ้วมือของลูกค้าอื่นได้อ่านบันทึกที่ดีอย่างสมบูรณ์แบบในฐานะไม่มีบันทึกใด ๆ - แล้วตามส่วน 3.3 เก็บรากที่สองและแบ่งบุคลิกภาพ มันเป็นเวกเตอร์สําหรับเหตุผลที่แน่นอน
Nymchat เป็น แหล่งที่เปิด ภายใต้ AGPL-3.0 หลักการเข้ารหัสลับที่อธิบายไว้ที่นี่คือ
js/nym-crypto.js และ js/modules/pq.js ในเว็บไซต์ของลูกค้าและ
lib/core/crypto/ ด้วย lib/features/identity/pq_registry.dart ในลูกค้ามือถือ
สําหรับคําอธิบายที่สั้น ๆ ไม่ใช่ทางเทคนิคดูที่ หน้าฐานความรู้เกี่ยวกับการเข้ารหัสที่ทนต่อปริมาณ.