公開鍵暗号方式の秘密鍵のパスフレーズは不要?

概要

公開鍵暗号方式を用いた通信 (SSL/TLS,HTTPS) では秘密鍵にパスフレーズを設けることができる。SSHの秘密鍵や,HTTPS通信で使用するサーバー秘密鍵などの生成時にパスフレーズの設定を考えることがある。

このパスフレーズの是非が気になった。当然ながら,パスフレーズがあるとセキュリティは頑丈になるが,逆に手間が増える。

インターネットで調べたところ,秘密鍵にはパスフレーズを付けないことが多いという言及 (OpenSSL による CSRの作成について | サイフにやさしいSSL証明書) を見かけた。

そこで秘密鍵のパスフレーズの是非について調べて考えた。

調査

秘密鍵のパスフレーズの是非について調べたところ,以下のサイトがヒットした。

  1. SSH秘密鍵のパスフレーズは(つけるなら)11文字以上にしましょうねという話 – 本当は怖いHPC
  2. SSH – 秘密鍵をパスフレーズで暗号化する理由|teratail

特に1番目のサイトが参考になったので,内容を以下にも掲載したい。

基本的に秘密鍵はインターネット上に流さず,一度作ったらローカルパソコンに残ったままである。ネットワーク越しのパスワードとは性質が異なる。Zipファイルのパスワードと似ている。だから,パスフレーズがなくてもあまり問題にならない。

SSH秘密鍵のパスフレーズが役に立つのは以下のケースとなる。

  1. 秘密鍵(とシェルのログ)を盗まれ、
  2. 秘密鍵を盗まれたことに気づき、
  3. 素早くすべての接続先ホストにおいて盗まれた秘密鍵を無効にする

基本的に秘密鍵で問題が発生する場合は,攻撃者に秘密鍵を奪われるケースとなる。つまり,攻撃者はじっくりパスフレーズを解析することができる。

時間を稼ぐという観点から,パスフレーズをつけるならば,11文字以上にしたほうがいいらしい。

結論

ここまで,秘密鍵のパスフレーズの是非について意見を見てきた。

調べた限りでは,はっきりつけるべき,つけないべきという意見は見当あたらなかった。

しかし,AWSなどのクラウドサービスに証明書を登録する場合,パスフレーズで保護されているとインポートできなかったりする (参考: 証明書をインポートする前提条件 – AWS Certificate Manager)。

その他,パスフレーズが存在することで,Webサーバー起動時に毎回パスフレーズの入力が要求される。

個人的な所感としては,秘密鍵の流出ケースがほぼなく,手間の増加の欠点のほうが目立つので,パスフレーズはつけなくてよいと思った。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です