(57)【要約】      （修正有）【課題】順序入替を有するハッシュ演算回路を、回路規模を増大させずに実現する。【解決手段】ハッシュ演算対象のデータを蓄積する蓄積手段と、データを所定の単位で入れ替える順序を保持する保持手段と、前記保持手段に保持されている順序に基づいて、前記蓄積手段から所定の単位でデータを読み出すデータ送出手段を有することを特徴とする情報処理装置であって、ハッシュ演算対象のデータを蓄積し、データを所定の単位で入れ替える順序を保持し、前記順序に基づいて、所定の単位でデータを読み出す。【選択図】図３
2014089271.tif 000002
【特許請求の範囲】
【請求項１】
ハッシュ演算対象のデータを蓄積する蓄積手段と、
データを、所定の単位で入れ替える順序を保持する保持手段と、
前記保持手段に保持されている順序に基づいて、前記蓄積手段から所定の単位でデータを読み出すデータ送出手段を有することを特徴とする情報処理装置。
【請求項２】
ハッシュアルゴリズムの情報を取得するコマンド取得手段をさらに有し、
前記保持手段は、ハッシュアルゴリズム毎に、順序入替テーブルが保持されており、
前記データ送出手段は、前記コマンド取得手段によって取得したハッシュアルゴリズムに対応する順序入替テーブルの順序を特定し、前記順序に基づいて、前記蓄積手段から前記所定の単位でデータを読み出すことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記順序入替テーブルは、前記所定の単位毎の入替順序を有し、
前記データ送出手段は、前記コマンド取得手段が取得したハッシュアルゴリズムの情報から、前記所定の単位を特定し、前記特定した所定の単位と前記順序入替テーブルの入替順序に基づいて、前記蓄積手段から前記所定の単位でデータを読み出すことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記順序入替テーブルは、データを所定の単位で入れ替えるための複数のアドレスを有し、
前記データ送出手段は、前記複数のアドレスに基づいて、前記蓄積手段から所定の単位でデータを読み出すことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
さらに、データ送出手段により出力されるデータに対して所定の単位での変換処理を施す変換手段を有することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置は、ＤＭＡコントローラであることを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記蓄積手段に蓄積されたデータを、所定の単位で入れ替える順序を保持する保持手段と、
前記保持手段に保持されている順序に基づいて、前記蓄積手段から所定の単位でデータを読み出すデータ送出手段を有することを特徴とするＤＭＡコントローラ。
【請求項８】
ハッシュアルゴリズムの情報を取得するコマンド取得手段をさらに有し、
前記保持手段は、ハッシュアルゴリズム毎に、順序入替テーブルが保持されており、
前記データ送出手段は、前記コマンド取得手段によって取得したハッシュアルゴリズムに対応する順序入替テーブルの順序を特定し、前記順序に基づいて、前記蓄積手段から前記所定の単位でデータを読み出すことを特徴とする請求項７に記載のＤＭＡコントローラ。
【請求項９】
前記順序入替テーブルは、前記所定の単位毎の入替順序を有し、
前記データ送出手段は、前記コマンド取得手段が取得したハッシュアルゴリズムの情報から、前記所定の単位を特定し、前記特定した所定の単位と前記順序入替テーブルの入替順序に基づいて、前記蓄積手段から前記所定の単位でデータを読み出すことを特徴とする請求項８に記載のＤＭＡコントローラ。
【請求項１０】
前記順序入替テーブルは、データを所定の単位で入れ替えるための複数のアドレスを有し、
前記データ送出手段は、前記複数のアドレスに基づいて、前記蓄積手段から所定の単位でデータを読み出すことを特徴とする請求項８に記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、順序入替を有するハッシュ演算に関する。
【背景技術】
【０００２】
デジタル機器間の通信相手やメッセージの認証において、ハッシュ関数と呼ばれるアルゴリズムが使用されている。
ハッシュ関数とは、任意ビット長の入力メッセージに対して、固定ビット長のハッシュ値を出力するアルゴリズムである。異なる入力メッセージに対しては、ハッシュ値が異なるものとなる点を利用して、入力メッセージの認証を行うことができる。
現在標準策定中の標準認証アルゴリズムＳＨＡ−３の候補となるハッシュアルゴリズムが提案されており、これらのアルゴリズムのうち、ＳＫＥＩＮ、Ｋｅｃｃａｋ等のアルゴリズムでは、出力ビット長のデータをブロック毎に順序入替する回路を含んでいる。この回路をＰｅｒｍｕｔｅ回路と定義する。前記アルゴリズムでは５１２ｂｉｔ以上のハッシュ長をサポートしており、このＰｅｒｍｕｔｅ回路をハードウェア回路として実装した場合には、サポートするハッシュ長に応じた順序回路の実装が必要となる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｔｈｅ  Ｓｋｅｉｎ  Ｈａｓｈ  Ｆｕｎｃｔｉｏｎ  Ｆａｍｉｌｙ  Ｖｅｒｓｉｏｎ  １．３  −１  Ｏｃｔ  ２０１０
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、Ｐｅｒｍｕｔｅ回路を順序回路として実装する場合には、多バイト長の複雑な配線を必要とする。特に非特許文献１に開示のアルゴリズムにおいては、最大で１０２４ｂｉｔのデータをワード単位で入れ替える回路が必要となり、回路規模が増大する課題がある。
本発明は、上記課題を解決するために、順序入替を有するハッシュ演算を、回路規模を増大させずに実現することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る情報処理装置は、ハッシュ演算対象のデータを蓄積する蓄積手段と、データを、所定の単位で入れ替える順序を保持する保持手段と、前記保持手段に保持されている順序に基づいて、前記蓄積手段から所定の単位でデータを読み出すデータ送出手段を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、順序入替を有するハッシュ演算を、回路規模を増大させずに実現することが可能となる。
【図面の簡単な説明】
【０００７】
【図１】実施形態１における情報処理装置の構成図
【図２】ＳＫＥＩＮアルゴリズム処理フロー図
【図３】実施形態１におけるＤＭＡコントローラ構成図
【図４】実施形態１におけるＤＭＡコントローラの処理フローチャート
【図５】順序入替テーブルの例
【図６】順序回路によるＰｅｒｍｕｔｅ回路実装の例
【図７】実施形態２におけるＤＭＡコントローラ構成図
【図８】実施形態２におけるＤＭＡコントローラの処理フローチャート
【図９】実施形態２における情報処理装置の構成図
【図１０】実施形態３におけるＤＭＡコントローラの処理フローチャート
【図１１】実施形態３におけるＤＭＡコントローラ構成図
【図１２】ワード変換テーブルの例
【図１３】実施形態３におけるワード変換部２８のブロック図
【発明を実施するための形態】
【０００８】
＜実施形態１＞
図１は、実施形態１における情報処理装置である。ここで、情報処理装置は、ハッシュ演算を行う装置である。
【０００９】
ＣＰＵ１は、情報処理装置全体の制御を行う。とりわけ、後述のＤＭＡコントローラ２及びハッシュ演算部分回路３の状態制御を行う。
【００１０】
ＤＭＡコントローラ２は、ＣＰＵ１またはハッシュ演算部分回路３からの信号に基づき任意の転送元アドレスと転送先アドレスの間でデータ伝送を行う。ＤＭＡコントローラ２は、データ伝送装置に相当する。
【００１１】
ハッシュ演算部分回路３は、ハッシュ演算のうちの一部の演算を行う。具体的には、ハッシュ演算のうち、出力ビットのデータ長のデータをブロック毎に順序入替する回路（Ｐｅｒｍｕｔｅ回路）以外の演算を行う。ここでは、ＳＨＡ−３の候補であるＳＫＥＩＮアルゴリズムにおけるＭＩＸ回路に相当する。
【００１２】
図２は、ＳＨＡ３のＳＫＥＩＮアルゴリズムにおける、ハッシュ長が１０２４ｂｉｔである場合のＰｅｒｍｕｔｅ回路とＭＩＸ回路の構成の一部を示している。１０２４ｂｉｔの入力に対して、６４ｂｉｔ×２入力をそれぞれＭＩＸ回路に入力し、出力された１０２４ｂｉｔをＰｅｒｍｕｔｅ回路に入力し、６４ｂｉｔ単位で並べ替える処理を７２回繰り返す。
【００１３】
本実施形態は、図２に示されるＰｅｒｍｕｔｅ回路とＭＩＸ回路による処理を、ＤＭＡコントローラ２及びハッシュ演算部分回路３を１回以上用いることでハッシュ演算を実施するものである。ただし、ハッシュ演算部分回路３の演算内容はアルゴリズムに依存するが、いずれのアルゴリズムであっても、ハッシュ演算部分回路３は、順序入替する回路であるＰｅｒｍｕｔｅ回路以外の演算を行えばよい。また、ハッシュ演算部分回路３は演算アルゴリズムに応じた回路を複数実装もよい。
【００１４】
ＲＡＭ４は、プログラムあるいはハッシュ演算の入出力及び中間値を保持し、ＣＰＵ１およびＤＭＡコントローラ２からアクセス可能である。
【００１５】
システムバス５は、ＣＰＵ１、ＤＭＡコントローラ２、ハッシュ演算部分回路３及びＲＡＭ４が接続されている。
【００１６】
次に、本実施形態を含んだＤＭＡコントローラ２について図３を用いて説明する。
【００１７】
データ取得部２１は、バスインターフェイスであって、システムバス５に接続されており、ＣＰＵ１によって設定された転送元アドレスからハッシュ演算対象のデータを取得する。データは、ハッシュ演算部分回路３及びＲＡＭ４から取得する。
【００１８】
ＤＭＡ転送用バッファ２２は、データ取得部２１で取得したデータを保持する。尚、ＤＭＡコントローラ２がサポートするバースト長分またはハッシュ長分のいずれか長い方以上の容量が必要である。仮にバス幅が６４ｂｉｔであり最大バースト長が８ｂｅａｔのＤＭＡ転送が可能である場合である場合には１０２４ｂｉｔのハッシュ値をサポートする場合においては、ハッシュ長の上限である１０２４ｂｉｔの容量以上を持つ必要がある。
【００１９】
コマンド取得部２３はＣＰＵ１によって設定された、ハッシュアルゴリズムの情報を取得する。ここで、ハッシュアルゴリズムの情報は、ハッシュアルゴリズムを識別する情報だけでなく、出力されるハッシュ長に関する情報も含まれる。尚、ここで、ハッシュ長とは、ハッシュ演算後に得られるハッシュ値の長さである。
【００２０】
データ送出部２４は、システムバス５に接続されており、ＣＰＵ１によって設定された転送先アドレスに対して、ＤＭＡ転送用バッファ２２のデータを出力する。このとき、データ送出部２４はＤＭＡ転送用バッファ２２に、後述のテーブルメモリ２５の内容に基づいて順次アクセスし、データを送出する。
【００２１】
テーブルメモリ２５には、起動時にＣＰＵ１により後述のテーブル登録部２６を介してハッシュアルゴリズム毎に、ワード単位で入れ替える入替順序（Ｐｅｒｍｕｔｅの順序）が記録される。あるいは、ＣＰＵ１による記録ステップを省略し、従前にハッシュアルゴリズム毎に構成された固定のテーブルメモリであっても良い。テーブルメモリ２５のエントリは、ハッシュアルゴリズムに固有の値を複数設定することができる。尚、テーブルメモリ２５は、ハッシュアルゴリズム毎に、ワード単位で入れ替える順序を保持する保持部であればよい。
【００２２】
図５は、順序入替テーブルの一例である。
【００２３】
図５（ａ）は、ハッシュアルゴリズム毎の順序入替テーブルの例であり、ハッシュアルゴリズム毎に、読み出し順（入替順序）が記載されている。
【００２４】
図５（ａ）は、ハッシュアルゴリズム１、ハッシュアルゴリズム２、ハッシュアルゴリズム３に対する、ワード単位毎の読み出し順が記載されている。ワード単位は、ハッシュアルゴリズムが特定されると決まる単位であって、処理単位である。ここでは、ワード単位が６４ｂｉｔであるハッシュアルゴリズムを処理する例を用いて説明する。ハッシュアルゴリズム１、ハッシュアルゴリズム２、ハッシュアルゴリズム３は、それぞれ、ハッシュ長が、２５６ｂｉｔ、５１２ｂｉｔ、１０２４ｂｉｔであり、ワード単位は６４ｂｉｔであるとする。ハッシュアルゴリズム１は、ＤＭＡ転送用バッファ２２のデータを、６４ｂｉｔ毎に、０番目、３番目、１番目、２番目の順に取得する。ここで、ＤＭＡ転送用バッファ２２のデータにある最初の６４ｂｉｔを、０番目と呼び、次の６４ｂｉｔを、１番目と呼ぶ。尚、最初の６４ｂｉｔを、ここでは、０番目と呼ぶが、１番目と呼んでもよい。その場合は、図５（ａ）のハッシュアルゴリズム１は、１、４、２、３と表記される。
【００２５】
データ送出部２４は、ハッシュアルゴリズムの情報から、ワード単位を特定し、特定したワード単位毎に、テーブルに記載された順序で、ＤＭＡ転送用バッファにあるデータを取得する。具体的には、ハッシュアルゴリズムの情報から、６４ｂｉｔ毎に処理することを特定し、ＤＭＡ転送用バッファ２２のデータの、０番目にある６４ｂｉｔを取得する。次に、３番目にある６４ｂｉｔ、１番目にある６４ｂｉｔ、２番目にある６４ｂｉｔという順でデータを取得する。図５（ａ）は、テーブルに順序のみ記載しているので、テーブルサイズを小さくできる。また、ワード単位が異なるが、入替順序が同じであるような、複数のハッシュアルゴリズムに対して、共用することも可能である。
【００２６】
図５（ｂ）は、ハッシュアルゴリズム毎の順序入替テーブルの他の例で、ハッシュアルゴリズム毎に、データを所定の単位で入れ替えるための複数のアドレスが記載されている。つまり、複数のアドレスを用いて、データを順次、読みだすことで、結果として、データを所定の単位で入れ替えることが可能である。具体的には、ＤＭＡ転送用バッファ２２の読み出しのオフセットアドレスが直接記載されている。図５（ｂ）は、図５（ａ）と同様、ハッシュアルゴリズム１、ハッシュアルゴリズム２、ハッシュアルゴリズム３は、それぞれ、ハッシュ長が、２５６ｂｉｔ、５１２ｂｉｔ、１０２４ｂｉｔであり、ワード単位を、６４ｂｉｔである。
【００２７】
データ送出部２４は、ＤＭＡ転送用バッファのベースアドレスにテーブルメモリから読み出されたオフセットアドレスを加えたアドレスにアクセスすることを、テーブルに記載された順に行うことで、データを取得する。図５（ｂ）は、読み出し順のアドレスが記載されているので、ハッシュアルゴリズムの情報から、ワード単位を特定する必要がなくなる。
【００２８】
テーブル登録部２６は、ＣＰＵ１から転送されたハッシュアルゴリズム毎に、ワード単位でデータを入れ替える順序をテーブルメモリ２５に記録する。テーブル登録部２６はＣＰＵ１からハッシュアルゴリズム毎の転送順序を取得し、ハッシュアルゴリズムに応じたＩＤとともに図５に示す順序入替テーブルを作成し、テーブルメモリ２５に記録する。この処理は、後述のステップＳ１０１で実施される内容であり、電源投入時やシステム起動時に１度実施されれば良い。あるいは、工場出荷時にテーブルメモリ２５を予めＲＯＭに記録しておけば、テーブル登録部２６は省略することができる。
【００２９】
次に以上の構成を用いたハッシュ演算時の処理ステップについて、図４のフローチャートを用いて説明する。
【００３０】
ステップＳ１０１は、テーブル登録部２６が、テーブルメモリ２５に読み出し順を登録する。ステップＳ１０１は、電源投入時等のシステム起動時に実施されると良いが、本質的にはステップＳ１０２以前に実施されていればよい。ステップＳ１０１においては、テーブル登録部２６が、ハッシュアルゴリズム毎に、ワード単位でデータを入れ替える順序をテーブルメモリ２５に登録する。
【００３１】
ステップＳ１０２は、ＣＰＵ１から転送命令コマンドに先立って、コマンド取得部２３が、ハッシュアルゴリズムの情報を取得する。
【００３２】
ステップＳ１０３は、コマンド取得部２３が取得したハッシュアルゴリズムの情報を用いて、ハッシュアルゴリズムに対応するテーブルを特定する。
【００３３】
ステップＳ１０２およびステップＳ１０３はＤＭＡ設定時に行われるのが望ましい。
【００３４】
ステップＳ１０４以降は、ＤＭＡコントローラ２がデータ転送を開始した後のステップである。ステップＳ１０４においてＣＰＵ１はＤＭＡコントローラ２に対して、転送開始命令を送信する。ＤＭＡコントローラ２は、従前に設定された転送元アドレスからデータを読み出し、ＤＭＡ転送用バッファ２２に格納する。格納は読み出しアドレスの昇順に転送用バッファの先頭番地から実施すればよい。
【００３５】
ステップＳ１０５は、データ送出部２４が、蓄積されたデータ量がバースト転送量に達しているかを判定する。データ送出部２４は、従前に設定されたバースト伝送を行うために必要なデータが既にＤＭＡ転送用バッファ２２に蓄積されているかを判定する。当該判定はＤＭＡ転送用バッファ２２に蓄積されたデータ量のみならず、テーブルメモリ２５に記載されたデータ読み出し順を加味して判定される。即ち、データ送出部２４はテーブルメモリ２５を読み出し、バースト長分の転送アドレスを探索し、最も読み込み順が遅い、即ち転送用バッファの下位アドレスの番地を特定する。そして、当該番地にデータが蓄積されているかを判定し、当該番地にデータが蓄積されるまで待機する。その後、データ送出部２４はデータが蓄積されたことを以ってステップＳ１０６に遷移する。
【００３６】
ステップＳ１０６は、データ送出部２４がデータを転送先アドレスに対して出力するステップである。ステップＳ１０６において、データ送出部２４はコマンド取得部２３によって登録されたテーブルＩＤに基づいて、テーブルメモリ２５から所定の出力順を参照する。そして、当該出力順に応じたアドレスのデータをＤＭＡ転送用バッファメモリ２２から読み出し、システムバス５を介して従前に設定された転送先アドレスに出力する。
【００３７】
ステップＳ１０７は、データ送出部２４が、転送ビート数を満たしたかを判定する。データ送出部２４はデータ出力時にバーストビート数を制御するためのカウンタを保持しており、ステップＳ１０６が所定のバーストビート分実施されているかを判定する。バーストビート長分送出していない場合には、再度ステップＳ１０６を繰り返し、バーストビート長に達していれば、本ルーチンを抜けステップＳ１０８に進む。
【００３８】
ステップＳ１０８は、データ送出部２４が、転送量を満たしたかを判定する。ＤＭＡコントローラ２は、データ出力時にＣＰＵ１から指定されたデータ量が転送されたかを判定する。設定されたデータ転送量に満たない場合には、ステップＳ１０４以降の処理を繰り返す。一方で、設定されたデータ量が転送された場合には、ＣＰＵ１に対して割り込み通知を行い、要求されたデータが転送されたことを通知し、処理を終了する。
【００３９】
ＣＰＵ１は新たな転送要求を通知する場合には、コマンド取得部２３に対してハッシュアルゴリズムを設定し、ステップＳ１０２から再度実施すればよく、ステップＳ１０１を再実行する必要はない。
【００４０】
尚、コマンド取得部２３が取得するハッシュアルゴリズムの情報を、ＩＤなどの識別情報を用いてもよい。その場合、テーブルメモリに記録されているテーブルにおいて、ハッシュアルゴリズムを特定するために、同じ識別情報を用いるとよい。
【００４１】
図６は、本発明を用いずに、順序入れ替えを行う場合の回路構成例である。入力信号は６４ｂｉｔのワード単位で入力される。６１は入力側のセレクタであり、アドレスに応じて入力されたワードを６２の入力レジスタに順次格納する。６２は入力側のレジスタであり、ハッシュ関数がサポートする最大のビット数分の長さを有する。入力レジスタ６２は、６４ｂｉｔのワード単位でセレクタ６１及び順序回路に接続されている。
【００４２】
６３は、最大で１６ワードのデータをワード単位で順序入れ替えを行う順序回路である。つまり、Ｐｅｒｍｕｔｅ回路に相当する。６３はアルゴリズム及びその出力ハッシュ長に応じて入れ替えの順序が異なるため、内部にセレクタを具備し、アルゴリズム及びハッシュ長に応じた順序回路が選択される。６４は、出力側のレジスタであり、ハッシュ関数がサポートする最大のビット数分の長さを有する。６５は、出力側のセレクタである。
【００４３】
図６で示したように、順序回路を用いて、順序入れ替えを行う場合は、回路規模が大きくなるが、本実施形態のように、順序回路を有さず実現することで、図６に示した回路構成に比べて、回路規模が小さく且つ配線混雑も少ない回路構成を提供できる。
【００４４】
＜実施形態２＞
実施形態２における、本発明を含んだＤＭＡコントローラ２について図７を用いて説明する。図７において、転送回数制御部２７以外は実施形態１と同じであるので、説明は省略する。
【００４５】
ＣＰＵ１はＤＭＡコントローラ２に対して、通常のＤＭＡコントローラに設定する情報転送元アドレス、転送先アドレス、転送データ量に加えて、転送回数を指定する情報を設定する。転送回数制御部２７は、該指定された転送回数分だけ、転送元アドレスから転送先アドレスへのデータ転送を繰り返す処理を行う。
【００４６】
次に以上の構成を用いたハッシュ演算時の処理ステップについて、図８のフローチャートを用いて説明する。
【００４７】
ステップＳ１０１からステップＳ１０８は、実施形態１と同じである。
【００４８】
ステップＳ２０１は、転送回数制御部２７が、ＣＰＵ１から指定された転送回数を取得し、設定する。ここで、転送回数は、ステップＳ１０２で取得したハッシュアルゴリズムの情報から、設定される。ステップＳ２０１はＤＭＡ設定時に行われるのが望ましい。
【００４９】
ステップＳ２０２は、データ送出部２４が、転送回数を満たしかを判定する。転送回数制御部２７は、ステップＳ２０１において指定された転送回数の値と、現在の転送回数を比較し、現在の転送回数が指定された転送回数に満たない場合には、ステップＳ１０４以降の処理を繰り返す。一方で現在の転送回数が指定された転送回数に達した場合には、ＣＰＵ１に対して割り込み通知を行い、要求されたデータが転送されたことを通知し、処理を終了する。
【００５０】
ＣＰＵ１は新たな転送要求を通知する場合には、転送回数制御部２７に対して新たな転送回数を設定し、且つコマンド取得部２３に対してハッシュアルゴリズムを設定し、ステップＳ１０２から再度実施すればよく、ステップＳ１０１を再実行する必要はない。
【００５１】
以上のステップＳ２０１及びＳ２０２を実施することにより、ＤＭＡコントローラは連続的にデータの順序入替を実施することが可能になる。特に転送元アドレスと転送先アドレスを同一アドレスに設定した場合には、ＣＰＵ１からＤＭＡコントローラ２に対する１回の命令で同一データに対して転送制御回数部２７に設定した回数分のＰｅｒｍｕｔｅ処理が実施できる。そのため、結果的にＰｅｒｍｕｔｅ処理を複数ラウンド分実施することが可能になる。
【００５２】
＜実施形態３＞
図９は、実施形態３におけるハッシュ演算機能を実装した情報処理装置である。図９において、２は、本発明を含むＤＭＡコントローラである。ＤＭＡコントローラ２はＣＰＵ１からの信号に基づき任意の転送元アドレスと転送先アドレスの間でデータ伝送を行う。加えて順序変換及びワード内部での処理を行う。典型的には図２に示されるＭＩＸ回路で示される処理を行う。
【００５３】
図１１は、実施形態３におけるＤＭＡコントローラ２である。図１１において、転送回数制御部２５と、ワード変換部２８以外は、実施形態１と同じであるので説明は省略する。
【００５４】
ＣＰＵ１はＤＭＡコントローラ２に対して、通常のＤＭＡコントローラに設定する情報転送元アドレス、転送先アドレス、転送データ量に加えて、転送回数を指定する情報を設定する。転送回数制御部２７は、該指定された転送回数分だけ、転送元アドレスから転送先アドレスへのデータ転送を繰り返す処理を行う。ワード変換部２８はデータ送出部２４の後段に接続され、データ送出の順に２ワード単位でデータを入力し処理を行う。
【００５５】
次に以上の構成を用いたハッシュ演算時の処理ステップについて、図１０のフローチャートを用いて説明する。ステップＳ３０１以外のステップは、実施形態１と同じであるので説明を省略する。
【００５６】
ステップＳ３０７は、システムバス５にデータが送出される直前に、ワード変換部２８がワード変換を行う。ワード変換部２８は、データ送出部２４から出力されたデータをワード単位で変換する処理を行う。ステップＳ３０７により、データ送出部２４からシステムバス５に出力されるデータの値は所定のアルゴリズムで変換することが可能である。
【００５７】
次にワード変換部２８について図１３を用いてより詳細に説明する。
ワード変換部２８は、６４ｂｉｔ幅の入力を２チャネルと６４ｂｉｔ幅の出力を２チャネル持つ。ワード変換部２８の内部は加算器２８１と排他的論理和演算器２８２と任意のビット数の回転シフトが可能なシフタ２８３を含み、入力されたデータを変換処理する回路である。
【００５８】
シフタ２８３はシフト量演部２８４から指定されたシフト量で左向き回転シフトを実行する。
【００５９】
シフト量演算部２８４は、転送制御部２７から転送回数を取得する。シフト量演算部２８４は内部カウンタ値とコマンド取得部２３によって取得されたハッシュアルゴリズムの情報に基づいて、シフト量テーブル２８５から必要なシフト量を取得し、シフタ２８３に伝達する。内部カウンタ値は、前記転送回数がラウンド数である７２回に到達した場合に０にリセットされる。シフト量テーブル２８５はコマンド取得部２３から取得されるハッシュアルゴリズムの情報とシフト処理の回数に紐づいたシフト量をルックアップテーブルとして保持している。該ルックアップテーブルの一例を図１２に示す。
【００６０】
尚、本実施形態では、ワード変換部２８の外に、転送回数制御部２７を持つ構成で説明したが、内部カウンタ値をカウントするカウンタを、ワード変換部２８内に持つ構成にしてもよい。
【００６１】
以上説明した構成を実施することにより、ＤＭＡ転送時にＳＫＥＩＮに代表されるアルゴリズムを用いたハッシュ処理の１ラウンド分を同時に実施することが可能になる。
【図１】
2014089271.tif 000003
【図２】
2014089271.tif 000004
【図３】
2014089271.tif 000005
【図４】
2014089271.tif 000006
【図５】
2014089271.tif 000007
【図６】
2014089271.tif 000008
【図７】
2014089271.tif 000009
【図８】
2014089271.tif 000010
【図９】
2014089271.tif 000011
【図１０】
2014089271.tif 000012
【図１１】
2014089271.tif 000013
【図１２】
2014089271.tif 000014
【図１３】
2014089271.tif 000015