База знања: квантно отпорно шифровање

Nymchat технички бели лист

Пост-квантни кључни договор у Нимцхату

Дистрибуирати МЛ-КЕМ-768 јавне кључеве преко Настра без директоријума или регистра, и сијати их из тајне коју никаква јавна вредност не открива.

Верзија 1.0 Август 2026 Primenjuje se na Nymchat 3.74+

Додавање пост-квантне размене кључева у поручник углавном није криптографски проблем. Примитиви су стандардизовани и библиотеке постоје. Друга Овај документ описује како Нимцхат одговара на то - одакле долази други кључ, како стиже до људи којима је потребан, и шта је интерфејсу дозвољено да тврди о резултату - и, у последњем одељку, шта тај резултат не штити.

1Проблем

Наше приватне поруке су шифроване са НИП-44, која има две одвојиве половине. Половина која скремблира једноставан текст — ЦхаЦха20 са ХМАЦ-СХА256 ознаком, кључано кроз ХКДФ (РФЦ 5869) — није значајно угрожен квантним рачунаром; Гроверов алгоритам кошта убрзање квадратног корена у односу на симетрични кључ, а 256 бита апсорбује то. Slažem se на кључу је елиптична крива Диффи-Хеллман преко Цоцк256к1Повратак једног приватног кључа од свог јавног колега ретроактивно открива сваку заједничку тајну коју је кључ икада произвео.

Pretnja koju to stvara nije odložena dok takva mašina ne postoji. Neprijatelj sa skladištem može danas da beleži šifrirani tekst i da ga dešifruje kad god dođe sposobnost. Sve što je poslato sada i što je tada još važno već je kompromitovano. Ovo je specifičan napad koji posle kvantne razmene ključeva gubi, i to je razlog zašto rad ne može da čeka da se mašina izgradi.

1.1 Питање на које овај документ одговара

Мешање је добро схваћено: покрените механизам за инкапсулацију пост-квантног кључа уз класичну размену, тако да нападач мора да прекине оба да би прочитао било шта.ФИПС 203То одмах покреће проблем дистрибуције:

Питање

Додајте пост-квантну размену и потребан вам је други - њен МЛ-КЕМ јавни кључ.

НПБУ је самосталан. Можете га написати на папиру, прочитати га гласно, или га скенирати са екрана, и то је све што неко треба да вам шифрује. МЛ-КЕМ-768 јавни кључ је 1.184 бајта. Не може се читати гласно, неће се уклопити у корисничко име, и не припада КР коду поред идентитета који је само 32 бајта.

Тежи део је да други кључ доноси три различита проблема, а остатак овог папира је углавном одговор на њих:

2Дизајн ограничења

Четири ограничења обликовале су одговор, и оне искључују већину очигледних дизајна пре него што се напише било који код.

  1. što je moguće manje tajni. Свака додатна тајна је други начин да изгубите своју историју, а неко ко зна како да резервише нсец неће знати како да резервише било шта друго. Одељак 3.1 показује да се ово не може испунити директно - пост-квантни кључ који потиче од нсец не пружа пост-квантну заштиту уопште - тако да дизајн троши управо једну тајну и не више: један комад кључног материјала, генерисан једном по идентитету, представљен у истом облику као и нсец и на истом месту, тако да свако ко зна како да задржи један зна како да задржи други.
  2. Nema autoriteta Не постоји сервер који се може веровати да каже који кључ припада коме.
  3. Mnogo uređaja, jedan identitet Наш идентитет се обично користи од неколико клијената одједном.Сваки кључни материјал који постоји мора завршити идентичним на свим њима, а путеви који га носе тамо не морају сами бити читави од стране противника против којег се функција брани.
  4. Nema pregovora Свака размена у опсегу “које шифре подржавате?” је површина коју нападач може срушити како би присилио слабију опцију.

3Независна тајна корена

Одлука која носи терет је да је кључ за декапсулацију МЛ-КЕМ сет од кључног материјала који ниједна јавна вредност не открива.

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)

Корен је представљен кориснику на начин на који је нсек: Беч32 са људским читавим префиксом nympqТако се чита као nympq1…, приказан поред нсец-а на екрану идентитета иза исте интеракције откривања, копиран са истом контролом, никада није пријављен и никада није послат нигде у јасном.То није лозинка и није пријављивање.

