In a cryptographic system the most secret component is the key. Therefore, a great caution must be given in the key management, which concerns how the keys are produced, loaded, renovated and distributed. Cryptographic keys are generated using various types of random number generators (RNG). If these RNG are not secure, they will constitute the weakest point of the cryptosystem, which might be susceptible to various attacks. In this study we examine the basic components and the security weaknesses of deterministic and non-deterministic RNGs and we propose some improvements in their design methods and evaluation procedures.