パスワードの暗号化とは、どの程度まで可能なのか?
パスワードの暗号化は、データベースに保存されたユーザー認証情報の安全な保管に不可欠です。パスワードが暗号化されていないと、ハッカーを含む誰でも企業のサーバー上のユーザーデータベースにアクセスし、保存されているパスワードを簡単に見ることができてしまいます。
安全なパスワードジェネレーターを使って作成した32文字の強力なパスワードも、パスワードの暗号化なしには何の役に立ちません! もし誰かがサーバー上のパスワードを読むことができれば、どんなに長くて複雑なパスワードでも、コピー&ペーストするだけで使えてしまいます。
暗号化により、パスワードをサーバーに保存する前にスクランブル処理されていれば、もし誰かがサーバーをハッキングした場合でも、本物のパスワードの代わりに、ランダムな文字と数字の組み合わせが見られるだけで済みます。
本記事では、強力なパスワードが重要な理由や、より良いパスワード管理を実践する方法など、パスワードの暗号化をテーマにみていきます。
TeamPassword は中小企業のためのパスワード管理ソリューションです!従業員、請負業者、顧客と安全にログイン情報を作成、保存、共有できます。早速 14 日間の無料トライアルにサインアップして、ぜひご体験ください。
Table of Contents
パスワードの暗号化について
パスワードの暗号化を効率よく説明するには、まず用語の把握が必要です。聞き慣れない用語がいくつかあるかもしれないので、ここでパスワード暗号化の用語を簡単に紹介します。
- キー:ランダムなビット列を使ったパスワードのロックや解除のために使用される。(データの暗号化と復号化が異なる「秘密鍵」と「公開鍵」がありますが、鍵についてはここではあまり深入りしないようにします。)
- ビット:1/0、True/False、Yes/No、On/Offなど、2つの値のいずれかを持つ論理状態。
- ブロック(ブロック暗号):固定長のビット群に対して動作する決定論的なアルゴリズムであり、ブロックと呼ばれる。
- ハッシュ関数:パスワードの暗号化・復号化のためにキーを使用するアルゴリズム。基本的に、パスワード保存や、アプリケーションへのログインの度に実行されるコードの一部である。
- ハッシュ:パスワードを表すランダムな数字と文字の羅列。ハッシュ関数では、生のパスワードの代わりにハッシュを認証に使用する。
- ソルト:ハッシュに追加される文字と数字。
パスワードの暗号化の仕組み
新しいパスワードを保存する際、ハッシュ関数がハッシュ版を作成し、それをサーバーに保存します。
パスワードを使ってログインするたびに、ハッシュ関数はハッシュを再作成し、保存されているものと一致するかどうかを確認します。ハッシュが一致すれば、アルゴリズムは認証をパスし、ログインができます。
以下に例を挙げましょう。
- 元のパスワード:Pa$$w0rd123
- ハッシュ化されたパスワード:6AF1CE202340FE71BDB914AD5357E33A6982A63B
これは安全なように見えるかもしれませんが、単純なハッシュ化されたパスワードはハッキングに強いわけではありません。
ハッシュ関数は、各パスワードに対して一意なハッシュを作成するだけで、各ユーザーに対して作成するわけではないので、複数のユーザーが 『Pa$$w0rd123』というパスワードを持っている場合、そのハッシュはまったく同じになります。
そこでこの暗号化の脆弱性を克服するために、エンジニアはパスワードにソルトをかけ、たとえ同じパスワードであっても、それぞれのハッシュが一意になるようにします。
ソルトの仕組み
ソルトは、ハッシュ関数がハッシュを作成する前に、パスワードに8バイト(16文字)のユニークな値を付加します。そうすることで、同一のパスワードであっても、ハッシュ関数の前では一意となります。
以下に例を挙げます。
- 同じパスワードが2つ:Pa$$w0rd123
- ソルト値1:E1F53135E559C253
- ソルト値2: 84B03D034B409D4E
- ハッシュ化する前のパスワード1: Pa$$w0rd123E1F53135E559C253
- ハッシュの前にパスワード2:Pa$$w0rd12384B03D034B409D4E
- パスワード1のハッシュ値(SHA256):72AE25495A7981C40622D49F9A52E4F1565C90F048F59027BD9C8C8900D5C3D8
- パスワード2のハッシュ値(SHA256):B4B6603ABC670967E99C7E7F1389E40CD16E78AD38EB1468EC2AA1E62B8BED3A
一般的なパスワード暗号化方式5選
1.DES(Data Encryption Standard)
アプリケーションではもはや DES(Data Encryption Standard)は使われていませんが、このパスワード暗号化方式については、その歴史と、より安全な現代の標準に与えた影響から、触れておくことが重要でしょう。
DESは、1970年代初頭に56ビット暗号化技術として IBM によって開発され、NSA(アメリカ国防総省の情報機関)に採用・改良された後、暗号化標準として世界的に承認されました。
しかし、70年代後半から、 DES で暗号化されたパスワードはハッカーに破られるようになり、1999年には、倫理的なハッカーが DES の鍵の24時間以内の解除に成功しました。
そこで DESをより安全にするために、エンジニアによって3DES(トリプルDES)が作られ、その後、現在も使われているAES(高度暗号化標準)ができました。
2.3DES(トリプルDES)
3DESは、56ビットの鍵(ブロック)を3つ使って168ビットの暗号化を行います(ただ一部のセキュリティ専門家は、3DESは112ビットの強度に過ぎないと主張しています)。3DESは徐々に廃止されつつありますが、多くの金融機関で ATMの暗証番号の暗号化に今も使用されています。
3.AES(高度暗号化標準)
AES は、米国政府をはじめ、世界の多くの著名な組織で信頼されている新しい暗号化標準です。AES は128ビットで十分な安全性を確保していますが、多くの組織では256ビットの高負荷な暗号化が希望されています。
TeamPassword では、パスワードの保存に256ビットの暗号化を使用しており、それによって最高レベルのセキュリティが保証されています。また、複数のセキュリティ認定を受けた安全なホスティングプロバイダでもあります。
ハッカーがAESで暗号化されたパスワードを破るには、パスワードの組み合わせを試すブルートフォースアタック(総当たり攻撃)しかありません。
ブルートフォースアタックに対抗すべく、アプリケーションは一定回数の試行後にアカウントをロックするか、Googleの reCAPTUREのようなツールを使います。
4.Blowfish
Blowfish は アメリカの暗号学者であるブルース・シュナイアー氏によって、脆弱な DES 暗号に対する解決策として1993年にデザインされ、64ビットのブロックと32〜448ビットの可変長の鍵が使われます。
Blowfish は前身のDESに比べてより強固になりましたが、64ビットブロックは、アルゴリズムの背後にある数学を悪用した暗号攻撃(バースデーアタックが最も一般的)があるなど、攻撃に対する脆弱性が残っています。
Blowfish の脆弱性を解消するため、1998年に128ビットブロックと256ビットキーの『Twofish』、2008年に256、516、1024ビットブロックと256、516、1024ビットキーの『Threefish』 が開発されました。
5.RSA( Rivest-Shamir-Adleman )
RSA(Rivest-Shamir-Adleman)は最も古く、データの安全な転送のために広く使われているものの1つです。この暗号は、2つの鍵、2つの大きな素数、および追加の補助値で動作します。
RSA 暗号は、暗号化・復号化が複雑なため、解読法は知られていません。
RSA はデータ転送において広く使われていますが、速度が遅く、パスワードの暗号化には向いていません。
強力なパスワードが重要な理由
パスワードの暗号化は、サーバーに保存された情報が犯罪者に見られるのを防ぐだけで、ハッカーが弱いパスワードやよく使われるパスワードを推測することは防げません。そのため、複数のアカウントで同じパスワードを使いまわしている場合も、危険な状態にあります!
暗号化は、ユーザーが各アカウントに強固でユニークなパスワードを作成するのに最も効果的であり、例えば、文字、数字、特殊文字をハッシュ化し、ソルト化した32文字のランダムなパスワードは、コンピュータを使っても推測や解読はほぼ不可能です。
別の例を紹介します。32文字の強力なパスワードがあるとして、それをどのアカウントにも使うとします。もし、ハッカーがそのパスワードを盗んだら、同じ認証情報が使われているアカウントすべてにアクセスできてしまいます!強力なパスワードは、事実上無意味なのです。
パスワード管理の改善
パスワードの暗号化とそれに伴う脆弱性についてご理解いただけたところで、なぜ強力なパスワードが不可欠なのか、わかってきたと思います。
効果的なパスワード管理は、サイバー攻撃から身を守るために、またはハッカーが資格情報を盗む可能性が非常に高いデータ侵害が発生した場合に非常に重要です。
犯罪者は、弱いパスワードを使っている人、「盗みやすい人」を狙っているのです!
より強力なパスワードを作成するための5つのヒント:
- 全アカウントにそれぞれ強力なパスワードを作成する。パスワードジェネレーターを使うのが一番簡単です。TeamPasswordには、誰でも使える無料のパスワードジェネレーターがあり、大文字、小文字、数字、特殊文字を使用して12〜32文字のパスワードの作成ができます。アプリケーションで許可される範囲で、できるだけ長いパスワードを作成することをお勧めします。
- パスワードは絶対に8文字以上。最低でも12文字とすることを推奨します。
- 複数のアカウントで同じパスワードを絶対使い回さない。
- 自分の名前、家族の名前、ペットの名前などを使ったパスワードは絶対に作らない。SNS では、そのような情報を自由に利用でき、犯罪者は、このような名前をアルゴリズムに追加して、ブルートフォース攻撃を行うことができます。
- パスワードをデジタルメモ帳やスプレッドシートに保存しない。TeamPassword のようなパスワードマネージャを使って、認証情報の作成・保存をお勧めします。
TeamPasswordのようなパスワードマネージャーが必要な理由
私たちはSNSやサブスクなど非常に多くのアカウントを保有していますが、それぞれのアカウントにユニークで覚えやすく、安全なパスワードを作成することはほぼ不可能です。そこで、この問題を解決してくれるのが、パスワードマネージャーです。
パスワードマネージャーを使えば、各アカウントの認証情報をそれぞれ記憶する代わりに、パスワードマネージャーにログインするための認証情報を記憶すれだけで済みます。
TeamPassword ではすべての認証情報が安全に保管・暗号化されるので、もうパスワードを覚える必要はありません。アカウントへのログインには、認証情報を入力する代わりに、TeamPassword のブラウザ拡張機能 である Chrome、Firefox、Safari のいずれかを使用します。
チームのために
TeamPasswordの最大の特徴は、チームメンバーと安全に認証情報を共有することができる点であり、パスワードを共有する代わりに、TeamPassword を通したアクセスを提供します。
社員はTeamPasswordを使ってログインするため、生のパスワードを共有する必要がなく、不正アクセスや共有の心配がありません。
TeamPassword でグループを作って、従業員、顧客、請負業者、フリーランサーとアクセスを共有することができ、誰かがアクセス権を必要としなくなったら、クリック 1 つでグループから外せます。誰かがプロジェクトを離れるたびにパスワードを変更する必要はないのです!
パスワード生成機能内蔵
TeamPasswordには安全なパスワードマネージャが内蔵されているので、全アカウントにそれぞれ強固なパスワードを作成することができます。また、TeamPasswordは、認証情報のクレデンシャルスタッフィング攻撃の被害に遭わないように、同じ認証情報の使い回しはしません!
パスワード生成機能が内蔵されているので、定期的なパスワード変更ができ、TeamPasswordが全ユーザーの新しい認証情報を更新します!
ログイン状況の監視
TeamPassword のアクティビティ記録は、ログイン、パスワードの変更、新しいチームメンバー、アクセス権の共有など、全アカウントでの全アクションを記録します。
また、疑わしいアクティビティに迅速に対応できるように、TeamPassword の全アクションに対してメールによる通知の設定ができます。
TeamPasswordの無料お試しをやってみよう
パスワードの脆弱性からビジネスを守るには、パスワードの暗号化だけでは不十分であり、 認証情報の安全な作成、保存、共有には、TeamPasswordのような強固なパスワードマネージャが必要です!
14日間の無料トライアルにサインアップして、TeamPasswordで企業のデジタル資産を保護しましょう。