idnetworks

サーバー攻撃からパスワードを守る
    E2EE(End to End Encryption) 

インターネットでサービスを利用するときによくIDとパスワードの入力が求められることがあります。

残念ながらパスワードが盗まれることが知られております。サーバーとクライアントのスニッフィングによるもの場合は通信経路をhttpsやsshのようなプロトコルを使用し暗号化することで防ぐことができます。

パスワードはデータベースに格納されるときに何らかの方法で暗号化されます。ただ単純な暗号だと管理者が復号鍵を入手し復号することが可能なので、非可逆のハッシュなどを利用したりすることもあります。

また最近パスワード漏洩がある事件が伝えれていますが、暗号化やハッシュ化をしてもそれらの対策では問題があると考えることもできます。

サーバー攻撃または管理者からパスワードを守るには

httpsではクライアントとサーバー間の経路でのスニッフィングは守ることができます。パスワードのハッシュ化や暗号化はデータベースに保管されたパスワードを守るのには有効です。

クライアント側でパスワードを暗号化していない場合はサーバー側でhttps暗号化されたデータが復号されます。これはサーバーを乗っ取った攻撃者や悪意のある管理者であればパスワードをそのまま盗むことが行えるようになっています。

パスワードを保護するには暗号を利用することだけでは守れないことがあると考えてられます。

ハッシュされたパスワードが漏洩した時の危険性

データベースが何らかの形で侵入されID/パスワードが漏洩する事件が起こることがあります。また、同一人物が複数のサイトを利用している場合同じID/パスワードの組み合わせを利用することがあるため、ほかのサイトで盗まれたID/パスワードを違うサイトで使用したということもありました。

きっと多くのサイトがパスワードを漏洩するリスクも考えて暗号化/ハッシュ化を行っているはずですが、上の事例ではパスワードは何らかの方法で復元されたと考えられます。

暗号化された場合は復号鍵がわかれば復元することができます。ハッシュ化された場合でも最近のPCの計算能力からするとトライアンドエラーでパスワードを復元できる可能性が高くなっており一般的に使用されているハッシュを解析するツールがあります。

したがってハッシュされたからといって安心してパスワードが盗まれることはないと安心することはできません。

どのようにしたら守れるだろう?

ユーザーが管理するパスワードはたとえ管理者であっても簡単に見られるようであれば、パスワード情報が漏洩する可能性が高くなります。またデータベースに格納されたパスワードの情報は簡単に復元しない方法で暗号化などを行う必要があります。

サーバー攻撃または管理者からパスワード情報を守るには

httpsを使用していてもサーバーに侵入したクラッカーや管理者からはパスワードが見られる可能性が十分にあります。

httpsの暗号が解かれるサーバーでもパスワードが何らかの形で暗号化されていることが望ましいと考えられます。

クライアント側でhttpsとは別に簡単にパスワードがわからないように暗号化(またはハッシュ化)することが必要です。

データベースでの保管方法

クライアントで暗号化した場合、その暗号化した値をデータベースに保存してもあまり意味はありません。データベースからパスワード情報が盗まれるとハッシュの解析と同様にトライアンドエラーでパスワードは解析されるためです。したがって受け取った値からさらに暗号して保管するなどの対処が必要になることが考えられます。

また、データベースから復号したものは管理者といえども見えないのが望まれます。

パスワードの検証

パスワードを検証するのにWebサーバーやアプリケーションサーバーで行うと結局管理者にもいずれどのようにパスワードを守っているか理解されるようになります。

そこでi-Sprintでは暗号鍵の管理に使用されているHSM(Hardware Security Module)を使用することでパスワードの保護を実現しています。

クライアントで暗号化されたパスワードは直接HSMに送られ、データベースに格納されたパスワードの情報をもとに検証を行い、パスワードが合致しているか合致していないかの情報をアプリケーションサーバーに送付します。

i-Sprint社が用意した形で利用され主なベンダーのHSMでE2EEを実現できます。E2EEではHSMで以下の機能を利用します。

    • 暗号化/復号
    • ハッシュ
    • マスター暗号鍵の保護
    • ランダムな番号の生成
    • 初期パスワード生成
    • パスワードの検証

旧メニュー