Перайсці да зместу
Вярнуцца да Nymchat

База ведаў Пад капотам

Пратакол і мерапрыемствы

Тое, што Nymchat фактычна ставіць на дрот, для тых, хто будуе супраць яго, яго аўдыт або чытанне падзей з іншага кліента Nostr.

Віды мерапрыемстваў

ЛаскавыВыкарыстоўваецца дляЗаўвагі
0Метададзеныя профілюСтандартны профіль Nostr: імя, малюнак, банер, інфармацыя, lud16.
5Запыты на выдаленнеНІП-09.
7РэакцыіНІП-25, з а ['k', originalKind] пазнака, каб рэакцыя была пададзена супраць патрэбнага тыпу канала.
13ПячаткаСярэдні ўзровень паведамлення NIP-17.
14Чутка пра прыватнае паведамленнеБез подпісу і ніколі не публікаваўся самастойна.
1059Падарункавы пакетНІП-59. Што на самой справе дасягае рэле для асабістых паведамленняў і групавых чатаў.
1984СправаздачнасцьНІП-56.
9734 / 9735Зап-запыт і зап-квітанцыяНІП-57.
10030Карыстальніцкія спісы набораў эмодзіНІП-30.
20000Паведамленне канала GeohashЭфемерныя, пазначаныя ['g', geohash].
23333Паведамленне з названым каналамЭфемерныя, пазначаныя ['d', channel].
24420 / 24421Публічныя індыкатары ўводу і пасведчанні аб прачытанніСпецыяльна для Nymchat, для грамадскіх каналаў.
25051 / 25052Аднарангавая сігналізацыя і стан перадачы файлаўNymchat-канкрэтны.
30030Карыстальніцкія наборы эмодзіНІП-30.
30078Дадзеныя прыкладанняНІП-78. Апытанні і зашыфраваныя налады сінхранізуюцца.
69420Прыватныя пацверджанні аб прачытанні і статус дастаўкіСпецыфічны для Nymchat, пераносіцца як чутка ў падарункавай упакоўцы. Асобны від ад 14 наўмысна, каб іншыя кліенты NIP-17 не адлюстроўвалі пустыя прамыя паведамленні для кожнай квітанцыі.

NIPs Nymchat рэалізуе

NIPШто дае Nymchat
НІП-07Увайдзіце з дапамогай пашырэння браўзера.
НІП-09Запыты на выдаленне.
НІП-13Доказ працы. Выходныя паведамленні здабываюцца як мінімум да 16 біт.
НІП-17Асабістыя прамыя паведамленні і аснова для групавых чатаў.
НІП-25Рэакцыі.
НІП-30Карыстальніцкія эмодзі.
НІП-40Тэрмін дзеяння — знікаючыя паведамленні.
НІП-44Версійнае шыфраванне, якое выкарыстоўваецца для пячатак, абгортак і сінхранізацыі налад.
НІП-46Аддаленае падпісанне - bunker://.
НІП-56Справаздачнасць.
НІП-57Маланкавы запс.
НІП-59Падарункавыя ўпакоўкі.
НІП-78Адвольныя даныя прыкладання.
НІП-98Аўтэнтыка HTTP для размешчаных канчатковых кропак.

Крыптаграфія

дзеШто
Асоба і подпісыsecp256k1 з подпісамі Schnorr (BIP-340), як паказвае Nostr.
Асабістыя паведамленні і групавыя чатыNIP-44 v2: ECDH на secp256k1, HKDF-SHA256, ChaCha20 з HMAC-SHA256 і запаўненне так, каб даўжыня зашыфраванага тэксту не давала даўжыні паведамлення.
Сеансы Bluetooth meshNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 для подпісаў аб'яў, SHA-256 і HMAC унізе.
Ідэнтычнасць у спакоіAES-GCM-256. Ключ паступае з PBKDF2-SHA256 на 310 000 ітэрацый для пароля або PIN-кода або з вываду WebAuthn PRF праз HKDF-SHA256 для ключа доступу або біяметрыі.
Званкі і перадачы файлаўУласны DTLS-SRTP WebRTC, узгоднены праз сігналізацыю, абгорнутую NIP-17.
ВыпадковасцьПлатформа CSPRNG паўсюдна — ключы, разнастайныя нумары і дрыгаценне меткі часу падарункавай упакоўкі.

Абарона метададзеных

Дзве дэталі на шляху падарункавай упакоўкі вартыя ўвагі, таму што яны адрозніваюць NIP-59 ад «зашыфравана, але відавочна ад вас да іх»:

  • Кожная абгортка падпісваецца а аднаразовы ключ створаны толькі для гэтага паведамлення, так што ніякія дзве абгорткі не маюць агульнага адпраўніка.
  • Кожная абгортка created_at ёсць выпадковым чынам задняй датай да двух гадзіны з выкарыстаннем CSPRNG, таму час адпраўкі і атрымання не можа быць супастаўлены.

Групавыя чаты дадаюць эфемерныя элементы, якія верцяцца атрымальнік ключы паверх гэтага — гл Як працуе групавое шыфраванне.

Чытанне крыніцы

Прымітывы крыпта ўваходзяць js/nym-crypto.js і js/modules/key-vault.js у вэб-праграме і пад android-ios-app/lib/core/crypto/ і lib/services/mesh/noise/ у дадатку Flutter. The сховішча з'яўляецца AGPL-3.0 і завершаны - няма закрытага кампанента, якому можна давяраць.