=> /blog.gmi ブログ一覧へ #【セキュリティ】殆どの日本のウェブサイトは非常に弱いパスワードを要求している 投稿日:2024-04-29 西洋のウェブサイトと日本のウェブサイトのパスワードポリシーの間には、強い対照があります。 西洋のウェブサイトでは、強力なパスワードの使用が大変推奨される事がよくありますが、殆どの日本のウェブサイトでは、弱くて推測し易いパスワードが必要です。 何故でしょうか? 利便性の観点から見ると、覚え易いです。 しかし、サイバーセキュリティの観点から見ると、これは非常に危険な習慣です! ## 安全なパスワードとは? 安全なパスワードは覚え憎いですが、推測し憎いパスワードで、少なくとも20文字以上で、多くの異なる大文字、小文字、数字、及び特殊文字(!"#$%&'()~=~-^|\{}[]`*@:+;<>?,./_)のランダムな組み合わせを含みます。 パスワードの総文字数は64文字以上を推奨します! ## 64文字!?それは覚えられないわ! 今日では、本当に優れたパスワードマネージャーがありますので、覚えたり入力したりする必要はありません! => https://gitler.moe/suwako/sp その様なパスワードマネージャーの1つに、パスワード創作、とTOTP(ワンタイムパスワード)機能も含むあたしの「sp」というプログラムがあります。 その他には、GNU PassとKeePass XCがあります。 spのパスワート創作機能では、デフォルトで強力なパスワードを生成しますが、脆弱なパスワードを生成するには(特殊文字なしで)、コマンドパラメーターに "risk" という単語を追加する必要があります。 あたしはこのオプションを、依然として多くの日本のウェブサイトが非常に愚かにも実施している非常に安全でないパスワードポリシーの為に追加しました。 いつかこれが変わる事を本当に願っています! ## 安全でないパスワードポリシーは疑わしいです 安全でないパスワードを強制する理由が便利さではない場合、それはバックエンドのコードが安全でない為だと疑います。 あたしが初めてPHPを学んだ頃、SQLインジェクションは未だ知られていませんでしたので、多くのプログラマーが平文でパスワードを保存し、これにより多くのパスワード盗難が発生しましたが、文字列のサニタイズも当時は新しい物でした。 これらの間違いは、今日でも初心者のPHP、Perl、Javascript、Ruby、及びPythonプログラマーによって行われています。 ですので、あたしが安全なパスワードを作成する事を許可されない場合、そのウェブサイトを作成した人のプログラミング経験を疑います。 特に、文字列のサニタイズと文字列のハッシュ化は、全てのプログラミング言語で非常に簡単に行う事が出来ます! ## 無駄な代替手段 安全でないパスワードを強制するウェブサイトでよく見るのは、Google reCAPTCHA、クライアントサイドの検証(Javascriptで使って)、そして多分Cloudflareも使用されている事です。 それにより、攻撃対象領域が更に増え、ユーザーがより脆弱になります。 一部のウェブサイトでは、オプションの2段階認証(2FA)も見られますが、これ自体が安全性の錯覚を与えるだけで、実際にはデータ漏洩やパスワード盗難に対して全く何もしません。 安全でないパスワードの結果は、パスワードの一意性に殆ど余地を残さない事です。 攻撃者が既知のパスワードでウェブサイトにログイン出来なくても、ユーザー名やメールアドレスとパスワードが一致すれば、他の多くのウェブサイトにログイン出来る様になります。 更に悪い事に、貴方のメールアドレスとパスワードの両方が知られている場合、攻撃者(又はダークネットで漏洩したデータベースを購入した者)は貴方の全てのメールを読む事が出来、貴方としてメールを送信する事さえ出来ます! ## 頼む あたしの要望は、日本のウェブサイトのオーナーや企業、コミュニティ、及びその他の種類のウェブサイトの全ての仲間に向けられています。 安全なパスワードを許可して下さい!! 「114514」というパスワードさえ覚えられない高齢者が沢山いるからと言って、我々日本人全員がそうだというわけではありません! ## 安全でないパスワードポリシーの例え => /static/risk-password.png 以上