We promote an engineering approach to design of provably secure key exchange protocols. Using the model of Canetti and Krawczyk we present a systematic method to arrive at efficient and practical protocols with proven security and illustrate its use with existing building blocks. We further show a dual approach which allows protocols with known features to be ‘reverse engineered’, thereby allowing easier security proofs and providing new building blocks for future designs.