Quick-Reference: Identity-Based Cryptosystems
See Jerome Solinas' slides for a brief summary of various identity-based cryptosystems.
Let be a bilinear map, where each group has prime order .
-
Master secret: pick
-
System parameters: choose , also output .
-
Extract: hash ID to , private key is
Key Agreement [SOK]
Suppose . Let be the hashes of the IDs of Alice and Bob respectively. Then Alice can compute , while Bob can compute .
Encryption [BF]
-
Encrypt: suppose Alice wishes to send a message to Bob. Alice picks random , computes and derives a key from this (where is the hash of Bob’s ID). She sends to Bob.
-
Decrypt: Bob can compute K from .
Encryption, Hierarchical [GS]
-
Suppose Alice now wishes to start her own IBE system (running under the one she is already part of) and Bob becomes a user of Alice’s system. For this part, rename as and as .
-
Extract: Alice picks a secret . Suppose Bob’s ID hashes to . Then she gives the private key along with the public value to Bob.
-
Encrypt: Suppose someone wants to encrypt a message to Bob. First pick a random and derive a key K from . Then send
-
Decrypt: Bob can compute K from .
-
Now suppose Bob wants to start his own IBE system underneath Alice’s, and say Carol wants to become a user of Bob’s system.
-
Extract: Bob picks a secret . Let Carol’s ID hash to . Then Bob gives Carol along with .
-
Encrypt: to encrypt a message to Carol, pick a random and derive a key K from . Then send
-
Decrypt: Carol can compute K from .
We can iterate this process to build an arbitrarily deep hierarchical identity-based encryption system.
Signatures [CC]
-
Sign: given a message , private key (and ID that hashes to ), pick random and compute
where is some hash function. Output
-
Verify: given a tuple compute and check that
Signatures [SKS]
-
Sign: given a message , private key (and ID that hashes to ), pick random and compute
Compute where is some hash function and output
-
Verify: given a tuple compute and check that