あの定期的なパスワード変更、本当に安全になるの?効果なしの指摘が
引用元:https://news.ycombinator.com/item?id=44261777
強制的なパスワード変更はユーザーをロックアウトさせがちで、ITに連絡するのも大変。NISTやMicrosoftも非推奨なのに多くの企業が続けてる。ITやセキュリティ関係者にとっては、まだ権威ある情報源と見られてないのかもね。> Verifiers SHOULD NOT require memorized secrets to be changed arbitrarily (e.g., periodically)
https://pages.nist.gov/800-63-3/sp800-63b.html
Or by Microsoft> Password expiration requirements do more harm than good…
https://learn.microsoft.com/en-us/microsoft-365/admin/misc/p…
みんなパスワードの最後に変更年月つけてない?例:PascalCasePassphraseGoesHere2025-06。これなら文字、数字、特殊文字の要件も満たすし、履歴にも引っかからないし、管理も楽。でもセキュリティには全然意味ないんだよね!Password2025-06とかでも通っちゃうでしょ。
じゃあ俺の全アカウントは1234abcd@にしとくわ。
パスワード定期変更は結局1234abcd@ → 1234abcd@1とかになるだけ。企業なら最低30文字で、単純な繰り返し禁止だけにして、パスフレーズ使わせたりSSO、パスキー、パスワードマネージャーで入力回数減らす方が絶対良いね。忘れたら紙に書いて金庫に入れときゃいいじゃん?”金庫持ってない?金庫買えよ!”ってビフ・タネンも言ってたし。
俺はキーチェーンに完全に新しいパスワードを作らせてるよ。なんでか知らないけど、実際にタイピングしなきゃいけないパスワード以外は、雇い主みんなこの馬鹿げた要求してくるんだよね。
昔の雇い主はパスワード認証のSSHを要求してて、SSHキーは許さなかったんだ。なぜならSSHキーにパスフレーズを強制できないからって、オプションごとオフにしたんだよ。PCI要件かなんかだって言ってたな。
定期変更の要求はITからじゃないんだ。監査チェックリストにあることが多くて、保険料とか手数料安くしたり、侵害時にちゃんとやってましたって見せる証拠にしたい経営幹部がいたりする。実装側も要求側も悪いアイデアって分かってるんだけど、組織の政治とかインセンティブ的に従う方が個人にとって安全なんだよ。
個人的に”古いパスワードからX文字以上変えなきゃダメ”っていうパスワード変更要件を経験したことがあるよ。
もし俺のパスワードが漏洩してないなら、プロバイダが変更しろって思うのはどうかしてるけど、なぜかこれがまだ標準的なやり方なんだよな、全く意味不明な理由で。
この前うちのサイバー担当の人に定期変更の話を持ち出したら、PCI標準がパスワードローテーションを要求してるって言われたよ。だからどの監査人を気にするかによるね。
なんか変な計算でさ、パスワードって新しく生成した方が、 brute force 攻撃に晒される時間が短いから安全だって言うんだって。俺は信じないけど、一部のマニアな人たちはそう思ってるらしいよ。
昔さ、パスワードをランダムに何回か変更してから元のパスワードに戻すスクリプトを書いたんだ。これが完璧に機能したんだよね。
この要件はさ、 PCI DSS のセクション8.3.9にあるんだけどね、シングルファクター認証の実装にしか適用されないんだ。二要素認証だとこの要件はなくなるよ。[0] https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard…
証券会社とか銀行はさ、残念ながらまだこれをやる必要があるんだよね…誰かこれなんとかしてくれないかな :([0] https://www.finra.org/filing-reporting/entitlement/password-…
もうさ、マジでうざかったから、パスワードリセットするたびに文字を1文字ずつ付け足してたよ -> aからzまでね。ありがたいことに、今の会社はパスワードを過去3年間も変更させてくれてないんだ。
そういうのを防ぐために、パスワードを一日一回以上変更できないようにするポリシーがあるんだよ。いくつかの場所でこれに遭遇したことがあるな。
>パスワードの長さが12~15文字なら、180日間有効>パスワードの長さが16~32文字なら、365日間有効狂気だね。
これってさ、パスワードをどこかに平文で保存する必要があるんじゃないの?それってそもそももっと危険な考え方だよね?
いや、言わないで。30文字も打ちたくないよ。バカな奴にはどうせ効かないし、本当に必要な人にも効果ない。1234567890a1234567890@1234567890
これでいい? いや、打つの長くなるだけ。賢くない奴のために、賢い奴の生活を悪くしてもダメなんだよ。賢い奴が面倒になって、一番簡単なことをするだけになるんだから。
最近はPCIで多要素認証が求められるからね。だから、SSHパスワードもパスワードと最後にOTPを組み合わせる形になることが多いと思うよ。
「わいせつな言葉や下品な言葉を含んではいけません」っていうルール、大嫌いなんだよ。パスワードマネージャーが文字の羅列を作る時に、たまたま「fuck」とか含んじゃう可能性だってゼロじゃないでしょ。
「信じない」っていうけど、信じなきゃいけない、それは本当のことなんだよ。君はそれが最大の脅威じゃないと思ってるか、あるいはそれを軽減するための対策(例えば、覚えやすいように一時的なパスワードパターンを使うとか)の方が病気よりもひどいと思ってるだけだ。
古いパスワードの履歴を記録して、それを再利用できないようにするシステムもあるよね。
過去30回分の古いパスワードの履歴を記録するだけでなく、それらに似ているパスワードもすべて拒否するシステムが好きだよ。それはつまり、システム上のどこかにすべてのパスワードのリストを平文か可逆暗号化された状態で保存してるってことだ。ハッカーがそのデータベースをダンプできたら、まさに金鉱だね。
宇宙の絶対的な法則だよ。「なんでこんなバカげたことが起きたんだ? ああ、また金か。」
よく知らない人のために詳しく言うと、それはどこかにパスワードを平文で保存してるってことだよ。
これは君には不正に見えないかもしれないけど、そうじゃないんだ。「誰かのSSHキーを手に入れる」って話は、HNみたいな場所では「脆弱性」じゃないからあまり聞かないけど、攻撃者がシステムに侵入して次の一手としてピボットするために、実際の集中的な攻撃ではごく普通で重要な部分なんだ。攻撃者が最初にチェックすることの一つだよ、まさに高確率で見つかって、見つかれば高リターンだからだ。これは非常に深刻な脅威だけど、あまり聞かないだけだよ。例えば、「sudoersファイルにパスワードなしでrootに昇格できる穴があった」なんて話は、実際の多くの侵入の主要な部分だけど、あまり聞かないのと似てるね。俺はパスワードなしのSSHキーが攻撃プロセスの一部だったケースを複数知ってる。だからそれは本当に正当な問題で、それらをオフにするのはセキュリティシアターじゃなくて、セキュリティ体制に実際の影響があるんだ。最近はログインプロセスの一部として物理トークンとか、他の認証を加えることで解決されてるよ。
だからパスフレーズを推奨するんだよ。30文字要求でも、3~4単語と区切り文字があればずっと楽になるだろ。入力するのも速いしね。
パスワードが20桁から30桁になっても、ぶっちゃけ安全性に大した違いはないと思うんだよね。それより、めっちゃ長いパスワードを毎日打つ方が大変だし、打ち間違えたりするからマジ手間なんだよ。
だからApple製品嫌いなんだよ。
Apple製品全部そう、一つだけじゃないんだ。MacでTouch ID設定してApp StoreにAppleアカウントでログインしてるのに、アプリをインストールしようとするたびに何度もパスワード聞かれるんだよね。Touch IDを使わせてくれない。無料アプリでもこうだから、もう十分すぎるくらい馬鹿げてるのにさらに意味不明。
嫁のiPhoneでも少しこれ見たよ。何年も経ってもAppleは全然変わってないなって感じ。Touch IDでロックしてるスマホなのに、アプリをインストールする時にパスワードを何度も何度もランダムに要求してくるんだ。特にスマホをリセットして最初からやり直す時なんか、Appleのパスワードを繰り返し聞いてくるんだよ。
もっとコメントを表示(1)
Appleサービスを非Appleデバイスで使うともっと最悪だよ。icloud.comにログインする時、”このデバイスを信頼”を何度クリックしても、次の日にはパスワード+ワンタイムコードのめんどくさい手続きをまたやらせてくる。
もう一つの意味不明なイライラは、支払いとかアプリインストールの時にFace IDが失敗した場合(ベッドで寝てる時とかサングラスかけてる時とか、しょっちゅう失敗するけど)、PINに戻らずにAppleアカウントのパスワード入力を求めてくること。なんで?そして、その画面だとパスワードマネージャーを開く方法がないから、一旦全部キャンセルするしかないんだ。レジとかでやるとマジ楽しい経験になるね…。
あと、iPhoneをMacに繋いで同期するたびに、MacとiPhoneの両方で”このデバイスを信頼”って聞いてくるんだよ。”はい”をクリックしても、次やるときまた聞かれるんだ。
たまに(私の場合週に1、2回くらい)パスワードを要求されるのは別に驚かないよ。そうしないとみんなパスワード忘れて問い合わせしまくるだろうからね。私が問題だと思うのは、誰がそのパスワードを求めてるのか、その理由も説明しないこと。それに、こっちが何か操作したわけでもないのに急にプロンプトが出るんだ。Appleはこれで、要求されたら何も考えずにパスワードを入力するようみんなを慣らしてるんだよ。なんでこんな馬鹿げてて危険で逆効果なことしてんだ?
物を確実に覚えるってのは、たぶんコンピューターサイエンスで一番解決できない問題なんだろうね。広告以外はさ。広告はデバイス移行したり初期化したりしても完璧に機能して覚えてるのに。
うちの子供が使ってる、すごく古いiPadがあってさ。iOS 10.3で止まってるんだ。あと、パスワードマネージャーも使えない。ブラウザが古いからウェブサイトも開けないし(32-bitアプリ)、パスワードマネージャーのアプリもこの古いデバイス用には作られてないんだ。だからAppleは私がApp Storeアプリを使うたびに50文字以上のパスワードを入力させようとしてくる。マジで苦痛だよ。
他のデバイスで既に承認してるのに、なんでコードを入力する必要があるんだよ?この流れ全体がおかしいだろ。Appleは自己保身のためにやってんのかね。
Microsoftのクソも同じくらい壊れてるね。ログインするたびに、”覚えるか”、”今後この質問をしないか”って聞いてくるんだけど、そこで何と答えても全く何も変わらないんだ。
みんなが持つべきパスワードは、覚えるのが不可能なほどめちゃくちゃ複雑なやつだよ。セキュリティは生体IDにあるんだ。生体IDがあるデバイスを使ってる限り、ログインパスワード以外、人が何かを覚える必要なんてないんだよ。そして、知ってる限り今売ってるAppleデバイスはほぼ全部生体ID付いてる。iCloudだけが定期的に生体IDの機能をダメにしてきて、マジうざいんだ。
2025年にもなればさ、Apple製じゃないデバイスでAppleアカウント使うのって、Apple的にはあんまり歓迎されない方向になるんじゃないかな。
そうそう、わかる。MicrosoftがOutlookアプリでコード入れさせるのも同じ理由だよ。みんなちゃんと読まずにOK押しちゃうからさ(特に変な電話かかってきてるときとか)。あれでうっかりミスを防いでるんだよ。
そうそう、参考になるかもしれないけど、50文字とかの超長いパスワードでも、ちゃんとした16文字のやつと比べてセキュリティ的に有利ってことはないよ。
「このデバイスを信頼する」って表示、あれ現代のエレベーターの「閉ボタン」だと思わない?つい押しちゃうけど、意味あるのか?みたいな。
ほとんどのサービスで複雑なパスワード強制されるじゃん?なのにアカウント作る時とか、コピペもできなくして手入力させたりさ。サービス側は「セキュリティのためならユーザー減ってもいい」って思ってる。パスワード周りの不便さ、マジで悪化してるよ。
トラッキング防止とか広告ブロッカー無効にしてみてごらんよ。広告追跡用のクッキーとか一時データがさ、「このデバイスを信頼する」って選択をIDPがどう追跡してるか、それがわかるんだよ。
うん、あれセキュリティ的にマジやばいよね。俺は何に使うかわかんなきゃとりあえず拒否してるわ。きっと大事な機能いくつか使えてないんだろうけどね。
え、マジ?新しいデバイスにする時以外、再ログインとか求められたことないけどなー。
Touch IDの設定が購入時に有効になってるか確認した?(設定 > Touch IDとパスコード) もし有効にしてないと、パスワード要求されるのかもしれないね。再起動後に一度認証する必要があるけど、その後は認証が必要な場所ならほとんどTouch IDでいけるよ。
そうだね、数字コードは意図の証明だ。理論上は「OK」とか「はい、私です」をタップするのも意図の証明のはず。でも実際は、パスワードを不正入手した奴らが、こういう通知や認証プロンプトを大量に送りつけて、最終的に「OK」させようとするのがよくある手口なんだよ、たとえ間違ってでもね。
パスワード管理用の専用フックが追加される前、1PasswordがOSのどこでも好きなテキストフィールドにパスワードを「入力」できるカスタムキーボードとしてインストールされてたの覚えてる?
電話が他のデバイスにBTキーボードとして接続して、パスワードを入力できたら面白いかもね。BTデバイスのペアリングは面倒だから、実際の使い勝手はイマイチだろうけど、もしその部分がもっと簡単なら、かなり良い解決策になると思う。
あと、macOSでもAndroidでも、デバイスのロック解除に時間的な要素があるんだよね。時々「Touch IDを有効にするにはパスワードが必要です」とか「追加のセキュリティが必要です、しばらくパターンを使っていません」みたいなアホらしいのが出て、無効にする方法がない。あれマジで腹立つわ。俺のデバイスなのに、何しろってんだよ。俺が指図して、デバイスは黙って従うべきだろ。リスクは自分で評価するから、余計なお世話だよ。
システム設定の「プライバシーとセキュリティ > アクセサリを接続を許可」を見てみて。賢明なデフォルトは「毎回確認」で、たぶん君が求めているのは「新しいアクセサリは確認」だよ。
俺の理解だと、iCloudバックアップがこれを要求するんだ。他にも何が必要か誰にも分からないけどね。だから「今はしない」を押すのに気が進まないんだ。
Appleのセキュリティモデルが、ランダムなアプリがこういうプロンプトを勝手に表示させないようにしてくれるって信じるしかないね。
俺も同じ挙動だね。毎日Touch IDで何回もログインしてるけど、「Touch IDを有効にするため」に週に一度くらいパスワード入力を求められる。iOSもmacOSもだ。俺にはこれは妥当な頻度だと感じるな。
俺のもそうだよ。設定でTouch IDを有効にしてるのに、App Storeを直近(24時間以内とか)に使ってないと、どうせいつもパスワードを要求されるんだ。Apple側のストレートなバグだろうと思うんだけど、何年も直ってないから、この時点でもう意地悪してるだけだと思うわ。だって、他の場所は全てTouch IDでいけるんだもん。これApp Store特有なんだよ。本当に、ホーム画面にパスワードマネージャーアプリを置いてる唯一の理由がこれ。他の場所は全部オートフィルされるのに、ここだけダメだから、いつも手動でAppleのパスワードをパスワードマネージャーアプリからコピーしないといけないんだよ。
パスワードを破られた奴らは通知や認証要求を大量に送ってくるらしいよ。正規のサービス側が過剰な再認証ばっかさせてると、ユーザーはOKとかパスコード入力を反射的に押しちゃうように慣らされて、フィッシング詐欺とかに引っかかりやすくなるんだって。
頻繁な再認証はむしろみんなのセキュリティを下げるみたい。
ユーザーとしては生体認証でパスワード埋めるのがすっげぇ楽ちん。サービスごとに自動生成された破られにくいパスワードを使い分けられるし、もし1つ漏れても、漏れたのはそのパスワードだけ。セキュリティも使いやすさもめちゃくちゃ向上するよ。最近8年くらいで、パスワード入力時にペーストをブロックするサービスなんて見たことないし、そんなことしたらiPhoneとかAppleデバイス使ってる客は即いなくなるだろうね。商売になんないってば。
この記事を読むべきは監査官だよ。あいつらが期待を変えない限り、監査を通さなきゃいけない多くの会社は、業界標準だけどマジでバカげたことをやり続ける羽目になるんだ。セキュリティ監査が重視される特定の分野の零細企業でもそう。俺たちの会社にも、役に立たないって分かってるけど監査官が今は譲らないからやってる対策が結構あるもん。
俺は何年もNISTのガイドラインをSOC2監査官に提示してきたんだ。リンクを示せば、いつも受け入れてくれるよ。
なるほどね。みんな忘れがちだけど、SOC2って全然技術的じゃなくて、CPA(公認会計士)が書いてるんだよ。同じ会社でも監査官が違えばSOC2の内容も変わってくる。だから“The United States of America National Institute of Standards and TechnologyがSpecial Publication 800-53 revision 5の423ページでこう言ってるぞ”って言うのが、“俺たちは正しいやり方でやってるぞ”って示すのに超有効なんだ。
そうそう、何もかも先回りして網羅しようとするから、こういうことになるんだよね。監査中にいちいち説明するのは時間的に大変だから、誰も監査官に自分たちの判断を正当化しようとしないみたい。
もっとコメントを表示(2)
セキュリティコンプライアンスに関わるみんながThe Phoenix ProjectでJohnが学んだ教訓を学べたら、開発者や運用担当者は食料庫をFort Knoxみたいに扱うプレッシャーがずっと減るのにね。多くの監査官の期待に反する証拠があるだけじゃなく、コンプライアンス達成に高価なソフトウェアやネットワーク変更が全部必要ってわけじゃないんだ。
物理セキュリティやプロセスでもコンプライアンスはできるんだからさ。
監査官がコンプライアンスのガイドラインを書いてるわけじゃないよね?ただそれを強制してるだけじゃん。
こういう記事を送るべきは、ガイドラインを書いてる人たちじゃないの?なんか俺、勘違いしてる?
いや、君の言う通りだよ。NISTみたいな標準機関と、SOC2の基準を決めてるAICPAとかの間に絶対ギャップはあると思う。一つには単なる慣性だろうね。顧客がベンダーにそれを期待するようになったのは、特にそれがセキュリティシアターだからだよ。何か問題が起きたときに「これ、やってましたよ」って指さしできるものだからさ。
セキュリティシアターだから、何かあった時に指さしできるってやつだね。そうそう、「これは良い習慣だし、チェックボックスに✓つけられて嬉しい」と「これは他人が定めた基準だけど、何かあってもこれで自分の尻を守れる」の間には残念ながら隔たりがあるんだよね。標準に頼ること自体は(食品安全とか機器認証とか)常にやってるから理解できるけど、それが万能薬みたいに見られると本当にイライラするんだよ。
マジそれな!AppleとかMicrosoftにも定期パス変更オフにする設定あるのに、監査ってチェックリスト通りなだけなんだよね。実際安全かより、チェックリスト通るかだけ。だからユーザーは面倒くさがって回避して、かえってセキュリティ悪くなるんだよなー。
監査人の考え方変えるのむずいよね。仕事で来てるだけだし、別にその分野に興味ないんだもん。詳しい人ってチェックリスト見てる上の人だけみたいだけど、そういう人たちも訂正するヒマなさそうだし。
結局、顧客が「これ変えてよ」って言わないとダメなんだよね。でもそれが難しい。うちの業界だと、契約取るために顧客が求める資格とかに従うしかないんだ。顧客側にもっと技術わかる人がいればいいんだけどね。大半の顧客が「いらない」って決めるまで、この監査は変わらないだろうな。
そういう監査会社にお金払うのやめて、もっと詳しい別の会社探せば?結局、払う金に見合ったレベルの仕事しかしてくれないんだから。(まぁ、一番デカい会社は高くて人の入れ替わりも激しいから、そこより安いとこで良い担当者見つける「スイートスポット」もあるかもだけどね)
自由市場なら、セキュリティに時間かけない会社始めて、倍速で半額で他の会社を潰す。で、今度はセキュリティゼロの会社に、ハックされるまで倍速で潰される、って感じか。
ハッキング防ぐ本当のセキュリティを「無駄」とか思っちゃダメだし、良いセキュリティなくすのを「効率アップ」とも思っちゃダメ。無駄って言葉は、7日ごとのパスワード変更みたいな、完全に意味ないことに使うべきなんだよ。
株主が次の四半期ごとの決算しか興味ないなら、良いセキュリティに投資する意味なんてないよね。
問題はチェックリスト使うことじゃなくて、それに「ちょくちょく再認証しろ」みたいな変な項目が入ってることみたいだね。良いものあるか、悪いものないかちゃんとチェックするのは、セキュリティ的にも統一性出すためにも良い考えだよ。もちろん、その「良い」「悪い」リストがまともで、ちゃんと使われてるかが一番大事だけど。
記事であんま触れてないけど、悪いUXって潜在的なセキュリティの弱点なんだよね。システムが変な動きばっかしてると、フィッシングみたいな「ちょっと違う変な動き」に気づかなくなる。パスワードしょっちゅう聞かれると、何も考えず入力するクセついちゃうとかね(「ファスト&スロー」でいうシステム1)。OSがスタートアップ分かりにくくしたり、裏で怪しいコード動かしたり、デフォルトで全部のファイルにアクセスOKとかも悪用されがち。セキュリティ詳しい人って人間の心理をあんま考えないのが一つ。もう一つはインセンティブ。ちゃんとした設計で防げたミスで問題起きても、誰が責任取るかって連鎖がない。ホントは規制でどうにかすべきだけど、自分が売るものに規制かかるのは誰だってイヤだし、規制変える時に強いのは業者側なんだよ。
これマジで良い意見だね!似たような感じで、会社で決められたやり方が面倒すぎると、「シャドウIT」とかコッソリ回避する裏ワザみたいなのがいっぱい出てくるの、すっげー見てきたわ。
定期的に認証してもセキュリティはあんまり向上しないよ(有効期限がすっごく長くない限りね)。でも、ちゃんとした認証システムなら、有効期限切れかユーザーごと/デバイスごとにセッションを失効させる機能は必須だよね。実際さ、セッション失効させたいと思ってから、それが実際に使えなくなるまでの遅延の方が、どれだけ頻繁に再認証させるかより重要だと思うな。これは使ってる認証方式とか、システム構成の部品がどれだけ多いかで特に面倒になるんだ。
それがあるからrefresh tokenがあるんだよ。実際のトークンは定期的に期限切れになるけど、クライアントは新しいのをもらうためのトークンを持ってるんだ。失効ってのは、新しいのをもらえなくすることだよ。
それはトークンを検証する時にセッションデータにアクセスできない場合だけ必要なことだよね。ほとんどのシステムはそうじゃないと思うな。君が「実際のトークン」って呼んでるものを使って、セッションがまだ有効かチェックすればいいんだよ。セッションデータが見えない切断されたシステムじゃない限り、2つ目のトークンを追加する必要はほとんどないよ。
SQL DBに何も必要ないエンドポイントで、APIハンドラをDB呼び出しで始めなくていいのは、スピードがかなり向上するし、同時にSQL DBの負荷も減らせるからすごく良いね。
これは単なる最適化だよ。つまり、普通のトークンの有効期限チェックじゃなくて、refresh tokenの方だけで済むってこと。でも、セッションが自然に期限切れになる前に失効させられるべきって事実は変わんないね。
ネットワークがダメになった時にローカルでの作業を邪魔するのに最高のやり方だね。
定期的な認証は、みんなにそれを回避する方法を考えさせるだけだよ。パスワード書き留めたり、Google Docsに入れちゃったり、Yubikeyにservo付きのArduinoくっつけたり、SMSをEメールに転送したり、TOTPコードをWechatで送ったり、もう何でもありになっちゃうんだから。
SQL DBを直接叩くんじゃなくて、トークンをメモリにキャッシュすれば?Redisとかアプリの中にさ。トークンが期限切れになったらキャッシュを無効化すればいい(RedisにはTTLが組み込まれてるし)。ユーザーIDとトークンなんて、データ量はほんのちょっとだよ。
短いセッション期限って、リアルタイムでトークンを失効させられないことの回避策なんだよね。これはステートレスな認証プロトコル(OAuthみたいにオフライン認証が設計思想のやつ)のせいだよ。これは連合IDの文脈で認証をスケールさせるためにこうなってるんだ。
この辺、ちょっと考えてたんだよね。うちの会社では、ちょっと2段階認証っぽい感じなんだ。1日に1回か多くても2回、ADFSとMFAでKeycloakにログインするんだけど、そうするとほとんどのシステムがKeycloakをOIDCプロバイダとして使うんだ。トークンの有効期限は10~15分。だからログインの手間は1日に1回くらいで済むんだけど、その代わり、VPNが必要なサービスへのアクセスは15分以内に全部失効させられるんだ。普段使ってる時はあんまり気づかないね。