While some researchers have aimed at efficiency, they have often developed algorithms without proving them secure. Conversely, researchers focussed on provable security have often produced impractical algorithms. Providing both performance and provable security entails great effort in each domain, often entailing a strange marriage of mathematics with implementation considerations. It is not unusual for researchers to be seeking a generator of a random cyclic group while at the same time worrying about whether finding one will cost too many machine cycles. This research effort aims to address these problems by developing cryptographic algorithms that are vigorously optimized, yet retain proven security. Moreover, for each algorithm a carefully-tested implementation will be provided, along with a specification for porting to other platforms. Finally, the most promising algorithms will be forwarded to standards activities in order to make them widely available. The planned results are to provide the user community with fast, secure algorithms with freely-available reference code; to encourage other researchers to expend efforts in these directions when publishing new protocols, and to introduce students to the cross-disciplinary nat