シャドウパスワード(シャドウパスワード)とは | 意味や読み方など丁寧でわかりやすい用語解説

シャドウパスワード(シャドウパスワード)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

シャドウパスワード (シャドウパスワード)

英語表記

shadow password (シャドウパスワード)

用語解説

シャドウパスワードとは、UnixやLinuxのようなオペレーティングシステムにおいて、ユーザーパスワードのハッシュ値を安全に管理するための仕組みである。従来のシステムでは、ユーザー名やその他の情報とともにパスワードのハッシュ値が/etc/passwdというファイルに保存されていた。この/etc/passwdファイルは、システム内のすべてのユーザーが読み取り可能であったため、悪意のあるユーザーがパスワードハッシュを取得し、オフラインでパスワードを解読(クラッキング)するリスクが存在した。シャドウパスワードの導入により、このセキュリティ上の脆弱性が解消された。パスワードのハッシュ値は/etc/shadowという別のファイルに分離され、このファイルはシステム管理者(rootユーザー)のみがアクセスできる厳重な権限設定がなされている。これにより、パスワードハッシュが一般ユーザーから隠蔽され、システムのセキュリティが大幅に向上した。

シャドウパスワードシステムが導入される以前の/etc/passwdファイルは、ユーザー名、ユーザーID(UID)、グループID(GID)、ホームディレクトリ、シェルなどの情報に加え、暗号化されたパスワード(パスワードハッシュ)も含まれていた。このファイルのアクセス権限は通常、rw-r--r--(パーミッション644)であり、すべてのユーザーが読み取り可能であった。このため、システム上の誰でもこのファイルを閲覧し、パスワードハッシュを入手できる状態だった。パスワードハッシュは、元のパスワードから一方向にしか変換できない(不可逆変換)ため、ハッシュ値から直接元のパスワードを逆算することは不可能である。しかし、ハッシュ値と既知のパスワードリスト(辞書)を比較したり、考えられるすべての組み合わせを試す総当たり攻撃を行ったりすることで、元のパスワードを推測することが可能であった。このオフラインクラッキングのリスクは、システムの脆弱性として長らく認識されていた。

シャドウパスワードは、この問題に対処するために開発されたセキュリティ機構である。具体的には、/etc/passwdファイルからはパスワードハッシュ値を取り除き、その代わりにxなどのプレースホルダー文字が置かれる。そして、実際のパスワードハッシュ値や、パスワードの有効期限に関する詳細な情報、例えばパスワードの変更履歴や有効期限設定などは、/etc/shadowという新しいファイルに保存される。

/etc/shadowファイルのアクセス権限は非常に厳しく設定されており、通常はr--------(パーミッション400)またはrw-------(パーミッション600)となっており、システム管理者であるrootユーザーのみが読み取り(または読み書き)できる。他の一般ユーザーはこのファイルを一切読み取ることができないため、パスワードハッシュ値が外部に漏洩するリスクが極めて低くなる。

/etc/shadowファイルには、各ユーザーごとにコロン(:)区切りのフィールドで情報が格納されている。主要なフィールドは以下の通りである。

  1. ユーザー名: 該当するユーザーのアカウント名を示す。
  2. 暗号化されたパスワードハッシュ: 実際のパスワードを不可逆的に変換したハッシュ値が格納される。この値がユーザー認証時に比較される。
  3. 最終パスワード変更日: ユーザーが最後にパスワードを変更した日を、1970年1月1日からの日数(エポックからの日数)で示す。
  4. パスワードの最短変更間隔: 最終パスワード変更日から、次にパスワードを変更できるようになるまでの最短日数を設定する。例えば「7」が設定されていれば、パスワードを変更してから7日間は再変更できない。
  5. パスワードの最長有効期間: 最終パスワード変更日から、パスワードが有効である最長日数を設定する。この期間を過ぎると、パスワードは期限切れとなり、ユーザーはログイン時にパスワードの変更を促されるか、ログインできなくなる。
  6. パスワード有効期限切れの警告期間: パスワードの有効期限が切れる何日前に、ユーザーに対して警告メッセージを表示するかを設定する。
  7. アカウント無効猶予期間: パスワードの有効期限が切れた後、ユーザーがログインを試行できる猶予期間を設定する。この期間を過ぎると、アカウントはロックされ、ログインできなくなる。
  8. アカウント失効日: ユーザーアカウントが完全に無効化される日を、1970年1月1日からの日数で示す。この日を過ぎると、アカウントは利用できなくなる。
  9. 予約フィールド: 将来の利用のために予約されているフィールドで、通常は空になっている。

ユーザーがシステムにログインする際には、入力されたパスワードがシステムによってハッシュ化され、その結果が/etc/shadowファイルに保存されている当該ユーザーのハッシュ値と比較される。両者が一致した場合にのみ、認証は成功とみなされ、ユーザーはシステムへのアクセスを許可される。この認証プロセスは、root権限で動作するシステム内の認証プログラムによって安全に実行される。

passwdコマンドなどを使ってユーザーが自身のパスワードを変更する際も、このコマンドはroot権限で実行され、新しいパスワードのハッシュ値を計算して/etc/shadowファイルを更新する。また、chageコマンドを使えば、パスワードの有効期限に関する上記のような様々な設定値をシステム管理者が変更することも可能である。

シャドウパスワードシステムは、現代のUnix/Linux系オペレーティングシステムにおける標準的なセキュリティ機能であり、パスワード管理の堅牢性を大幅に向上させている。システムエンジニアを目指す者にとって、このセキュリティ機構の理解は不可欠である。これにより、システム管理者としてユーザーアカウントを安全に管理し、潜在的なセキュリティ脅威からシステムを保護するための基盤となる知識が得られる。