Topics インフォコネクト最新情報

BASIC認証のパスワードが8文字までしか有効じゃない?その危険性と9文字以上有効にする方法をご紹介

BASIC認証のパスワードが8文字までしか有効じゃない?その危険性と9文字以上有効にする方法をご紹介

BASIC認証のパスワードが8文字までしか有効じゃない?その危険性と9文字以上有効にする方法をご紹介

こんにちは、チーフクリエイターのSHOJIです。

簡易的なアクセス制限のためBASIC認証がよく利用されますが「長くて複雑なパスワードを設定しているから大丈夫!」みなさんそう思っていませんか?

実は、BASIC認証で使われる一部のパスワード形式では、先頭8文字までしか有効になっていないという、思わぬ落とし穴が存在します。

これを知らず運用していると、いくら長くて複雑なパスワードを設定していても、実際には8文字までしか見ていないという脆弱な状態になっているかもしれません。

今回は、この仕様がもたらすセキュリティ上のリスクと、その解決策として有効な「bcrypt方式によるBASIC認証」についてご紹介します。

BASIC認証とは?

BASIC認証とは、Webサイトなどへのアクセスを制限するための認証方式のひとつで、ユーザー名とパスワードを入力させることで、特定のユーザーのみにアクセスを許可することができます。

ApacheなどのWebサーバーでよく使われ、.htaccess.htpasswdファイルを用いて設定します。

Basic認証の仕組み

①ユーザーがBasic認証が設定されたURLにアクセスしようとすると、ブラウザにユーザー名とパスワードの入力ダイアログが表示されます。

②ユーザーがユーザー名とパスワードを入力し、送信すると、その情報はBase64でエンコードされてサーバーに送信されます。

③サーバーは受信した情報を検証し、正しければアクセスを許可、間違っていれば再度入力を求めます。
 

パスワードが8文字ましか有効になっていない理由

BASIC認証でよく使われる.htpasswdファイルは、ユーザー名とハッシュ化されたパスワードが記録されたものですが、このハッシュ化に使われるcrypt方式ではもともと8文字までのパスワードしか扱えない仕様になっています。

例えば、以下のように2つのパスワードを設定したとします。
「security0」
「security0123456」
2つのパスワードをcrypt方式でハッシュ化すると9文字目以降は切り捨てられ、同じハッシュ値となり8文字目までが有効となるパスワードとなってしまうわけです。

セキュリティ上のリスク

このような仕様を知らないまま運用すると、以下のようなセキュリティ上のリスクが生じます。

①実質8文字とパスワードが短くなってしまうため、設定した強力なパスワードの効力がない

ソルトSalt)が2文字と短いため、ブルートフォース攻撃に対する耐性が低い

③企業や組織でパスワード要件が決められていた場合、セキュリティポリシーの違反になるおそれ
 

9文字以上有効にするbcrypt方式

BASIC認証で9文字以上のパスワードを有効にするには、bcrypt方式を利用するのが効果的です。

bcrypt方式は、Blowfish暗号をベースとして設計されたパスワード専用のハッシュアルゴリズムで、72文字まで有効となり、複雑で長いパスワードを使うことが可能になることから、企業や組織のセキュリティポリシーに準拠しやすくなります。

ただし、ハッシュ化する際にbcrypt方式を採用するにはそれなりの知識が必要となるので、bcryptに対応しているツールを使うと便利です。

ラッコツールズの「htpasswd 作成」ではbcryptやcrypt()だけでなく、MD5SHA-1などといったハッシュアルゴリズムにも対応しているので、用途にあわせて利用してみるといいでしょう。

ラッコツールズhtpasswd作成
https://rakko.tools/tools/20/

bcrypt方式を採用する主なメリット

① パスワード長の制限が実質的になくなる
古いcrypt方式(DESベース)は8文字までしか認識できませんが、bcryptは72文字までが有効で、複雑で長いパスワードをそのまま使えるため、企業や組織のセキュリティポリシーに準拠しやすくなります。

② 総当たり攻撃に強い
bcryptはストレッチング(計算を遅くする仕組み)を備えており、悪意ある攻撃者が短時間で大量のパスワード候補を試すのを防ぎます。 また、コストパラメータ(ワークファクター)を調整することで、サーバーの性能に合わせて計算量を増やすことが可能です。
例:コスト値が12の場合、ハッシュ生成にはおおよそ 2^12 (= 4096) 回の計算が必要となる。

③ ソルトを自動生成・埋め込み
bcryptはランダムなソルト(salt)を自動的に生成し、ハッシュに組み込むため、同じパスワードでも毎回異なるハッシュ値になります。これによって、レインボーテーブル攻撃(事前計算されたパスワード・ハッシュ対応表による攻撃)が無効化されます。

④ 古いアルゴリズムより安全性が高い
crypt方式(DESベース):8文字制限、短いソルトのため脆弱
MD5方式:長さ制限はないが、計算が速すぎて総当たりに弱い
bcrypt方式:長さ制限がほぼなく計算コスト調整も可能で、ランダムなソルトを自動的に生成

 
bcryptは現時点でも多くのセキュリティガイドライン(NIST、OWASPなど)で推奨されています。
 

まとめ

BASIC認証は設定が簡単で手軽なアクセス制限手段ですが、crypt方式を使っていると、8文字までしか認識されないという重大な欠点があります。

9文字以上のパスワードを設定しているにもかかわらず、その内の8文字だけの入力で認証されるとしたら、古いパスワード形式でハッシュ化されたパスワードの可能性が高いと言えます。

これは単なる仕様ではなく、攻撃者にパスワード強度のヒントを与える危険性も考えられるので、9文字以上のパスワードを積極的に使用するよう心掛けましょう。

ですが、パスワードは長くするだけで安全になるわけではありません。「認証システムの仕組み」まで理解することが、真のセキュリティ対策です。

もし、みなさんが運用しているWebサイトにBASIC認証を使っているなら、ぜひ一度 .htpasswd の中身とハッシュ方式をチェックしてみてください。
 

Webの豆知識]関連記事

Service

Contact

インフォコネクトに相談してみませんか?

経営コンサルティングからITサービス活用支援、ホームページ制作などに関するご依頼や、ご質問・ご相談など、なんでもお気軽にお問い合わせください