haveged
仮想マシンでエントロピーをより速く補充するためにインストールします。
を生成するのに十分なエントロピーがない可能性がありますが、そこUUID
から ランダム性が簡単に失われます。特に仮想マシンでは。したがって、仮想マシンは文字通り、よりランダム性が可能になるのを待っています。新しい種類のエントロピーを収集することで、そのランダム性をすばやく補充するのに役立ちます。SecureRandom
jRuby
haveged
インストール中...
ダウンロード: http://www.issihosts.com/haveged/downloads.html
Mint や Ubuntu などの Debian ライクな Linux フレーバーでは、次のようにします。
sudo apt-get install haveged
SecureRandom
これは、以下の既知の問題jRuby
です...
過去にもこの問題があり、strace
問題を特定するために使用する必要がありました。このファイルに注目してください。これは、質問で言及した行の直前にロードされたものです ... internals/uuid.rb
:
require "securerandom"
module Celluloid
module Internals
# Clearly Ruby doesn't have enough UUID libraries
# This one aims to be fast and simple with good support for multiple threads
# If there's a better UUID library I can use with similar multithreaded
# performance, I certainly wouldn't mind using a gem for this!
module UUID
values = SecureRandom.hex(9).match(/(.{8})(.{4})(.{3})(.{3})/)
PREFIX = "#{values[1]}-#{values[2]}-4#{values[3]}-8#{values[4]}".freeze
#de ...
end
end
end
9
コードの接頭辞として使用できる16進数の文字列を生成するため、これは問題のあるコードでしたUUID
... using SecureRandom
.
その後、Celluloid::Internals::UUID.generate
メソッドを介してそれを使用します。しかし、ロード時に、Celluloid::Internals::UUID
モジュールは次のような問題があったSecureRandom
... を必要とする操作を実行します。jRuby