無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

認証-ワンタイムパスワード方式による認証3つ

1回だけの使い切りのデータを用いて認証を行う認証方式。

  • ○1回だけの使い切りなので、盗聴されても安心
  • ○リプレイアタックも防げる
  • ×クライアント認証で使う場合、サーバー認証の機能はないのでサーバーのなりすましは防げない。

次の3つの方式がある。

  • チャレンジ/レスポンス方式
  • S/Key
  • 時刻同期方式

チャレンジ/レスポンス方式

「チャレンジ+パスワード」のハッシュで認証する方式。チャレンジが変われば値も変わる。

  1. サーバーが「チャレンジ」と呼ばれるランダムな文字列を送付
  2. クライアントが「チャレンジ+パスワード」のハッシュをサーバーに送付
  3. サーバーは1で送付したチャレンジとパスワードからハッシュを生成し、2と比較。
    • →同じであれば確認OK

S/Key

「パスワード」のハッシュで認証する方式。何回ハッシュ関数にかけるかをサーバーが指定し、回数によって送付する値が変わる。

  1. サーバーにて初期化処理をおこなう。
    • パスワードを作成し、利用回数分(100とする)ハッシュ関数にかけた値をサーバーに登録。
  2. サーバーは、「現在の利用回数(初回なら99)」をクライアントに送付する。
  3. クライアントは入力されたパスワードを「現在の利用回数」回、ハッシュ関数にかけた値をサーバーに送付する。
  4. サーバーはクライアントから渡された値をハッシュ関数に1回かけ、登録された情報と同じか評価する。
    • →同じ場合は認証成功。
  5. 評価後、クライアントから送られた値をサーバーに登録し、「現在の利用回数」を1つ引く。
弱点
  • ×利用回数を使い切った後に、再度初期処理が必要。
  • ×初期化処理は安全に行う必要がある。ここで漏洩すると意味がない..。

時刻同期方式

時刻にあわせて規定のパスワードを出力する装置を使う。

  1. トークンと呼ばれるパスワード生成器をあらかじめ配布
    • トークンはその時の時刻に応じたランダムなパスワードを生成する。
  2. クライアントはユーザー名とパスワード生成器が作成したパスワードをサーバーに送付。
  3. サーバーはトークンが生成するパスワードを知っているので、認証できる。
弱点
  • ×サーバーとトークンの時刻同期が必要。
  • ×トークンがパスワードを変更する期間は同じパスワードになる。(一般的には1分くらいらしい)長くすれば安全性は高まるが、使い勝手は悪化する。


参考: