2016-05-10 11 views
0

安心なWeb APIサーバーとして、私たちはクライアントにクライアントIDとパスワードを提供します。私は、クライアントが認証のためにclientid + hMAC(clientidをパスワードでハッシュ)を使用すれば十分だと思います。hMAC認証のタイムスタンプ

私は、タイムスタンプまたは基本文字列のさらに詳しい情報を使用するように助言するいくつかの文書を調べました。私はその意味を理解できません。

タイムスタンプが攻撃や他の何かを防止するのに役立つのかを教えてくれる人がいますか?

答えて

3

タイムスタンプなしでは、署名されたメッセージはすべて永久に有効です。攻撃者がメッセージをキャプチャした場合、メッセージに署名するために使用された秘密を犠牲にすることなく無限に再生することができます。

タイムスタンプを追加すると、メッセージが短時間で期限切れとなり、これを防ぐことができます。サーバーアプリケーションでタイムスタンプを使用する期間を選択します。クライアントのクリックがあなたより少し先にあり、将来あなたのアプリケーションに表示される可能性があるため、「将来」の時間を考慮する必要があるとき。

+0

タイムスタンプは実際には秘密を保護するのに役立ちます。時間が変わると、それに応じてhMacが変更されるからです。タイムスタンプがなければ、hMacは常に同じなので、攻撃者は秘密を気にしません。そうですか? –

+0

しかし、攻撃者がタイムスタンプで暗号化されたメッセージをキャプチャできる場合でも、彼はまったく同じメッセージをシミュレートできます。この種の暗号化の意味は何ですか? –

+0

これは暗号化ではなく、コピーを取得したすべての人がメッセージを読むことができます。 hmac署名のポイントは、信頼されたソースからのメッセージを検証することができ、改ざんされていないことです。タイムスタンプを使用すると、攻撃者は短期間だけメッセージを繰り返すことができ、悪用するのがずっと困難になります。彼らはあなたのメッセージを得るためにキャプチャされた古いHTTPSトラフィックのようなものを無理やり強制できるのではなく、リアルタイムで送信されるメッセージを妥協する必要があります。 – BlargleMonster

関連する問題