-1

私が書いているプログラムでは、ユーザーがコードを実行する前に管理者から応答パスワードを要求される必要があり、動的です (同じチャレンジではありません)。チャレンジされた情報は短く、カジュアルなユーザーが電話で他の誰かに読むことができるものである必要があります.

私は研究を行ってきましたが、そこにある情報のほとんどは、核情報などを保護していないため、この場合には必要のない、より複雑な高度なセキュリティアプローチに関するものです. 私が見つけた他のことは、x を提供し、x + y = z によって計算される z の答えを与える非常に単純なものでしたが、それは単純すぎます。

私が回避しようとしている解決策: 暗号化されたキーを提供することは、他の人に口頭で伝えて応答コードを取得することが非常に困難です。

この種の課題を提供するソリューションは既に存在しますか? それとも、ランダムな文字の長い文字列で立ち往生しますか?

アップデート:

管理者には、ユーザー情報に関する情報はありません。単純な数式が存在する場合、単純な数式ではない単純なアルゴリズムを探しているだけです。ユーザーのチャレンジは、管理者が応答値を提供するために使用できるアルゴリズムを介して自動生成されます。英字または数値にすることができますが、小さくて単純でなければなりません。

4

1 に答える 1

1

「パスワード」を生成したい情報があると仮定すると、すべての情報を結合し、salt (つまり SHA256) でハッシュし、短い数を生成するために 2 ~ 3 バイトなど、有用なバイト数を取得できます。このようにして、データを検証するために提供されたデータに基づいて、同じ値を簡単に再計算できます。

var codeByte = ComputeByteArraySha256(
      DateTime.Today + AdminName + UserName + SecretSalt)[13];
var codeText = codeByte.ToString();

実際のセキュリティ要件によっては、数バイトのハッシュで十分な場合があります。

いくつかの追加情報 (DB 内の最新バージョンのデータなど) を混在させると、そのようなトークンを期限切れにしたり、1 回限りのトークンを使用したりできる場合があります。

ユーザーと通信するためのよく知られた方法 (登録済みの電子メール/電話など) を介してこのようなコードを提供することは、ユーザーの ID を検証するために広く使用されている方法です。

于 2015-02-05T01:14:06.373 に答える