web-dev-qa-db-ja.com

ハッシュ関数としてhmac sha 512を使用してTOTPパスワードを取得する方法

私は以前にJavaScriptとネットワークセキュリティについて学んだことがありませんが、最近、いくつかのプログラミングの課題に取り組みましたが、httpポストリクエストを介してプロジェクトリンクを送信する必要があり、パスワードを確認する必要があります。認証では、ハッシュ関数としてhmac sha 512を使用したTOTP与えられた秘密鍵で、過去数日間私はそれがすべてtotp hotp hmacなどのように何であるかを理解しようとしています、そして私はアルゴリズムに従って秘密鍵を変換しなければならないという考えを得ます、そうですか?しかし、アルゴリズムは私にとって非常に新しいものであり、私はパスワードを生成するために何をすべきか混乱します、誰かが私を手伝ってくれるでしょうか?または、少なくとも私に何をすべきかを説明しますか?

5
gilang

TOTPを説明するニースRFCがあります: RFC 6238 、SHA-512の使用法についても言及しています。私はこれを OTPトークンの実装 JavaScriptで行いました。ただし、RFCのコード例もJava(freeOTPと同じ))にあります。

アルゴリズムは基本的にすべてのハッシュで同じです。基本的な考え方は、時間がかかり(デフォルトでは30秒の境界に切り捨てられ)、(HOTPのカウンターの代わりに)この値のHOTPを生成することです。

後でHOTPは基本的にHMACで、シークレットは16進数でエンコードされ、カウンター(上から-TOTPの時間)が特定の桁数に埋め込まれます。結果のハッシュから、RFCに従って特定の部分のみを取得します。

遊んでみるために、TOTPをその場で生成できる web applications/jsfiddle がいくつかありますが、実際の使用には向いていません。

4
Jakuje