Tag: 加密技术

Ruby的OpenSSL :: Random的种子是否充足?

我对Ruby知之甚少,所以请原谅我,如果答案是显而易见的。 我在http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html注意到Ruby在调用random_bytes时使用pid和当前时间来播种OpenSSL :: Random是。 除非发生其他事情,否则这不是Netscape在90年代中期初始SSL实施中使用的种子吗? http://en.wikipedia.org/wiki/Random_number_generator_attack#Prominent_examples_of_random_number_generator_security_issues 当然,Ruby还没有复活一个18岁的小虫。 我在这里想念的是什么? 编辑:这是random_bytes的来源。 请注意第一次检查是否使用OpenSSL编译ruby,在这种情况下,它会使用pid和当前时间对其进行种子处理。 def self.random_bytes(n=nil) n = n ? n.to_int : 16 if defined? OpenSSL::Random @pid = 0 if !defined?(@pid) pid = $$ if @pid != pid now = Time.now ary = [now.to_i, now.nsec, @pid, pid] OpenSSL::Random.seed(ary.to_s) @pid = pid end return OpenSSL::Random.random_bytes(n) end if !defined?(@has_urandom) || @has_urandom […]