ZK11: Aptos Keyless: Blockchain Accounts without Secret Keys - Alin Tomescu

Zero Knowledge
18 Apr 202429:47

Summary

TLDRAlen from Aptos Labs introduces Aptos Keyless Accounts, a blockchain account system that eliminates the need for secret keys. By tying account security to traditional web accounts like Google, it aims to simplify onboarding for new users and enhance user experience. Keyless accounts address common issues with current blockchain UX, such as the complexity of wallet installation, mnemonic phrase management, and device transfer difficulties. Alen discusses the technical implementation, including the use of OpenID Connect signatures and zero-knowledge proofs for privacy, and touches on future improvements and challenges.

Takeaways

  • 🔐 **Keyless Accounts**: Aptos introduces keyless accounts, a blockchain account system that doesn't require secret keys, aiming to simplify user onboarding.
  • 🌐 **Web Account Integration**: Security is based on traditional web accounts like Google, Facebook, or Apple, making it familiar to users.
  • 👥 **Joint Work**: The keyless account system is a collaboration between Aptos Labs' core team and Geometry Research.
  • 🚀 **User Experience Focus**: The goal is to onboard the next billion users by making the process of joining blockchain spaces easier.
  • 📱 **Simplifying DApp Interaction**: Users shouldn't need to install wallets or deal with transaction prompts, making the experience seamless across devices.
  • 🔗 **App-Specific Accounts**: Keyless accounts are tied to specific apps, preventing malicious sites from stealing accounts associated with different DApps.
  • 🖊️ **Transaction Signatures**: Transactions are signed using an Open ID Connect signature from providers like Google, ensuring security.
  • 🙈 **Privacy Preservation**: Zero-knowledge proofs are used to hide sensitive information such as email addresses and application IDs from the blockchain.
  • 🔄 **Ephemeral Key Pairs**: To improve performance, users generate an ephemeral key pair for each transaction, signed by Google, reducing the need for zero-knowledge proofs per transaction.
  • 🌶️ **Pepper Service**: A pepper service is introduced to handle the blinding factor for account addresses, enhancing privacy and security.
  • 🔄 **Recovery Mechanisms**: Keyless accounts have recovery mechanisms in case the signature provider is unavailable, such as using an email signature to rotate keys.

Q & A

  • What is Aptos Keyless Accounts?

    -Aptos Keyless Accounts are blockchain accounts that eliminate the need for secret keys. They derive their security from traditional web accounts like Google or Facebook, making onboarding easier for users.

  • Who is Alen and what is his role at Aptos Labs?

    -Alen is the head of cryptography at Aptos Labs. He is responsible for the development and security of cryptographic systems within the organization.

  • What is the main goal of implementing Keyless Accounts?

    -The main goal is to onboard the next billion users by simplifying the user experience and eliminating the need for users to manage secret keys or mnemonic phrases.

  • How does the user experience improve with Keyless Accounts?

    -Users can directly sign up for a dApp without installing extra software, and they don't need to write down mnemonic phrases. This simplifies the process of interacting with blockchain applications.

  • What is the role of OpenID Connect (OIDC) in Keyless Accounts?

    -OIDC is used to sign transactions on behalf of the user. It allows the user's email address and the application ID to be signed by a trusted provider like Google, creating a secure and verifiable signature.

  • How does the privacy of users' email addresses and application IDs get protected?

    -Privacy is maintained by using zero-knowledge proofs. This ensures that sensitive information like email addresses and application IDs are not revealed to the blockchain validators.

  • What is a prover service and how does it relate to Keyless Accounts?

    -A prover service is used to speed up the computation of zero-knowledge proofs, which are necessary for the privacy-preserving aspects of Keyless Accounts. It helps in verifying transactions quickly.

  • What is the pepper service and how does it contribute to Keyless Accounts?

    -The pepper service helps users remember their pepper, which is a blinding factor used to generate blockchain addresses. It ensures that the address is not directly derived from the email address and client ID, adding an extra layer of privacy.

  • How does the implementation of Keyless Accounts ensure performance?

    -The implementation uses GR16 over a fast curve and circom to ensure that the verification time for keyless transactions is minimal and the proof size is small.

  • What are some potential issues with the current Keyless Accounts system?

    -Some potential issues include the reliance on third-party providers for signatures, the need for a recovery mechanism in case the signature provider goes down, and the potential for the prover service to leak privacy.

  • What are some future improvements planned for Keyless Accounts?

    -Future improvements include moving the pepper service on top of the validator for better security, potentially moving the trusted setup onto the validator, and working on faster proving to eliminate the need for a prover service.

Outlines

00:00

🔐 Introduction to Keyless Accounts

Alen, head of cryptography at Aptos Labs, introduces the concept of keyless accounts on blockchain, aiming to simplify user onboarding by eliminating the need for secret keys. He explains that these accounts are secured like traditional web accounts and are app-specific to prevent malicious activities. Alen emphasizes the importance of ease of use, the desire to avoid cumbersome processes like writing down mnemonic phrases, and the goal to onboard the next billion users. The talk also credits the core team at Aptos Labs for their contributions to the project.

05:02

🔗 How Keyless Accounts Work

The speaker delves into the technical workings of keyless accounts, explaining that the account's address is derived from the user's email and the application ID. He outlines the process of how transactions are signed using OpenID Connect (OIDC) signatures from providers like Google, which are then verified on the blockchain with zero-knowledge proofs for privacy. The aim is to create an account system that is secure, easy to use, and does not require users to manage secret keys.

