A hard-core predicate for all one-way functions
A method for obtaining digital signatures and public-key cryptosystems