Sol je namerno odvojena od domena, tako da nijedna druga tajna nikad ne može da izvede isti ključ. epoch Цоунтер дриве ротација (секција 9).

3.1 Зашто се кључ не може извући из кључа идентитета

Очигледан дизајн је да сеје кључпаир из тајне коју корисник већ има:

seed = HKDF(salt = "…", IKM = nsec)          // do not do this

Привлачно је из четири разлога, сви они су стварни: ништа ново да се резервише, јер је нсец већ резервна копија; сваки уређај који се слаже по изградњи, без протокола синхронизације да иде погрешно; једна заменљива најава по идентитету је очигледно тачна, јер уређаји не могу да се не слажу о кључу; и кључ који постоји пре него што се икада објави, тако да клијент може запечатити нешто за себе на првом путу.

Све четири предности су бескорисне, из једног разлога. Алгоритам Схор-а који се покреће против објављеног НПБ-а даје нсец. Деривација семена је јавни алгоритам над нсец. Тако противник који разбије класичну половину реконструише пост-квантну половину покретањем истог ХКДФ-а који сви други покрећу.

Правило све следи од

Кључ за декапсулацију МЛ-КЕМ мора доћи од ентропије која није ни изведена из нсек-а, нити је никада пренета под класичном само шифровањем.

Друга клаузула тог правила ради толико колико и прво. независно генерисана тајна која се затим синхронизује између уређаја корисника унутар обичне поруке НИП-44 је исти неуспех са додатним корацима: противник снима ту поруку данас и опоравља свој класични кључ касније, а корен пада.

3.2 Добијање корена на друге уређаје корисника

Ograničenje 3 odeljka 2 – jedan identitet, nekoliko uređaja – ne može se zadovoljiti aritmetikom ovde, jer cela stvar je u tome da ključ nije funkcija bilo čega što uređaji već dele. nympq1… Код себе

Корен се приказује као nympq1… pored nsec-a, a drugi uređaj prihvata da je umetnut u istu ploču. To je ceo mehanizam.

Ручно преношење је намерни под, а не први корак. Правило у одељку 3.1 каже да корен никада не може да путује под класичним само шифровањем, а сваки механизам који би то учинио аутоматским - синхронизовањем кроз релеј, умотавањем на кључ идентитета - крши управо то.

Формат оставља простор за упакован пут: запис може да носи листу облога, сваки АЕАД Блоб под кључем који корисник може да репродукује на другом уређају - паскеи ПРФ излаз, на пример. nympq1… Kod je jedini put preko. odeljak 10.1 navodi koliko to košta.

Сам рекорд живи у својој категорији подешавања, nymchat-pq-rootЧак и без омотача, он ради неопходан посао: његово присуство је како други уређај сазнаје да овај идентитет већ има корен, што је оно што га спречава да наметне ривалски један (Део 3.3).

Напомена за дизајн: једна категорија која не може да користи нови кључ

Тхе nymchat-pq-root Категорија Мора не тај ред носи јединствену копију корена, тако да је заптивање под кључем који потиче од корена је брава чији кључ је унутар кутије: ниједан уређај га никада није могао отворити, укључујући и онај који га је написао.

Свака друга категорија подешавања може и треба да користи коренски кључ. Ово је једини изузетак, и то је изузетак о кружности, а не о снази.

3.3 Генерација и усвајање

На покретању, држећи трајни идентитет, клијент ради у овом редоследу:

  1. Pronađite postojeći nymchat-pq-root Рекорд је
  2. Запис је пронађен, а овај уређај га може откључати - усвајају га и објављују овај идентитет као пост-квантно способни.
  3. Пронађен рекорд, а овај уређај га не може откључати — не генерише нови корен, и не објављује никакве огласе уопште. Помозите кориснику да повеже овај уређај уношењем nympq1… Код са уређаја који га већ има.
  4. Нема рекорда — генерисати корен, објавити запис, најавити и приказати nympq1… Код даје кориснику једном, тако да га могу сачувати.