10:04

🛠️ Addressing Privacy and Performance

Alen discusses the importance of maintaining privacy and performance in keyless accounts. He introduces the concept of a pepper service to help users remember their account details without storing long-term secrets. The pepper service uses a verifiable unpredictable function to generate a pepper based on the email address and client ID. Alen also addresses the issue of transaction tracking by Google and proposes a solution using commitments to the ephemeral public key to prevent tracking.

15:05

🚀 Implementing Keyless Accounts

The talk moves on to the implementation details of keyless accounts. Alen mentions the aggressive performance goals for transaction verification times and proof sizes. He explains the use of GR 16 over a fast curve, B254, and the implementation of the circuit in GR 16 using Circom. The talk also covers the public nature of the codebase, inviting the audience to review and build upon it. Alen also mentions the use of a hardened version of Rapid SNARK for the prover service and a Rust-based service for the pepper service.

20:06

🔒 Security and Future Work

Alen addresses potential concerns about malleability and sensorship resistance in keyless accounts. He explains how non-malleability is achieved through the use of ephemeral secret keys and discusses fallback mechanisms in case the signature provider becomes unavailable. The talk also touches on future work, including the possibility of using different OIDC providers, enhancing the pepper service, and improving the proving process to eliminate the need for a prover service.

25:06

🤔 Q&A and Closing Remarks

The final part of the script includes a Q&A session where Alen answers questions about the trustlessness of the prover service, the pepper service's role in generating or storing peppers, and the implications of GR 16 proofs being malleable. He also discusses how funds can be sent to users who haven't signed up for the service and the need for the recipient to have an OIDC signature to access the funds. Alen concludes the talk by inviting further discussion and thanking the audience for their attention.

Mindmap

Keywords

💡Aptos

Aptos is a blockchain platform focused on building a safe and scalable ecosystem for decentralized applications. In the context of the video, Aptos Labs is the organization responsible for developing the concept of keyless accounts, aiming to make blockchain interactions more accessible and secure.

💡Cryptography

Cryptography is the practice and study of secure communication in the presence of third parties. The speaker, being the head of cryptography at Aptos Labs, discusses the development of keyless accounts, which is a cryptographic innovation to enhance security without the need for traditional secret keys.

💡Keyless Accounts

Keyless accounts refer to a system where blockchain accounts are secured without the use of secret keys, as traditionally required. This concept is central to the video, where the speaker explains how these accounts are tied to traditional web accounts like Google or Facebook for security.

💡OpenID Connect (OIDC)

OpenID Connect is an authentication protocol that enables third-party services to authenticate users. In the video, OIDC is used to explain how keyless accounts can be verified by associating blockchain transactions with an OIDC signature from a trusted provider like Google.

💡Zero-Knowledge Proofs (ZKP)

Zero-knowledge proofs allow one party to prove to another that they know a value without revealing the value itself. The video discusses using ZKPs to ensure privacy in keyless accounts by hiding sensitive information such as email addresses and application IDs from the blockchain.

💡Ephemeral Key Pair

An ephemeral key pair is a temporary cryptographic key used for a single exchange. The video explains how an ephemeral key pair is used in keyless transactions, where Google signs a public key (EPK) that is then used to sign transactions without revealing the private key.

💡Blinding Factor

A blinding factor is a value used to obscure or 'blind' data to protect privacy. In the context of the video, a blinding factor or 'pepper' is used in the address derivation process to prevent linking blockchain addresses to user email addresses.

💡Provable Service

A prover service is a system that helps in generating proofs, such as zero-knowledge proofs, more efficiently. The video discusses how a prover service is used to speed up the computation of ZKPs for keyless account transactions, though it raises privacy concerns as the service learns the secret witness.

💡Client ID

A client ID is a unique identifier assigned to an application when it is registered with an authentication service provider. In the video, the client ID is used in the context of OIDC to identify the application associated with a keyless account and to sign transactions.

💡Malleability

Malleability in cryptography refers to the ability to alter some part of a cryptographic message without invalidating the signature. The video addresses how keyless accounts achieve non-malleability by signing the proof with an ephemeral secret key.

💡Recovery Mechanism

A recovery mechanism is a process to regain access to an account or data in case of loss or failure. The video touches on the need for recovery mechanisms in the context of keyless accounts, especially if the signature provider becomes unavailable.

Highlights

Introduction to Aptos keyless accounts, a blockchain account system that avoids the use of secret keys.

Alen, head of cryptography at Aptos Labs, presents the concept of keyless accounts and their security foundations.

Keyless accounts are based on traditional web accounts like Google, Facebook, or Apple for security.

The goal is to onboard the next billion users by simplifying the user experience and avoiding the need to manage secret keys.

Current user experience issues with dApps and web3 applications involve confusion over wallets and mnemonic phrases.

Keyless accounts aim to eliminate the need for users to write down mnemonic phrases and manage keys.

The concept of app-specific accounts is introduced to prevent malicious websites from stealing keyless accounts.

Keyless transaction signatures are similar to OpenID Connect signatures, incorporating zero-knowledge proofs for privacy.

Alen discusses how to hide email addresses and application IDs from the blockchain for privacy.

The use of OpenID Connect protocol in registering applications and obtaining a client ID is explained.

Details on how applications use OpenID Connect flow to sign in with Google and obtain signatures.

The potential for blockchains to act as a third-party verifier in the OpenID Connect process is explored.

