Dan Boneh and
Matthew K. Franklin defined a set of four algorithms that form a complete IBE system: •
Setup: This algorithm is run by the PKG one time for creating the whole IBE environment. The master key is kept secret and used to derive users' private keys, while the system parameters are made public. It accepts a
security parameter \textstyle k (i.e. binary length of key material) and outputs: • A set \textstyle \mathcal{P} of system parameters, including the message space and ciphertext space \textstyle \mathcal{M} and \textstyle \mathcal{C}, • a master key \textstyle K_m. •
Extract: This algorithm is run by the PKG when a user requests his private key. Note that the verification of the
authenticity of the requestor and the secure transport of \textstyle d are problems with which IBE protocols do not try to deal. It takes as input \textstyle \mathcal{P}, \textstyle K_m and an identifier \textstyle ID \in \left\{0,1\right\}^* and returns the private key \textstyle d for user \textstyle ID. •
Encrypt: Takes \textstyle \mathcal{P}, a message \textstyle m \in \mathcal{M} and \textstyle ID \in \left\{0,1\right\}^* and outputs the encryption \textstyle c \in \mathcal{C}. •
Decrypt: Accepts \textstyle d, \textstyle \mathcal{P} and \textstyle c \in \mathcal{C} and returns \textstyle m \in \mathcal{M}.
Correctness constraint In order for the whole system to work, one has to postulate that: : \forall m \in \mathcal{M}, ID \in \left\{0,1\right\}^*: \mathrm{Decrypt}\left(\mathrm{Extract}\left(\mathcal{P}, K_m, ID\right), \mathcal{P}, \mathrm{Encrypt}\left(\mathcal{P}, m, ID \right) \right) = m == Encryption schemes ==