web-dev-qa-db-ja.com

SMSを介してワンタイムパスワードを送信する以外に他に方法はありますか?

配信される機密ファイルをダウンロードするためにワンタイムパスワード(OTP、ワンタイムパッドと混同しないでください)を入力する必要がある1つの小さなシステムで作業しています。ユーザーに。

主なアイデアは、SMS経由で事前設定された制限時間内にOTPを送信することでした。

しかし、SMSは十分に安全ではないので、OTPをユーザーに配信するためのその他の方法について考え始めました。

ユーザーにSignalを使用して情報を提供することを提案できますが、その場合はユーザーにとって複雑すぎると思います。

何かアイデアはありますか、それとも私の主要なアイデアに従うべきですか?

11
Mirsad

標準であり、ほとんどの認証アプリでサポートされているTOTPまたはHOTPを使用できないのはなぜですか?

人々があなたのサービスに登録するとき、彼らはコードを生成するために使われる秘密の種を含んでいるQRコードをスキャンすることによって彼らの認証アプリを登録する必要があります。

コードはデバイス上でローカルに生成されるため、その後のアクセス時に、サイトはアプリに生成されたコードを入力するようにユーザーに促します。ネットワークアクセスは必要ありません。

おまけとして、標準プロトコルを使用しているため、ユーザーには互換性のある認証アプリが既にインストールされている場合があり、インストールされていない場合は、他のサービス(Googleアカウントなど)にアプリを使用するようにナッジできます。最終的に、ユーザーはより安全になり、誰もが勝利します。

20
André Borie

質問はアイデアに関するものなので、

OTPをスペルアウトする前にPINコード検証による自動音声通話。

  • 経験の浅いユーザーにとっては非常に簡単です。追加のソフトウェアを必要とせず、リアルタイムで指示を出す必要があります。例:

    こんにちはこれはmirsadの検証システムです。ダウンロードのパスワードを聞くためにPINを入力してください

    ありがとうございます。パスワードは.....です。5分以内にご使用ください。このパスワードを他人に教えないでください。

  • PINコードを覚えておく必要があります

  • SMSより安全-パッシブなパスワードの取得を防止します(攻撃者は無人デバイスの画面から読み取ることができません)

  • スヌーピングを防ぐための対策が必要です。例:

    • リスニング側はPIN入力中にランダムな可聴音を生成し、その差を計算してユーザー提供のコードを取得します(私の銀行が行います)

    • より長いPINから別のランダムな数字のセットを入力するようにユーザーに要求します。つまり、「PINの6桁目を押して、PINの3桁目を押します」(他の銀行が入力します)

6
techraf

A5/0とA5/1の脆弱性は、数百のクライアントを持つ小規模なシステムの認証で大きな問題になることはほとんどありません。

ただし、GSMを配信チャネルとして使用したくない場合は、Google認証システムを使用して時間ベースのOTP( [〜#〜] totp [〜#〜] )を作成できます。サーバー上のユーザーごとにシークレットを作成する必要があります。シークレットはGoogle認証システムアプリでスキャンできます。これがどのように機能するかのサンプルは here です

3
Jedi

前述のように、TOTPとHOTPはどちらも、SMSを介してワンタイムコードを送信する代わりに存在する標準です。

  • TOTPは時間ベースのコードであり、 Google Authenticator などのアプリを使用して、またはRSA SecurIDスタイル fobs または cards として利用できることがよくあります。

  • HOTPはHMACベースであり、Google Authenticatorや類似のプラットフォームなどのトークン生成ソフトウェアを通じて利用できることがよくあります。

  • Yubicoが初期モデルのYubikeysに実装したOTP標準もあり、ハードウェアUSBドングルが非常に長いワンタイムパスワードを入力するためにキーボードをエミュレートしました。

そして最後に、厳密にOTPではないが、2番目の要素として機能するオプションを提示する場合は、次のようになります。

  • U2F、オープンな2要素標準([〜#〜] u [〜#〜]niversalの略) 2nd[〜#〜] f [〜#〜]actor)。これは、ハードウェア登録時に発生するキー交換を伴うチャレンジ/レスポンスメカニズムに依存しています。ユビキーはおそらく、現在最も人気のあるU2Fフォブです。

  • また、SSHキーはキー交換とチャレンジ/レスポンスメカニズムに依存しているため、認証時の2番目の要素として使用される可能性があります。ただし、この方法は広く使用されていません。

  • 同様に、PGPキーもこの目的に使用できます。また、SSHキーと同様に、PGPが第2要素として使用されるアプリケーションは、私の知る限り、現在制限されています。

3
Jules

@André-borieに同意します。ただし、ユーザーに認証コードを送信するよう主張する場合は、プッシュオーバーアプリを確認することをお勧めします。電報で確認しましたが、Signalも似ていると思います。 Telegrams APIでは、デバイスへの通信を開始することはできません。

しかし、あなたはプッシュオーバーを見るかもしれません。

2
cornelinux