Alen describes how to fix privacy issues by using zero-knowledge proofs to hide sensitive information.

The implementation of a prover service to speed up the computation of zero-knowledge proofs is discussed.

Address privacy is enhanced by using a blinding factor called 'pepper' to hide the email address and client ID.

Alen explains the concept of an ephemeral key pair to reduce the number of zero-knowledge proofs required per transaction.

The pepper service is introduced to help users manage their blinding factors without storing long-term secrets.

The pepper service is designed to be simple, with access control managed via the OpenID Connect protocol.

Alen discusses future work, including improving the pepper service for privacy preservation.

The implementation details of the Aptos keyless accounts system, including performance goals and circuit design.

Alen invites the audience to review the open-source codebase and participate in the Aptos community.

The talk concludes with a Q&A session addressing concerns about malleability, censorship resistance, and trust in the prover service.

Transcripts

play00:00

[Music]

play00:07

um so my name is alen I'm the head of

play00:09

cryptography at Aptos labs and today I

play00:12

want to tell you about Aptos keyless

play00:14

accounts which are blockchain accounts

play00:16

that avoid the use of secret Keys um and

play00:19

what they base their security on is a

play00:21

traditional web to account like your

play00:23

Google account or your Facebook account

play00:25

or your Apple account so let's get

play00:28

started but before we do I want to say

play00:30

this is Joint work with the core team at

play00:33

abos Labs the core keyless theme uh

play00:35

Michael and Rex should be in the

play00:37

audience and you can meet them today uh

play00:39

Michael designed our circuit Rex audited

play00:41

it and worked on the prover service and

play00:44

also the broader app TOS Labs team and

play00:45

the folks at geometry research some of

play00:47

them in the audience right here uh who

play00:49

helped us secure the ZK

play00:51

circuit so what is a keyless account uh

play00:54

well it's just the way I think about it

play00:57

your blockchain account is your Google

play00:58

account there are no user managed secret

play01:01

Keys uh and as a result you get many

play01:03

goodies which are going to which I'm

play01:04

going to mention throughout the talk and

play01:07

in the stock when I say Google I want

play01:09

you to think Facebook I want you to

play01:11

think GitHub or any open ID connect

play01:13

provider or oidc provider but for

play01:16

Simplicity I'm just going to say

play01:18

Google so why do this why enable keyless

play01:21

account the short answer is we want to

play01:23

onboard the next 1 billion users we

play01:25

don't think this is going to happen if

play01:26

every time a user enters a space they

play01:28

have to write down 24 words and put them

play01:30

somewhere safely and lose them and then

play01:33

never engage with the space again so if

play01:35

we're going to get people in this space

play01:38

we need to find a way for them to join

play01:39

the space very easily so if you think

play01:42

about the current user experience of

play01:44

using a d app or a web 3 application you

play01:47

have to install a wallet what the hell

play01:49

is a wallet users are very confused they

play01:51

have to write down this memonic this is

play01:53

very

play01:54

combersome uh it's very easy for them to

play01:56

lose this pneumonic and lose their money

play01:59

uh they have to deal with transaction

play02:00

prompts what the hell is a transaction

play02:01

prompt most users don't know and it's

play02:04

very painful to move your device uh to

play02:06

move your account from your laptop to

play02:08

your mobile phone to your

play02:11

tablet so what we want is kind of the

play02:13

opposite we want we still want wallets

play02:15

but we want the possibility of being

play02:17

wallets we want users to directly sign

play02:19

up for a d app without installing extra

play02:21

software we don't want users to write

play02:23

down the monics that's just painful uh

play02:26

nonetheless we still want the account to

play02:28

be very hard to lose and we'd like to

play02:31

avoid transaction prompts if possible

play02:33

and we'd also like to for things to work

play02:35

across

play02:37

device and additionally we might also

play02:40

want other goodies like we might want

play02:41

kyc via the IDC provider we might might

play02:44

want to be able to send transactions

play02:46

directly to an email address that would

play02:47

be great um so that's what I'm going to

play02:50

tell you about in this talk how to

play02:52

enable all these things so how do

play02:54

keyless accounts work at a really high

play02:56

level there's four things I want to say

play02:58

here so first a keyless account its

play03:01

address is derived from two things your

play03:04

email address and the application ID of

play03:07

the wallet or the D app you're using so

play03:09

that means these accounts are app

play03:12

specific uh so they're associated with a

play03:14

D app like d app. XYZ or they're

play03:16

associated with a wallet like metamask

play03:19

and this is what prevents a malicious

play03:21

website like medium.com from stealing

play03:24

your keyless account associated with

play03:26

dxyz the fact that you have this the dab

play03:29

specific

play03:30

binding and this is also what allows for

play03:33

wallet list apps um the fact that we

play03:36

have this binding now a keyless

play03:39

transaction signature the way this works

play03:42

is it's really the same thing as an open

play03:44

ID connect signature from the provider

play03:46

and really it's a zero knowledge proof

play03:48

of knowledge of such a signature for

play03:50

privacy reasons and this signature from

play03:52

Google is over a couple of things the

play03:54

transaction hash your email address and

play03:57

the application ID

play03:59

and lastly we add a splash of zero

play04:01

knowledge for privacy so we want to hide

play04:03

a couple of things we want to hide the

play04:05

email address and the application ID

play04:07

from the chain from the full nodes

play04:08

validators everybody but we also want to

play04:11

