Преминете към съдържанието
Обратно към Нимчат

База знания Под капака

Протокол и събития

Това, което Nymchat всъщност поставя на кабела, за всеки, който строи срещу него, одитиране или четене на събития от друг клиент на Nostr.

Видове събития

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

NIPs Nymchat изпълнява

NIPКакво дава Nymchat
NIP-07Влезте с разширение за браузър.
NIP-09Искания за изтриване.
NIP-13Доказателство за работа. Изходящите съобщения се копаят до поне 16 бита.
NIP-17Лични директни съобщения и основа за групови чатове.
NIP-25Реакции.
NIP-30Персонализирани емотикони.
НИП-40Времеви клейма за изтичане — изчезващи съобщения.
NIP-44Криптиране с версии, използвано за печати, обвивки и синхронизиране на настройките.
NIP-46Дистанционно подписване — bunker://.
NIP-56Докладване.
NIP-57Светкавични удари.
NIP-59Опаковки за подаръци.
NIP-78Произволни данни за приложението.
NIP-98HTTP удостоверяване за хостваните крайни точки.

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

КъдеКакво
Самоличност и подписиsecp256k1 със сигнатури на Schnorr (BIP-340), както уточнява Nostr.
Лични съобщения и групови чатовеNIP-44 v2: ECDH на secp256k1, HKDF-SHA256, ChaCha20 с HMAC-SHA256 и подпълване, така че дължината на шифрования текст да не дава дължината на съобщението.
Bluetooth мрежови сесииШум XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 за подписи за обяви, SHA-256 и HMAC отдолу.
Идентичност в покойAES-GCM-256. Ключът идва от PBKDF2-SHA256 при 310 000 итерации за парола или ПИН, или от WebAuthn PRF изход чрез HKDF-SHA256 за ключ за достъп или биометрични данни.
Обаждания и прехвърляне на файловеСобствен DTLS-SRTP на WebRTC, договорен чрез обвито в NIP-17 сигнализиране.
СлучайностПлатформата CSPRNG навсякъде — ключове, nonces и трептенето на времевия печат на опаковката на подарък.

Защита на метаданни

Два детайла в пътя за опаковане на подаръци си струва да се извикат, защото те отделят NIP-59 от "криптирано, но очевидно от вас към тях":

  • Всяка опаковка е подписана от a еднократен ключ генерирани само за това съобщение, така че няма две опаковки, споделящи подател.
  • Всяка обвивка 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 и е завършен — няма затворен компонент, на който да се доверим.