Session
Tomcatが起動しない!? Java SecureRandomと乱数デバイスの罠~LinuxとWindowsで異なる挙動と、Javaでの正しい選択~
Linux上でJavaアプリケーションを運用していたある日、Tomcatの起動が異常に遅くなりました。
原因は「乱数生成器」でした。
JavaのSecureRandomは、OSの乱数デバイスや内部実装を利用して動作します。
特にLinuxでは、カーネルの/dev/randomと/dev/urandomの扱いによって、エントロピー不足時にブロックが発生し、
アプリケーションの起動が数分間止まることがあります。
一方でWindowsでは、OSのCSPRNG APIを利用しているため、この問題は発生しません。
さらにJavaには複数のSecureRandomプロバイダがあり、選択によって挙動が大きく変わります。
・NativePRNGBlocking → /dev/random依存でブロックリスク大
・NativePRNGNonBlocking → /dev/urandom利用で安定
・DRBG (JDK9+) → NIST準拠でセキュアかつノンブロッキング
本セッションでは、
・JavaとOS乱数生成の違い
・実際に遭遇した「Tomcat起動遅延」の事例(Linux)
・Windows環境では問題が起きない理由
・SecureRandomの実装ごとの違いと選び方
・運用者が取るべき具体的な回避策(オプション設定・DRBG活用など)
を20分でわかりやすく解説します。
乱数生成と聞くと難しく思われがちですが、
実務で起こる「Tomcatが起動しない!?」という
直感的にわかりやすいトラブルを起点に、
Javaエンジニアが知っておくべき乱数生成の仕組みと運用ノウハウをお持ち帰りいただけます。
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top