Корак 3 је корак који је лако погрешити, и то је разлог зашто се ред пише, а не оставља на сваку имплементацију.Два уређаја која свака одлучује да генерише корен производе два независна корена под једним идентитетом, и то је неуспех овог поређења постоји да спречи.

4Објављивање способности

Јавна половина дериватног кључног пара објављује се као адресибилна ИП-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": [ ... ]
  }
}

Адресибилни значи да релеј држи један догађај по (кид, пубкеи, д-таг), тако да републица замењује претходну најаву на месту.Сваки идентитет стога има тачно један тренутни рекорд, што је оно што чини "Алисов кључ" јединственим недвосмисленим пријемом, а не листом за помирење.

Potpis je obavezujući. Догађај је потписан идентитетним кључем, тако да тврдња &ldquo;овај ML-KEM кључ припада овом npub&rdquo; је управо толико јак као и сам npub. Замена другог кључа за инкапсулацију захтева ковање сецп256к1 потписа.

Најаве истекују Седми дан НИП-40 истека, поново објављен сваких 24 сата, држи у запису изјаву о клијенту који још увек ради, а не оном који је некада био.

Пропуштена најава се чита управо као она која никада није носила кључ: вршњаци шаљу обичан НИП-44, који сваки пријављивач може прочитати, а клијент наставља пост-квантну размену на својој следећој везаности, када се поново објављује.

Без једног, запис преживљава кључ који назива: уређај који је избрисан, ресетован или има свој корен замењен оставља стајаћу инструкцију да се инкапсулира на кључ који нико више не држи, а поруке послате под њим су изгубљене без грешке на било којој страни.

Кључно поље назива свој формат. Поље је pk2, а бројка је део уговора уместо декорације: назива формат корисног оптерећења са којим се може користити кључ. Читач који не препознаје поље закључује &ldquo;Нимцхат клијент, нема пост-квантног кључа&rdquo; и шаље обичан НИП-44, који сваки пријављивање може прочитати. То је исправан правац неуспјеха, и вреди рећи као правило да се форматски нумерирање постоји да спроведе: непознати захтев за могућности мора коштати заштиту, никада испоруку. Кључ који вршњак не може користити је горе него никакав кључ уопште, јер је порука коју производи изгубљена без грешке на било којој страни.

4.1 Одсуство је значајно и троструко оцењено

Суптилан али важан детаљ: најаву објављује сваки клијент Нимцхат, не само они који су способни за пост-квантно, а кључно поље је опционално.

посматраноСредстваПошаљи понашање
Obaveštenje sa ključem Нимцхат, пост-квантни способни Хибрид
Obaveštenje, bez ključa uopšte Нимцхат, класичан само - пост-квантни искључен, или уређај још није повезан са кореном идентитета Класични НИП-17
Nema obaveštenja Непознати клијент. Може бити било који корисник Настра или Битцхат Класична, плус компатибилност

Најављивање без кључа је потписана изјава да пошиљалац покреће Нимцхат, што омогућава путу за слање да прескочи шпекулативну крос-протоколну амбалажу коју би иначе морала укључити за свакога кога не може идентификовати.

4.2 Уређај који не може отворити корен ћути

Најава је заменљива: један догађај по идентитету, последње писање побеђује.То је оно што чини дизајн једне рекорде радним, а то је такође оно што чини несвезан уређај опасним ако објављује.

Дакле, уређај који зна корен постоји, али га не може отворити, уопште не објављује оглас.То није сломљено и није закључано из апликације: и даље чита сваку поруку за коју има кључеве и још увек шаље класично, док позива корисника да га повеже.

5Откриће и одлука за слање

Клијенти уче кључеве вршњака на два начина. Стајаћа претплата покрива људе са којима корисник заправо одговара – отворене разговоре и чланове групе – тако да њихове најаве долазе као обични догађаји. За вршњака који се први пут састао, једнократно упит се покреће у време слања, ограничено на 2,5 секунде; ако се не реши, порука иде класично, што је понашање које је постојало пре него што је пост-квантни додато, а не нови режим неуспјеха.

Корисник који повезује нови уређај, или који се креће од пријављивања за проширење прегледача до локалног кључа, постаје пост-квантно способан средином разговора, а трајно кеширан &ldquo;не&rdquo; би их задржао на класичном шифровању за живот огласа.

