Thread

Replies (41)

Ill pair the critisism with a proposal. It needs a NIP or something that does two things. First it tells the clients receiving the nip that anything prior should be treated as deleted. Second, it should tell the compatible relays the messages no longer have to be stored. That way if someone sends some unsolicited stuff or simply a conversation I am not interested in I can actually get rid of it properly and declutter. Right now on Matrix I can simply leave the room, the DM experience is great there. Nostr is an incomplete and incompatible mess on this front. It needs fixing, not workarounds.
Also NIP17 groups are IMO quite problematic when it comes to gaslighting.
JOE2o's avatar JOE2o
Let’s say someone creates a NIP17 groups client that facilitates the kind of purposeful history falsification described in the article below. We’ll call that client Gaslighter. With Gaslighter, for every new message you can create multiple different versions to be seen by each person in the group. These message versions can be completely different to each other, or just subtly different. Either way, when you press send each person gets a different message, and each person thinks the message they’re seeing is what everyone else is seeing. (To be clear each person gets the message customised for them and *does not* get the messages customised for everyone else, so for everyone in the group it's just one new message added to the history, even though you just sent a bunch.) The UI can be very user-friendly, showing all others in the group and, next to each avatar, the message that each will see when you press send. You can choose to apply one message to everyone and then make little edits per person, or just compose them one by one. You can also group people into sub-groups, create one message for one sub-group and one message for another, and so on. For pros, you can create a string of messages that includes both dirty messages (messages that some people will get sent but not others) and clean messages (messages that everyone in the group will get sent). This is to help thwart hash-based gap detection, if such a security feature ever enters the NIP17 spec, though in all likelihood this kind of gap detection will be deemed to be so unworkable (at least without *some* exposed metadata) that it won't. You can also choose to send a message to everyone except one poor person, or except a few poor people. And many other such devious things. Either way, with Gaslighter loaded up and a few minutes of posting you can turn any NIP17 β€œgroup” that you're in into this mutant thing where everyone has a comically different chat history to everyone else, and nobody knows it, and these chat histories will never re-align. (And it was all on purpose, by you, not the result of missed events.) Why would you do this? Most likely for fun. Messing with friends’ minds. β€œYou guys will never believe what happened to me this morning!” you send to all three others in a group. Then you send a different story to all three at once. The first story is shocking and unlucky, the second is shocking and lucky, and the third is just boring, hardly a story at all. Everyone gets very confused by everyone else’s reaction, and eventually you tell them about Gaslighter and everyone goes lol. (That said, after having played around with Gaslighter for a bit, even just having fun with friends, you’re probably always going to be on your mental guard when in a NIP17 group.) But when you start to consider the social-engineering attack surface here, it’s not so funny anymore (see the article below for an example). If NIP17 groups take off then at some point some normie user is going to get unfairly scammed in this way. I say unfairly because it’s clearly unfair to put it on the normie user to understand that the group chat history can potentially be manipulated to be different for each participant. (Key word, purposefully; not just missing a message here or there but socially engineered by an attacker so that each person has the history that the attacker wants them to have.) This is just not in keeping with how modern users understand group chats to work. If a normie user does get scammed in this way, you can be pretty sure the first question on his or her mind after being clued in to the scam will be β€œHow was that even possible?” View Article β†’
View quoted note →
That is security theatre though, if we’re being straightforward. First the user has to go through the UI motions to actually select the message and choose β€œreply” (swipe right or whatever the client demands). Probably 90% of the time the user is replying to the most recent message in the timeline, and if that’s the case it’ll be very rare that the user will actually select that message and hit reply. That feels silly. They *might* use the reply option if it’s some messages a few screens up in the timeline and they want to make clear that they're replying to that one and not the most recent one. But even then many people will just post a new message and let others work things out from context. So already maybe 90% of these gaslighting attacks get through with no chance of reply-based detection. And even in the rare instance that a user has formed this explicit reply habit, the attacker just has to spread the thing being proposed over a few messages, say three of them clean (sent to all) and only one a gaslit one. The user will have to reply to the gaslit one for the gap to show for others, but the user will have no idea which of the four relevant messages is the gaslit one, in client terms they're all identical. And then there are all the false positives, people just turn off or ignore the gap warnings since they show up all the time due to standard Nostr hiccups. It’s like being in a building with a fire drill every day, after a week nobody assumes it could be a fire. What's the false positive to actual attack ratio going to be here? And then you need the clients on both sides to implement the reply logic in such a way as there are no interop issues. Maybe some clients are out of sync with each other and missing parents just aren’t surfaced. So now maybe 95% of gaslighting attacks don’t get detected this way. Or 99%? Anyway, enough that. it can fairly be called security theatre. And then there are the attacks where you strategically don't send a message to a specific person or people, and you do this carefully, several times, over long periods. Very subtle but potentially just as harmful. Those attacks you can't catch out with the reply button at all, even theoretically. Keeping groups small doesn't help either. Groups of 4 to 5 are actually the ideal size for this type of social engineering. Too large and the attacker risks some random person in the group feeling like something in the conversation flow just isn’t right and saying something about it, triggering a β€˜compare notes’ discussion. For small groups, the members of which *don’t* trust each other like old friends, and are not tech-savvy enough to know to not blindly trust the chat history (and why not), then it can be a social engineering risk, again depending on the chat context. The NIP17 narrative is privacy, which people naturally understand as security too, and if that spreads you will get such groups making decisions in what they believe to be a secure space. And you will get those who see this as an opportunity for social engineering. Perhaps the social engineer will be the one to suggest a NIP17 group in the first place, since this is exactly what they’d be looking for, something ostensibly private and secure but in reality very open to manipulation. For Nostr devs who understand what's going on, it's fine. But for normies who have natural expectations about how chat groups work in this day and age it's unfairly insecure.