Langkau ke kandungan
Kembali ke Nymchat

Pangkalan pengetahuan Di bawah tudung

Protokol dan acara

Apa yang Nymchat sebenarnya letakkan pada wayar, untuk sesiapa yang menentangnya, mengauditnya, atau membaca acara daripada pelanggan Nostr yang lain.

Jenis acara

baik hatiDigunakan untukNota
0Metadata profilProfil Nostr standard: nama, gambar, sepanduk, tentang, lud16.
5Permintaan pemadamanNIP-09.
7ReaksiNIP-25, dengan a ['k', originalKind] tag supaya tindak balas difailkan terhadap jenis saluran yang betul.
13MeteraiLapisan tengah mesej NIP-17.
14Khabar angin mesej peribadiTidak ditandatangani, dan tidak pernah diterbitkan sendiri.
1059pembalut hadiahNIP-59. Perkara yang sebenarnya mencapai penyampaian untuk mesej peribadi dan sembang kumpulan.
1984PelaporanNIP-56.
9734 / 9735Permintaan zap dan resit zapNIP-57.
10030Senarai pek emoji tersuaiNIP-30.
20000Mesej saluran GeohashEphemeral, ditandai ['g', geohash].
23333Mesej saluran bernamaEphemeral, ditandai ['d', channel].
24420 / 24421Penunjuk menaip awam dan resit bacaKhusus Nymchat, untuk saluran awam.
25051 / 25052Status isyarat rakan ke rakan dan pemindahan failNymchat-khusus.
30030Set emoji tersuaiNIP-30.
30078Data permohonanNIP-78. Tinjauan pendapat dan tetapan yang disulitkan disegerakkan.
69420Resit dibaca dan status penghantaran peribadiKhusus Nymchat, dibawa sebagai khabar angin di dalam bungkus hadiah. Jenis yang berasingan daripada 14 dengan sengaja, jadi pelanggan NIP-17 lain tidak memberikan mesej langsung kosong untuk setiap resit.

NIPs Nymchat melaksanakan

NIPApa yang diberikan kepada Nymchat
NIP-07Log masuk dengan sambungan penyemak imbas.
NIP-09Permintaan pemadaman.
NIP-13Bukti kerja. Mesej keluar dilombong kepada sekurang-kurangnya 16 bit.
NIP-17Mesej langsung peribadi, dan asas untuk sembang kumpulan.
NIP-25Reaksi.
NIP-30Emoji tersuai.
NIP-40Cap masa tamat tempoh — hilang mesej.
NIP-44Penyulitan versi, digunakan untuk pengedap, pembalut dan penyegerakan tetapan.
NIP-46Tandatangan jauh — bunker://.
NIP-56Pelaporan.
NIP-57Petir menyambar.
NIP-59Pembalut hadiah.
NIP-78Data aplikasi sewenang-wenangnya.
NIP-98Pengesahan HTTP, untuk titik akhir yang dihoskan.

Kriptografi

di manaapa
Identiti dan tandatangansecp256k1 dengan tandatangan Schnorr (BIP-340), seperti yang ditentukan oleh Nostr.
Mesej peribadi dan sembang kumpulanNIP-44 v2: ECDH pada secp256k1, HKDF-SHA256, ChaCha20 dengan HMAC-SHA256, dan padding supaya panjang teks sifir tidak memberikan panjang mesej.
Sesi mesh BluetoothNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 untuk tandatangan umum, SHA-256 dan HMAC di bawahnya.
Identiti dalam keadaan rehatAES-GCM-256. Kuncinya datang daripada PBKDF2-SHA256 pada 310,000 lelaran untuk kata laluan atau PIN, atau daripada output PRF WebAuthn melalui HKDF-SHA256 untuk kunci laluan atau biometrik.
Panggilan dan pemindahan failDTLS-SRTP WebRTC sendiri, berunding mengenai isyarat berbalut NIP-17.
KeacakanPlatform CSPRNG di seluruh — kunci, nonces dan jitter cap waktu bungkus hadiah.

Perlindungan metadata

Dua butiran dalam laluan pembalut hadiah patut dipanggil, kerana ia adalah yang memisahkan NIP-59 daripada "disulitkan, tetapi jelas daripada anda kepada mereka":

  • Setiap bungkus ditandatangani oleh a kunci sekali dihasilkan untuk mesej itu sahaja, jadi tiada dua bungkus berkongsi penghantar.
  • Setiap bungkus created_at ialah bertarikh belakang secara rawak sehingga dua jam menggunakan CSPRNG, jadi masa hantar dan terima tidak boleh dibariskan.

Sembang kumpulan menambah sekejap berputar penerima kunci di atas itu - lihat Cara penyulitan kumpulan berfungsi.

Membaca sumber

Primitif kripto sudah masuk js/nym-crypto.js dan js/modules/key-vault.js dalam apl web dan di bawah android-ios-app/lib/core/crypto/ dan lib/services/mesh/noise/ dalam apl Flutter. The repositori adalah AGPL-3.0 dan lengkap — tiada komponen tertutup untuk mengambil amanah.