teratail header banner
teratail header banner
質問するログイン新規登録
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

5回答

1454閲覧

パスワードを画像にする優位性とデメリットについて教えてください

heraa

総合スコア9

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/04/16 03:03

編集2022/04/16 03:08

0

1

ユーザー登録画面があると仮定して、
登録画面でinut textに入力した文字列がパスワードになります
パスワードをinput fileで選択した画像に設定した場合、
文字列よりもセキュリティ面で安全だと思うのですが、
あまりそのような仕様のサイトは見かけません
input fileを通すことでファイル選択画面を通すことになり、
文字列生成アタックを回避できるのかなと考えています
画像で認証=同じバイナリコードであるかの判別します
生体認証(指紋)などあるようですが、その下が画像認証かなと考えてるのですが
文字列をパスワードにする事と画像に設定することの優位性とデメリットを教えて下さい

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/04/16 03:18 編集

何を聞いてるのかわかりません。質問を整理してください。公開キーの代わりに画像を使えば良いのではという思いつきの是非を問う質問であるなら、画像が公開キーに勝る要素は無いと思います。
Lhankor_Mhy

2022/04/16 03:26

顔認証のことですか?
heraa

2022/04/16 03:32 編集

いえ、顔認証ではなくそこらへんに落ちてる画像でいいです 画像のバイナリコードをパスワードとして記録し、 ログイン時のパスワードは画像として選択します、そのバイナリコードと、同じ画像が選択されてるかの判別を行います 同じ画像であればログインできます
dodox86

2022/04/16 03:31

> input fileを通すことでファイル選択画面を通すことになり、 > 文字列生成アタックを回避できるのかなと考えています 文字列生成アタックを通せるUIなら、ファイル選択画面を自動で通せるプログラムは簡単でしょうね。
Lhankor_Mhy

2022/04/16 03:32

なぜ画像なのですか? その使い方ならバイナリなら何でもいいような?
heraa

2022/04/16 03:34

input fileを通せば単純なpostではなくなると思うので、あと文字列よりもバイナリコードだったら合致率が低いと思いますが、いかがでしょうか?
heraa

2022/04/16 03:35

ファイル選択画面を自動で通せる、確かにできればそうかもしれませんが単純な文字列(数桁のパスワード)のpostよりも良いと思うのですが? しかも同じ画像でなければバイナリコードは一致しませんよ?
heraa

2022/04/16 03:36

WEB上から画像を無限に拾ってきてバイナリコードを一致させるとでもいうのでしょうか?
Zuishin

2022/04/16 03:39

バイナリで認証するセキュアな方法はすでにありますが、それを画像に置き換えるメリットがありません。
Orlofsky

2022/04/16 03:39

優位性とデメリット って メリットとデメリット にしたほうが日本語として良さげ。
heraa

2022/04/16 03:56

画像に置き換えるメリットは無いなら 文字列でいいという事でしょうか?
heraa

2022/04/16 03:57 編集

>優位性とデメリット メリットとデメリット あなたが理解しやすいからでしょうか? どちらも同じ意味だと思うんですが、なぜわざわざそのような指摘をされたのでしょうか?
Zuishin

2022/04/16 03:58

場合によって利便性とセキュリティのバランスを取るのが良いと思います。
heraa

2022/04/16 03:59 編集

文字列でいい、というのは納得しかねます ブルートフォースアタック(総当たり攻撃)で当たる確率とバイナリコードであたる確率とでは雲泥の差があると思いますが?
Zuishin

2022/04/16 04:01

> どちらも同じ意味だと思うんですが、なぜわざわざそのような指摘をされたのでしょうか? 同じ意味ではありません。 使用する際の利益をメリットと言います。 対義語を並べるのがこのような場合の日本語の常識なので、わざわざ優位性といいかえることで意味が伝わりにくくなります。
Zuishin

2022/04/16 04:02