hide transactions from Google we don't

play04:13

want Google to be able to track which

play04:14

email addresses are are associated with

play04:18

each blockchain addresses and which

play04:20

transactions are associated with an

play04:22

email

play04:23

address so at a high level this is the

play04:25

picture uh next I want to go a little

play04:28

bit deeper and actually show you some

play04:29

some

play04:30

details um so let's start with uh the

play04:34

open ID connect protocol and how

play04:36

applications register in this protocol

play04:39

in order to get a client ID a so-called

play04:42

client ID so if you have an application

play04:44

like media.com or dap. XYZ you go on the

play04:46

Google Cloud console for example and you

play04:49

register it in there and at the end of

play04:50

this sort of manual process you get a

play04:52

so-called client ID so this will be the

play04:55

application identifier that I mentioned

play04:57

before which is committed in your

play04:58

address and it's also signed by Google

play05:01

when it signs your transaction right so

play05:04

that's the first step so now that the

play05:06

application is registered let's see how

play05:08

kind of uh open ID connect flow works so

play05:10

you're all familiar with this because

play05:12

you've all used websites that asked you

play05:14

to sign in with Google so this is what

play05:15

happens when you use those websites you

play05:17

you go to the app and the app displays

play05:20

to you this prompt uh by redirecting you

play05:22

to Google and in the URL that the app uh

play05:26

redirects you with you actually have a

play05:29

few param in there so you have this

play05:30

client ID that I mentioned before which

play05:32

is the identity of the application and

play05:35

very very importantly the application

play05:37

can specify any arbitrary data to Google

play05:40

and what Google will do when you sign in

play05:42

with your cookies is it'll send the app

play05:45

this signature right and the signature

play05:48

will be over three things your email

play05:50

address that you successfully logged in

play05:52

with the app's identity and this

play05:54

arbitrary data that the app included

play05:56

right and this of course this arbitary

play05:59

data here will be very important because

play06:01

guess what that arbitrary data will be a

play06:03

transaction so and this is how we're

play06:05

going to get Google to sign your

play06:06

transactions for you and this is how

play06:07

we're going to make the account be

play06:10

keyless um and what's worth emphasizing

play06:13

here also is that this is a digital

play06:14

signature right so this is publicly

play06:16

verifiable so anyone who has Google's

play06:18

public key can take the signature and

play06:20

verify it so now here's a couple of

play06:23

observations what if this third party

play06:25

verifier is a

play06:27

blockchain and what if the application

play06:30

is a wallet or a d app and what if the

play06:33

data being signed is a transaction right

play06:37

then you're basically looking at the

play06:39

keyless picture if you get one thing

play06:41

from the stock it's this slide this is

play06:43

basically 90% of a picture the next part

play06:46

of the talk I'm going to refine it a

play06:47

little bit since we we're going to need

play06:49

to deal with

play06:51

privacy um right so the way it works

play06:55

is your wallet will will sign you in and

play06:58

then you want to send transaction for

play07:00

your

play07:02

address and you will include this oidc

play07:05

signature from Google together with the

play07:07

application ID and your email address so

play07:10

so far this is not privacy preserving

play07:12

right we're going to fix it in a second

play07:14

and you can send this at the blockchain

play07:15

validators and what the blockchain

play07:17

validators can do is they can verify the

play07:19

signature like I showed you before

play07:21

because they have your email address

play07:22

they have the client ID and they have

play07:24

the transaction and additionally they're

play07:26

going to match that the address you

play07:28

included in the transaction

play07:30

is indeed associated with the account in

play07:32

the signature right so they're going to

play07:34

verify for example the address is the

play07:37

hash of the email address and the client

play07:39

ID right so far so

play07:43

good but there's a problem you are

play07:45

revealing in plain text your email

play07:47

address and the application ID and in

play07:50

particular the email address is very

play07:51

worrisome but even the client ID could

play07:53

be problematic if you reveal it because

play07:55

it leaks which applications are doing

play07:58

what so we got to fix that and obviously

play08:01

the very trivial fix is to just throw a

play08:03

zero knowledge proof at it right so

play08:05

instead of giving all of the secret

play08:07

witness like the client ID and the and

play08:10

the signature and the user email we're

play08:12

going to we're going to move it inside

play08:14

of a zero knowledge proof and we're

play08:15

going to do all of the work inside the

play08:16

zero knowledge relation here so this is

play08:18

a zero knowledge proof of knowledge of

play08:21

an oidc signature and an email address

play08:24

and a client ID such that the IDC

play08:26

signature verifies over the public input

play08:29

public key and over the public

play08:31

transaction input right and such that

play08:34

the public address input is derived from

play08:37

the secret email address and the secret

play08:39

client ID so from the blockchain

play08:41

validator perspective all they see is an

play08:43

address and a transaction and Google's

play08:46

public key and this proof assures them

play08:49

that there is an oidc signature over the

play08:52

email address inside the blockchain

play08:55

address right and the client ID and over

play08:57

the public transaction

play09:00

okay so this is again a very you know it

play09:03

looks very simple when you put it on the

play09:05

slide it's very hard to implement but

play09:07

it's a very simple change you just throw

play09:10

a zero knowledge proof at things this is

play09:11

what we like to do in this community

play09:13

anyway good so there are some

play09:16

complications with the zero knowledge

play09:17

proof uh it takes I think about 30

play09:20

seconds to compute in the browser so if

play09:22

we're going to use this for our users

play09:24

