Прескокнете до содржината
Назад на Nymchat

База на знаење Под хаубата

Протокол и настани

Што всушност Nymchat го става на жицата, за секој што гради против него, ревизија или читање настани од друг клиент на Nostr.

Видови настани

ЉубезенСе користи заБелешки
0Метаподатоци на профилотСтандарден Nostr профил: име, слика, банер, за, lud16.
5Барања за бришењеНИП-09.
7РеакцииНИП-25, со а ['k', originalKind] ознака за да се поднесе реакција против вистинскиот тип на канал.
13ПечатСредниот слој на порака NIP-17.
14Гласини за приватна поракаНепотпишана и никогаш не е објавена самостојно.
1059Обвивка за подарокНИП-59. Што всушност стигнува до реле за приватни пораки и групни разговори.
1984ИзвестувањеНИП-56.
9734 / 9735Zap барање и zap потврдаНИП-57.
10030Прилагодени списоци на пакети со емотикониНИП-30.
20000Порака за каналот GeohashЕфемерни, означени ['g', geohash].
23333Порака со именуван каналЕфемерни, означени ['d', channel].
24420 / 24421Јавни индикатори за пишување и сметки за читањеСпецифичен за Nymchat, за јавни канали.
25051 / 25052Peer-to-peer сигнализација и статус на пренос на датотекиСпецифичен за Nymchat.
30030Прилагодени комплети емотикониНИП-30.
30078Податоци за апликацијаНИП-78. Анкети и синхронизирани шифрирани поставки.
69420Приватни сметки за читање и статус на испоракаСпецифичен за Nymchat, пренесен како гласина во обвивката за подарок. Посебен вид од 14 намерно, така што другите NIP-17 клиенти не даваат празни директни пораки за секоја потврда.

NIPs Nymchat спроведува

НИПОна што го дава Nymchat
НИП-07Најавете се со екстензија на прелистувачот.
НИП-09Барања за бришење.
НИП-13Доказ за работа. Појдовните пораки се минираат на најмалку 16 бита.
НИП-17Приватни директни пораки и основа за групни разговори.
НИП-25Реакции.
НИП-30Прилагодени емотикони.
НИП-40Временски печати за истекување - пораки што исчезнуваат.
НИП-44Верзија за шифрирање, што се користи за пломби, обвивки и синхронизација на поставките.
НИП-46Далечинско потпишување - bunker://.
НИП-56Известување.
НИП-57Молња запира.
НИП-59Облоги за подароци.
НИП-78Произволни податоци за апликацијата.
НИП-98HTTP auth, за хостирани крајни точки.

Криптографија

КадеШто
Идентитет и потписиsecp256k1 со потписи на Schnorr (BIP-340), како што наведува Nostr.
Приватни пораки и групни разговориNIP-44 v2: ECDH на secp256k1, HKDF-SHA256, ChaCha20 со HMAC-SHA256 и полнење така што должината на шифрениот текст не ја оддалечува должината на пораката.
Bluetooth mesh сесииNoise 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. На складиште е AGPL-3.0 и е комплетен - нема затворена компонента за да се преземе доверба.