web-dev-qa-db-ja.com

スマートフォンに対してユーザーを認証する良い方法は何ですか?

スマートフォンに対してユーザーを認証する良い方法は何でしょうか?いいことですが、安全で使いやすいということです。パスワードを安全にするには長いパスワードが必要なため、パスワードは最適とは言えませんが、スマートフォンで長いパスワードを入力するのは困難です。私が考え始めたいくつかの考えは、バイオメトリック測定(例:おそらく顔認識)、および/またはトークンです。電話での認証でこの質問に興味があります。コメントで指摘したように、私の元の質問は広すぎたので、ここで他の部分を別の質問に分けています: Webサイトやアプリケーションでユーザーを認証するための良い方法は何ですか?スマートフォン?

29
Jonathan

電話のロックを解除するための認証方法を見てください。私の銀河S4には、

  • スワイプ(セキュリティなし)
  • フェイスアンロック(低セキュリティ)
  • 顔と声(低セキュリティ)
  • パターン(中セキュリティ)
  • PIN(中から高)
  • パスワード(高)

個人的な経験から、顔のロック解除はちょっと難しいです。あなたはそれを訓練しなければなりません、そしてあなたはあなたの電話をロック解除するためにそれの上に何もない状態であなたの顔を正しい光の中に突き刺さなければなりません。障害や怪我のある人も考慮してください。事故で火傷を負った人はデバイスからロックアウトされます。写真で認識エンジンを無効にする研究もあり、誰でもあなたの顔を見ることができるので、それは非常に簡単です。

あなたが言ったパスワードはタイプするのが非常に難しいです。小さな電話キーボードは大文字を非常に難しくします。

ただし、ユーザーの観点から最も簡単だと思う2つの認証方法は、PINとパターンです。パターンをスクリーンオイル(ブリーチ)から持ち上げて弱めることができます。

数字の配置をランダム化した大きな数字のみのキーボードは、使いやすさとセキュリティのバランスが取れています。ピンに最小の長さ(10など)を配置すると、パスワードに匹敵するセキュリティを確保できます。

20
Ohnana

あなたはそれがどんな種類のサービスであるかについては言及していませんが、ユーザーにとって私にとって電話で最も刺激の少ない認証方法はSSOです。とにかく私はすでにGoogleとFacebookにサインインしているので、通常は[はい]を押すだけで、すべて完了です。

14
AlexH