it's going to be very bad ux so we'd

play09:26

like to speed it up so we have to rely

play09:28

on aover service

play09:30

um which is going to make the

play09:32

computation of the Zer knowledge proof

play09:33

much faster we can compute it in under

play09:35

two seconds but it's going to have some

play09:38

privacy implications and we can talk

play09:39

about those

play09:41

later because in particular the prover

play09:43

service will learn the secret witness so

play09:45

it learn the email address and the

play09:46

client ID uh nonetheless I should say

play09:49

it's very important to emphasize here

play09:50

that theover service cannot steal your

play09:51

funds I'll I'll describe that uh in a

play09:54

second as

play09:56

well uh nonetheless there's still more

play09:59

problems left so as you can see here

play10:01

Alice has to compute one zkp per

play10:03

transaction and the blockchain has to

play10:05

verify one zkp per transaction so we

play10:08

don't like that for performance reasons

play10:10

so the way to fix that is using a layer

play10:12

of indirection that's every problem in

play10:14

computer science can be solved with a

play10:15

layer of indirection uh so what Alice is

play10:18

going to do is she's going to generate

play10:20

an ephemeral key

play10:24

pair let's see right I have an ephemeral

play10:27

key pair here es and an EPK

play10:30

and next what we're going to do is

play10:32

instead of signing the transaction we

play10:35

will give Google this EPK to

play10:38

sign and in the transaction signature we

play10:41

will include an ephemeral signature over

play10:43

the

play10:44

transaction under this es right and then

play10:47

the blockchain validators can simply

play10:50

verify this ephemeral signature so we've

play10:52

added a layer of IND Direction so now

play10:54

you can think of the zkp as a

play10:57

certificate for this ephemeral public

play10:59

key and the transactions are signed by

play11:01

the ephemeral public key and this

play11:03

signature verification is in plain text

play11:06

right the validator see an Emeral public

play11:07

key and a signature on the transaction

play11:09

there's no privacy loss there and notice

play11:13

that although there's a key here these

play11:15

keys are ephemeral you can lose them it

play11:16

doesn't matter if you lose them you sign

play11:18

back in you generate a new es and Google

play11:21

will gladly sign it for you so they're

play11:23

not sensitive from a loss

play11:26

perspective and for those of you who are

play11:28

familiar this keare can actually be a

play11:31

web aen Pass key keare so this way you

play11:33

can actually be very secure that it

play11:35

won't it won't be stolen right if it's

play11:38

backed up in your iPhone's Enclave let's

play11:42

say still we have more problems the

play11:45

address uh that uh is stored on chain is

play11:49

a function over the email address and

play11:51

the client ID so it obviously leaks an

play11:53

attacker can brute force your email

play11:55

address and the client ID and tell who

play11:57

you are on chain so we want to fix that

play12:00

too and the very simple fix there is to

play12:02

just make the address be a commitment

play12:05

rather than a hash of the email address

play12:08

right so we're going to use a blinding

play12:10

factor for that we call this blinding

play12:12

factor a pepper uh these are just random

play12:15

bits now if we did this naively the user

play12:18

would have to pick those bits and

play12:19

remember them and if the user loses

play12:21

those bits then they can no longer

play12:23

access their account so that would

play12:24

defeat the purpose of this whole

play12:26

approach because the whole point is we

play12:28

want to avoid

play12:29

storing long-term secrets so instead

play12:32

what we're going to do is we're going to

play12:33

have a pepper service that's going to

play12:35

help users remember their pepper so the

play12:38

way this will work is the pepper service

play12:40

will evaluate a verifiable unpredictable

play12:43

function over the email address and the

play12:46

client ID and that defines the pepper in

play12:49

the blockchain address associated with

play12:51

these two and this actually makes the

play12:54

pepper service a very simple service it

play12:55

just has to store a 32 by VF key like a

play12:58

BLS key

play12:59

and it's also very easy to decentralize

play13:01

so you can have a decentralized pepper

play13:03

service with 20 servers that just

play13:05

computes a threshold signature for the

play13:07

user to get the user the pepper and of

play13:09

course there's an access control issue

play13:11

because the pepper service better not

play13:13

give my pepper to somebody else it

play13:16

better only give it to me and the way we

play13:18

actually guarantee access control is

play13:19

also via the open ID connect protocol

play13:22

because the pepper service can actually

play13:23

verify these these

play13:25

signatures uh from Google before giving

play13:27

you your pepper

play13:29

um so that's the good news about the

play13:31

pepper service and right now the pepper

play13:34

service is not privacy preserving but we

play13:36

can actually make it price of reserving

play13:38

as well so the pepper service could in

play13:40

principle receive a zero knowledge proof

play13:42

of knowledge of an IDC signature and a

play13:45

blinded um hash of the email address and

play13:49

the client ID and evaluate the BLS

play13:51

signature over that blinded hash so that

play13:54

so that it doesn't even learn which User

play13:56

it's Computing the pepper for uh we

play13:58

haven't down yet but that's plans for

play14:00

the

play14:02

future good so next step is one last

play14:06

tiny detail is that Google will actually

play14:08

see this EPK here in the nons right and

play14:12

if it can see this EPK then it can track

play14:14

transactions on chain um so now it knows

play14:18

which user is doing which transactions

play14:20

this is also a very trivial fix instead

play14:22

of putting the EPK in the open ID

play14:24

connect signature we're going to put a

play14:26

commitment to the EPK using some

