Magic-Square-Birthday-Anonymizer-and-ZKP-Verifier

Magic Square Birthday Anonymizer and ZKP Verifier

Birthday Anonymizer and Zero Knowledge Verifier based on Ramanujan’s Magic Square

Problem Statement

Date of Birth (DOB) is one important identity and documentary proof that is widely used and accepted by various government and private organizations. Birth Certificate is a documentary proof that we submit whenever we need to prove our identity and age to avail services from Government or non-governmental organization. Most common use where most of us are requested for date of birth :date: is during a verification call :telephone_receiver: from customer care :information_desk_person: from banks :bank:, for example say to verify your identity to issue a credit card :credit_card:.

The Vishing attacks (Phishing through voice calls) are increasing where the attacker or malicious person tries to get the date of birth :date: and OTP :vibration_mode: to steal money from our account by portraying as authorities from financial institutions.

Zero Knowledge Proof (ZKP)

A zero-knowledge proof or zero-knowledge protocol (zkp) is a method by which the prover can prove to the verifier that they know a value x, without conveying any information apart from the fact that they know the value x. The essence of zero-knowledge proofs is that it is trivial to prove that one possesses knowledge of certain information by simply revealing it; the challenge is to prove such possession without revealing the information itself or any additional information.

Interactive zero-knowledge proofs require interaction between the individual (or computer system) proving their knowledge and the individual validating the proof. Some forms of non-interactive zero-knowledge proofs exist, but the validity of the proof relies on computational assumptions (ideal cryptographic hash function).

Magic Square

Magic Square is any square array of numbers, if the sums of the numbers in each row, each column, and both main diagonals is a constant (referred as magic constant). The magic square can be of any order (n) from 3. The popular game Sudoku is a magic square of order 9, with multiple smaller magic squares of order 3. There are different variations of magic square created as on date. Shown below is an example magic square of order 3 with magic constant 15.

4 9 2
3 5 7
8 1 6

Ramanujan’s Birthday Magic Square

Srinivasa Ramanujan, one of the greatest mathematician of all time has constructed a below magic square based on Birthday. This magic square is of order 4.

DD MM yy YY
YY+1 yy-1 MM-3 DD+3
MM-2 DD+2 YY+2 yy-2
yy+1 YY-1 DD+1 MM-1

Example with a date :date: : 24-02-1955 (Steve Paul Jobs)

:dart: Magic Constant : 100

Anonymizer and ZKP Verifier

Proposing to use the Ramanujan’s Magic Square to create a system that anonymizes the Birth Date before storing in the Database of Service Provider and use a Zero Knowledge Proof Verifier to verify as and when needed.

Threat Model and Actors

Conclusion

In this proposed Birthday Anonymizer, we anonymize the given Birthday with the use of Ramanujan’s Birthday Magic Square with additional secret value. We have created a ZKP based verifier which verifies the date of birth by revealing only the Selectively Generated Sets (SGS) which is stored in the service provider application server/database. This ensures that no customer executive or third party can gain knowledge of the user’s actual DOB. After the implementation of this system, the user when using only the service provider (web/mobile) applications to avail services directly can use the DOB in the field provided. If the user is contacted for any service activation or customer executive for any authentication then share any set from the SGS to any external third-party.

Implementation

In the actual system of implementation,

References

Cite as

Ramaguru R. Birthday Anonymizer and Zero Knowledge Verifier based on Ramanujan’s Magic Square. NamChain Open Initiative Research Lab. Feb 24, 2021. https://namchain-open-initiative-research-lab.github.io/Birthday-Anonymizer-ZKP-Verifier/