Introducing Nostringer - unlinkable ring signatures (SAG) for Nostr pubkeys.

Instead of doing some Ghibli stuff I implemented a prototype of unlinkable ring signatures for Nostr.

It's using Monero style Spontaneous Anonymous Group signatures (SAG).

What does it enable ?

Ring signatures allow multiple members of a group to sign a message without revealing which member actually signed it.

I explored this after chatting with nostr:nprofile1qqsydl97xpj74udw0qg5vkfyujyjxd3l706jd0t0w0turp93d0vvungpzpmhxue69uhkummnw3ezumt0d5hszythwden5te0dehhxarj9emkjmn99ujcnqad who wants to use this concept for WalletScrutiny. Basically his idea would be to let users write reviews as accredited wallet developers. Because of the competition between wallets it's better to not disclose who posted a review.

It would be sufficient to know that it was posted from someone belonging to a group of accredited developers.

Checkout the demo and repo in the links below.

Live demo: https://nostringer.starknetonbitcoin.com

Repo: https://github.com/AbdelStark/nostringer

https://m.primal.net/PvLL.mov

Reply to this note

Please Login to reply.

Discussion

Wow! I can think of a couple of other use cases for this. Great work!

Will dive in & get more familiar 🫡

🫡🙏

Neat!

Thanks

Finally!

Thanks a bunch for this, great application of zk magic.

Thank you for posting your excellent work to nostr!

🙏

The name is perfect!

What's the signature size for different ring sizes?

It’s basically equivalent to the size of the ring.

Its ring size multiplied by 32, and add 32 bytes.

So if ring size is 10 it’s 342 bytes.

If ring size is 100 it’s 3232 bytes.

Just the thing for me to look into more right now 👀

👀

That name :haha:

Opens up so many things! Great job.

I lacked inspiration haha.

Thanks mate

What are you talking about? It's :fire:

Ohhh you like it. Noice!

Sort of zero knowledge approve from the group?

Yes

Where's your Monero address so we can contribute to your effort?

Let’s do the opposite. Find devs to contribute and we will help to fund them to work on this if there is demand

Will you consider adding support for "linkable" ring signatures? They are required for my Emessbee protocol, and it would be a cool hackathon project to port Emessbee so that its ring signatures work on bitcoin's elliptic curve instead of Ed25519

Hey. I don’t know if/when I will have time to do it myself but if someone wants to work on that and submit a PR that would be cool.

It would enable interesting use cases.

Thanks, this is a cool project! I left an Issue on the repo, but it's a technical point so leaving that aside for now - btw you write "suitable for anonymous voting" under SAG but that application requires linkability (otherwise repeated votes etc.). On the other hand, a distinction that I think *is* very interesting but won't occur to people immediately is, the difference between plain vanilla LSAG and Back-LSAG: with the latter, the key image is fixed for ever, for a given pubkey, which means if there is a "only use once" rule applied for say 10 different signing contexts (maybe, 10 different votes), the vote between each of the 10 use cases can be linked. Obviously that's not what you usually want. But for a cryptocurrency usage, it's exactly what you want: only one key image across every ring you'd ever use this key in (to prevent *global* double spend). The non-Back LSAG is the other way: the key image depends on my key, but also on the entire keyset, so it's different every time I ring-sign over a different keyset.

Sorry that message was for nostr:nprofile1qqst3axzay8sm4n8zg2n84acmt7hwwztpdg9r7p89e2f83v007f7zjcprpmhxue69uhhqun9d45h2mfwwpexjmtpdshxuet5qyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq7lw5g

Nostringer in Typescript was fun, but did it again in a serious language this time: nostringer-rs is born, a blazing fast unlinkable ring signature scheme, written in Rust 🦀

Try it with the cli: cargo install nostringer_cli && nostringer_cli demo

https://github.com/AbdelStark/nostringer-rs

nostr:nevent1qqsxssyqgz0znnlkqyh72948e5x4m6xtktsng3x6pg0z85uqrwmzakqpzemhxw309ucnjv3wxymrst338qhrww3hxumnw74wsca