play14:28

different blind Factor R which is part

play14:30

of the secret witness of the

play14:33

zkp and basically we're done that's the

play14:36

design this is it so if you get a second

play14:38

thing from the stock it's this picture

play14:41

right here uh which is the complete

play14:43

privacy preserving story with the pepper

play14:46

service and the approver service for

play14:50

performance all right for the next part

play14:52

of the talk I just want to uh mention

play14:54

some things about our implementation so

play14:57

when we built this because because this

play14:59

is a layer one primitive right we are

play15:01

putting these kind of keyless signature

play15:04

on our transactions we have some pretty

play15:06

aggressive performance goals so we want

play15:09

the verification time of such a keyless

play15:11

transaction to be very small and also

play15:13

the proof size the zkp to be very small

play15:16

uh in particular this is kind of

play15:18

stringent if you think about it because

play15:20

if an attacker puts bad zkps in your

play15:22

transactions you have no recourse like

play15:25

you're going to get dossed because if

play15:27

the zkp fails to verify there's no

play15:29

account that you can charge gas to right

play15:31

there's nothing you can do so you really

play15:33

have to make the implementation fast uh

play15:36

so our only choice was to do gr 16 over

play15:38

a fast curve

play15:40

b254 and to implement the relation in in

play15:44

uh in gr 16 we use circom we have 1.3

play15:47

million R1 CS constraints and our code

play15:50

is actually public we invite you to look

play15:52

at it we invite you to build over it um

play15:55

it's in a way very related to the ZK

play15:56

email work that you've seen before and

play15:59

some previous work on verifying jwt's in

play16:03

snarks um and what's interesting about

play16:05

our circuit is that we have some new

play16:07

polinomial based protocols for doing

play16:09

substring matching in a circuit which is

play16:12

otherwise very complicated to do and

play16:14

very expensive to do I should say so

play16:16

this is what helps us achieve a small

play16:17

number of

play16:19

constraints we did an NPC ceremony for

play16:21

the circuit we used potion uh fixed a

play16:24

couple of bugs in it and we had 140

play16:27

participants over the duration of one

play16:28

week

play16:30

and our prover service is implemented

play16:32

via a hardened version of Rapid snark

play16:34

which is a C++ code base it's really

play16:36

fast the only thing faster than rapid

play16:38

snark that I could find is maybe gar but

play16:41

I couldn't manage yet to Benchmark our

play16:42

circuit in gar because we have to take

play16:46

our circom circuit and put it in gnark

play16:48

if any of you know anything about that

play16:49

please talk to me uh our pepper service

play16:52

is just a rust based service uh that

play16:55

uses BLS uh to evaluate the pepper

play16:59

and that's it that's our implementation

play17:01

so to conclude the talk um I think ux is

play17:05

key for blockchains and good ux Is

play17:08

keyless so open source uh codebase

play17:12

please take a look at our rust validator

play17:14

code at our repo uh at our MPC trusted

play17:17

ceremony and Prov service I think and

play17:20

pepper service are all public we have a

play17:22

test deployments uh active on the appos

play17:25

blockchain this is deployed in devet and

play17:27

in testnet and will become to main net

play17:30

pretty soon um it's also already been

play17:33

used in the app toss random hack where

play17:35

we've seen a few projects build on top

play17:37

of it so that's very exciting uh and if

play17:40

you want the nitty-gritty details and

play17:42

all of the security implications and

play17:44

details you can find them in an Aptos

play17:46

Improvement proposal that I wrote

play17:48

there's a PR open there's a couple of

play17:50

more things to address

play17:52

there um future work I think this kind

play17:56

of approach raises some interesting

play17:57

questions about

play17:59

what kind of oidc providers would you be

play18:02

willing to trust with your blockchain

play18:04

accounts so this approach is not to say

play18:06

that all users should use it it's

play18:08

probably for 90% of users who are novice

play18:10

right but even for those users maybe

play18:13

Google is not the right choice so maybe

play18:15

we There's an opportunity here to think

play18:17

about identity providers for blockchain

play18:19

users and maybe there's even a business

play18:21

space in that um we want to try and move

play18:25

the pepper service on top of the

play18:27

validator so that it's as secure as our

play18:29

validators as well as making it privacy

play18:31

preserving we also want to try to

play18:33

potentially move the trusted setup on

play18:35

top of of our of our validator so we can

play18:37

easily bug fix and upgrade our circuit

play18:40

or ideally move to a universal snark

play18:42

that meets our performance goals and

play18:45

obviously we want to work on faster

play18:46

proving to eliminate the prover service

play18:49

um and there's a lot of cool features

play18:51

that I did not get to discuss I'll I'll

play18:53

leave them here for you and also a lot

play18:55

of nuance and details in particular the

play18:57

this Emeral key that I mentioned

play18:59

actually has an expiration date it

play19:01

doesn't leave live indefinitely and

play19:03

there's implications around D specific

play19:05

accounts that you have to deal with and

play19:07

there's implication around wallet list D

play19:09

apps that you have to deal with and just

play19:11

this Json web token stuff this open ID

play19:14

signature format uh and and how we deal

play19:17

with it in our application uh but that's

play19:20

it uh thank you so much for your

play19:21

attention and would love to get lots of

play19:27

questions thank thank you do we have any

play19:29

questions there's a microphone do you

play19:32

know the system by now okay don't sy so

play19:36

is it's coming up all right fantastic

play19:38

thanks great talk uh I had a question

