ZKP, Blockchain, SDV and Mobility

2023.09.12

42dot is developing a blockchain platform to provide users with new mobility experiences. Zero-knowledge proof is one of the important technologies of blockchain. This post will cover the technical aspects and the functionalities of the zero-knowledge proof. Additionally, this post will also explain how zero-knowledge proof is applied to 42dot's blockchain and how it can be applied to SDV and mobility services.

1. What is Zero-Knowledge Proof?

Zero-knowledge proof (ZKP) is a cryptography technique used by a prover to prove that its statement is true to a verifier. It does not provide (disclose) any information about the claim of the prover, and the verifier performs verification without knowing any information about the prover's claim.

For example, let’s suppose A wants to prove to B that he has $10,000. The easiest way is for A to actually show $10,000 to B, or to show his bank account balance certificate. However, this is not ZKP. Because it conveys clear information to B that supports A's claim. In ZKP, A must be able to prove without providing any information related to the money, and B must be able to verify whether A's claim is true without any information related to A's money.

As another example, A wants to buy cigarettes or alcohol at a convenience store. The convenience store salesperson B needs to determine whether A is an adult. Generally, B will ask A for identification. In other words, B will look at the ID and check whether A is the right age to buy cigarettes or alcohol. Can A prove that he is an adult without showing his ID? Using ZKP in a case like that, A can prove that he is an adult without showing any ID.

As an example for blockchain, A wants to send a virtual asset to B. If ZKP is applied to a transaction in which a virtual asset is transferred, it is possible to prove that the transaction is legitimate while protecting the privacy of A. 

In this way, ZKP can be used where the user's privacy is important because the prover can prove his/her claim while excluding the disclosure of the information related to the claim.

The most common example to explain what ZKP is and how it is possible is the Ali Baba cave problem. There is Alice and Bob. Bob wants to prove that he has a key that can open a door in a cave. The proof process proceeds as follows: 

The important part here is that in order to prove that Bob has the key, the proof process is performed without showing Alice the key.

1.1 Components of ZKP

ZKP consists of three components:

Prover: Subject who wish to prove their claim or statement.

Verifier: Subject that verifies whether the claim or statement of the prover is true.

Claim or statement: What the prover wants to prove to the verifier.

1.2 When can ZKP be used?

ZKP can be applied in a variety of cases. Let's take a few examples.

• Authentication(Login): When authentication (login) for a certain site or system is required, authentication can be performed by proving that you own the authentication information (password) without entering authentication information (password).

• Online voting: ZKP can be used in online secret voting.(zkVoting, a blockchain-based online secret voting system using ZKP, also won the Technology Innovation Award at CES 2023.)

• Credentials: ZKP allows you to verify that you are qualified without exposing any information.

• Blockchain: By applying ZKP to the transaction data of the blockchain, sensitive information included in the transaction can be hidden. In other words, anonymity of transactions can be provided (shielded/confidential transaction) for privacy, and the amount of data stored in the blockchain can be reduced. Also, it is widely used for the purpose of improving the scalability of the blockchain(zk-rollup).

• Data privacy: It can be used for proof without exposing the user's sensitive information (personal information, financial information, etc.).

• Proof of knowledge: It can be used to prove that you know the answer to a question, proof information, or data.

2. The process of ZKP

In ZKP, given the following function f, the prover proves that it has an input value that makes the result of the function true, and the verifier determines whether the result of the function made by the input value of the prover is true or false. 

f(x, w) = true/false

x is public input of function f and w is private input. Let's assume that the prover wants to prove to the verifier that his bank balance is greater than 1000 won (in fact, the prover's bank balance is 2000 won) without exposing his bank balance. This can be expressed as a function f as follows.

f(1000,2000) = true

At this time, 1000 becomes the public input x, and 2000 becomes the private input w. Since 2000 is an input value that should not be exposed to a verifier, it is called a private input, another term for it is a witness. After all, ZKP can be said to be a process in which the prover proves that he knows w that makes the result of function f true given x.

The programming code for function f is:

function f(x, w) {

  return (x < w);

}

From a logical point of view, the ZKP consists of three major steps.

2.1 Step 1: Key generation

Key generation is performed by a function G defined as:

G(f, λ) = (pk, vk)

f : program code / circuit

λ : random secret parameter

pk : proving key

vk : verification key

Function G is executed by the verifier, and the pk created as a result of function G is shared with the prover. Basically, key generation should only be done once for a given f.

2.2 Step 2: Proof generation

Proof generation can be defined as being performed by a function P defined as:

P(pk, x, w) = proof

pk : proving key

x : public input

w : private input (witness)

proof : proof data

Function P is performed by the prover, and proof data is generated using the pk, x and w created in the key generation step. And the proof produced as a result of function P is delivered to the verifier.

2.3 Step 3: Verification

Verifying the proof is performed by a function V defined as:

V(vk, x, proof) = true/false

vk : verification key

x : public input

proof : proof data

Function V is performed by the verifier, and it checks whether the result of function V is true or false using the proof delivered by the prover. That is, the verifier performs verification without knowing w, which only the prover knows. If the result is true, it means that the result of f(x,w) is true, and the verifier can be sure that the prover's claim is true.

3. zk-SNARK

zk-SNARK stands for “zero-knowledge Succinct Non-Interactive Argument of Knowledge”, and as you can infer from the name, it is a scheme for Non-Interactive ZKP, and proof is succinct. 

How zk-SNARK is performed in detail is explained in detail on the page in the link, and please refer to that page.

4. 42dot's Zero-Knowledge Proof, Blockchain, SDV, and Mobility

42dot plans to apply zero-knowledge proof technology to software-defined vehicles (SDV) and mobility services as well as blockchain to provide proof of authentication, credentials, data privacy, and knowledge. That is, zero-knowledge proof techniques can be applied in the following areas:

4.1 Authentication

Authentication of the vehicle itself or mobility service users to blockchain or cloud services can be provided using zero-knowledge proofs.

It can be applied to mutual authentication between ECUs inside a vehicle.

It can also be applied to authentication between SDV apps that interact with SDV OS.

4.2 Authorization

Through zero-knowledge proof, it provides the ability to verify the authority without exposing sensitive information of vehicle/mobility service users.

Proof data in VC/VP of DID can be replaced with zero-knowledge proof data to make it verifiable without information exposure.

Users can verify whether or not they have subscribed to certain features of FoD using zero-knowledge proofs.

4.3 Authorization

When logging in to a site or system is required, the ability to log in anonymously (that is, use the service anonymously) by proving that you own the authentication information (password) without entering authentication information (password) provided.

4.4 Data privacy

To enhance privacy protection, it provides a function to prove the content of the user's sensitive information (personal information, financial information, etc.) without exposing it.

4.5 Proof of knowledge

Provides the ability to determine which information is known or possessed by which data is trusted to be the subject of data sharing.

These functions will provide privacy-preserving for sensitive data, authentication/verification, and anonymous for networks and services. Therefore, ZKP is an important element of technology to enable a new type of mobility service with new experiences.


Geunyong Yun | Blockchain Platform (Tech Lead)

We are developing a blockchain platform to provide a new type of mobility experience.

More from Tech