Delphiを使用して、アプリケーションへのアクセスを復元するための視覚的な課題 /応答を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4249160

質問

Delphiでチャレンジ /応答タイプのプロセスを作成することに興味があります。シナリオはこれです... 2つのコンピューターがあります... 1はユーザーに属し、1つはサポート技術者に属します。

ユーザーは特定のプログラムからロックアウトされており、1回のアクセスを得るために、次のようになります。

  1. 「28394ldja9281dhq」などのチャレンジフレーズを提示するユーザーまたは合理的に一意の価値のあるタイプ
  2. ユーザーはサポートスタッフに電話してこの課題を読みます(サポートスタッフが自分の身元を検証した後)
  3. サポート担当者は、「9232KLSDF92SD」などの応答と同じくらいユニークな応答を生成するシステム上のプログラムにこのチャレンジ値を入力します。
  4. ユーザーは応答を入力し、プログラムはこれが有効な応答であるかどうかを決定します。
  5. もしそうなら、ユーザーはアプリケーションへの1回のアクセスを許可されます。

さて、これを行う方法は私の質問ですか? 2つのアプリケーションがあります いいえ 互いにネットワーク化されています。このタスクで私を助けることができる機能はありますか?

私は内部でいくつかの機能を使用できると信じています Cryptoapi, 、しかし、私はどこから始めればいいのか本当にわかりません。どんな助けも提供できます。

役に立ちましたか?

解決

MD5ベースのチャレンジ応答認証を実装します。

から ウィキペディア http://en.wikipedia.org/wiki/cram-md5

プロトコル

  1. チャレンジ:CRAM-MD5認証では、サーバーは最初にチャレンジ文字列をクライアントに送信します。
  2. 応答:クライアントは、ユーザー名で応答し、その後のスペース文字が続き、16バイトのダイジェストが16分の1で表記されます。 Digestは、secretキーとしてユーザーのパスワードを伴うHMAC-MD5の出力と、メッセージとしてのサーバーの元の課題です。
  3. 比較:サーバーは同じ方法を使用して、予想される応答を計算します。指定された応答と予想される応答が一致する場合、認証は成功しました。

これにより、3つの重要なタイプのセキュリティが提供されます。

  1. まず、パスワードを知らずにハッシュを複製することはできません。これにより、認証が提供されます。
  2. 第二に、他の人はハッシュを再生できません。予測不可能な課題に依存しています。これは、さまざまな新鮮さまたはリプレイ予防と呼ばれます。
  3. 第三に、オブザーバーはパスワードを学習しません。これは秘密と呼ばれます。

これら3つのセキュリティ利点を提供するこのプロトコルの2つの重要な機能は、一方向ハッシュと新鮮なランダムチャレンジです。

さらに、チャレンジの送信者を再確認するために、チャレンジ文字列にアプリケーションの識別を追加することができます。

重要:いくつかの弱点があり、それらがあなたにどのように影響するかを慎重に評価します。

他のヒント

口頭での課題/対応戦略について:このアプローチを使用して、10年以上にわたって世界中の5,000のワークステーションでニッチアプリケーションをライセンスしました。私たちのサポートチームは、古い映画で見られる古典的なミサイル発射認証プロセスと類似しているため、「ミサイル発射コード」と呼ばれていました。

これは、プログラムを保護するための非常に時間のかかる方法です。ユーザーとの間でコードを読んで、スタッフと顧客の時間を大量に消費しました。彼らは皆それを嫌っていました。

あなたの状況/コンテキストは異なる場合があります。おそらく、あなたは私たちと同じくらい頻繁にそれを使用することはないでしょう。しかし、ここにいくつかの提案があります:

  1. コードの長さと内容を慎重に検討します。ほとんどのユーザー(およびサポートスタッフ)は、多くの文字を入力することにresします。多くのユーザーは悪いタイピストです。長い文字列と句読点とケースの感度が、追加されたセキュリティの量と比較して、それらを過度に負担するかどうかを検討してください。

  2. 口頭での挑戦/応答の実装を何年も使用した後、私たちはそれを(フォールバックとして)所定の位置に残しましたが、単純な自動化システムを追加しました。より洗練されたWebアプローチではなく、FTPを使用することを選択したため、社内サーバーでソフトウェアを実行する必要がなくなりました(またはITスタッフと取引してください!)

基本的に、FTPファイルを使用して、以前に電話で行われた交換を行います。サーバーは、チャレンジフレーズを含むFTPサーバーにファイルを配置します。ファイルの名前は顧客の名前です。サポートスタッフには、FTPサイトでこのファイルを自動的に作成するプログラムがあります。

顧客は、FTPファイルを読み取り、認証し、応答ファイルをサーバーに戻すホットキーを押すようにスタッフから指示されます。

当社のサポートスタッフのソフトウェアは、顧客のソフトウェアが応答ファイルを作成するのを待っているポーリングを行ってきました。ファイルが表示されると、ダウンロードしてコンテンツを確認し、サーバーから削除します。

もちろん、目標を達成するために、特定のセッションで必要な限り、この交換を何度も何度もどちらかの方向に行うことができます。

ファイル内のデータには、口頭で使用するMD5キーと同じMD5キーを持つことができるため、必要なだけ安全になります。

このシステムの弱点は、ユーザーにFTPアクセスが必要であることです。ユーザーの大半(すべてのビジネス)がFTPアクセスを利用できることがわかりました。 (もちろん、顧客ベースはそうではないかもしれません...)フィールドでのアプリケーションがFTPサイトにアクセスできない場合、顧客がITスタッフにアクセスできるように要求できるように、問題を明確に発表します。一方、私たちはただ口頭でのコードに戻ります。

プレーンバニラインディFTPツールを問題なく使用しました。

このアプローチにはいくつかの弱点があることは間違いありません(おそらく私たちが考えていないものを含めます。)しかし、私たちのニーズのために、それは素晴らしいことです。私たちのサポートスタッフと顧客はそれを愛しています。

これがあなたに関連していない場合は申し訳ありません。これがあなたを助けてくれることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top