Old Nostr DM (NIP-4) integrates four capabilities into a single Nostr key—it serves as an ID, an encryption key, a receiving address, and a sending address.

The encryption key in NIP-4 does not change, so NIP-4 messages lack both forward secrecy and backward secrecy.

Consequently, if the private key is compromised, both historical and future messages can be exposed.

The receiving and sending addresses remain constant, which poses a severe issue for metadata privacy in NIP-4 messages;

Everyone can see who (ID) is sending messages to whom (ID).

Currently, most Nostr apps use NIP-4 for DM functionalities, such as Damus and Primal.

——————————————————————————————————————

New Nostr DM (NIP-17) integrates three capabilities into a single Nostr key—it serves as an ID, an encryption key, and a receiving address.

Kind-17 separates the sending address from the ID, making the sending address random and concealing the sender's real ID, thus improving metadata privacy.

The encryption key in NIP-17 does not change, so NIP-17 messages also lack forward secrecy and backward secrecy. Once the private key is leaked, both historical and future messages will be compromised.

The receiving address remains constant, so there is still a slight issue with metadata privacy in NIP-17 messages; everyone can see who (ID) is receiving messages.

Apps like 0xchat and Amethyst use NIP-17 to implement DM functionalities.

——————————————————————————————————————

In Keychat, the ID, encryption key, receiving address, and sending address are separated.

The encryption key, the receiving address, and the sending address are updated independently and continuously.

Keychat's encryption key is derived using the Signal protocol, and each message uses a unique encryption key, which is deleted after use.

Thus, Keychat messages have both forward secrecy and backward secrecy. Even if an encryption key is compromised, only the current message can be leaked, and historical and future messages remain secure.

Keychat's sending address is randomly generated for each message.

Therefore, external parties do not know the sender's ID.

Keychat's receiving address is derived using the Signal protocol, with almost every message using a unique receiving address.

Thus, external parties do not know the receiver's ID.

——————————————————————————————————————

However, it's important to emphasize that NIP-4 and NIP-17 offer superior multi-device synchronization capabilities because they integrate three capabilities into a single Nostr key—it serves as an ID, an encryption key, and a receiving address.


What he said. Such a long way for me to go to understand the #nostr #protocol.


Love how fast this is moving already.


Are you using the new nip-104 mls messaging proposed by JeffG?


We are using signal protocol to encrypt one-on-one chat and small group.


Good explanation, thank you!


现在的 #nostr  的“唯一单私钥规则”事实上是一个巨大的漏洞设计。

应该是设计成一套权效递减的私钥排序集合：{<① 主密钥,② 跨客户端活动密钥,③发帖密钥>}。


The key and encryption stuff is the hardest 😁


Much hard but this young Padawan strive will.


So has anyone messed with this? Anyone wanna give it a try?

nostr:nevent1qqs0cvqrmp9t78f3f59k5sg99pl8037cfz0wwkvq99yfprwr3whtfsgppemhxue69uhkummn9ekx7mp0qgsth7fr42fyvpjl3rzqclvm7cwves8l8l8lqedgevhlfnamvgyg78srqsqqqqqpqkuul5


the explanation of the DMs was made by jb55 and Jeffg at the nostRiga event and you are forgetting the new nip-44 encryption


NIP-44 is just a part of NIP-17; it only handles encryption and is not a complete DM spec.


yes nip-44 is an attempt to improve encryption

also nip-04 is just encryption so you can use it for lists and settings in the clients and also for DM, IOT device.


i was not aware of this nip-17 thanks for bringing it to my attention, now adding its kind to my library so it is treated as private


well, so it is all understood anyway... for now it's only used in relay code but having a comprehensive kind library means including these others, 14, 13, which don't appear as events on the wire but content of wire events

oh yes, if the relay is to be able to implement a chatbot such as for managing and alerts regarding subscriptions it does need to have the ability to parse them in the manner of a client