[Podcast #2] Kitty on Rarimo and ZK identities

[Podcast #2] Kitty on Rarimo and ZK identities

On the Hylé podcast, we talk about cool applications that leverage cryptography in general and zero-knowledge technology in particular, with a new guest for every episode.

Kitty works at RariLabs and is a contributor to Rarimo, a ZK identity protocol. It allows users to make not only their identities private and verifiable but also their entire social graph.

This was a great second episode, with conversations including what a social graph is, whether people should have a say in everything that affects them, and finding proof of « man, 6'5 ", blue eyes, works in finance ».

If you prefer the written format, you can read the highlights below!

What is Rarimo?

Passports & Freedom Tool

Passports were the first major identity that we brought onchain.

The thing that Rarimo is best known for is our surveillance-free voting solution, Freedom Tool.

Freedom Tool was used by:

  • dissidents in Russia to protest Putin;
  • activists in Iran to protest the Islamic Republic;
  • opposition members of Parliament in Georgia to host tamper-proof polling in the Georgian elections (and a bunch of other stuff we’ll talk about later).

How it works:

  1. users scan the NFC chip inside their passport that contains the passport data;
  2. they start generating zero-knowledge proofs that confirm that they're over 18, that they're a unique human, and that they're of whatever nationality it is they need to be to participate in the vote;
  3. they vote.

In the process of building and deploying Freedom Tool, we had to deal with regimes where privacy really has to be robust and can't just be a goal or an abstract thing or somewhere along the sliding scale.

We discovered that the typical identity frameworks used in Web3 had many underlying privacy issues. In the process of deploying and building out the Freedom Tool and safeguarding against crime and attacks, we decided to expand the entire identity infrastructure to overcome these core privacy issues in Web3.

We built what we call the ZK identity registry, which offers a whole new way to create an onchain identity permissionlessly. Then, we started expanding that model to other types of identity and trying to build lots of different sub-registries, as well as passport registries that could bring privacy to different types of identities and use cases.

Social graphs

A social graph is basically a map of all the interactions that you have online. It shows the relationships between yourself and others; traditionally, the social graph has never been private. It's always been a public thing for a whole lot of reasons, one of which being that it's tough to make interactions with more than one person private − or historically, it has been.

The fact that the social graph isn’t private has really limited the number of use cases that you can deliver and still retain user privacy.

That is one reason we wanted to go beyond just identity and transition the entire graph into a private but verifiable state as a team.

The problem with web3 identities

Uniqueness

One of the harder but essential things that any identity framework needs to be able to prove is that users are unique.

With voting, you want to ensure that the same person isn't registering again and again and distorting the results. You just need to look at airdrops or a whole host of other crypto-native use cases to understand why uniqueness is so important.

But it's also challenging to do while also preserving privacy. 

What most frameworks will do is come up with a way of identifying people. For example, say you use fingerprints. You'll scan your fingerprint, and they'll create a nullifier of the fingerprint.

Anytime you register, they will check this fingerprint nullifier against all the other fingerprint nullifiers to make sure that it's not you just registering again and again. Then, a third-party attester will issue you proof of uniqueness to say, « Okay, we've checked this against this database, and this person is unique. »

The problem with third-party attesters

The big issue that alarmed us when we were building Freedom Tool is that almost all pre-existing frameworks have a third-party attester.

It allows a malicious actor to figure out precisely who the third-party attester is generating these proofs of uniqueness for. Then, they can link the individual to the activity online.

We were supporting a use case like these protest votes, where just the act of voting itself could be enough to imprison someone. That privacy risk was way too high.

There are all kinds of other issues that come along with third-party attestors, including a regulatory hazard: they can be shut down. They're also vulnerable to collusion, where somebody could start generating multiple proofs of uniqueness and corrupt the system.

Most third parties are MPCs, so they have strong privacy guarantees. However, if you are a privacy maxi, you would still want an alternative model.

And the other problem is that anything with a third-party attester, even if it's an MPC, is not permissionless.

As a user, you're still going and having to ask a third party to issue you with your identity. Ideally, we want to move away from that and create a system where users have optimal agency and can issue their own identities without needing to send these requests.

Rarimo and self-issued identity

We decided to build a fully permissionless system where users can self-issue their identities, our ZK identity registry.

When you scan your passport, the nullifier of the passport gets published onchain, and all your private personal data stays in a private wallet on your device. Anytime you want to prove your uniqueness, instead of requesting a third party to issue this proof of uniqueness, you can generate a proof of inclusion in this onchain registry. 

This method gets rid of third-party attestors

It makes it impossible to link what action an individual is taking to that person. Even in the absolute worst-case scenario where someone stole your passport or got a hold of your passport keys, the most they would ever be able to confirm is that you're in the registry. They would never be able to figure out if it was for voting or if you're collecting memecoins or whatever it is.

The second feature is that it's self-issued. You don’t have to ask someone to generate your identity. It's decentralized and in your hands. 

We came up with that solution, and I'm really proud of it. It will protect people, and it's infinitely scalable. The passport registry is just the first sub-registry, and then we'll build out a load of other registry types.

Freedom Tool real-world uses

In Russia

When the first app got deployed in Russia, it was launched by Mark Feygin, the former Pussy Riot lawyer.

That app, based on Freedom Tool and called Russia 2024, was attacked by the Kremlin. They did all sorts of crazy things to try and get it shut down. 

It turns out the Russian state has these state-sponsored app reviewers who get to tank apps that they don't like. So that happened en masse, but these app reviewers were also sending emails to say, « I've been forced to rate this badly, but we really need anonymous voting in Russia. So please keep this up and don't remove it. »

It's a powerful reminder of why this tech is essential. 

In Georgia

The Georgian case is exciting because there is extreme division between political parties. Georgia just conducted its elections, and it's pretty clear that the incumbent rigged them. There are ongoing investigations to determine the extent to which it was rigged. The opposition launching a tamper-proof polling and voting app was not necessarily appreciated by all political figures in Georgia!

There's a chain of credibility.

Part of the reason these Georgian MPs were persuaded to use Freedom Tool and experiment with this novel tech was that they had seen the success of the use case in Russia and that it had survived attacks from the Kremlin. 

Once we had that, almost like a proof of concept, it was much easier to discuss it with other governments and vested parties.

Barriers to adoption

How do you persuade people who are scared to use a new technology? 

The user numbers for Russia 2024 were great for a social app. A couple of records were broken in the first 24 hours. There were 25,000 downloads, which is really high for a social app in Web3!

But if you think about the percentage of the Russian population that represents, it's negligible. We always knew that would be the case.

The goal of these apps was never to usurp the official election process in Russia instantly; it was to provide people with an outlet and create better feedback loops between Russian opposition leaders and the dissidents and all this stuff, so we were still really happy with it. Still, how are people in a very dangerous situation going to really believe that this app is safe? 

In this case, it was because they trusted Mark, the opposition leader who launched it. Even though they couldn't read code or do audits, if it had his stamp, they believed in it.

This is a significant issue for Web3. It's building trust and helping educate people on the tech and ZK, what they do, and why they're sometimes worth the hassle because sometimes they aren’t a great user experience. In our case, everything was very abstracted, but that isn't always so with Web3 products.

It’s also about overcoming the bad PR around crypto because that does put users off. With some tools and the general Web3 ecosystem that delivers real value or can make things fun when you talk about it with normal people, you can see a bit of cynicism creep into their eyes. They're like, « Oh, but it's on the blockchain,» and they associate that with scams and negative connotations, so I think, as an industry, we must change that perception.

I actually believe we are at this turning point as an industry where particularly zkSNARKs have reached this level of maturity, where we are getting real-world use cases. Rarimo was one, zkEmail is also doing really cool stuff, and I think, as more and more real products go out, there's this strong argument to say to people, « Yeah, okay, I know you've heard all this bad stuff about crypto, but look at what the blockchain is also supporting. And here are all these other applications that are very difficult to argue don't contribute something tangible and positive. »

Perception will change, and people will be more willing to experiment with Web3 tools.

Politics with Rarimo

The Georgian app is exciting because it did so much more than just tamper-proof voting and polling, which is the sort of initial action Freedom Tool was designed to support.

They also wanted to combat low voter turnout, so they decided to implement a reputation system and give people points for anything political, regardless of their political allegiance. For example, you get points for participating in polls, voting, reporting electoral fraud, and so on.

They also pledged that if elected, they'll use the infrastructure to digitize many state services that previously were manual, such as notaries and business registrations. They want to distribute the proceeds to all Georgian citizens in an experiment with universal basic income, so again, that would be distributed through the Rarimo identity infrastructure.

They also wanted to use the voting infrastructure to experiment with a liquid democracy model in which people vote routinely on many different pieces of legislation, not just in presidential elections.

One reason many places don't implement liquid democracies is that voting is so expensive. Thankfully, there's a lot of awareness about the fact that it makes voting more accessible. 

But there are all these follow-up questions: once voting is more accessible and cheaper, how can you use that to experiment with slightly different models to make preexisting systems even more democratic?

Interestingly, research shows that if you host too many elections, people get fatigued and stop showing up unless they have an extremist fringe issue. So, every vote just starts swinging to the people who are most passionate about it and most radical, and you start getting really warped outcomes. So, it's a tool to be used with caution. 

A few years ago, the British government decided to host an election on what to name a new boat in the Royal Navy. And obviously, no one cared about this. The only people who bothered to vote were Navy fanatics or people who were playing a prank. And the name that won was Boaty McBoatface − the pranksters won.

So, it's not just about having the perfect voting tools. It's also about voting for the right things at the right time. 

The future of onchain identity

It’s not KYC!

I think the thing that we really need to do to make onchain identity feasible is introduce privacy elements. These identity solutions will only scale if we can really embed privacy and the like at the core. 

There's a lot of emphasis on how identity will be used for verification, particularly KYC. I'm really not excited about the KYC vertical. I think it's important to advocate for better privacy laws around KYC, but ZK solutions are currently not compliant with KYC. 

A new era for social media

If we look at how to use Web3 to implement as much social good as possible, voting is the most obvious route, and it's why we did it first. But we spend most of our lives online. Most of our relationships are mediated through digital tools, and most of the communities to which we belong are at least semi-digital.

Making those experiences richer, more human, more connected, and less full of misinformation is critical!

Even with these more fun use cases, I don't consider them unimportant compared to voting. They're important in a much more subtle way, particularly with next-generation social media apps.

I view improving social media feeds and the way people can find information, share information, and connect with people as very politically significant because we've seen so many scandals over the years, like Cambridge Analytica, show that when we're not in control of our data on social apps, it's really easy to manipulate populations and toy around with democratic systems.

We had two different prediction markets that wanted to build on top of Rarimo and use the reputation system to basically allow the market to become more than just a platform: a robust form of social media. There’s now a Reddit-style social media feed beneath each market. It incentivizes users to actually discuss the things that they're betting on and debate them and share information around it and have a rich conversation so that they're not just predicting but sharing their views, creating a fascinating discussion, and providing better sentiment feedback. 

I hope that communities will debate the happenings in Web3. Normally, prediction markets are political, but this one is actually apolitical and uses the identity component to allow people to segment markets.

For the Georgian elections, they had one that was only available to people who had used the Georgian voting app. That was the kind of reputation system that they leveraged: they asked for the app and ID verification. So they were saying, « We not only want Georgians, but we only want politically active Georgians. »

One of the properties of ZK that rarely gets talked about is not just privacy but granularity. You can make a chat group or even a dating app that is closed unless you can confirm that you've achieved these things or have these characteristics.

You have the universality where it's not just friends of friends, but it’s not porous. Most online spaces now feel completely oversaturated, and many people are looking to connect with particular subcultures or have specific discussions.

With ZK reputation, you can introduce anonymity and accountability into these spaces. When you have that combo, we'll start seeing vibrant conversation and interaction. You can tweak the environment so that you're giving people optimal freedom. They don't feel self-conscious that everything they say is being recorded forever and linked to them, but they keep a sense of responsibility so that they're not just going to descend into being trolls and abusive. 

A man in finance, 6’5”, blue eyes

Last summer, there was this joke at the office of our friends at Aztec with the Trust Infrastructure group.

@rubythepookie

I had an ideaaaa😭✨

♬ Looking for a man tima remix - Tima Pages

How do we verify that all the information here is true?

One of the biggest issues that we had was finding source documents that you could even use to attest to these different features. So we were like, « Okay, proving you work in finance, maybe you could do… you can seek an email for that and prove that you have a specific domain email. » And then we were like, « Okay, but 6'5, blue eyes », like most… I didn't see documents that had that information in them. So, getting the source thing to attest is a challenge. And then we had all these crazy ideas. Could you get enough people to state that you have blue eyes? 

The more interesting technical challenge will be proving all these different things at once if there are different proofs.

If anyone out there is listening to this, has solutions, and wants to help everyone identify men in finance who are 6'5 "with blue eyes, get in touch. 

What next?

Here’s Kitty’s call to action for everyone listening or reading.

Check out Rarimo's docs, get acquainted with the tech, and build all these next-generation social apps that we're dreaming about. And if you need identity verification for an app, use us!

As you will see in the docs, privacy is a network effect. You can only see if someone is registered in the system; you can't see what actions they've taken. And the more people and apps in the system, the harder it becomes to try and figure out what some people might be doing. Every time you use Rarimo, you add to the strength of the network and provide plausible deniability for the most vulnerable users. So download the RariMe app and set up an identity wallet. If you have a chance to use the app, you will be contributing plausible deniability for everyone in the network.