Pairing-Based Crypto (PBC) is emerging as a solution to complex problems that have proven intractable to the standard mathematics of Public-Key Cryptography. An example of such a problem would be Identity-Based Encryption, whereby the identity of a client can be used as their public key.
We have used PBC to develop a novel multi-factor zero knowledge authentication protocol called M-Pin. This is intended as a replacement for the typical username / password authentication mechanism. The benefits are that it is multi-factor (a simple PIN could be one factor), does not require a password database to be maintained and can be implemented fully in software. As it is zero-knowledge the client can prove possession of the issued secret key whilst revealing no details about this key.
Distributed Trust Authorities and Client Token
The protocol requires the client to authenticate to the server using the key material provided by the system. The entity that provides the keys is called the Distributed Trusted Authority (DTA). Different organisations can run DTAs which produce unique keys for the server and client, thus ensuring there is no single point of trust nor associated security risk.
When a DTA starts, it independently generates a master key share which it stores in memory. The server requests a server key share from each DTA, which is a function of its master key share. The client requests a client key share from the DTA, which is a function of the master key share and the client’s identity. This process is then repeated for a second DTA. At this stage the server and client now have key shares from two DTAs which can be combined. The client can now subtract a value from the client key, based on an entered PIN, resulting in a token which is one of the two factors; the other one being the PIN.
Because of the online nature of the M-Pin protocol and cryptography used, it is not possible to brute force the PIN. Therefore, it is not necessary to take specific measures to protect the token.
Zero Knowledge Proof Authentication
The authentication process starts with the client sending the identity and a commitment value to the server. This value is a function of a large random number and the identity. The server generates another large number which it returns to the client as a challenge. The client then requests the PIN. The token and PIN are combined to form the client key, only in memory and never stored. Together with this client key and the two random numbers, a response is calculated which is sent to the server. The server uses the identity, server key, commitment, challenge value and client response to verify the client.
Distribution of trust and zero-knowledge proof authentication are what differentiates MIRACL Trust® from other multi-factor authentication solutions, and what allows MIRACL to present itself as “zero-knowledge proof” authentication since no values are stored or exchanged in the authentication process.
The M-Pin protocol gives MIRACL Trust® its core cryptographic properties: no critical information is ever transmitted or stored in whole form:
Client secret shares are transmitted from two separate DTAs that can be under separated organisational control.
The combined client secret is turned into a token by subtraction of the user selected PIN.
The PIN should not be stored anywhere. It should only exist in the user’s mind.
During authentication no critical credentials (PIN or client key) are transferred. The authentication server determines the validity of the reformed client secret (client token plus PIN) and therefore the user’s identity solely by evaluating a numeric response from the client.