5.1 Зашто не постоји напад надоградње

Одлука о рутирању се своди на једно питање:

pq = (we hold a signed, unexpired ML-KEM key for this recipient)

Нема преговора о могућностима, нема листе подржаних алгоритма, и нема поља које нападач може очистити да натера слабији пут. је Režim neuspeha prikrivenog ili zadržanog obaveštenja je da poruka ide klasična – status quo pre ove funkcije – umesto da se hibridna poruka spusti na nešto što se može prevariti.

Конверза такође држи и важније: клијент шаље хибрид samo када држи кључ, а држање кључа је доказ да прималац може да декапсулира.Не постоји стање у којем се порука шаље пост-квантно некоме ко не може да је прочита.

6Хибридна конструкција

Немодификовани текст за шифровање НИП-44 је унутрашњи слој, а МЛ-КЕМ кључе спољашњи АЕАД око њега:

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)

Оба тајна се и даље морају опоравити да би се прочитала порука: спољашњи слој даје само текст за шифровање НИП-44, а отварање за које је потребно класично ЕЦДХ. Квантни противник који разбије сецп256к1 добија унутрашњи кључ и и даље се суочава са МЛ-КЕМ; прекид МЛ-КЕМ прекида спољашњи слој и оставља НИП-44 у стању стајања.

МЛ-КЕМ кључ примаоца је дуготрајан, али свака порука носи независни текст шифрирања и стога независан kem_ssТо је оно што чини деривацију нонце уместо да га рандомизује звучи: ЦхаЦха20-Поли1305 је прекинут поновном употребом (кључ, нонце) пара, а овде је сам кључ нови за сваку поруку, тако да се ниједан пар не може поновити.

6.1 Зашто слојеви остају одвојени

Алтернатива је да се обе тајне помешају у један кључ за разговор и да се то пренесе на НИП-44:

ck = HKDF-Extract(salt = "…",
                  IKM  = ecdh_x || kem_ss || …)          // do not do this