============================================

#10 🎁 Developer Tools, updates and Guides

============================================

1. Bifrost - Threshold Signing & Secure Messaging for Nostr - New Developer tool

Bifrost is a core library and SDK for implementing the FROSTR protocol, a threshold signing and secure messaging system for nostr. It provides a BifrostNode that communicates over nostr, enabling nodes to collaborate in signing messages and exchanging ECDH secrets. Bifrost supports standalone deployment or integration into existing nostr clients, offering methods for creating, distributing, and managing FROST based threshold signing shares. This enhances security and decentralization by ensuring no single party controls the signing process.

Developed by: nostr:npub1gg5uy8cpqx4u8wj9yvlpwm5ht757vudmrzn8y27lwunt5f2ytlusklulq3

Source: https://github.com/FROSTR-ORG/bifrosthttps://github.com/DocNR/POWR

2. Nostringer – Unlinkable Ring Signatures for Nostr - New Developer tool

Nostringer is an easy-to-use Javascript/Typescript library providing unlinkable ring signatures (SAG) for Nostr pubkeys. It allows a signer to prove membership in a group of Nostr accounts without revealing which specific account produced the signature.

Developed by: nostr:npub1hr6v96g0phtxwys4x0tm3khawuuykz6s28uzwtj5j0zc7lunu99snw2e29

Source: https://github.com/AbdelStark/nostringer

nostr:nevent1qqsxssyqgz0znnlkqyh72948e5x4m6xtktsng3x6pg0z85uqrwmzakqpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgq3qhr6v96g0phtxwys4x0tm3khawuuykz6s28uzwtj5j0zc7lunu99sxllwla

3. Alienos – A Self-Hosted Nostr Stack - New Developer Tool

Alienos is a plugin-able and manageable Nostr stack designed for self-hosting, integrating a relay, Blossom media server and NIP-05 server. Built on Khatru, Event Store, Blob Store and Go Nostr, it supports NIP-86 for access control and offers a reliable solution for hosting and backups.

Developed by: nostr:npub1h49w8en79xty6j2pwgnpm3znjhyf767jua6xgt3kvyn3w80ms86s2z9kay

Source: https://github.com/dezh-tech/alienos

4. Frost2x - v0.1.1-alpha

Frost2x is a nostr signer extension powered by FROST, enabling secure and efficient multi-party signing. This Pre-release brings key improvements, including default relays for better connectivity and a package script to easily create zip and crx files for installation. A changelog has also been added for better tracking of updates. Additionally, issues with prompt window sizing and scrolling have been fixed, improving the user experience.

Developed by: nostr:npub1gg5uy8cpqx4u8wj9yvlpwm5ht757vudmrzn8y27lwunt5f2ytlusklulq3

Source: https://github.com/FROSTR-ORG/frost2x/releases/tag/v0.1.1-alpha

#dev-tools_nostr_recap

nostr:nprofile1qyt8wumn8ghj7erpwe5kgtnwdaehgu339e3k7mgpz4mhxue69uhk2er9dchxummnw3ezumrpdejqqg89yuk7j99axqt4t3pehz8xjkdy8jwjveyrruync50fc7v6z6ss9u86waas has been thinking a lot about this, recently.

Cool!

I have a draft ring signature NIP — I’d be curious to hear your thoughts Abdel and Leo whether this NIP would be useful with Nostringer. If so I’ll submit it as a PR for discussion.

https://github.com/wds4/nips/blob/master/ring-signatures.md

Just submitted this as a PR as NIP-97: Ring Signatures

https://github.com/nostr-protocol/nips/pull/1894

Bookmarked!

Yes I believe so

https://nostringer.starknetonbitcoin.com won’t open for me - invalid certificate maybe

Weird. Works for me both on desktop and mobile. With and without VPN.

Ok, I can get it to work if I use VPN but not if I don’t — which is weird bc I’m in the US. Even if I VPN into the US, it works. But not without VPN!

I cannot explain it 😂

What?!!! That’s very weird haha