Provable security is a sub-discipline of cryptography that is used to demonstrate in a rigorous manner that cryptographic protocols are secure. Given a primitive, the first step in this process is to develop a model which formalises the security features we expect. Once a model is established, one tries to design protocols that can be proved secure in the model. Such proofs take the form of a contradiction. One begins by assuming the existence of an adversary that violates the security of the protocol. Using the adversary as a black box, one proceeds to show how it would be possible to solve some mathematical problem that is believed to be intractable. Provided the problem is indeed intractable, we can infer from this reasoning that no such adversary can exist. In this thesis we develop security models and protocols for two public key cryptographic primitives: digital signature schemes and signcryption schemes.