play19:40

about malleability and whether it's an

play19:43

issue here so great if right so was the

play19:47

intuition um I'll wait for the slides to

play19:50

come yeah can I get the slides

play19:52

back yeah malleability was actually I

play19:54

think in the list of stuff it was sorry

play19:56

like I blanked at that point then I yeah

play19:59

so we we deal with it in a very simple

play20:00

way we get non-malleability by signing

play20:02

the proof with the ephemeral secret key

play20:05

uh which is a nonmalleable signature as

play20:08

well um that's how we got nonm and and

play20:11

yeah we were worried about it in

play20:12

principle all of our transaction

play20:13

signatures are non-malleable because we

play20:16

don't want people to worry about

play20:17

malleability so so this solves the

play20:19

problem of

play20:22

malleability of the of the gr 16 yeah

play20:25

because the ephemeral signature itself

play20:26

is non malleable and then there's just

play20:28

gr 16 and then you have to be careful

play20:29

that other things like metadata next to

play20:31

the zkp and the FML signature is not

play20:33

malleable as far as we know it's not but

play20:36

if you want to take a look at our code

play20:38

thanks thanks for the

play20:40

answerers okay any other questions yes

play20:43

in the

play20:45

back there's a microphone down on on the

play20:49

chair just press the

play20:53

button uh sometimes they don't work now

play20:56

now you can hear okay so I want want to

play20:58

ask what's your sensorship resistant

play21:00

model and more specifically what's the

play21:02

fallback in case the signature provider

play21:04

goes down or doesn't want to provide the

play21:06

signature for a specific user uh I

play21:09

couldn't hear it very well could you put

play21:11

the mic can you put here is it better

play21:13

okay so I'm going again what's your

play21:16

sensorship resistant model and to be

play21:18

more specific what the fallback in case

play21:22

the signature provider doesn't want to

play21:23

provide the signal to specific user or

play21:26

anyone else yeah that's that's a

play21:29

that's a very good question so there's a

play21:30

few ways to deal with that um it so at a

play21:35

fundamental level you want to pick o IDC

play21:37

providers that you have recovery

play21:39

mechanisms for in case they stop playing

play21:43

bow that doesn't answer the question

play21:46

though because any provider can go down

play21:48

any day so if I have an account in an

play21:50

app using a kills model that means if

play21:53

the signning provider goes down for any

play21:54

reason reason or doesn't want to give a

play21:57

signature for my user for example that

play22:00

means that I lose everything yeah

play22:01

correct so if you if you have a bad

play22:03

provider that that's bad for you you

play22:06

don't pick bad providers you would pick

play22:07

really trustworthy providers I think the

play22:09

only risk here is that the provider

play22:12

probably says look I don't want to have

play22:14

to do anything with blockchain

play22:15

applications so any client ID that is a

play22:17

wallet or a d app I'm just not going to

play22:19

provide signatures for and in that case

play22:21

you need a recovery mechanism for your

play22:22

users and there's two things that we can

play22:25

imagine doing one thing is we can use

play22:27

for example the ZK email approach to

play22:29

recover your account if you've been to

play22:31

their talk so basically you can send an

play22:33

email from your Google account which has

play22:34

a signature from Google and that email

play22:36

can authorize a key rotation for your

play22:38

keyless account so that that would be

play22:40

okay it would be kind of user unfriendly

play22:42

but in principle it would give you back

play22:43

access to your funds another way would

play22:45

be to have a recovery service so a

play22:47

recovery service with its own client ID

play22:49

that users log into and the only thing

play22:51

this Recovery Service does is it rotates

play22:53

your key so maybe you know Google stops

play22:56

playing ball but it allows this recovery

play22:58

service to help users recover um so

play23:01

those are two things that you can do and

play23:02

in general that's what I mean by yanto

play23:04

IDC providers that admit recovery

play23:07

mechanism so let's say you use Twitter

play23:08

you could use a public tweet to rotate

play23:10

your account to a new publicy if you had

play23:12

an HTTP Oracle on chain right that's

play23:16

another recovery mechanism for another

play23:18

provider I I hope that answers your

play23:20

question but I'm happy yeah we can also

play23:22

talk after discusser yeah there's a

play23:24

microphone on the ground do you see it

play23:31

it should be red

play23:37

light yeah sometimes they don't

play23:40

work okay thank you uh so you have

play23:43

mentioned that you are using proven

play23:45

service in your application is it is it

play23:47

trust us or to which degree is it trust

play23:51

I suppose uh I I fail to emphasize that

play23:54

huh not sure what happened with my

play23:57

slides uh it's trustless so if you think

play24:00

about it the prover

play24:02

Service uh gets this soidc signature

play24:04

over an EPK right it doesn't know the

play24:07

associated es to sign transactions with

play24:10

so the approver service simply you know

play24:12

you lose privacy with respect to the

play24:13

approver service but there's ways to

play24:14

deal with that you can MPC the appr

play24:17

service and in fact snarks like grat 16

play24:19

admit very efficient MPC protocols but

play24:23

you know that's the only problem privacy

play24:25

which which is addressable um stealing

play24:27

your account isn't impossible because

play24:29

the approver service doesn't have the es

play24:31

and it cannot get a new IDC signature

play24:33

over an EPK whose es it knows right does

play24:37

that make sense yeah thank

play24:42

you any other questions where the

play24:45

front Okay we have time for a couple

play24:48

questions I'll just take this one first

play24:49

