平成23年度秋期情報セキュリティスペシャリスト試験の午後問2を題材に、システムへの機能追加時に潜む脆弱性とセキュア設計の思考プロセスを解説します。パスワード初期化機能の追加を例に、認証と認可の混同や状態遷移の確認漏れ、メール盗聴リスクなどの失敗ポイントを学びます。また、2026年現在の最新技術を用いたモダンな設計へのアップデート方法も紹介する動画です。
情報システムにおいてパスワードを安全に管理するために不可欠なのがハッシュ関数です。パスワードはそのまま保存するのではなく、ソルトと呼ばれるデータを付加した上で、不可逆な一方向関数を用いてハッシュ値として保存することが基本となります。これにより、データが漏洩した場合でも元のパスワードを復元されるリスクを低減できます。しかし、現在ではGPUの計算能力向上により高速解析されるリスクが増しているため、意図的に計算コストを高く設定して辞書攻撃などを防ぐ役割を持つモダンなアルゴリズムを採用することが推奨されています。また、システム設計において陥りがちな罠として、認証と認可の混同が挙げられます。入力されたパスワードが正しいことを確認する認証が成功したとしても、システムはユーザーの現在の状態を把握し、それに応じた認可を行わなければなりません。例えば、連続してログインに失敗しロックアウト状態にあるアカウントや、管理者によって利用停止のサスペンド状態にされているアカウントに対しては、状態遷移のビジネスロジックに従って適切な制限をかける必要があります。人間が行っていた運用を自動化する際に、このような文脈の判断をプログラミングし忘れることが最大の事故原因となるため注意が必要です。さらに、システムから送信される通知メールの取り扱いについても慎重な設計が求められます。メールの通信経路は暗号化されているとは限らず、盗聴される前提で設計する必要があります。そのため、パスワードの初期化機能などを設計する際に、取得ページのURLなどの機密情報を平文のメールで安全な受け渡し場所として利用することは危険です。攻撃者がメールを盗聴し、正当な利用者よりも先にそのURLにアクセスして情報を奪取する手口を想定しなければなりません。このようなリスクを回避するためには、平文の通知メールを本人確認の絶対的な手段として過信せず、別の経路を用いたプッシュ通知やマジックリンクなどを組み合わせた設計が効果的です。そして、究極的な認証の形として、パスワード自体に依存しない仕組みへの移行が進んでいます。生体認証などを活用し、そもそもサーバー側にパスワードを保存しない技術が普及しつつあります。システムに新たな機能を追加する際には、現行の設計を十分に考慮せず不用意に追加を行うとセキュリティ上の問題が発生しやすいため、状態遷移と経路のリスクを見極めてセキュアな設計を目指すことが不可欠です。 www.youtube.com