Та конструкција звучи као криптографија. Она има један структурни проблем: она треба ecdh_x, сирова к-координата излаза ЕЦДХ, као кључни материјал - и проширење претраживача (НИП-07) или даљински потписник (НИП-46Он обавља НИП-44 у име позивача и враћа шифровање текста, што је цела тачка држања кључа негде где апликација не може да стигне.

Мијешање тајни стога искључује свако пријављивање које држи кључ идентитета у потписнику, што јест, најпажљивији корисници, и ниједна количина рада на деривацији кључа не може да га промени. слој уклања зависност: НИП-44 остаје цео и производи га оно што држи кључ идентитета, потписник укључен, док се КЕМ половина израчунава из кода опоравка који клијент држи директно.

Цена је ширина траке, а то није мало. ML-KEM шифровање текст је 1.088 бајтова и вози на свакој поруци, base64url-кодирани на 1.451 карактера; спољашњи АЕАД додаје 16-бајт Поли1305 ознаку и проширује НИП-44 корисно оптерећење она омотава за трећину. 50 карактера порука расте од 176 бајтова до 1.712, а 2.000 карактера један од 2.820 до 5.238. Подови су отприлике 1.5 КБ по поруци без обзира на то колико је кратка порука, што је цена инкапсулације свеже сваки пут уместо поновног коришћења заједничке тајне.

6.2 Самоописани паилоадс

Тхе pq2. Префикс чини распоређивање инкорпорираним: то је само-описујуће, тако да клијент бира пут за дешифровање испитивањем корисног оптерећења, а не верујући ознаци или памћењем онога што подржава вршњак.Читач који не препознаје префикс не отвара тај кориснички оптерећење уместо да га погрешно чита, а поруке запечаћене прије било које стране могу учинити пост-квантни остати читави као обичан НИП-44 без миграције.

Implicitno odbijanje

ML-KEM decapsulation је дизајниран да никада не пропадне: с обзиром на погрешан текст шифрирања, трансформација Фујисакиа-Окамото враћа детерминистичку псеудо-случајну тајну уместо грешке. Због тога погрешан кључ уопште не прелази на КЕМ слој - он се појављује као ХМАЦ неуспех унутар НИП-44, што је исти начин погрешних класичних кључних површина. Позивачи третирају обоје идентично, тако да неуспех не носи никакав разликујући сигнал. То је такође оно што чини кандидатску листу Део 9.1 функционалном: клијент покушава сваки кључ за редом и дозвољава НИП-44 да каже који је прави.

6.3 Оба слоја поклон завоја

A НИП-17 Privatna poruka je a НИП-59 Поклон омотач: непотписана гласина, запечаћена под идентитетним кључем пошиљаоца (тип 13), а затим омотана под бацајућим кључем генерисаним по поруци (тип 1059).

A hybrid NIP-59 gift wrap: the rumor sealed under the sender's key, that seal wrapped under a per-message ephemeral key, both layers carrying a NIP-44 ciphertext inside a post-quantum AEAD. kind 1059 — wrap  ·  signed by a per-message ephemeral key content = pq2.<kem_ct>.<aead>   inner = NIP-44(eph, recip)   outer key = ML-KEM(recip) kind 13 — seal  ·  signed by the sender's identity key content = pq2.<kem_ct>.<aead>   inner = NIP-44(sender, recip)   outer key = ML-KEM(recip) rumor — unsigned the message: kind, content, tags, author pubkey unsigned on purpose — a signature would be portable proof
Оба слоја за шифровање су хибридна, свака са независном МЛ-КЕМ енкапсулацијом. Спољни слој је закључан на тајну која се баца, тако да омотач не открива пошиљаоца.

Пријава потписника добија само спољни слој. Печат производи потписник као обичан НИП-44 - апликација никада не види кључ који га прави - тако да се не може хибридизовати на месту. Ово не кошта ништа против напада у питању: печат је доступан само кроз омотач, а омотач је оно што снимач складишти. Противник који држи снимани саобраћај мора прекинути МЛ-КЕМ пре него што печат буде чак видљив за напад.

7Групне поруке и делимично покривање

Порука групе није један шифровани текст. То је исти једноставан текст који се издаје сваком члану, свака копија је инкапсулирана на сопствени МЛ-КЕМ кључ тог члана.

Ово ствара рачуноводствени проблем који наивна имплементација добија погрешно. ако осам од десет чланова добије хибридну копију, порука је не Противнику је потребна једна класична копија обичног текста која је идентична у свих десет, тако да је порука заштићена само ако сваки Копија је

Нимцхат стога прати покривеност по поруци током фан-оут-а - број је познат само док се омотачи граде - а знак извештава &ldquo;квантно-отпоран на 8 од 10 чланова&rdquo; уместо да тврди да је порука заштићена. примио Порука групе (само пошиљалац рачуна фанове), интерфејс пријављује делимичну, а не потпуну заштиту.

7.1 Шта штит извештава

Štit govori istinu o Порука, не о софтверу који га је послао:

Пресуда се снима када је порука запечаћена, а не поновно израчуната од онога што колега рекламира касније. Ципхертекст који већ постоји не може постати боље заштићен него што је био, а интерфејс који је преокренуо старе поруке на снагу новог огласа би тврдио нешто лажно о бајтовима на релеју.

Правило групе изнад стека на врху овог уместо да га замењује: порука групе је у потпуности заштићена само када је копија сваког члана, а примљена порука групе без броја покривања приказује делимично.

8Копије усмерене на себе

Неколико ствари које клијент чува су шифроване на кориснички идентитет: синхронизована подешавања, листа разговора, групе тастера и архива порука. Ови носе више о кориснику него већина појединачних порука, тако да би их остављање класичним учинило најслабијим чуваним артефактом без обзира на то колико су сами поруке пажљиво запечаћене. nymchat-pq-root сама категорија, која се не може запечатити под кључем који само она може произвести.

Blob postavki ili red arhiva sedi na jednom mestu godinama, što je upravo oblik stvari koju sakuplja protivnik - sad-dešifrovan-kasnije - daleko više od bilo koje pojedinačne poruke, koja je barem efemerna u sopstvenom umu korisnika.

Једна ограничења регулишу формат овде, а не кључ. сваки uređaj na računu, tako da svaki uređaj oglašava ono što može da otvori u rasporedu koji nosi njegov oglas, a račun piše samo ono što svi mogu da čitaju.

Ограничење које вреди рећи

Уређај који држи идентитет, али не и корен, не може отворити ништа запечаћено на кључ који потиче од корена, укључујући његове сопствене поставке.То је намерна последица, а не надзор, и зато Одељак 3.3 има такав уређај за позив за повезивање уместо мењањања свежег корена: други корен не би учинио блоб читавим, он би само поделио кључни материјал идентитета на два.

Уређај који покреће проширење претраживача или даљински потписник (НиП-46) нема нсец да добије, али има код за опоравак, а под слојевитом конструкцијом Секције 6.1 то је све што је потребно пост-квантној половини: потписник производи НиП-44 слој као што увек има, а клијент кључе сам спољни слој.

9Ротација

Тхе epoch Број у деривацији је оно што чини ротацију могућом без новог кључног материјала. Повећање га даје нови кључни пар из истог корена и поново објављеног огласа; вршњаци узимају нови кључ из замењивог записа. Ротација стога не тражи од корисника да нешто напише други пут: корен се генерише једном по идентитету, а епоха врши окретање.

9.1 Старе епохе се чувају, а ништа није поново шифровано

Клијент гради кандидате за дешифровање из тренутне епохе до епохе &минус; 3, тако да порука запечаћена непосредно пре ротације и даље отвара против паре кључева који је био тренутан када је послат.

Тај прозор је оно што чини ротацију сигурном уопште: без њега, свака ротација би изгубила све што је било у лету. Све што је већ запечаћено остаје читаво за живот идентитета, јер порука коју корисник више не може отворити је строго лошија за њих него она чија заштита се не може побољшати ретроактивно (Део 10.5).

10Шта то не штити

Papir koji samo liste ono što dizajn postiže nije opisivanje sistema, a preterivanje bezbednosne svojstva u interfejsu je gore nego izostavljanje.

Корен је друга тајна, а губитак је неповратан.

Ово је стварна цена дизајна. Ограничење у одељку 2 да корисник треба да има управо једну ствар да задржи не може се испунити: само нсец не реконструише пост-квантни кључ, јер је цела тачка у томе да ниједна јавна вредност и ниједна друга тајна га не открива. Ако ниједан уређај не држи корен и ниједан од омотаја одељка 3.2 се не може отворити, материјал запечаћен на коренски дериватни кључ није опорављив.

Са ручним преносом једини пут, ово је оштрије него што се може прво прочитати. nympq1… Код било где има тачно једну копију, на једном уређају, а губитак тог уређаја губи сваку пост-квантну поруку, подешавања и архивни ред запечаћен на њој. nsec не помаже; то је имовина на којој се сав дизајн ослања.

Нападач напада најјефтинији пут који је доступан, тако да је шема вредна онога што вреди његов најслабији пут за опоравак - незаборавна пасоша, на пример, ставила би целу ствар на оно што вреди пасоша, а обложен ред је управо артефакт који противник сакупља и бруши ван мреже у слободно време.

10.2 Аутентификација, као различита од поверљивости

Сваки потпис у Ностру је Сцхнорр над секп256к1, а то је непромењено овде. Противник са квантним рачунаром могао би да фалсификује потписи и претвара корисника у реалном времену. Оно што хибридна размена кључева поражава је жетва-сада-дешифровање-касније: нападач који данас снима саобраћај не може да га прочита касније. То не чини поруку незаборавном против противника који већ има машину. Ова разлика се уноси у апликације намерно - индикатор падлоцк пријављује аутентификацију, штит пријављује поверљивост, и они су одвојени глифи јер порука може имати једну без друге.

Ona takođe ograničava ono što obaveštenje u odeljku 4 može da obeća. Povezivanje između npub i ML-KEM ključa je secp256k1 potpis, tako da protivnik koji može da krivotvori te ključeve može da zameni svoj ključ.

10.3 Метадате

Поклон омотач сакрива пошиљаоца, примаоца изван једне p Ознака, врста и временска ознака унутрашње поруке. Не скрива да догађај постоји, његова величина, или када га је релеј примио.

10.4 Оффлине мрежа

Блуетоотх мрежни транспорт Нимцхата је посебан протокол са сопственим рукама, и није покривен овим радом.

10.5 Већ послате поруке

Ципхертекст снимљен док је било која страна још увек била класична остаје класична трајно. Већ постоји и не може се поново запечатити. Заштита почиње на поруци где су обе стране држале пост-квантне кључеве, а не у тренутку када је функција укључена.

11Разматране алтернативе

ПриступZašto ne
Деривати пост-квантни кључ из идентитета кључ Деривација је јавни алгоритам преко нсек, а квантни противник опоравља нсек из објављеног нббу-а, тако да разбија класичну половину руку преко пост-квантне половине са њом.
Пошаљите корен на друге уређаје корисника преко НИП-44 Корен који се преноси под класичном само шифровањем може да се опорави од стране свакога ко је снимио ту поруку и разбије њен кључ касније, што је противник корен постоји да заустави.
Појединачно генерисани МЛ-КЕМ тастери на сваком уређају Одбијени. Уређаји би држали различите кључеве за декапсулацију, а један замењиви оглас по идентитету не може да их носи све. Појединци би шифрирали на који кључ је последњи објављен, а сваки други уређај не би могао да прочита резултат.
Замотајте корен испод пина Одбијен. четвороцифрени ПИН је око 13 бита против оффлине нападача који држи омотан ред. Нудећи га поред два 256-битна пута би погрешно представљао шта је најслабији омотач вредан.
Проширите нббу да бисте пренели оба кључа 1,184 бајта није дељиви идентификатор, и то би прекинуло сваки постојећи наш клијент анализира адресу која је дефинисана као 32 бајта.
Кључна директоријска услуга Ponovo uvodi autoritet koji mreža postoji da bi izbegla.Ko god odgovori na pretragu odlučuje ko može da pročita poruku.
Приложите кључ за сваку поруку Ne rešava ništa: pošiljatelj treba Пријемник кључ пре прве поруке, што је управо случај без претходне поруке да га носи.
Преговарачка способност у бенду Креира површину за поништавање. Нападач који може да скине заставу способности присиљава класични пут.
Само пост-квантни, без класичне ноге Одбацује деценије анализе сецп256к1 у замену за много млађе примитиве. обоје Fail je.

12Paritet implementacije

Нимцхат испоручује две независне имплементације ове конструкције - једну у ЈаваСцрипту за веб апликацију, једну у Дарт за мобилне апликације, укључујући и порт МЛ-КЕМ-768.

Dart ML-KEM implementacija je potvrđena protiv zvaničnog NIST ACVP Погледајте видео: КСНУМКС КСНУМКС КСНУМКС КСНУМКСML-KEM-*-FIPS203) — 25 кључних генерација, 25 инкапсулација и 10 случајева декапсулације, који се покрећу као њихова сопствена сета. То су вектори које Нист објављује како би потврдио имплементацију, тако да их пролазак представља доказ да је порт тачан, а не само доказ да се два клијента слажу једни са другима. Осим тога, заједничка фиксација тестних вектора — семенска деривација, инкапсулација, оба корисна формата и комплетне поклонне облоге — генерише се из референце ЈаваСцрипт и проверава их оба тестна сета. Коренска тајна проширује ту фиксацију уместо да је замењује: корен на семе, корен на кључни пар, јавни отисак ко nympq1… Дивергенција у било којој имплементацији не успије да изгради уместо да произведе поруку коју други клијент не може отворити.

То је оно што каже уређај &ldquo;ово је корен који држим&rdquo; од &ldquo;ово је другачији један&rdquo;, и клијент који није могао да репродукује отисак прста другог клијента би прочитао савршено добар рекорд као никакав рекорд уопште - а затим, следећи Одељак 3.3, нацртати други корен и поделити идентитет.

Nymchat je Отворени извор под АГПЛ-3.0. Криптографско језгро описано овде је js/nym-crypto.js и js/modules/pq.js на сајту клијента, и lib/core/crypto/ са lib/features/identity/pq_registry.dart у мобилним клијентима.

За краће, не-техничко објашњење, погледајте Странице у категорији „Квантно отпорно шифровање”.