まあ、意味がわからないなら質問など無駄なことをせず、ぼくのかんがえたさいきょうのにんしょうほうを好きに使えばいいのでは?
heraa

2022/04/16 04:04

あれ?結局は自分の知識の範疇を答えたらいうだけ言って好きにしろっていうスタンスでしょうか?
heraa

2022/04/16 04:04

>> どちらも同じ意味だと思うんですが、なぜわざわざそのような指摘をされたのでしょうか? 同じ意味ではありません。 使用する際の利益をメリットと言います。 対義語を並べるのがこのような場合の日本語の常識なので、わざわざ優位性といいかえることで意味が伝わりにくくなります。 どうでもいいよね、ホント
Zuishin

2022/04/16 04:07

いえ、難しすぎてあなたに伝えることが無理だからです。
heraa

2022/04/16 04:08

WEBから得た知識でそれは無駄だと固定概念丸出しの石頭 自分で実証したんかいな?
heraa

2022/04/16 04:09

突破する方法並べてみてや。なんも言えないんか?相手が無能だとたかをくくって俺はドヤるんならちゃんと答えれや、コミュニケーションも取れないガイジや?
guest

回答5

0

15年くらい前に同じようなことを実装したことがありますが、当時でも自己満足の域を出ませんでした。
現在は他の認証方式やパスワード管理ツールが発達していて、優位性が無いどころかデメリットの方が大きい状態です。

既に指摘されているところもありますが、
ユーザー目線だと「パスワードに相当するファイルを平文でローカルに持っておかないといけない」と言うのが大きなリスクです。

これは例えば、文字列認証ではpassword.txtというファイルを持っておかないといけない(=暗記したりパスワード管理ツールを使ったりして保護出来ない)と言うのと同じことなので、PCを紛失したり盗難される事を想定した場合には無視出来ないリスクとなります。
セキュリティインシデントの多くが端末の紛失やショルダーハック、標的型攻撃といったの操作者や物理端末へのアクセスによって発生しているため、このリスクに対応出来ないのは大きな欠点です。

じゃあ画像ファイルを暗号化しておけば良いのでは?と言われればその通りではあるのですが、端的に言って不便ですよね。

また、強度の話で言うと、sshでのサーバーへのログインなどの強固なセキュリティが要求される認証秘密鍵と公開鍵を使った認証方式がデファクトスタンダードとして存在しています。
こちらは秘密鍵ファイルにパスフレーズを設定することが可能ですし、ファイルそのものを送らずに安全でなりすましが不可能な認証が可能です。
この辺は公開鍵認証で調べてみてください。

公開鍵認証は秘密鍵の生成などの技術的な難易度が高いため、非技術者の一般ユーザー向けの認証に使われることはあまりありませんが
その他のセキュアな認証方法としては

  • クライアント証明書を使った認証(こちらは端末の盗難や紛失には弱い運用も多い)
  • パスワードに加えてSMSやメールにワンタイムパスワードを送信する多要素認証(MFA)
    などがあり、広く運用されています。

あとはサーバー側負荷としては、認証の度に大きなサイズの画像ファイル(スマホだと写真とかが多いことでしょう)が送られてくるのは結構辛い事になリますね。

投稿2022/04/16 09:04

編集2022/04/16 09:08
tanat

総合スコア18778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

システムが生成した画像やユーザーが選択した任意の画像のハッシュ値を認証の鍵にするということですね。

メリットとしては、

(1) ユーザーがパスワードを記憶しておく必要がない
(2) 画像ファイルが無い端末ではログイン不可能

という辺りがあるでしょうか。

デメリットとしては、

(1) ユーザーが誤ってファイルを削除したらログイン不可能になる(画像の再発行が必要になる)
(2) 画像が盗難されたり流出すると不正ログインし放題になる
(3) ユーザーが利用する端末全てに画像を配置する必要がある、認証画像を変更したい場合は全ての端末の画像を変更する必要がある
(4) 外部ストレージで画像を共有するにしても、その外部ストレージの紛失時のリスク度合いが跳ね上がる為、ユーザーの利便性は低下する

