Non-Commutative Cryptography and Complexity of Group-Theoretic Problems