out of proximity I'll come to you um

play24:52

does the pepper service generate the

play24:55

peppers or stores them too yeah good so

play24:58

um I mentioned in the talk that the

play25:00

pepper service is uh using a verifiable

play25:03

unpredictable function to generate a

play25:06

pepper given an email address and a

play25:08

client ID by simply evaluating a VF over

play25:11

them a VF an example of a VF is a

play25:14

deterministic signature scheme like BLS

play25:17

why can't users do that themselves is it

play25:19

too expensive or what but well they

play25:21

would have to remember it if they did it

play25:23

that that themselves right so it does

play25:25

store it or generates it time it only

play25:27

stores is the secret key of the VF so

play25:30

that's 32 bytes and from that secret key

play25:33

and a email address and a client ID it

play25:36

can derive the pepper without ever

play25:38

having to store it but what happens if

play25:40

the pepper service fails if the pepper

play25:44

service fails then users are locked out

play25:46

of their account if they don't have

play25:47

their pepper right so it's very easy to

play25:49

mitigate against that so one one way is

play25:51

for users to back up their peppers if

play25:53

they're paranoid but we don't like that

play25:55

uh another way is to actually

play25:57

decentralize the pepper service and make

play25:59

sure the key is never lost what you want

play26:00

to ensure is that the secret key of the

play26:02

pepper service is not lost now maybe you

play26:05

know the top 2% of users uh might just

play26:08

generate their own peppers and they

play26:09

won't use the pepper service we I don't

play26:11

think that's realistic for 90% of the

play26:13

users but some subset of users might

play26:15

want to uh in general we're not very

play26:17

worried about the secret key of the

play26:18

pepper service getting lost because it's

play26:20

really easy to protect the key for you

play26:23

know getting lost okay

play26:26

thanks good so many questions it's good

play26:29

thing your presentation was

play26:31

shorter yeah I just wanted to connect to

play26:34

what was saying the person before so you

play26:36

say that the prover you have kind of no

play26:38

privacy to the prover but then since the

play26:41

secret key is in your possession then

play26:43

you know it can in reality gross 16

play26:46

proofs can be are maleable in itself so

play26:49

the pro can randomize them to embed

play26:52

tagging information in the proof itself

play26:54

and then the user will sign and will go

play26:57

so

play26:59

yeah uh one second let me just okay uh

play27:03

you're saying a malicious prover could

play27:06

yeah because if the Malisha approver has

play27:07

access to the email address it can

play27:09

somehow embed it by randomizing the

play27:11

proof and until some bites match like

play27:14

grinding through proofs that's a really

play27:16

interesting uh uh yeah I like that

play27:18

that's interesting I would say the way

play27:20

to mitigate against that is probably the

play27:21

same way you would mitigate against the

play27:23

uh the Privacy issue by MPC and the pro

play27:26

service which would which would fix that

play27:28

but yeah actually we haven't considered

play27:30

that I really like that thanks a lot

play27:31

okay we can discuss later yeah did we

play27:34

have another question here cool I think

play27:38

that's um hi can you derive uh public um

play27:43

address from email address like if I

play27:46

want to send some funds to someone who

play27:48

hasn't used the the service correct so

play27:51

what you could do if you wanted to send

play27:53

funds to someone that isn't signed up is

play27:55

you could derive an address for them so

play27:57

let's say you want to send fun to Alice

play27:59

on some wallet or some pay application

play28:04

um like let's call it pay to email right

play28:06

so pay to email has a client ID you know

play28:08

it and you know Alice's email and then

play28:09

you just pick a pepper for Alice you

play28:11

pick it for her you pick random 256 bits

play28:14

and then you email Alice hey Alice I

play28:16

send you funds here's the pepper for

play28:18

your address Al Alice can rederive the

play28:21

same address and can sign in with Google

play28:23

into the application and obtain a open

play28:26

ID signature engage approver service get

play28:29

a zkp and as a result get access to

play28:31

those funds but the only difference in

play28:33

this case is that you're not using the

play28:35

pepper service Alice is simply using the

play28:37

pepper that Bob picked to pay her is is

play28:41

the pepper choosed by Bob or just Bob

play28:43

initial initiated uh the pepper service

play28:47

I mean no it's it's it would be chosen

play28:48

by Bob would probably be the best way to

play28:50

do it but you could also imagine that

play28:51

the pay to email application could when

play28:54

I say chosen by Bob is really by that

play28:56

application right and then that

play28:58

application would email Alice with the

play28:59

pepper or maybe you would create a link

play29:01

and embed the pepper in the link um and

play29:05

Bob can can't use this pepper to gain an

play29:08

advant advantage of this

play29:11

account uh no no so remember that

play29:14

there's two things you need to access

play29:18

this keyless account for Alice you will

play29:20

need the pepper because you will need to

play29:22

do the address match but you're also

play29:24

going to need an oidc signature from

play29:26

Google and Bob is not going to be able

play29:28

to get that IDC signature because he

play29:30

doesn't control Alice's Google

play29:36

account okay I think that's all we have

play29:38

time for so thank you so much elen

play29:40

another round of applause please thank

play29:42

you so much for the questions

Rate This

5.0 / 5 (0 votes)

Ähnliche Tags
BlockchainCryptographyUser ExperienceAptos LabsKeyless AccountsSecurityWeb3GoogleOpen ID ConnectZero Knowledge Proof
Benötigen Sie eine Zusammenfassung auf Englisch?