という感じでしょうか。

そして、これらのメリット/デメリットは実はパスワードを文字列で管理するのと全く同じなのですね。

つまり、

  • 画像であれ文字列であれ、厳重な管理が必要なことは変わらない
  • 画像であれ文字列であれ、一度流出してしまえば不正ログインし放題なのは変わらない
  • 文字列でパスワードを管理していても、結局パスワードのハッシュ値と比較する必要があることは変わらない
  • 最終的にハッシュ値で比較する以上、文字列パスワードとセキュリティ強度は変わらない
  • サイトと画像の組み合わせをユーザーが記憶、またはパスワードマネージャ的なもので管理するにしても、結局文字列パスワードとやっていることが変わらない

という感じで、あえて画像で認証をする意義が低いということが、画像をパスワード代わりにするシステムを見掛けない理由だと思います。

投稿2022/04/16 05:05

編集2022/04/16 05:23
madoka-t

総合スコア379

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

 画像云々は置いておいて、パスワードを長くした方がより安全ではないか、というご質問だと読みました。

 おそらく、完全にランダムなパスワードであれば現実的な時間の範囲では十分な強度があるため、失う利便性に代わるメリットが薄いのだろうと思います。

これを破るのに何時間かかるでしょうか。ウェブサイトなので、1秒に1万個のパスワードを試す…ことは通常できません。サイトの性能によりますが、ログイン処理はけっこう重たい処理なので、1秒に10個のパスワードを試せるとして、1時間では36000個です。なので、568億÷36000 時間ですね。
パスワードは何桁以上にするのが良いですか? - Quora

 それ以上のセキュリティを求めた場合、パスワード流出の方がリスクが高いため、パスワード強度を上げるよりもMFAなどに頼った方がよい、ということになるのだろうと思います。

投稿2022/04/16 04:06

編集2022/04/16 04:12
Lhankor_Mhy

総合スコア37488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

出ていないところで。
文字列パスワードに対する利点:

  • 単純なパスワードを排除できる。
    その場で撮った写真なりスクリーンショットなりで十分な唯一性・ランダム性が得られるので。
    パスワードや公開鍵暗号に対する欠点:
  • 紙に書いてのバックアップがほぼ不可能
    可能な程度の単純な図形ではランダム性が不足するだろうし、描画ソフトの違いで同一のファイルになる保証が無い。

ところでLhankor_Mhyさんのコメントにある
「なぜ画像なのですか? その使い方ならバイナリなら何でもいいような?」
に対する返答は無いようですが、私もそう思いますしバイナリなら既存の公開鍵暗号を使った認証に対して劣っていると思います。

投稿2022/04/16 17:41

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

選択した画面、ってことなら、そこに存在してる画像を全部コピーしてこればそれを突破できるってことになりますけど、それではどーあがいても文字列より大幅に劣るとしか言いようがないですが。

投稿2022/04/16 03:35

y_waiwai

総合スコア88180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

heraa

2022/04/16 03:36

第三者がなぜ画像をコピーできる状況化にあるんですか?
heraa

2022/04/16 03:38

画像をパスワードとして設定すれば当然その画像がパスワードであることはその設定した人物しかわからない状況下です
heraa

2022/04/16 03:42

サーバーに侵入して画像データを引っこ抜けばということですか?
heraa

2022/04/16 03:43

バイナリデータを暗号化させるなりで単純に抜けないようにした場合は?
y_waiwai

2022/04/16 03:56

そこにログインしようとしてるユーザ側で考えましょう。 画像ファイルとして持ってるはずですよね。
heraa

2022/04/16 04:00

持っていますが第三者がどうやって手に入れるという想定でしょうか?
y_waiwai

2022/04/16 04:23

盗難される、とかハッキングされる、とかとか まあ、そういうのを想定しない、ってならいいんでしょうけど
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問