(57)【要約】      （修正有）【課題】ＳＨＡ−１及びＳＨＡ−２５６を選択的に使用すること、低電力及び低面積の最適化されたハッシュ暗号装置及び方法を提供する。【解決手段】ハッシュ暗号装置は、ＳＨＡ−１ハッシュ演算及びＳＨＡ−２５６ハッシュ演算を全て提供することができる構造を有し、１つのメモリ、１つの第１レジスタ、１つの排他的論理和演算器、及び１つの論理和演算器を利用して、ＳＨＡ−１ハッシュ演算時に複数の第１ラウンドに対応する複数の第１メッセージデータを生成し、ＳＨＡ−２５６ハッシュ演算時に複数の第２ラウンドに対応する複数の第２メッセージデータを生成して、ＳＨＡ−１ハッシュ演算時に複数の第１メッセージデータを利用してＳＨＡ−１ハッシュ演算によるメッセージダイジェストを算出し、ＳＨＡ−２５６ハッシュ演算時に複数の第２メッセージデータを利用してＳＨＡ−２５６ハッシュ演算によるメッセージダイジェストを算出する。【選択図】図１
2010134465.tif 000002
【特許請求の範囲】
【請求項１】
第１ハッシュ演算時に演算データを利用して複数の第１メッセージデータを生成し、第２ハッシュ演算時に演算データを利用して複数の第２メッセージデータを生成するメッセージスケジューラ、
前記第１ハッシュ演算時に前記複数の第１メッセージデータを利用して第１メッセージダイジェストを算出し、前記第２ハッシュ演算時に前記複数の第２メッセージデータを利用して第２メッセージダイジェストを算出するメッセージ圧縮部、そして
外部から受信される制御命令から前記第１及び第２ハッシュ演算のうちの前記演算データに行うハッシュ演算を決定し、前記演算データの長さによって決定された前記ハッシュ演算を行う回数を決定し、決定された前記ハッシュ演算及び前記回数によって前記メッセージスケジューラ及び前記メッセージ圧縮部を制御する制御部を含む、ハッシュ暗号装置。
【請求項２】
前記第１ハッシュ演算はＳＨＡ−１であり、前記第２ハッシュ演算はＳＨＡ−２５６である、請求項１に記載のハッシュ暗号装置。
【請求項３】
前記メッセージスケジューラは、
前記第１ハッシュ演算時にＮ個の第１メッセージデータを受信して保存し、前記第２ハッシュ演算時にＮ個の第２メッセージデータを受信して保存するメモリ、
前記第１ハッシュ演算時に入力されるデータを保存した後で出力し、前記第２ハッシュ演算時に入力されるデータを保存した後で出力するレジスタ、
前記メモリに保存された第１メッセージデータ及び前記レジスタに保存されたデータに基づいて第１ロジック演算を行って、追加的な第１メッセージデータを生成する第１ロジック演算部、そして
前記メモリに保存された第２メッセージデータ及び前記レジスタに保存されたデータに基づいて第２ロジック演算を行って、追加的な第２メッセージデータを生成する第２ロジック演算部を含み、
前記制御部は、
前記第１ハッシュ演算時に前記第１ロジック演算部によって追加的に生成される前記第１メッセージデータを前記メモリに保存して、前記追加的な第１メッセージデータをＭ個生成するまで前記第１ロジック演算を繰り返し、
前記第２ハッシュ演算時に前記第２ロジック演算部によって追加的に生成される前記第２メッセージデータを前記メモリに保存して、前記追加的な第２メッセージデータをＬ個生成するまで前記第２ロジック演算を繰り返し、
前記Ｎ、Ｍ、及びＫは正の整数である、請求項１または２に記載のハッシュ暗号装置。
【請求項４】
前記第１ロジック演算部は、
前記メモリに保存された第１メッセージデータのうちのいずれか１つ及び前記レジスタに保存されたデータを排他的論理和演算して、前記レジスタのデータを更新する排他的論理和演算器、そして
前記排他的論理和演算器によって前記排他的論理和演算を所定の回数だけ繰り返した後で前記レジスタに保存されたデータを回転シフトして、前記追加的な第１メッセージデータとして出力する回転シフト演算器を含み、
前記排他的論理和演算以前に前記メモリに保存された第１メッセージデータのうちのいずれか１つを前記レジスタに保存する、請求項３に記載のハッシュ暗号装置。
【請求項５】
前記第２ロジック演算部は、
前記メモリに保存された第２メッセージデータのうちのいずれか１つに対して複数の第３ロジック演算のうちの対応する第３ロジック演算を行って出力する第３ロジック演算器、そして
前記第３ロジック演算器から出力されるデータ及び前記レジスタに保存されたデータを論理和演算して、前記レジスタのデータを更新する論理和演算器を含み、
所定の個数の第２メッセージデータに対して前記第３ロジック演算及び前記論理和演算を繰り返した後で前記論理和演算によるデータを前記追加的な第２メッセージデータとして出力して、
最初の前記第３ロジック演算以前に前記メモリに保存された第２メッセージデータのうちのいずれか１つを前記レジスタに保存する、請求項３に記載のハッシュ暗号装置。
【請求項６】
前記複数の第３ロジック演算は、
入力データに対して回転及びシフトを第１形態で行うロジック演算、
入力データに対して回転及びシフトを前記第１形態と異なる第２形態で行うロジック演算、そして
入力データをそのまま出力するロジック演算を含む、請求項５に記載のハッシュ暗号装置。
【請求項７】
前記Ｎ個の第１メッセージデータ及び前記Ｎ個の第２メッセージデータは同一である、請求項３に記載のハッシュ暗号装置。
【請求項８】
前記メッセージ圧縮部は、
入力されるデータを保存した後で出力し、前段のレジスタから出力されるデータが後段のレジスタに入力される構造に連結されている複数のレジスタ、
前記第１ハッシュ演算に使用する複数の第１ラウンド定数及び前記第２ハッシュ演算に使用する複数の第２ラウンド定数を保存して、前記複数の第１及び第２ラウンド定数のうちの対応するラウンドの第１及び第２ラウンド定数を出力する保存モジュール、
前記複数のレジスタに保存されたデータのうちの少なくとも１つを利用して前記第１ハッシュ演算に必要なロジック演算を行う複数の第１演算器、
前記複数のレジスタに保存されたデータのうちの少なくとも１つを利用して前記第２ハッシュ演算に必要なロジック演算を行う複数の第２演算器、
前記第１ハッシュ演算時に前記保存モジュールから出力される第１ラウンド定数、前記複数の第１演算器から出力されるデータ、及び前記メッセージスケジューラから出力される第１メッセージデータの中から選択される１つの第１データ及び前記複数のレジスタのうちの第１レジスタに保存されたデータを論理和演算して、前記第１レジスタのデータを更新し、前記第２ハッシュ演算時に前記保存モジュールから出力される第２ラウンド定数、前記複数の第２演算器から出力されるデータ、及び前記メッセージスケジューラから出力される第２メッセージデータの中から選択される１つの第２データ及び前記複数のレジスタのうちの第２レジスタに保存されたデータを論理和演算して、前記第２レジスタのデータを更新する論理和演算器を含み、
前記制御部は、
前記第１ハッシュ演算時に前記第１データの選択を異なるようにして、前記論理和演算を第１回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記複数のレジスタのうちの一番前に位置した第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第１ラウンド演算を行い、
前記第２ハッシュ演算時に前記第２データの選択を異なるようにして、前記論理和演算を第２回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第２ラウンド演算を行う、請求項１または２に記載のハッシュ暗号装置。
【請求項９】
前記制御部は、
前記第１ハッシュ演算時に当該ラウンドの前記第１ラウンド定数及び前記第１メッセージデータを選択して、前記第１ラウンド演算を設定されたラウンドの回数だけ繰り返し、
前記第２ハッシュ演算時に当該ラウンドの前記第２ラウンド定数及び前記第２メッセージデータを選択して、前記第２ラウンド演算を設定されたラウンドの回数だけ繰り返す、請求項８に記載のハッシュ暗号装置。
【請求項１０】
前記保存モジュールには、複数の第１初期値及び複数の第２初期値が保存され、
前記メッセージ圧縮部は、
前記第１ハッシュ演算時に前記第１ラウンド演算が前記設定されたラウンドの回数だけ繰り返された後で、前記複数のレジスタのうちの前記第３レジスタから前記第１レジスタまで保存された複数のデータを利用して前記複数の第１初期値を更新し、
前記第２ハッシュ演算時に前記第２ラウンド演算が前記設定されたラウンドの回数だけ繰り返された後で、前記複数のレジスタのうちの前記第３レジスタから前記第２レジスタまで保存された複数のデータを利用して前記複数の第２初期値を更新し、
更新した前記第１及び第２初期値が各々前記第１及び第２ハッシュ演算のメッセージダイジェストとして使用される、請求項９に記載のハッシュ暗号装置。
【請求項１１】
前記制御部は、
前記当該ラウンドのラウンド情報を保存している第１カウンタ、そして
前記当該ラウンドで前記論理和演算を繰り返す回数に対応するクロックサイクル情報を保存している第２カウンタを含み、
前記ラウンド情報及び前記クロックサイクル情報に基づいて前記ハッシュ演算の終了を知らせる制御信号を生成して、前記メッセージ圧縮部に出力する、請求項１０に記載のハッシュ暗号装置。
【請求項１２】
ハッシュ暗号装置で第１及び第２ハッシュ演算に各々必要な複数の第１及び第２メッセージデータを生成するメッセージスケジューラにおいて、
演算するブロックデータをＮ個のサブブロックデータに分割して保存するメモリ、
入力されるデータを保存した後で出力するレジスタ、
第１ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータ及び前記レジスタに保存されたデータを排他的論理和演算して、前記レジスタのデータを更新する排他的論理和演算器、
前記排他的論理和演算器によって前記排他的論理和演算が所定の回数繰り返された後で、前記レジスタに保存されたデータを回転シフトして出力する回転シフト演算器、
第２ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータのうちのいずれか１つに対して複数のロジック演算のうちの対応するロジック演算を行うロジック演算器、そして
前記ロジック演算器から出力されるデータ及び前記レジスタに保存されたデータを論理和演算して、前記レジスタのデータを更新する論理和演算器を含み、
前記第１ハッシュ演算時に前記Ｎ個のサブブロックデータ及び前記回転シフト演算器の出力データが前記複数の第１メッセージデータとして各々使用され、
前記第２ハッシュ演算時に前記Ｎ個のサブブロックデータ及び所定の個数の第２メッセージデータに対して前記対応するロジック演算及び前記論理和演算を繰り返した後で前記論理和演算によるデータが前記複数の第２メッセージデータとして各々使用され、
前記Ｎは正の整数である、メッセージスケジューラ装置。
【請求項１３】
前記第１ハッシュ演算はＳＨＡ−１であり、前記第２ハッシュ演算はＳＨＡ−２５６である、請求項１２に記載のメッセージスケジューラ装置。
【請求項１４】
前記第１ハッシュ演算時に前記回転シフト演算器の出力データが前記メモリに保存され、前記第２ハッシュ演算時に前記対応するロジック演算及び前記論理和演算を繰り返した後で前記論理和演算によるデータが前記メモリに保存される、請求項１３に記載のメッセージスケジューラ装置。
【請求項１５】
ハッシュ暗号装置で演算するブロックデータに対してハッシュ演算を行ってメッセージダイジェストを算出するメッセージ圧縮装置において、
入力されるデータを保存した後で出力し、前段のレジスタから出力されるデータが後段のレジスタに入力される構造に連結されている複数のレジスタ、そして
第１ハッシュ演算時に入力される複数の第１データの中から選択される第１データ及び前記複数のレジスタのうちの第１レジスタに保存されたデータを論理和演算して、前記第１レジスタのデータを更新し、第２ハッシュ演算時に入力される複数の第２データの中から選択される第２データ及び前記複数のレジスタのうちの第２レジスタに保存されたデータを論理和演算して、前記第２レジスタのデータを更新する論理和演算器を含み、
前記第１ハッシュ演算時に前記第１データの選択を異なるようにして、前記論理和演算を第１回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記複数のレジスタのうちの一番前に位置した第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第１ラウンド演算を行い、前記第１ラウンド演算を前記第１ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第１ハッシュ演算によるメッセージダイジェストを算出し、前記第２ハッシュ演算時に前記第２データの選択を異なるようにして、前記論理和演算を第２回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第２ラウンド演算を行い、前記第２ラウンド演算を前記第２ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第２ハッシュ演算によるメッセージダイジェストを算出する、メッセージ圧縮装置。
【請求項１６】
第１ハッシュ演算に対応する複数の第１ラウンド定数、前記第２ハッシュ演算に対応する複数の第２ラウンド定数を保存して、複数の第１及び第２ラウンド定数のうちの相当するラウンドの第１及び第２ラウンド定数を出力する保存モジュールをさらに含み、
前記第１ハッシュ演算時に当該ラウンドの前記第１ラウンド定数及びメッセージスケジューラから出力される当該ラウンドの第１メッセージデータを選択して、前記第１ラウンド演算を繰り返し、
前記第２ハッシュ演算時に当該ラウンドの前記第２ラウンド定数及びメッセージスケジューラから出力される当該ラウンドの第２メッセージデータを選択して、前記第２ラウンド演算を繰り返す、請求項１５に記載のメッセージ圧縮装置。
【請求項１７】
前記第１ハッシュ演算はＳＨＡ−１であり、前記第２ハッシュ演算はＳＨＡ−２５６である、請求項１６に記載のメッセージ圧縮装置。
【請求項１８】
前記保存モジュールは、複数の第１及び第２初期値を保存して、
制御部からハッシュ演算の終了を知らせる制御信号を受信すれば、前記第１ハッシュ演算時に前記複数のレジスタのうちの前記第３レジスタから前記第１レジスタに保存された複数のデータを利用して前記複数の第１初期値を更新し、前記第２ハッシュ演算時に前記複数のレジスタのうちの前記第３レジスタから前記第２レジスタに保存された複数のデータを利用して前記複数の第２初期値を更新して、
更新した前記複数の第１及び第２初期値から各々前記第１及び第２ハッシュ演算のメッセージダイジェストが算出される、請求項１７に記載のメッセージ圧縮装置。
【請求項１９】
前記複数のレジスタに保存されたデータのうちの少なくとも１つを利用して前記第１ハッシュ演算に必要なロジック演算を行う複数の第１ロジック演算器、
前記複数のレジスタに保存されたデータのうちの少なくとも１つを利用して前記第２ハッシュ演算に必要なロジック演算を行う複数の第２ロジック演算器、そして
前記ブロックデータに行うハッシュ演算によって、前記複数の第１及び第２ロジック演算器の出力データのうちのいずれか１つのロジック演算器の出力データ、第１及び第２ハッシュ演算に対応する第１及び第２ラウンド定数のうちの１つのラウンド定数、第１及び第２ハッシュ演算に対応する第１及び第２メッセージデータのうちの１つのメッセージデータの中から１つを選択して、前記論理和演算器に出力する選択器をさらに含む、請求項１７に記載のメッセージ圧縮装置。
【請求項２０】
外部から受信される演算データをＮ個のブロックデータに分割してメモリに保存する段階、
前記Ｎ個のブロックデータをレジスタに保存する段階、
第１ハッシュ演算時に前記レジスタに保存したＮ個のブロックデータを１からＮ番目のラウンドで使用する第１メッセージデータに生成する段階、
前記第１ハッシュ演算時に、（Ｎ＋１）からＭ番目のラウンドの各ラウンドで前記第１メッセージデータ及び前記レジスタに保存されたデータに基づいて１つの排他的論理和演算器を利用して設定された回数だけ排他的論理和演算を行って、相当するラウンドの第１メッセージデータを生成する段階、
第２ハッシュ演算時に前記レジスタに保存したＮ個のブロックデータを１からＮ番目のラウンドで使用する第２メッセージデータに生成する段階、
前記第２ハッシュ演算時に、（Ｎ＋１）からＫ番目のラウンドの各ラウンドで前記第２メッセージデータ及び前記レジスタに保存されたデータに基づいて１つの論理和演算器を利用して設定された回数だけ論理和演算を行って、相当するラウンドの第２メッセージデータを生成する段階、
前記第１ハッシュ演算時に前記１からＭ番目のラウンドに対応するＭ個の第１メッセージデータを利用して第１メッセージダイジェストを算出する段階、そして
前記第２ハッシュ演算時に前記１からＫ番目のラウンドに対応する第２メッセージデータを利用して第２メッセージダイジェストを算出する段階を含み、
前記Ｎ、Ｍ、及びＫは正の整数である、ハッシュ暗号方法。
【請求項２１】
前記第１ハッシュ演算はＳＨＡ−１であり、前記第２ハッシュ演算はＳＨＡ−２５６である、請求項２０に記載のハッシュ暗号方法。
【請求項２２】
前記（Ｎ＋１）からＭ番目のラウンドの第１メッセージデータを前記メモリに保存する段階、そして
前記（Ｎ＋１）からＫ番目のラウンドの第２メッセージデータを前記メモリに保存する段階をさらに含む、請求項２０または２１に記載のハッシュ暗号方法。
【請求項２３】
前記第１メッセージダイジェストを算出する段階は、
入力される複数の第１データの中から選択される１つの第１データ及び前記第１ハッシュ演算時に動作する複数の第１レジスタのうちの一番最後に位置する第２レジスタに保存されたデータを他の１つの論理和演算器を利用して論理和演算して、前記第１レジスタのデータを更新する段階、
前記第１データの選択を異なるようにして、前記論理和演算を設定された回数だけ繰り返した後で前記複数の第１レジスタのうちの一番前に位置した第３レジスタに保存した後、前記複数の第１レジスタのデータをシフトする段階、そして
１からＭラウンドまでの当該ラウンドのラウンド定数及び第１メッセージデータを選択して前記更新する段階及び前記シフトする段階を繰り返し、前記複数の第１レジスタに保存されたデータ及び複数の第１初期値を利用して前記第１メッセージダイジェストを算出する段階を含み、
前記第２メッセージダイジェストを算出する段階は、
入力される複数の第２データの中から選択される１つの第２データ及び前記第２ハッシュ演算時に動作する複数の第４レジスタのうちの一番最後に位置する第５レジスタに保存されたデータを前記他の１つの論理和演算器を利用して論理和演算して、前記第５レジスタのデータを更新する段階、
前記第２データの選択を異なるようにして、前記論理和演算を設定された回数だけ繰り返した後で前記複数の第４レジスタのうちの一番前に位置した第６レジスタに保存した後、前記複数の第４レジスタのデータをシフトする段階、そして
１からＫラウンドまでの当該ラウンドのラウンド定数及び第２メッセージデータを選択して前記更新する段階及び前記シフトする段階を繰り返し、前記複数の第４レジスタに保存されたデータ及び複数の第２初期値を利用して前記第２メッセージダイジェストを算出する段階を含む、請求項２０または２１に記載のハッシュ暗号方法。
【請求項２４】
前記複数の第１レジスタは前記複数の第４レジスタの一部であり、前記第３レジスタ及び前記第６レジスタは同一なレジスタである、請求項２３に記載のハッシュ暗号方法。
【請求項２５】
前記第１メッセージダイジェストを算出する段階は、
前記第１レジスタのデータを更新する段階以前に、前記複数の第１レジスタに前記複数の第１初期値を設定する段階をさらに含み、
前記第２メッセージダイジェストを算出する段階は、
前記第２レジスタのデータを更新する段階以前に、前記複数の第４レジスタに前記複数の第２初期値を設定する段階をさらに含む、請求項２３に記載のハッシュ暗号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハッシュ暗号装置及び方法に関し、特に、モバイル電話プラットホーム用エンベデッドシステムに適用されるハッシュ暗号装置及び方法に関する。
【背景技術】
【０００２】
トラスティッドプラットホームモジュール（Ｔｒｕｓｔｅｄ Ｐｌａｔｆｏｒｍ Ｍｏｄｕｌｅ：以下、ＴＰＭとする）は、トラスティッドコンピューティンググループ（Ｔｒｕｓｔｅｄ Ｃｏｍｐｕｔｉｎｇ Ｇｒｏｕｐ：以下、ＴＣＧとする）によって制定された産業標準規格に基づいたマイクロコントローラであって、ハードウェア−ソフトウェアの結合によって信頼性のあるコンピューティング保安の目的で、内部に暗号化アルゴリズム及びハッシュアルゴリズムがハードウェア的に実現されている。
【０００３】
最近の急速な無線ネットワーク技術の発展と共に、デジタル情報化社会が高度化され、電子商取引が活性化されることによって、暗号化技術が高速インターネット網を基盤とした社会、経済的活動の安定性及び信頼性、使用者プライバシーの保護などのための核心技術として認識されている。特に、モバイル電話などの移動用プラットホームは、適切な保安措置が行われない場合には、ハッカーやその他の悪意あるプログラムの攻撃対象になることがある。
【０００４】
ＴＣＧのモバイル電話ワーキンググループ（Ｍｏｂｉｌｅ Ｐｈｏｎｅ Ｗｏｒｋｉｎｇ Ｇｒｏｕｐ：以下、ＷＰＷＧとする）は、ＴＣＧの保安規格をモバイル電話に適合するように拡張する作業を行う。このような保安規格で、モバイル電話のための必須保安モジュールであるモバイルトラスティッドモジュール（Ｍｏｂｉｌｅ Ｔｒｕｓｔｅｄ Ｍｏｄｕｌｅ：以下、ＭＴＭとする）は、当該プラットホームの無欠性を測定し、これを検証する作業を行うために、キーを使用しないＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ）−１を使用するように指定している。しかし、最近では、安定したハッシュアルゴリズムの使用のために、ＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ）−２５６の使用を勧告及び明示している。したがって、モバイル電話におけるプラットホームの無欠性、使用者認証、及びデータ認証のための暗号装置は、ＳＨＡ−１及びＳＨＡ−２５６をモバイル環境によって選択的に使用するように、ＳＨＡ−１及びＳＨＡ−２５６を全て支援することができなければならない。
【０００５】
また、大部分のモバイルデバイスの場合、メモリ、使用することができる電源、及びコンピューティング能力に限界があるので、ＴＣＧの保安規格をモバイル電話にそのまま適用するのには多様な技術的困難が伴う。特に、モバイル電話の場合、バッテリー容量に限界があるので、追加的な暗号演算の駆動は、バッテリーの寿命をさらに短縮させる結果をもたらすようになる。したがって、モバイル電話における暗号装置は、低電力及び低面積の最適化されたハードウェア設計技術が必要である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】欧州特許第１３５１４３２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする技術的課題は、ＳＨＡ−１及びＳＨＡ−２５６を選択的に使用することができるハッシュ暗号装置及び方法を提供することにある。
【０００８】
また、本発明の他の技術的課題は、低電力及び低面積の最適化されたハッシュ暗号装置及び方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一実施例によれば、メッセージスケジューラ、メッセージ圧縮部、そして制御部を含むハッシュ暗号装置が提供される。メッセージスケジューラは、第１ハッシュ演算時に演算データを利用して複数の第１メッセージデータを生成し、第２ハッシュ演算時に 演算データを利用して複数の第２メッセージデータを生成する。メッセージ圧縮部は、前記第１ハッシュ演算時に前記複数の第１メッセージデータを利用して第１メッセージダイジェストを算出し、前記第２ハッシュ演算時に前記複数の第２メッセージデータを利用して第２メッセージダイジェストを算出する。そして、制御部は、外部から受信される制御命令から前記第１及び第２ハッシュ演算のうちの前記演算データに行うハッシュ演算を決定し、前記演算データの長さによって決定された前記ハッシュ演算を行う回数を決定し、決定された前記ハッシュ演算及び前記回数によって前記メッセージスケジューラ及び前記メッセージ圧縮部を制御する。
【００１０】
本発明の他の実施例によれば、ハッシュ暗号装置において、第１及び第２ハッシュ演算に各々必要な複数の第１及び第２メッセージデータを生成するメッセージスケジューラが提供される。メッセージスケジューラは、メモリ、レジスタ、排他的論理和演算器、回転シフト演算器、ロジック演算器、そして論理和演算器を含む。メモリは、演算するブロックデータをＮ個のサブブロックデータに分割して保存し、レジスタは、入力されるデータを保存した後で出力する。排他的論理和演算器は、第１ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータ及び前記レジスタに保存されたデータを排他的論理和演算して、前記レジスタのデータを更新する。回転シフト演算器は、前記排他的論理和演算器によって前記排他的論理和演算が所定の回数繰り返された後で、前記レジスタに保存されたデータを回転シフトして出力する。ロジック演算器は、第２ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータのうちのいずれか１つに対して複数のロジック演算のうちの対応するロジック演算を行う。そして、論理和演算器は、前記ロジック演算器から出力されるデータ及び前記レジスタに保存されたデータを論理和演算して、前記レジスタのデータを更新する。この時、前記第１ハッシュ演算時に前記Ｎ個のサブブロックデータ及び前記回転シフト演算器の出力データが前記複数の第１メッセージデータとして各々使用され、前記第２ハッシュ演算時に前記Ｎ個のサブブロックデータ及び所定の個数の第２メッセージデータに対して前記対応するロジック演算及び前記論理和演算を繰り返した後で、前記論理和演算によるデータが前記複数の第２メッセージデータとして各々使用される。
【００１１】
本発明のまた他の実施例によれば、ハッシュ暗号装置で演算するブロックデータに対してハッシュ演算を行って、メッセージダイジェストを算出するメッセージ圧縮装置が提供される。メッセージ圧縮装置は、複数のレジスタ、そして論理和演算器を含む。複数のレジスタは、入力されるデータを保存した後で出力し、前段のレジスタから出力されるデータが後段のレジスタに入力される構造に連結されている。そして、論理和演算器は、第１ハッシュ演算時に入力される複数の第１データの中から選択される第１データ及び前記複数のレジスタのうちの第１レジスタに保存されたデータを論理和演算して、前記第１レジスタのデータを更新し、第２ハッシュ演算時に入力される複数の第２データの中から選択される第２データ及び前記複数のレジスタのうちの第２レジスタに保存されたデータを論理和演算して、前記第２レジスタのデータを更新する。この時、前記第１ハッシュ演算時に前記第１データの選択を異なるようにして、前記論理和演算を第１回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記複数のレジスタのうちの一番前に位置した第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第１ラウンド演算を行い、前記第１ラウンド演算を前記第１ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第１ハッシュ演算によるメッセージダイジェストを算出する。そして、前記第２ハッシュ演算時に前記第２データの選択を異なるようにして、前記論理和演算を第２回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記第３レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第２ラウンド演算を行い、前記第２ラウンド演算を前記第２ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第２ハッシュ演算によるメッセージダイジェストを算出する。
【００１２】
本発明のまた他の実施例によれば、外部から受信される演算データをＮ個のブロックデータに分割してメモリに保存する段階、前記Ｎ個のブロックデータをレジスタに保存する段階、第１ハッシュ演算時に前記レジスタに保存されたＮ個のブロックデータを１からＮ番目のラウンドで使用する第１メッセージデータに生成する段階、前記第１ハッシュ演算時に、（Ｎ＋１）からＭ番目のラウンドの各ラウンドで前記第１メッセージデータ及び前記レジスタに保存されたデータに基づいて１つの排他的論理和演算器を利用して設定された回数だけ排他的論理和演算を行って、当該ラウンドの第１メッセージデータを生成する段階、第２ハッシュ演算時に前記レジスタに保存されたＮ個のブロックデータを１からＮ番目のラウンドで使用する第２メッセージデータに生成する段階、前記第２ハッシュ演算時に、（Ｎ＋１）からＫ番目のラウンドの各ラウンドで前記第２メッセージデータ及び前記レジスタに保存されたデータに基づいて１つの論理和演算器を利用して設定された回数だけ論理和演算を行って、当該ラウンドの第２メッセージデータを生成する段階、前記第１ハッシュ演算時に前記１からＭ番目のラウンドに対応するＭ個の第１メッセージデータを利用して第１メッセージダイジェストを算出する段階、そして前記第２ハッシュ演算時に前記１からＫ番目のラウンドに対応する第２メッセージデータを利用して第２メッセージダイジェストを算出する段階を含む。
【発明の効果】
【００１３】
本発明は、モバイルプラットホーム用トラスティッドコンピューティングシステム、ＲＦＩＤシステム、無線ネットワークシステム、センサーネットワークシステム、及びホームネットワークシステムなど低電力ハッシュ関数機能を必要とする多様な保安プラットホームにおけるシステムの無欠性の検証及び使用者情報の保護のための核心要素技術に適用される。
【００１４】
また、レジスタに保存されたデータが変化する時点でだけクロック信号を印加することによって、データを処理しないハードウェア資源が消耗する電力を最少化することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例によるハッシュ暗号装置を示したブロック図である。
【図２】図１に示した制御部を示したブロック図である。
【図３】本発明の実施例によるメッセージスケジューラのハードウェアの構造を示した図面である。
【図４】ＳＨＡ−１でのメッセージデータを生成するためのハードウェアの構造を示した図面である。
【図５】ＳＨＡ−２５６でのメッセージデータを生成するためのハードウェアの構造を示した図面である。
【図６】本発明の実施例によるメッセージ圧縮部のハードウェアの構造を示した図面である。
【図７】ＳＨＡ−１でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。
【図８】ＳＨＡ−２５６でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。
【発明を実施するための形態】
【００１６】
以下、添付した図面を参照して、本発明の実施例について、本発明が属する技術分野で通常の知識を有する者が容易に実施することができるように詳細に説明する。しかし、本発明は、多様な相異した形態に具現されて、ここで説明する実施例に限定されない。そして、図面では、本発明の明確な説明のために、説明に不必要な部分は省略し、明細書全体を通して類似した部分には、類似した図面符号を付けた。
【００１７】
明細書及び請求の範囲全体で、ある部分がある構成要素を「含む」とする時、これは特に反対になる記載がない限り、他の構成要素を排除するのではなく、他の構成要素をさらに含むことを意味する。また、明細書に記載された「…部」、「…器」、「モジュール」、「ブロック」などの用語は、少なくとも１つの機能や動作を処理する単位を意味し、これはハードウェアやソフトウェア、またはハードウェア及びソフトウェアの結合によって具現される。
【００１８】
それでは、本発明の実施例によるハッシュ暗号装置及び方法について、図面を参照して詳細に説明する。
【００１９】
図１は本発明の実施例によるハッシュ暗号装置を示したブロック図であり、図２は図１に示した制御部を示したブロック図である。
【００２０】
図１を参照すれば、ハッシュ暗号装置１０は、インターフェース部１００、制御部２００、メッセージスケジューラ３００、及びメッセージ圧縮部４００を含む。
【００２１】
インターフェース部１００は、ハッシュ暗号装置１０が適用されるシステム２０のシステムバス（Ｓｙｓｔｅｍ Ｂｕｓ）２１を通じてシステム２０のマイクロプロセッサと接続されて、システム２０のマイクロプロセッサからデータ及びＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算の開始及び終了を知らせる制御信号を受信して、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が終了すれば、その結果値をシステム２０のマイクロプロセッサに伝達する。
【００２２】
制御部２００は、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算に必要な全般的なデータの流れを管理して制御する。具体的に、制御部２００は、インターフェース部１００によるデータの入力及び出力を制御し、入力されるデータのアドレスを検査して、入力されるデータが制御命令である場合には、当該制御命令を保存し、入力されるデータがＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算を行うための演算データである場合には、これをメッセージスケジューラ３００に保存する。制御部２００は、保存された制御命令を調査して、遂行するハッシュ演算がＳＨＡ−１であるかＳＨＡ−２５６であるのかを決定し、インターフェース部１００を通じて入力される演算データの長さに基づいて演算データを５１２ビットのブロックデータに分割し、ブロックデータの個数によってＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算の遂行回数を決定する。例えば、演算データの長さが１０２４ビットである場合には、２つのブロックデータに分割されるので、上位ビットを含むブロックデータに対してＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算を行った後で、下位ビットを含むブロックデータに対してＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が行われる。
【００２３】
制御部２００は、保存された制御命令を調査して決定したハッシュ演算に必要な制御信号を生成して、インターフェース部１００、メッセージスケジューラ３００、及びメッセージ圧縮部４００に伝達する。
【００２４】
ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算は、最大２６４ビットの長さのデータを受信して、各々１６０／２５６ビットのメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出する。メッセージダイジェストを算出するために、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算は、５１２ビットのデータを基本ブロック単位として行われ、１つの基本ブロックのデータに対してＳＨＡ−１ハッシュ演算は８０ラウンドにわたって行われ、ＳＨＡ−２５６ハッシュ演算は６４ラウンドにわたって行われる。したがって、１０２４ビットの演算データの場合には、２回のＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が行われる。つまり、上位５１２ビットに対して８０／６４ラウンドのＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が行われた後で、下位５１２ビットに対して８０／６４ラウンドのＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が行われる。
【００２５】
また、制御部２００は、メッセージスケジューラ３００及びメッセージ圧縮部４００の内部ハードウェアモジュールの駆動に必要な演算の遂行順序及び演算結果を保存する動作を８０／６４ラウンドにわたって制御する。
【００２６】
図２を参照すれば、制御部２００は、カウンタ２１０、２２０、状態遷移部２３０、及びレジスタ２４０を含む。
【００２７】
カウンタ２１０は、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算を行う間にＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算が行われるラウンド情報を係数して、現在行われるラウンド情報を状態遷移部２３０に提供する。カウンタ２１０は、８ビットカウンタとして使用される。
【００２８】
カウンタ２２０は、現在行われるラウンドで内部クロックサイクルの進行情報を保存して、この情報を状態遷移部２３０に提供する。この時、カウンタ２１０は、４ビットカウンタとして使用される。
【００２９】
状態遷移部２３０は、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算のための有限個の状態を各々有して、カウンタ２１０、２２０から現在行われるラウンド情報及び内部クロックサイクルの進行情報に基づいて行われる入力によって現在の状態から異なる状態に状態遷移（ｓｔａｔｅ ｔｒａｎｓｉｔｉｏｎ）し、これに同期化して制御信号を生成して、生成した制御信号をインターフェース部１００、メッセージスケジューラ３００、及びメッセージ圧縮部４００に伝達する。
【００３０】
レジスタ２４０は、入力される制御命令を保存する。
【００３１】
再び、図１を参照すれば、メッセージスケジューラ３００は、入力されるブロックデータを保存し、ブロックデータから８０／６０ラウンドにわたって行われるＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算に必要な８０／６０個のメッセージデータ（Ｗｔ）を生成して、各ラウンドに対応するメッセージデータ（Ｗｔ）をメッセージ圧縮部４００に提供する。この時、ＳＨＡ−１ハッシュ演算に必要なメッセージデータ（Ｗｔ）は、数式１のように生成され、ＳＨＡ−２５６ハッシュ演算に必要なメッセージデータ（Ｗｔ）は、数式２のように生成される。
【００３２】
つまり、数式１及び２に示したように、１から１６ラウンドまでのハッシュ演算に使用されるメッセージデータ（Ｗｔ）としては、５１２ビットのブロックデータを３２ビットに分割した１６個の３２ビットのサブブロックデータ（Ｍ１−Ｍ１６）が使用され、１７から８０／１７から６４ラウンドまでのＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算に使用されるメッセージデータ（Ｗｔ）としては、設定された組み合わせ論理回路を利用して別途に生成されたデータが使用される。ここで、Ｍ１は５１２ビットのブロックデータで最上位３２ビットのデータを含む１番目のサブブロックデータであり、Ｍ１６は５１２ビットのブロックデータで最下位３２ビットのデータを含む１６番目のサブブロックデータである。
【数１】
2010134465.tif 000003
ここで、ｔはラウンドの数であり、Ｍｔは５１２ビットのブロックデータでｔ番目のラウンドで使用されるｔ番目のサブブロックデータである。ＲＯＴは回転シフト（ｒｏｔａｔｅ−ｓｈｉｆｔ）演算であり、ＲＯＴＬＥＦＴ１は１ビットずつ左側に移動させる演算を意味する。
【数１−２】
2010134465.tif 000004
はビット単位で行われる排他的論理和（ＸＯＲ）演算である。
【数２】
2010134465.tif 000005
ここで、ｔはラウンドの数であり、＋はモジュラ和算演算だ。σ０及びσ１はロジック関数であって、各々数式３及び４のように示される。
【数３】
2010134465.tif 000006
【数４】
2010134465.tif 000007
【００３３】
数式３及び４で、ＲＮはＮビットを右側にシフトする演算で、シフトされるビットの数だけ「０」で満たされる演算を意味し、ＳＮはＮビットを右側に回転させる演算を意味する。
【００３４】
メッセージ圧縮部４００は、メッセージスケジューラ３００から提供される３２ビットのメッセージデータ（Ｗｔ）を８０／６４ラウンドにかけてＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算を行って、その結果値であるメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を保存する。この時、ＳＨＡ−１ハッシュ演算及びＳＨＡ−２５６ハッシュ演算は、各々数式５及び６のように行われる。
【００３５】
数式５及び６で示したように、ＳＨＡ−１ハッシュ演算のためには５個の変数（ａ−ｅ）が使用され、ＳＨＡ−２５６ハッシュ演算のためには８個の変数（ａ−ｈ）が使用され、これら変数は、ラウンドによって一段階ずつシフト移動したり、予め決定されている演算によって各々異なる値を保存する。
【数５】
2010134465.tif 000008
【数６】
2010134465.tif 000009
【００３６】
数式５で、ＫｔはＳＨＡ−１ハッシュ演算で定義するラウンド定数であって、演算されるラウンドによって予め設定された値を有する。ｆｔはＳＨＡ−１ハッシュ演算で使用するロジック関数であって、数式７のように示される。
【００３７】
また、数式６で、Ｃｈ、Ｍａｊ、Σ０、及びΣ１は各々ロジック関数であって、各々数式８乃至１１のように示される。
【数７】
2010134465.tif 000010
【数８】
2010134465.tif 000011
【数９】
2010134465.tif 000012
【００３８】
数式８及び９で、∧はビット単位で行われる論理積（ＡＮＤ）演算である。
【数１０】
2010134465.tif 000013
【数１１】
2010134465.tif 000014
【００３９】
次に、本発明の実施例によるメッセージスケジューラのハードウェアの構造について、図３乃至図５を参照して詳細に説明する。
【００４０】
図３は本発明の実施例によるメッセージスケジューラのハードウェアの構造を示した図面である。図４及び図５は各々ＳＨＡ−１及びＳＨＡ−２５６でのメッセージデータを生成するためのハードウェアの構造を示した図面である。
【００４１】
図３を参照すれば、メッセージスケジューラ３００は、メモリ３０２、ロジック関数演算器３０４、３０６、排他的論理和演算器３０８、論理和演算器３１０、レジスタ３１２、回転シフト演算器３１４、３１６、及び選択器３１８、３２０、３２２、３２４、３２６を含む。これらメモリ３０２、ロジック関数演算器３０４、３０６、排他的論理和演算器３０８、論理和演算器３１０、レジスタ３１２、回転シフト演算器３１４、３１６、及び選択器３１８、３２０、３２２、３２４、３２６は、制御部２００から伝達される制御信号によって動作する。図３では、ロジック関数演算器３０４、３０５が各々行うロジック関数をσ０及びσ１で示し、回転シフト演算器３１４、３１６が行う演算を＜＜１で示した。
【００４２】
メモリ３０２は、入力端及び出力端を有し、システム２０のマイクロプロセッサから伝達される５１２ビットのブロックデータを保存する。
【００４３】
ロジック関数演算器３０４、３０６は、入力端及び出力端を有し、入力端に入力されるデータに対してＳＨＡ−２５６ハッシュ演算に必要な各々数式３及び４に相当する演算を行って、出力端を通じて出力する。
【００４４】
排他的論理和演算器３０８は、２つの入力端及び出力端を有し、２つの入力端に入力されるデータを積算演算して、出力端を通じて出力する。つまり、排他的論理和演算器３０８は、ＳＨＡ−１ハッシュ演算に必要な数式１の
【数１２】
2010134465.tif 000015
に相当する演算を行う。
【００４５】
論理和演算器３１０は、２つの入力端及び出力端を有し、２つの入力端に入力されるデータを和算演算して、出力端を通じて出力する。
【００４６】
レジスタ３１２は、入力端及び出力端を有し、入力端に入力されるデータを保存して、保存したデータを出力端を通じて出力する。本発明の実施例では、１つの排他的論理和演算器３０８を利用して、１７から８０ラウンドに相当する数式１の演算を行い、１つの論理和演算器３１０を利用して、１７から６４ラウンドに相当する数式２の演算を行う。このために、１つの排他的論理和演算器３０８は、４回の積算演算を繰り返し、１つの論理和演算器３１０も、４回の和算演算を繰り返すので、レジスタ３１２には、以前の演算値、つまりＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算に必要なメッセージデータ（Ｗｔ）を生成する際の中間値が保存される。
【００４７】
回転シフト演算器３１４、３１６は、入力端及び出力端を有し、入力端に入力されるデータを１ビットずつ左側に回転させて、出力端を通じて出力する。つまり、回転シフト演算器３１４、３１６は、数式１の「ＲＯＴＬＥＦＴ１」に相当する演算を行う。
【００４８】
選択器３１８、３２４、３２６は、各々２つの入力端及び出力端を有し、制御部２００で決定したＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算によって２つの入力端に入力されるデータのうちの１つを選択して、出力端を通じて出力する。また、選択器３２０、３２２は、３つの入力端及び出力端を有し、制御部２００で決定したＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算によって３つの入力端に入力されるデータのうちの１つを選択して、出力端を通じて出力する。
【００４９】
具体的に、第１入力端から５１２ビットのブロックデータを受信する選択器３１８の第２入力端が選択器３２６の出力端に連結されており、選択器３１８の出力端に入力端が連結されているメモリ３０２の出力端が選択器３２０、３２２の第１入力端、ロジック関数演算器３０４、３０６の入力端、及び排他的論理和演算器３０８の第１入力端に連結されている。ロジック関数演算器３０４、３０６の出力端が各々選択器３２０の第２及び第３入力端に連結されており、選択器３２０の出力端が論理和演算器３１０の第１入力端に連結されている。排他的論理和演算器３０８の出力端及び論理和演算器３１０の出力端が選択器３２２の第２及び第３入力端に各々連結されており、選択器３２２の出力端がレジスタ３１２の入力端及び回転シフト演算器３１６の入力端に連結されている。また、レジスタ３１２の出力端が選択器３２４の第１入力端、回転シフト演算器３１４の入力端、及び排他的論理和演算器３０８の第２入力端に連結されている。選択器３２４の第２入力端が回転シフト演算器３１４の出力端に連結されており、選択器３２４の出力端及び回転シフト演算器３１６の出力端が各々選択器３２６の第１及び第２入力端に連結されており、選択器３２６の出力端が選択器３１８の入力端に連結されている。この時、選択器３２４の出力端を通じて出力されるデータが当該ラウンドでのメッセージデータ（Ｍｔ）となる。
【００５０】
このようなメッセージスケジューラ３００におけるＳＨＡ−１ハッシュ演算のための段階別細部動作は、表１のように行われる。表１はＳＨＡ−１ハッシュ演算のための段階別細部動作を示した表である。表１で、「ｘ」はいかなる値であっても全体の演算には関係ないことを示し、「→」は左側のマスの値と同一な値を示す。「Ｍｏｕｔ」はメモリ３０２から出力されるデータを示し、「Ｍ１」及び「Ｍ２」は各々選択器３２２、３２４から出力されるデータを示し、「Ｒ１」はレジスタ３１２から出力されるデータを示す。また、「ｒｅｇ＿ｗ」はレジスタ３１２に保存されたデータを意味し、「＜＜１（ｒｅｇ＿ｗ）ｔ」はｔラウンドでレジスタ３１２に保存されたデータが１ビットずつ左側に回転したデータを示す。
【表１】
2010134465.tif 000016
【００５１】
まず、制御部２００からの制御信号によって、メッセージスケジューラ３００のメモリ３０２、排他的論理和演算器３０８、選択器３１８、３２２、３２４、レジスタ３１２、及び回転シフト演算器３１４、３１６がＳＨＡ−１ハッシュ演算のためのロジック演算部として動作して、ＳＨＡ−１ハッシュ演算に使用する１から８０ラウンドでのメッセージデータ（Ｗｔ）を生成する。
【００５２】
表１を参照すれば、メッセージスケジューラ３００は、５１２ビットのブロックデータを利用して、１クロックサイクルにわたって１から１６ラウンドに使用するメッセージデータ（Ｗｔ）を生成する。つまり、インターフェース部１００を通じて５１２ビットのブロックデータが入力されれば、このブロックデータは、選択器３１８を通じてメモリ３０２に保存される。メモリ３０２に保存されたブロックデータは、選択器３２２を通じてレジスタ３１２に保存される。その後、レジスタ３１２は、ｔが１から１６になる時まで保存されたブロックデータのうちのｔ番目のサブブロックデータを選択器３２４を通じてメッセージ圧縮部４００に順次に出力する。この時、メッセージ圧縮部４００に出力される各サブブロックデータが当該ラウンドでのメッセージデータ（Ｗｔ）として使用される。
【００５３】
次に、メッセージスケジューラ３００は、４クロックサイクル（Ｉ−ＩＶ）にわたって１６から８０ラウンドでの各メッセージデータ（Ｗｔ）を生成する。
【００５４】
具体的に、クロックサイクル（Ｉ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−１６）番目のサブブロックデータ（Ｍｔ−１６）を出力する。メモリ３０２から出力されるサブブロックデータ（Ｍｔ−１６）は、選択器３２２を通じてレジスタ３１２に保存される。そして、レジスタ３１２に保存されたサブブロックデータ（Ｍｔ−１６）は、排他的論理和演算器３０８の第２入力端に入力される。
【００５５】
次に、クロックサイクル（ＩＩ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−１４）番目のサブブロックデータ（Ｍｔ−１４）を排他的論理和演算器３０８の第１入力端に出力する。排他的論理和演算器３０８は、２つの入力端に入力されたデータ（Ｍｔ−１６、Ｍｔ−１４）を積算演算して出力する。排他的論理和演算器３０８から出力されたデータ
【数１３】
2010134465.tif 000017
は、選択器３２２を通じてレジスタ３１２に保存される。そして、レジスタ３１２に保存されたデータ
【数１４】
2010134465.tif 000018
は、排他的論理和演算器３０８の第２入力端に入力される。
【００５６】
クロックサイクル（ＩＩＩ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−８）番目のサブブロックデータ（Ｍｔ−８）を排他的論理和演算器３０８の第１入力端に出力する。排他的論理和演算器３０８は、２つの入力端に入力されたデータ
【数１５】
2010134465.tif 000019
を積算演算して出力する。排他的論理和演算器３０８から出力されたデータ
【数１６】
2010134465.tif 000020
は、選択器３２２を通じてレジスタ３１２に保存される。レジスタ３１２に保存されたデータ
【数１７】
2010134465.tif 000021
は、再び排他的論理和演算器３０８の第２入力端に入力される。
【００５７】
最後のクロックサイクル（ＩＶ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−３）番目のサブブロックデータ（Ｍｔ−３）を排他的論理和演算器３０８の第１入力端に出力する。排他的論理和演算器３０８は、２つの入力端に入力されたデータ
【数１８】
2010134465.tif 000022
を積算演算して出力する。排他的論理和演算器３０８から出力されたデータ
【数１９】
2010134465.tif 000023
は、選択器３２２を通じてレジスタ３１２に保存される。また、排他的論理和演算器３０８から出力されたデータ
【数２０】
2010134465.tif 000024
は、選択器３２２を通じて回転シフト演算器３１６に入力される。
【００５８】
レジスタ３１２は、保存されたデータ
【数２１】
2010134465.tif 000025
を回転シフト演算器３１４に出力する。回転シフト演算器３１４は、データ
【数２２】
2010134465.tif 000026
を１ビットずつ左側に回転させた後で出力する。回転シフト演算器３１４から出力されたデータ［＜＜１（ｒｅｇ＿ｗ）ｔ］は、選択器３２４を経てメッセージ圧縮部４００に入力され、選択器３２４から出力されたデータ［＜＜１（ｒｅｇ＿ｗ）ｔ］がｔ番目のラウンドでのメッセージデータ（Ｗｔ）として使用される。
【００５９】
また、回転シフト演算器３１６は、データ
【数２３】
2010134465.tif 000027
を１ビットずつ左側に回転させた後で出力する。回転シフト演算器３１６から出力されたデータ［＜＜１（ｒｅｇ＿ｗ）ｔ］は、選択器３２６、３１８を経てメモリ３０２のサブブロックデータの位置（Ｍｔ−１８）に保存される。
【００６０】
これとは異なって、選択器３２４から出力されたデータ［＜＜１（ｒｅｇ＿ｗ）ｔ］が選択器３２６、３１８を経てメモリ３０２のサブブロックデータの位置（Ｍｔ−１８）に保存されてもよい。このように、選択器３２４から出力されたデータ［＜＜１（ｒｅｇ＿ｗ）ｔ］が選択器３２６、３１８を経てメモリ３０２のサブブロックデータの位置（Ｍｔ−１８）に保存される場合には、回転シフト演算器３１６及び選択器３２６を省略することができるが、１ラウンドのメッセージデータの生成に必要なクロックサイクルの数が１クロックだけ増加する。
【００６１】
このように、最後のクロックサイクル（ＩＶ）が終了すれば、１ラウンドのメッセージデータ（Ｗｔ）が生成される。
【００６２】
したがって、メッセージスケジューラ３００は、１７ラウンドから８０ラウンドまでの毎ラウンドで段階（Ｉ−ＩＶ）を繰り返すことによって、１７ラウンドから８０ラウンドでのメッセージデータ（Ｗｔ）を生成してメッセージ圧縮部４００に出力し、生成されたメッセージデータ（Ｗｔ）は、メモリ３０２のサブブロックデータの位置（Ｍｔ−１６）に保存される。したがって、メモリ３０２のアクセスアドレスは、演算するラウンドをｉとする時、（ｉ ｍｏｄ２４）に定義される。
【００６３】
また、メッセージスケジューラ３００におけるＳＨＡ−２５６ハッシュ演算のための段階別細部動作は、表２のように行われる。表２はＳＨＡ−２５６ハッシュ演算のための段階別細部動作を示した表である。表２で、「ｘ」はいかなる値でも全体の演算には関係ないことを示し、「→」は左側のマスのデータと同一な値を示す。「Ｍｏｕｔ」はメモリ３０２から出力されるデータを示し、「Ｍ１」及び「Ｍ３」は各々選択器３２２、３２０から出力されるデータを示し、「Ｒ１」はレジスタ３１２から出力されるデータを示す。また、「Ａ１」は論理和演算器３１０から出力されるデータを示す。
【表２】
2010134465.tif 000028
【００６４】
まず、制御部２００からの制御信号によって、メッセージスケジューラ３００のメモリ３０２、ロジック関数演算器３０４、３０６、論理和演算器３１０、選択器３１８、３２０、３２２、３２４、３２６、及びレジスタ３１２がＳＨＡ−２５６ハッシュ演算のためのロジック演算部として動作して、ＳＨＡ−２５６ハッシュ演算に使用する１から６４ラウンドでのメッセージデータ（Ｗｔ）を生成する。
【００６５】
表２を参照すれば、メッセージスケジューラ３００は、ＳＨＡ−１ハッシュ演算と同様な方法で、１クロックサイクルにわたって１から１６ラウンドに使用するメッセージデータ（Ｗｔ）を生成する。
【００６６】
次に、メッセージスケジューラ３００は、４クロックサイクル（Ｉ−ＩＶ）にわたって１６から６４ラウンドでの各メッセージデータ（Ｗｔ）を生成する。
【００６７】
具体的に、クロックサイクル（Ｉ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−１６）番目のサブブロックデータ（Ｍｔ−１６）を選択器３２２に出力する。メモリ３０２から出力されるサブブロックデータ（Ｍｔ−１６）は、選択器３２２を通じてレジスタ３１２に保存される。レジスタ３１２に保存されたサブブロックデータ（Ｍｔ−１６）は、選択器３２４を経て論理和演算器３１０の第２入力端に入力される。
【００６８】
クロックサイクル（ＩＩ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−１５）番目のサブブロックデータ（Ｍｔ−１５）をロジック関数演算器３０４に出力する。ロジック関数演算器３０４は、サブブロックデータ（Ｍｔ−１５）に対して数式３に相当する演算を行った後で出力する。ロジック関数演算器３０４から出力されたデータ［σ０（Ｍｔ−１５）］は、選択器３２０を通じて論理和演算器３１０の第１入力端に入力される。論理和演算器３１０は、２つの入力端に入力されたデータ［σ０（Ｍｔ−１５）、Ｍｔ−１６］を和算演算して出力する。論理和演算器３１０から出力されたデータ［σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２２を通じてレジスタ３１２に保存される。そして、レジスタ３１２に保存されたデータ［σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２４を経て論理和演算器３１０の第２入力端に入力される。
【００６９】
クロックサイクル（ＩＩＩ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−７）番目のサブブロックデータ（Ｍｔ−７）を選択器３２０に出力する。メモリ３０２から出力されたサブブロックデータ（Ｍｔ−７）は、選択器３２０を通じて論理和演算器３１０の第１入力端に入力される。論理和演算器３１０は、２つの入力端に入力されたデータ［Ｍｔ−７、σ０（Ｍｔ−１５）＋Ｍｔ−１６］を和算演算して出力する。論理和演算器３１０から出力されたデータ［Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２２を通じてレジスタ３１２に保存される。そして、レジスタ３１２に保存されたデータ［Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２４を経て論理和演算器３１０の第２入力端に入力される。
【００７０】
最後のクロックサイクル（ＩＶ）で、メモリ３０２は、保存された５１２ビットのブロックデータから（ｔ−２）番目のサブブロックデータ（Ｍｔ−２）をロジック関数演算器３０６に出力する。ロジック関数演算器３０６は、サブブロックデータ（Ｍｔ−２）に対して数式４に相当する演算を行った後で出力する。ロジック関数演算器３０６から出力されたデータ［σ１（Ｍｔ−２）］は、選択器３２０を経て論理和演算器３１０の第１入力端に入力される。論理和演算器３１０は、２つの入力端に入力されたデータ［（σ１Ｍｔ−２）、Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］を和算演算して出力する。論理和演算器３１０から出力されたデータ［σ１（Ｍｔ−２）＋Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２２を通じてレジスタ３１２に保存される。また、レジスタ３１２に保存されたデータ［σ１（Ｍｔ−２）＋Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２４、３２６、３１８を通じてメモリ３０２のサブブロックデータの位置（Ｍｔ−１６）に保存される。このように、最後のクロックサイクル（ＩＶ）が終了した後にレジスタ３１２に保存されたデータ［σ１（Ｍｔ−２）＋Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２４を経てメッセージ圧縮部４００に出力され、選択器３２４から出力されたデータ［σ１（Ｍｔ−２）＋Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、ｔ番目のラウンドでのメッセージデータ（Ｗｔ）として使用される。また、選択器３２４から出力されたデータ［σ１（Ｍｔ−２）＋Ｍｔ−７＋σ０（Ｍｔ−１５）＋Ｍｔ−１６］は、選択器３２６、３１８を通じてメモリ３０２のサブブロックデータの位置（Ｍｔ−１６）に保存される。
【００７１】
つまり、最後のクロックサイクル（ＩＶ）が終了すれば、１ラウンドのメッセージデータ（Ｗｔ）が生成される。したがって、メッセージスケジューラ３００は、１７ラウンドから６４ラウンドまで毎ラウンドで段階（Ｉ−ＩＶ）を繰り返すことによって、１７ラウンドから６４ラウンドでのメッセージデータ（Ｗｔ）を生成してメッセージ圧縮部４００に出力し、生成されたメッセージデータ（Ｗｔ）は、メモリ３０２のサブブロックデータの位置（Ｍｔ−１６）に保存される。したがって、メモリ３０２のアクセスアドレスは、演算するラウンドをｉとする時、（ｉ ｍｏｄ２４）に定義される。
【００７２】
一般に、数式１に示された演算のためには、図４に示したように、メモリ４１、選択器４２、
【数２４】
2010134465.tif 000029
の演算のための３つの排他的論理和演算器４３１−４２３、「ＲＯＴＬＥＦＴ１」の演算のための回転シフト演算器４４、及び１６個のレジスタ４５１−４５１６が必要である。また、数式２に示された演算のためには、図５に示したように、「σ１」及び「σ０」の演算のための２つのロジック関数演算器５１１、５１２、「σ１（Ｗｔ−２）＋Ｗｔ−７＋σ０（Ｗｔ−１５）＋Ｗｔ−１６」の演算のための３つの論理和演算器５２１−５２３、及び１６個のレジスタ５３１−５３１６が必要である。しかし、図４及び図５のように、過度なハードウェア資源の使用は、ハードウェアの面積及び消費電力を増加させるので、低面積特性を必要とするモバイル電話や低電力エンベデッドシステムに適用するのは困難である。
【００７３】
しかし、本発明の実施例によるメッセージスケジューラ３００は、１つのレジスタ３１２、１つの論理和演算器３１０、及び１つの排他的論理和演算器３０８を利用して、ＳＨＡ−１及びＳＨＡ−２５６ハッシュ演算に必要な１−８０／１−６４ラウンドのメッセージデータ（Ｗｔ）を生成するので、ハードウェアの面積及び消費電力が最少化される。また、図４とは異なって、本発明の実施例によるメッセージスケジューラ３００は、１６ラウンド以降にもメモリ３０２を使用するので、メモリ３０２の活用度が最大化される。
【００７４】
次に、本発明の実施例によるメッセージ圧縮部のハードウェアの構造について、図６乃至図８を参照して詳細に説明する。
【００７５】
図６は本発明の実施例によるメッセージ圧縮部のハードウェアの構造を示した図面である。図７及び図８は各々ＳＨＡ−１及びＳＨＡ−２５６でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。
【００７６】
図６を参照すれば、メッセージ圧縮部４００は、レジスタ４０１−４０８、回転シフト演算器４１１、４１２、ロジック関数演算器４１３−４１７、論理和演算器４２０、保存モジュール４３０、及び選択器４４１−４４８を含む。図６では、ロジック関数演算器４１３−４１７が各々行うロジック関数をＭａｊ、Ｆ、Ｃｈ、Σ０、及びΣ１で示し、回転シフト演算器４１１、４１２が行う演算を各々＜＜３０及び＜＜５で示した。この時、「３０」及び「５」は回転演算するビットの数を示す。また、図６で、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈは、各々レジスタ４０１−４０８に保存された値を示す。
【００７７】
レジスタ４０１−４０８は、各々入力端及び出力端を有し、入力端に入力されるデータを保存して、保存したデータを出力端を通じて出力する。このようなレジスタ４０１−４０８には、ＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算によってメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）が算出される際の中間値が保存される。
【００７８】
回転シフト演算器４１１、４１２は、各々入力端及び出力端を有し、入力端に入力されるデータを３０／５ビットずつ左側に移動させて、出力端を通じて出力する。つまり、回転シフト演算器４１１、４１２は、数式１の「ＲＯＴＬＥＦＴ３０／ＲＯＴＬＥＦＴ５」に相当する演算を行う。
【００７９】
ロジック関数演算器４１３−４１５は、各々３つの入力端及び出力端を有し、各々対応するロジック関数演算を行って、出力端を通じて出力する。つまり、ロジック関数演算器４１３、４１４、４１５は、３つの入力端に入力されるデータに対して各々「数式６のＭａｊ／数式６のＣｈ／数式５のｆ」に相当する演算を行う。また、ロジック関数演算器４１６、４１７は、入力端及び出力端を有し、入力端に入力されるデータに対して数式１０のΣ０／数式１１のΣ１に相当する演算を行って、出力端を通じて出力する。
【００８０】
論理和演算器４２０は、２つの入力端及び出力端を有し、２つの入力端に入力されるデータを和算演算して、出力端を通じて出力する。
【００８１】
保存モジュール４３０は、ＳＨＡ−１及びＳＨＡ−２５６ハッシュ演算に使用される初期値（Ｉｎｉｔｉａｌ Ｖａｌｕｅ）であるＨｉ値及びラウンド定数Ｋｔを保存している。ラウンド定数Ｋｔは、各ラウンドごとに異なる値である。
【００８２】
選択器４４１−４４７は、各々２つの入力端及び出力端を有し、制御部２００で決定したＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算によって２つの入力端に入力されるデータのうちの１つを選択して、出力端を通じて出力する。また、選択器４４８は、７個の入力端及び出力端を有し、制御部２００で決定したＳＨＡ−１／ＳＨＡ−２５６ハッシュ演算によって７個の入力端に入力されるデータのうちの１つを選択して、出力端を通じて出力する。
【００８３】
具体的に、論理和演算器４２０の第１及び第２入力端は、各々選択器４４７、４４８の出力端に各々連結されており、論理和演算器４２０の出力端は、レジスタ４０１及び選択器４４２、４４３、４４４の第１入力端に連結されている。
【００８４】
レジスタ４０１の出力端がレジスタ４０２の入力端、ロジック関数演算器４１３の第１入力端、回転シフト演算器４１２の入力端、及びロジック関数演算器４１６の入力端に連結されている。レジスタ４０２の出力端が選択器４４１の第１入力端、回転シフト演算器４１１の入力端、ロジック関数演算器４１３の第２入力端、及びロジック関数演算器４１４の第１入力端に連結されており、回転シフト演算器４１１の出力端が選択器４４１の第２入力端に連結されている。
【００８５】
選択器４４１の出力端がレジスタ４０３の入力端に連結されており、レジスタ４０３の出力端が選択器４４２の第２入力端、ロジック関数演算器４１４の第２入力端、及びロジック関数演算器４１３の第３入力端に連結されている。
【００８６】
選択器４４２の出力端は、レジスタ４０４の入力端に連結されており、レジスタ４０４の出力端は、選択器４４３の第２入力端、ロジック関数演算器４１４の第３入力端、及び選択器４４８の第３入力端に連結されている。
【００８７】
選択器４４３の出力端がレジスタ４０５の入力端に連結されており、レジスタ４０５の出力端がレジスタ４０６の入力端、ロジック関数演算器４１５の第１入力端、選択器４４７の第１入力端、及びロジック関数演算器４１７の入力端に連結されている。レジスタ４０６の出力端がレジスタ４０７の入力端及びロジック関数演算器４１５の第２入力端に連結されており、レジスタ４０７の出力端が選択器４４４の第２入力端及びロジック関数演算器４１５の第３入力端に連結されており、ロジック関数演算器４１５及びロジック関数演算器４１７の出力端が各々選択器４４８の第１及び第２入力端に連結されている。そして、ロジック関数演算器４１３、４１４の出力端が各々選択器４４５の第１及び第２入力端に連結されており、回転シフト演算器４１２及びロジック関数演算器４１６の出力端が各々選択器４４６の第１及び第２入力端に連結されている。
【００８８】
選択器４４４の出力端がレジスタ４０８の入力端に連結されており、レジスタ４０８の出力端が選択器４４７の第２入力端に連結されている。
【００８９】
また、選択器４４５、４４６の出力端が各々選択器４４８の第５及び第６入力端に連結されており、保存モジュール４３０が選択器４４８の第４入力端に連結されており、選択器４４８の第７入力端には、中間データ（Ｗｔ）が入力される。
【００９０】
このようなメッセージ圧縮部４００におけるＳＨＡ−１ハッシュ演算のための段階別細部動作は、表３のように行われる。表３はＳＨＡ−１ハッシュ演算のためのメッセージ圧縮部４００の段階別細部動作を示した表である。表３で、「ａ−ｅ」は各々レジスタ４０１−４０５に保存されたデータを示す。
【表３】
2010134465.tif 000030
【００９１】
制御部２００からの制御信号によって、メッセージ圧縮部４００のレジスタ４０１−４０５、回転シフト演算器４１２、ロジック関数演算器４１４、論理和演算器４２０、保存モジュール４３０、及び選択器４４１−４４８が動作して、ＳＨＡ−１ハッシュ演算によるメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出する。
【００９２】
まず、段階２のクロックサイクル（Ｉ）に先立って、ＳＨＡ−１ハッシュ演算で定義している初期値であるＨ０−Ｈ４をレジスタ４０１−４０５に設定しなければならない（段階１）。このような初期値（Ｈ０−Ｈ４）の設定は、５クロックサイクルにかけて行われ、このために、レジスタ４０１−４０５は、シフトレジスタとして動作し、選択器４４１−４４３は、各々前段のレジスタ４０２−４０４から出力されたデータを後段のレジスタ４０３−４０５に出力する。
【００９３】
具体的に、段階１のクロックサイクル（Ｉ）で、保存モジュール４３０は、Ｈ４を出力する。保存モジュール４３０から出力されたＨ４は、選択器４４８を経て論理和演算器４２０の第１入力端に入力される。そして、論理和演算器４２０の第２入力端には、選択器４４７を通じてレジスタ４０５に設定されたｅが入力される。この時、ａ、ｂ、ｃ、ｄ、及びｅは０であるので、論理和演算器４２０の出力値はＨ４になり、Ｈ４はレジスタ４０１に保存される（ａ＝Ｈ４）。そして、レジスタ４０１−４０４に保存された値は、レジスタ４０２−４０５に各々１段階ずつシフトされて保存される。そうすれば、ｂ、ｃ、ｄ、及びｅは各々Ｈ４、０、０、及び０になる。
【００９４】
段階１のクロックサイクル（ＩＩ）で、保存モジュール４３０は、Ｈ３を出力する。保存モジュール４３０から出力されたＨ３は、選択器４４８を経て論理和演算器４２０の第１入力端に入力される。そして、論理和演算器４２０の第２入力端には、選択器４４７を通じてレジスタ４０５に設定されたｅが入力される。この時、ｅは０であるので、論理和演算器４２０の出力値はＨ３になり、Ｈ３はレジスタ４０１に保存される（ａ＝Ｈ３）。そして、レジスタ４０１−４０４に保存された値は、レジスタ４０２−４０５に各々１段階ずつシフトされて保存される。そうすれば、ｂ、ｃ、ｄ、及びｅは各々Ｈ３、Ｈ４、０、及び０になる。
【００９５】
これと同様な方法で、クロックサイクル（Ｖ）が全て行われれば、ａ、ｂ、ｃ、ｄ、及びｅは各々Ｈ０、Ｈ１、Ｈ２、Ｈ３、及びＨ４になる。
【００９６】
このようにして、レジスタ４０１−４０５に初期値（Ｈ０−Ｈ４）が設定されれば、メッセージ圧縮部４００は、表３に示された段階２の動作を行う。
【００９７】
表３を参照すれば、段階２のクロックサイクル（Ｉ）で、保存モジュール４３０は、ラウンド定数（Ｋｔ）を出力する。保存モジュール４３０から出力されたＫｔは、選択器４４８を経て論理和演算器４２０の第１入力端に入力される。論理和演算器４２０は、第１入力端に入力されたデータ（Ｋｔ）及び選択器４４７を通じて第２入力端に入力されるレジスタ４０５のｅを和算演算して出力する。論理和演算器４２０から出力されたデータ（Ｋｔ＋ｅ）は、選択器４４３を経てレジスタ４０５に保存される（ｅ＝Ｋｔ＋ｅ）。
【００９８】
段階２のクロックサイクル（ＩＩ）で、回転シフト演算器４１２は、レジスタ４０１のａを５ビットずつ左側に回転させた後で出力する。回転シフト演算器４１２から出力されたデータ［ＲＯＴＬＥＦＴ５（ａ）］は、選択器４４６、４４８を経て論理和演算器４２０の第１入力端に入力される。論理和演算器４２０は、第１入力端に入力されたデータ［ＲＯＴＬＥＦＴ５（ａ）］及び選択器４４７を通じて第２入力端に入力されるレジスタ４０５のｅ（＝Ｋｔ＋ｅ）を和算演算して出力する。論理和演算器４２０から出力されたデータ［ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］は、選択器４４３を経てレジスタ４０５に保存される［ｅ＝ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］。
【００９９】
段階２のクロックサイクル（ＩＩＩ）で、選択器４４８は、第７入力端に入力される中間データ（Ｗｔ）を出力する。そうすれば、論理和演算器４２０は、中間データ（Ｗｔ）及び選択器４４７を通じて入力されるレジスタ４０５のｅ［＝ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］を和算演算して出力する。論理和演算器４２０から出力されたデータ［Ｗｔ＋ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］は、選択器４４３を経てレジスタ４０５に保存される［ｅ＝Ｗｔ＋ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］。
【０１００】
段階２の最後のクロックサイクル（ＩＶ）で、ロジック関数演算器４１４は、レジスタ４０２−４０４のｂ、ｃ、ｄを演算して出力する。ロジック関数演算器４１４から出力されたデータ［ｆ（ｂ、ｃ、ｄ）］は、選択器４４５、４４８を経て論理和演算器４２０の第１入力端に入力される。論理和演算器４２０は、第１入力端に入力されたデータ［ｆ（ｂ、ｃ、ｄ）］及び選択器４４７を通じて第２入力端に入力されるレジスタ４０５のｅ［＝Ｗｔ＋ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］を和算演算して出力する。論理和演算器４２０から出力されたデータ［ｆ（ｂ、ｃ、ｄ）＋Ｗｔ＋ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］は、レジスタ４０１に保存される［ａ＝ｆ（ｂ、ｃ、ｄ）＋Ｗｔ＋ＲＯＴＬＥＦＴ５（ａ）＋Ｋｔ＋ｅ］。そして、レジスタ４０１−４０４に保存されたａ、ｂ、ｃ、ｄ、及びｅは、各々１段階ずつシフトされて保存される。
【０１０１】
このように、４クロックサイクル（Ｉ−ＩＶ）にかけて１つのラウンドに対するＳＨＡ−１ハッシュ演算が完了し、前記４クロックサイクル（Ｉ−ＩＶ）を８０ラウンドまで繰り返す。そうすれば、レジスタ４０１−４０５には、ＳＨＡ−１ハッシュ演算の中間値が保存される。この時、ＳＨＡ−１ハッシュ演算のメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出するためには、８０ラウンドにわたってレジスタ４０１−４０５に保存された値（ａ−ｅ）及び保存モジュール４３０に保存された初期値（Ｈ０−Ｈ４）を和算演算しなければならない。したがって、段階３では、段階１と同様な方法で、５クロックサイクルにかけてレジスタ４０１−４０５に保存された値及び保存モジュール４３０に保存された初期値（Ｈ０−Ｈ４）を各々和算演算する。
【０１０２】
そうすれば、レジスタ４０１−４０５には、各々ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、及びｅ（＝ｅ＋Ｈ４）の値が保存される。そして、制御部２００で演算の終了を知らせるインタラプト信号やポーリング（ｐｏｌｌｉｎｇ）信号が発生すれば、保存モジュール４３０に保存されている初期値（Ｈ０−Ｈ４）がレジスタ４０１−４０５に保存された値［ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、ｅ（＝ｅ＋Ｈ４）］に更新される。
【０１０３】
メッセージ圧縮部４００は、ＳＨＡ−１ハッシュ演算が１回だけ行われる場合には、このように更新された初期値［Ｈ０（＝ａ）、Ｈ１（＝ｂ）、Ｈ２（＝ｃ）、Ｈ３（＝ｄ）、Ｈ４（＝ｅ）］をＳＨＡ−１ハッシュ演算の出力値としてシステムバス２１を通じてシステム１０に出力し、ＳＨＡ−１ハッシュ演算が何度も行われる場合には、５１２ビットの演算データに対するＳＨＡ−１ハッシュ演算の初期値として使用して、前記段階を８０ラウンドにわたって繰り返し行う。このように、ＳＨＡ−１ハッシュ演算を何度も行う場合には、２番目の５１２ビットの演算データに対してＳＨＡ−１ハッシュ演算を行う時に、レジスタ４０１−４０５には初期値［Ｈ０（＝ａ）、Ｈ１（＝ｂ）、Ｈ２（＝ｃ）、Ｈ３（＝ｄ）、Ｈ４（＝ｅ）］が保存されているので、段階１を行わずに直ちに段階２を行うことができる。
【０１０４】
また、メッセージ圧縮部４００におけるＳＨＡ−２５６ハッシュ演算のための段階別細部動作は、表４のように行われる。表４はＳＨＡ−２５６ハッシュ演算のためのメッセージ圧縮部４００の段階別細部動作を示した表である。
【表４】
2010134465.tif 000031
【０１０５】
制御部２００からの制御信号によって、メッセージ圧縮部４００のレジスタ４０１−４０８、ロジック関数演算器４１３、４１５−４１７、論理和演算器４２０、保存モジュール４３０、及び選択器４４１−４４８が動作して、ＳＨＡ−２５６ハッシュ演算によるメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出する。
【０１０６】
前記説明したＳＨＡ−１ハッシュ演算と同様に、ＳＨＡ−２５６ハッシュ演算でも、段階２のクロックサイクル（Ｉ）に先立って、ＳＨＡ−２５６ハッシュ演算で定義している初期値であるＨ０−Ｈ７をレジスタ４０１−４０８に設定しなければならない（段階１）。このような初期値（Ｈ０−Ｈ７）の設定は、８クロックサイクルにかけて行われ、このために、レジスタ４０１−４０８は、シフトレジスタとして動作し、選択器４４１−４４４は、各々前段のレジスタ４０２−４０４、４０７から出力されたデータを後段のレジスタ４０３−４０５、４０８に出力する。
【０１０７】
具体的に、段階１のクロックサイクル（Ｉ）で、保存モジュール４３０は、初期値（Ｈ７）を出力する。保存モジュール４３０から出力されたＨ７は、選択器４４８を経て論理和演算器４２０の第１入力端に入力される。そして、論理和演算器４２０の第２入力端には、選択器４４７を通じてレジスタ４０８に設定されたｈが入力される。この時、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈは０であるので、論理和演算器４２０の出力値はＨ７になり、Ｈ７はレジスタ４０１に保存される（ａ＝Ｈ７）。そして、レジスタ４０１−４０７に保存された値は、レジスタ４０２−４０８に各々１段階ずつシフトされて保存される。そうすれば、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈは各々Ｈ７、０、…、０になる。
【０１０８】
段階１のクロックサイクル（ＩＩ）で、保存モジュール４３０は、Ｈ６を出力する。保存モジュール４３０から出力されたＨ６は、選択器４４８を経て論理和演算器４２０の第１入力端に入力される。そして、論理和演算器４２０の第２入力端には、選択器４４７を通じてレジスタ４０８に設定されたｈが入力される。この時、ｈは０であるので、論理和演算器４２０の出力値はＨ６になり、Ｈ６はレジスタ４０１に保存される。そして、レジスタ４０１−４０７に保存された値は、レジスタ４０２−４０８に各々１段階ずつシフトされて保存される。そうすれば、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈは各々Ｈ６、Ｈ７、０、…、０になる。
【０１０９】
これと同様な方法で、段階１のクロックサイクル（ＩＩＩ−ＶＩＩＩ）で、各々保存モジュール４３０は、Ｈ５−Ｈ０を出力し、クロックサイクル（ＶＩＩＩ）が全て行われれば、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈは各々Ｈ０、Ｈ１、Ｈ２、Ｈ３、Ｈ４、Ｈ５、Ｈ６、及びＨ７になる。
【０１１０】
このようにしてレジスタ４０１−４０８に初期値（Ｈ０−Ｈ７）が全て設定されれば、メッセージ圧縮部４００は、表４に示された段階２の動作を行う。
【０１１１】
表４を参照すれば、段階２のクロックサイクル（Ｉ）で、ロジック関数演算器４１５は、レジスタ４０５−４０７に保存されたデータ（ｅ、ｆ、ｇ）に対して数式７に相当するロジック関数演算を行って出力する。ロジック関数演算器４１５から出力されるデータ［Ｃｈ（ｅ、ｆ、ｇ）］は、選択器４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈが選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Ｃｈ（ｅ、ｆ、ｇ）、ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４４を経てレジスタ４０８に保存される［ｈ＝Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。
【０１１２】
クロックサイクル（ＩＩ）で、保存モジュール４３０は、ラウンド定数（Ｋｔ）を出力する。保存モジュール４３０から出力されたＫｔは、選択器４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈ［＝Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］が選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Ｋｔ、Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４４を経てレジスタ４０８に保存される［ｈ＝Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。
【０１１３】
クロックサイクル（ＩＩＩ）で、ロジック関数演算器４１７は、レジスタ４０５に保存されたｅに対して数式１１に相当するロジック関数演算を行って出力する。ロジック関数演算器４１７から出力されるデータ［Σ１（ｅ）］は、選択器４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈ［＝Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］が選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Σ１（ｅ）、Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４４を経てレジスタ４０８に保存される［ｈ＝Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。
【０１１４】
クロックサイクル（ＩＶ）で、選択器４４８は、中間データ（Ｗｔ）を出力する。選択器から出力されるデータ（Ｗｔ）は、選択器４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈ［＝Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Ｗｔ、Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４４を経てレジスタ４０８に保存される［ｈ＝Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。
【０１１５】
本発明の実施例によるメッセージ圧縮部４００は、メッセージスケジューラ３００で中間データ（Ｗｔ）を生成するのに必要な時間を考慮して、中間データ（Ｗｔ）を第４クロックサイクル以降（ＩＶ〜）に論理和演算器４２０に出力する。つまり、メッセージスケジューラ３００で中間データ（Ｗｔ）を生成するためには、４クロックサイクルが必要である。表４を参照すれば、メッセージ圧縮部４００でＳＨＡ−２５６ハッシュ演算を行うためには、７クロックサイクルが必要であるので、これはメッセージスケジューラ３００で中間データ（Ｗｔ）を生成するのに十分な時間となる。したがって、第４クロックサイクル（ＩＶ）以降で中間データ（Ｗｔ）を論理和演算器４２０に出力すれば、メッセージスケジューラ３００で中間データ（Ｗｔ）を生成するための別途の時間が必要なくなる。
【０１１６】
クロックサイクル（Ｖ）で、レジスタ４０４に保存されたｄが選択器４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈ［＝Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］が選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Ｈ３、Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［ｄ＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４２を経てレジスタ４０４に保存される［ｄ＝ｄ＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。このようにして、第５クロックサイクルが終了すれば、レジスタ４０４には、数式６で「ｅ＝ｄ＋Ｔ１」のための値が保存される。
【０１１７】
クロックサイクル（ＶＩ）で、ロジック関数演算器４１３は、レジスタ４０１−４０３に保存されたデータ（ａ、ｂ、ｃ）に対して数式９に相当するロジック関数演算を行って出力する。ロジック関数演算器４１３から出力されたデータ［Ｍａｊ（ａ、ｂ、ｃ）］は、選択器４４５、４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｅ［＝Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］が選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Ｍａｊ（ａ、ｂ、ｃ）、Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、選択器４４２を経てレジスタ４０８に保存される［ｈ＝Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。
【０１１８】
最後に、クロックサイクル（ＶＩＩ）で、ロジック関数演算器４１６は、レジスタ４０１に保存されたａに対して数式９に相当するロジック関数演算を行って出力する。ロジック関数演算器４１６から出力されるデータ［Σ０（ａ）］は、選択器４４６、４４８を経て論理和演算器４２０の第１入力端に入力され、レジスタ４０８に保存されたｈ［＝Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］が選択器４４７を経て論理和演算器４２０の第２入力端に入力される。論理和演算器４２０は、第１及び第２入力端に入力されるデータ［Σ０（ａ）、Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋Ｈ７］を和算演算して出力する。論理和演算器４２０から出力されるデータ［Σ０（ａ）＋Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、レジスタ４０１に保存される［ｈ＝Σ０（ａ）＋Ｍａｊ（ａ、ｂ、ｃ）＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］。そして、レジスタ４０１−４０７に保存されたデータは、各々１段階ずつシフトされてレジスタ４０２−４０８に保存される。つまり、クロックサイクル（Ｖ）で、レジスタ４０４には「Ｈ３＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ」が保存されているので、このデータ［Ｈ３＋Ｗｔ＋Σ１（ｅ）＋Ｋｔ＋Ｃｈ（ｅ、ｆ、ｇ）＋ｈ］は、レジスタ４０５に保存される。
【０１１９】
このように、７クロックサイクル（Ｉ−ＶＩＩ）にかけて１つのラウンドに対するＳＨＡ−２５６ハッシュ演算が完了し、前記７クロックサイクル（Ｉ−ＶＩＩ）を６４ラウンドまで繰り返す。そうすれば、レジスタ４０１−４０８には、ＳＨＡ−２５６ハッシュ演算の中間値が保存される。この時、ＳＨＡ−２５６ハッシュ演算のメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出するためには、６４ラウンドにわたってレジスタ４０１−４０８に保存された値（ａ−ｈ）及び保存モジュール４３０に保存された初期値（Ｈ０−Ｈ７）を和算演算しなければならない。したがって、段階３では、段階１と同様な方法で、８クロックサイクルにかけてレジスタ４０１−４０８に保存された値及び保存モジュール４３０に保存された初期値（Ｈ０−Ｈ７）を各々和算演算する。
【０１２０】
そうすれば、レジスタ４０１−４０８には、各々ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、ｅ（＝ｅ＋Ｈ４）、ｆ（＝ｆ＋Ｈ５）、ｇ（＝ｇ＋Ｈ６）、及びｈ（＝ｈ＋Ｈ７）の値が保存される。そして、制御部２００で演算の終了を知らせるインタラプト信号やポーリング信号が発生すれば、保存モジュール４３０に保存されている初期値（Ｈ０−Ｈ７）がレジスタ４０１−４０８に保存された値［ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、ｅ（＝ｅ＋Ｈ４）、ｆ（＝ｆ＋Ｈ５）、ｇ（＝ｇ＋Ｈ６）、ｈ（＝ｈ＋Ｈ７）］に更新される。
【０１２１】
メッセージ圧縮部４００は、ＳＨＡ−２５６ハッシュ演算が一回だけ行われる場合には、このように更新された初期値［ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、ｅ（＝ｅ＋Ｈ４）、ｆ（＝ｆ＋Ｈ５）、ｇ（＝ｇ＋Ｈ６）、ｈ（＝ｈ＋Ｈ７）］をＳＨＡ−２５６ハッシュ演算の出力値としてシステムバス２１を通じてシステム１０に出力し、ＳＨＡ−２５６ハッシュ演算が何度も行われる場合には、５１２ビットの演算データに対するＳＨＡ−２５６ハッシュ演算の初期値として使用して、前記段階を６４ラウンドにわたって繰り返し行う。ＳＨＡ−２５６ハッシュ演算を何度も行う場合には、２番目の５１２ビットの演算データからはＳＨＡ−１ハッシュ演算を行う時にレジスタ４０１−４０８に初期値［ａ（＝ａ＋Ｈ０）、ｂ（＝ｂ＋Ｈ１）、ｃ（＝ｃ＋Ｈ２）、ｄ（＝ｄ＋Ｈ３）、ｅ（＝ｅ＋Ｈ４）、ｆ（＝ｆ＋Ｈ５）、ｇ（＝ｇ＋Ｈ６）、ｈ（＝ｈ＋Ｈ７）］が保存されているので、段階１を行わずに直ちに段階２を行うことができる。
【０１２２】
一般に、数式５に示された演算のためには、図７に示したように、ａ、ｂ、ｃ、ｄ、及びｅを各々保存しているレジスタ７１１−７１５、「ＲＯＴＬＥＦＴ５」及び「ＲＯＴＬＥＦＴ３０」の演算のための回転シフト演算器７２、７３、「ｆｔ」の演算のためのロジック演算器７４、及び「ｆｔ（ｂｔ−１、ｃｔ−１、ｄｔ−１）＋ｅｔ−１＋ＲＯＴＬＥＦＴ５（ａｔ−１）＋Ｗｔ＋Ｋｔ）」の演算のための４つの論理和演算器７５１−７５４が必要である。また、数式６に示された演算のためには、図８に示したように、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、及びｈを各々保存しているレジスタ８１１−８１８、「Σ０」、「Ｍａｊ」、「Σ１」、及び「Ｃｈ」の演算のためのロジック演算器８２−８５、及び「Ｔ１＝ｈ＋Σ１（ｅ）＋Ｃｈ（ｅ、ｆ、ｇ）＋Ｋｔ＋Ｗｔ」及び「Ｔ２＝Σ０（ａ）＋Ｍａｊ（ａ、ｂ、ｃ）」の演算のための６個の論理和演算器８６１−８６６が必要である。しかし、図７及び図８のような過度なハードウェア資源の使用は、ハードウェアの面積及び消費電力を増加させるので、低面積特性を必要とするモバイル電話や低電力エンベデッドシステムに適用するのは困難である。
【０１２３】
しかし、本発明の実施例によるメッセージ圧縮部４００は、シフトレジスタとして動作する８個のレジスタ４０１−４０８及び１つ論理和演算器４２０を利用して、最終的に１つのメッセージダイジェスト（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ）を算出するので、ハードウェアの面積及び消費電力を最少化することができる。
【０１２４】
本発明の実施例は、前記説明した装置及び／または方法によってのみ具現されるのではなく、本発明の実施例の構成に対応する機能を実現するプログラムまたはそのプログラムが記録された記録媒体によって具現されることもでき、このような具現は、前記説明した実施例の記載から、本発明が属する技術分野の専門家であれば簡単に実現することができる。
【０１２５】
以上で、本発明の実施例について詳細に説明したが、本発明の権利範囲はこれに限定されず、請求の範囲で定義している本発明の基本概念を利用した当業者の多様な変形及び改良形態も、本発明の権利範囲に属する。
【符号の説明】
【０１２６】
１０  ハッシュ暗号装置
２０  システム
１００  インターフェース部
２００  制御部
３００  メッセージスケジューラ
４００  メッセージ圧縮部
【図１】
2010134465.tif 000032
【図２】
2010134465.tif 000033
【図３】
2010134465.tif 000034
【図４】
2010134465.tif 000035
【図５】
2010134465.tif 000036
【図６】
2010134465.tif 000037
【図７】
2010134465.tif 000038
【図８】
2010134465.tif 000039