Edited at

パスワードは定期変更すべきか?

More than 1 year has passed since last update.


パスワードの定期変更

パスワード定期変更を支持する側にも言い分はあるんです。それは、パスワードが漏洩したことが後になって判明した場合、そのパスワードが有効だった期間に基づいて、被害の範囲を局限することができるということです。定期変更していないと、いつからいつまでの間がセキュアでない状態だったのかを後から特定できませんので、非常に広い範囲にわたって「被害が出た可能性がある」と判断せざるを得なくなってしまいます。

一方で、パスワードの定期変更は益よりも害が大きいというのがコンセンサスになりつつあるという議論は、日経BP IT Proの 「パスワードの強制定期変更」は時代遅れ、企業に再考促す などに解説が載っていますが、要するに事の本質は、パスワードを記憶するのが人間の脳みそだという点にあります。

で、どうすればいいかというと、今のところ判断は分かれているようで、例えば、ISO/IEC 27002:2013の日本語訳であるJIS Q 27002:2014は、こうなっています。


9.4.3 パスワード管理システム

(中略)

パスワードの管理システムは,次の条件を満たすことが望ましい。

(中略)

e)パスワードは,定期的に及び必要に応じて変更させるようにする。

f)以前に用いられたパスワードの記録を維持し,再使用を防止する。


将来は分かりませんが、今のところは定期変更推奨です。


SSL/TLSサーバの秘密鍵・公開鍵の定期変更

TLSサーバの秘密鍵は人間の脳みそで記憶するわけではなく、サーバに保存するわけですから、定期変更不要論の対象ではありません。定期変更は有効です。

サーバ証明書には有効期限がありますから、普通は定期変更が行われますが、ときどき、前回のサーバ証明書申請の時に作ったCSRを保存しておき、更新申請のときに使い回す人がいます。これはお勧めできません。更新の都度、新しい秘密鍵・公開鍵を作って、CSRも新しいものを作って、それで更新申請するのが推奨です。HPKPを使っている場合だと、新しい鍵の作成とbackup PINの登録を事前に行っておく必要があって面倒ですが、そのぐらいの手間はかけましょう。


その他の秘密情報の定期変更

これも人間の脳みそではなく、サーバや通信機器に保存するデータですから、定期変更は有効です!しっかり定期変更しましょう!と、言いたいところですが、これがいろいろあるんですよね。


  • IPSecのPSK


  • Wi-FiのWPA2-PSKのPSK

    そもそもエンタープライズでPSKはないでしょう、IEEE802.1Xを使いなさいな、と、言うは易し行うは。。。予算とか。。。


  • RADIUSのshared secret

    偽RADIUSサーバや、偽RADIUSクライアント(Wi-Fi基地局など)を見破るための秘密値です。メーカーの設定例を見るとcisco123とかになっていますが、本番環境ではもちろん、こんな分かりやすい値ではダメです。


  • sshの公開鍵・秘密鍵

    問題は古い鍵の失効です。失効するにはサーバ上の.ssh/authorized_keysから該当エントリを消せばいいのですが、サーバの数が多くなってくると、これが不徹底になりがちです。


  • TLSでSession Ticket拡張を使う場合の秘密鍵

    これは、拙稿TLSセッション再開 (session resumption) のしくみで説明したものです。


  • TLSのPSK

    これが使わることは少ないですが、Zabbix 3のサーバ・エージェント間通信の暗号化では、これが使われます。


  • Kerberosの共有鍵

    KerberosのKDC(鍵配布センター)と各プリンシパル(サーバなど)は共有鍵を持っており、これを利用してKDCは、プリンシパルに解読可能なチケットを発行するのです。ところで、例えばActive Directoryで、ドメインに参加している各サーバとドメインコントローラは、共有鍵を定期変更しているんでしょうか。知りません。というわけで、恐縮ながらこの件、緩募とさせていただきたく存じます。


  • SNMPv3の認証パスワード、プライバシーパスワード

    snmpwalkを駆使して手動と根性で何とかする!という人は別として、普通はZabbixなりnagiosなり、何らかのツールを使うと思いますので、SNMPv3のパスワードをサーバに記録することになります。


  • RDBMSのパスワード

    MySQLやPostgreSQLなどのユーザID・パスワードは、CMSの設定ファイルに書き込んだりしてサーバに記録することが多いと思いますが、MySQL 5.7.4以降ではパスワードの有効期限を設定できます。この有効期限はデフォルトで無期限ですが、MySQL5.7.4~5.7.10はこのデフォルト値が360に指定されており、一年が経過するとパスワード有効期限切れでエラーが出る場合があるという話がスラドに載りました。


こんな感じで、言い出すときりがないんですが、正直なところ、こういうのの定期変更って、やってます。。。?


参考文献