ユーザーの携帯電話番号を知っている場合(および登録中にこの電話番号がテキストメッセージを受信できることをユーザーが確認した場合)、この機能を使用してSMSで2段階認証を有効にできます。ユーザー名とパスワードによる認証が成功したら、もう1つの手順を実行します。 APIを使用して、テキストメッセージをユーザーにテキストメッセージを送信しますSMS TwilioやPlivoなどのゲートウェイプロバイダー(コストはかかりますが、SMSゲートウェイプロバイダーの価格はアメリカでは非常に低い傾向があります。送信するテキストメッセージには、ランダムに生成された整数(おそらく6から8桁)が含まれます。ユーザーがこの整数をフォームフィールドに入力して認証すると、ユーザーが入力しやすくするために、次のように、フォームフィールドを構成して、ボタンの番号のみを含むダイヤルパッドキーボードを画面に表示できます。

<input type="text" name="smstoken" id="smstoken" pattern="[0-9]" autocomplete="off">

テキストメッセージで受け取った正しい整数を使用してフォームを送信すると、完全に認証されます。この2段階認証では、ユーザーが何か(正しいユーザー名とパスワード)を知っているだけでなく、何か(テキストメッセージを介してリアルタイムで受信した乱数)を持っていることが保証され、アプリケーションのセキュリティが強化されます。

テキストメッセージを受信するためにモバイルプロバイダーから課金される可能性があることを事前にユーザーに完全に通知してください。

6
vrtjason

あなたの最善の策は、U2Fを使用したstrong二要素認証に沿って、標準的な方法 Ohnanaの回答で述べたように を使用することです。

YubicoのYubiKey NEOを使用すると、仕様を正しく覚えていれば、NFCを介しても安全なTLSチャネルの第2要素認証が可能になります。ハードウェアセキュリティモジュールを使用しているので、これと強力で不便なパスワードを組み合わせると、ユーザーが本人であることを確認するための非常に強力な方法になります。

さらにクレイジーなのは、AndroidのGPGスマートカードドライバーを作成することです。Android$ ===は、YubiKey NEOのOpenPGPアプレットを使用して、ユーザーがサーバー/電話で開始する1回限りのチャレンジを行う必要があります。暗号化解除し、署名し、サーバー/電話からチャレンジを返すには、スマートカードのキーを入力します。ただし、NFC GPGのプロトコルがないため、USBドングルが必要です。私が正しく思い出せば。

空は限界です。電話が強力で不便なパスフレーズで暗号化されていることを確認し、5回を超えてログインに失敗した場合は電源をオフにします。

4
Naftuli Kay

何らかの近距離無線通信を利用できます。

たとえば、タグが後ろにタップされたときに電話のロックを解除するタグをいくつか記述します。

チェックするもう1つの良い点は、Yubikeyです。 https://www.yubico.com/products/yubikey-hardware/yubikey-2/

3
Mitch

この質問の前提は、「1つのサイズですべてに当てはまる」という答えがあることを意味するため、少し欠陥があります。これは事実ではありません。認証は、アプリケーション要件とユーザーの両方に適合する必要があります。一部のアプリケーション/デバイスは、他のアプリケーションよりも多くの保護を必要とします。同様に、一部のユーザーは他のユーザーよりも多くの保護を必要とします。

最善の方法は、さまざまなオプションを許可し、ユーザーが希望するオプションを選択できるようにすることです。このアプローチの不利な点は、一部の人々は最も簡単で便利な方法をそのまま使用することです。ただし、その問題を解決することは、ユーザーの意識を高めることです。 「最善を知っている」という方針に沿ってソリューションを強制しても、多くのサポートが得られる可能性は低く、リスクの影響を適切に評価できて、課されたソリューションが不便であるか要件に合わないユーザーをイライラさせてしまいます。

電話などの一般的なデバイスでの認証の目的で、おそらく3つの主要なアプローチ、つまりユーザーが知っているもの(たとえばパスワード)、ユーザーが持っているもの(たとえばトークン、おそらくドングルから生成されたハードウェアまたはSMS codeなど)およびユーザーがバイオメトリックであるもの-指紋、声紋など。ただし、重要なのは、ユーザーがパスワード/ PINまたは組み合わせのどちらを必要とするかを選択できるようにすることです。私の15歳の娘はたぶんピンしか欲しくないでしょうが、彼女が本当に彼女の電話を使っているのはFacebookだけなので問題ありません。一方、私はセキュリティで働いており、機密データにアクセスでき、より多くの保護が必要なので、生体認証、パスワード、トークンを使用する場合があります。

特定のアプリケーションでは、アプローチは似ていますが、単純化することができます。アプリケーションには、より定義された使用プロファイルがあります。これは、セキュリティリスクをより正確に評価できることを意味します。アプリケーションに機密データがほとんどなく、権限のない個人にとっての「メリット」が低い場合は、単純なPINまたはパスワードで十分な場合があります。リスクが高まるにつれて、利用可能な認証方法の範囲を増やす必要があります。場合によっては、データの機密性が特定のしきい値を超える場合に、最低基準を適用できます。

考慮すべきもう1つのことは、ユーザーの教育と、これを少し簡単にするために利用できるソリューションです。たとえば、パスワード管理アプリケーションの使用を奨励することが適切な場合があります。これにより、小さなモバイルデバイス画面で長いパスワードや複雑なパスワードを入力する際の影響や不便さを軽減できます。セッションの最初に一度ログインするパスワード管理アプリがあり、それ以降、パスワードを必要とするサイト/アプリケーションにアクセスするたびに、パスワードマネージャーが詳細を入力します。優れたものの中には、2因子および生体認証システムをサポートするものもあります。明らかに特効薬はありませんが、リスクのわずかな増加のみで認証に関連するいくつかの不便に対処できますが、よりランダムで強力なパスワードを使用することで相殺することもできます。

1
Tim X

また、スマートフォンの操作方法や提供される機能はスマートフォンによって異なるため、特定のスマートフォン(iOS、Android、Windowsなど)も考慮する必要があります。

AppleはiOS 8でTouch IDへのアクセスを開放しました。したがって、Appleデバイスの場合、ユーザーにパスワードを使用して初めてサインインすることを要求できます。サインイン後、サーバーはそのデバイスの一意のキー。そのキーをキーチェーンに保存し、Touch ID APIを介して以降のログインのロックを解除できるようにします。

私が知っているいくつかの考えられるセキュリティ上の懸念を追加します。

  1. 基本的にはパスワードと同等のものをデバイスに保存します。暗号化されていても、ローカルに保存されているため、復号化できます。一部の操作でパスワードを要求することにより、ここでいくつかの懸念を軽減できます。確かに、パスワードを変更するときは、しかし、他のケースがあるかもしれません。

  2. デバイス自体から所有者の指紋を取得することにより、Touch IDをハッキングすることができます。

これらにもかかわらず、ユーザーはより良いパスワードを使用することをお勧めします。そして、それは全体としてより良いセキュリティを提供するはずです。

1
David V