JP5143817B2 - ハッシュ暗号装置及び方法 - Google Patents

ハッシュ暗号装置及び方法 Download PDF

Info

Publication number
JP5143817B2
JP5143817B2 JP2009278269A JP2009278269A JP5143817B2 JP 5143817 B2 JP5143817 B2 JP 5143817B2 JP 2009278269 A JP2009278269 A JP 2009278269A JP 2009278269 A JP2009278269 A JP 2009278269A JP 5143817 B2 JP5143817 B2 JP 5143817B2
Authority
JP
Japan
Prior art keywords
data
register
message
hash
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009278269A
Other languages
English (en)
Other versions
JP2010134465A (ja
Inventor
キム、ム、ソプ
パク、ヤン、ス
パク、ジ、マン
キム、ヤン、セ
ジュ、ホン、イル
ジュン、スン、イク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Electronics and Telecommunications Research Institute ETRI
Original Assignee
Electronics and Telecommunications Research Institute ETRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electronics and Telecommunications Research Institute ETRI filed Critical Electronics and Telecommunications Research Institute ETRI
Publication of JP2010134465A publication Critical patent/JP2010134465A/ja
Application granted granted Critical
Publication of JP5143817B2 publication Critical patent/JP5143817B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ハッシュ暗号装置及び方法に関し、特に、モバイル電話プラットホーム用エンベデッドシステムに適用されるハッシュ暗号装置及び方法に関する。
トラスティッドプラットホームモジュール(Trusted Platform Module:以下、TPMとする)は、トラスティッドコンピューティンググループ(Trusted Computing Group:以下、TCGとする)によって制定された産業標準規格に基づいたマイクロコントローラであって、ハードウェア−ソフトウェアの結合によって信頼性のあるコンピューティング保安の目的で、内部に暗号化アルゴリズム及びハッシュアルゴリズムがハードウェア的に実現されている。
最近の急速な無線ネットワーク技術の発展と共に、デジタル情報化社会が高度化され、電子商取引が活性化されることによって、暗号化技術が高速インターネット網を基盤とした社会、経済的活動の安定性及び信頼性、使用者プライバシーの保護などのための核心技術として認識されている。特に、モバイル電話などの移動用プラットホームは、適切な保安措置が行われない場合には、ハッカーやその他の悪意あるプログラムの攻撃対象になることがある。
TCGのモバイル電話ワーキンググループ(Mobile Phone Working Group:以下、WPWGとする)は、TCGの保安規格をモバイル電話に適合するように拡張する作業を行う。このような保安規格で、モバイル電話のための必須保安モジュールであるモバイルトラスティッドモジュール(Mobile Trusted Module:以下、MTMとする)は、当該プラットホームの無欠性を測定し、これを検証する作業を行うために、キーを使用しないSHA(Secure Hash Algorithm)−1を使用するように指定している。しかし、最近では、安定したハッシュアルゴリズムの使用のために、SHA(Secure Hash Algorithm)−256の使用を勧告及び明示している。したがって、モバイル電話におけるプラットホームの無欠性、使用者認証、及びデータ認証のための暗号装置は、SHA−1及びSHA−256をモバイル環境によって選択的に使用するように、SHA−1及びSHA−256を全て支援することができなければならない。
また、大部分のモバイルデバイスの場合、メモリ、使用することができる電源、及びコンピューティング能力に限界があるので、TCGの保安規格をモバイル電話にそのまま適用するのには多様な技術的困難が伴う。特に、モバイル電話の場合、バッテリー容量に限界があるので、追加的な暗号演算の駆動は、バッテリーの寿命をさらに短縮させる結果をもたらすようになる。したがって、モバイル電話における暗号装置は、低電力及び低面積の最適化されたハードウェア設計技術が必要である。
欧州特許第1351432号明細書
本発明が解決しようとする技術的課題は、SHA−1及びSHA−256を選択的に使用することができるハッシュ暗号装置及び方法を提供することにある。
また、本発明の他の技術的課題は、低電力及び低面積の最適化されたハッシュ暗号装置及び方法を提供することにある。
本発明の一実施例によれば、メッセージスケジューラ、メッセージ圧縮部、そして制御部を含むハッシュ暗号装置が提供される。メッセージスケジューラは、第1ハッシュ演算時に演算データを利用して複数の第1メッセージデータを生成し、第2ハッシュ演算時に 演算データを利用して複数の第2メッセージデータを生成する。メッセージ圧縮部は、前記第1ハッシュ演算時に前記複数の第1メッセージデータを利用して第1メッセージダイジェストを算出し、前記第2ハッシュ演算時に前記複数の第2メッセージデータを利用して第2メッセージダイジェストを算出する。そして、制御部は、外部から受信される制御命令から前記第1及び第2ハッシュ演算のうちの前記演算データに行うハッシュ演算を決定し、前記演算データの長さによって決定された前記ハッシュ演算を行う回数を決定し、決定された前記ハッシュ演算及び前記回数によって前記メッセージスケジューラ及び前記メッセージ圧縮部を制御する。
本発明の他の実施例によれば、ハッシュ暗号装置において、第1及び第2ハッシュ演算に各々必要な複数の第1及び第2メッセージデータを生成するメッセージスケジューラが提供される。メッセージスケジューラは、メモリ、レジスタ、排他的論理和演算器、回転シフト演算器、ロジック演算器、そして論理和演算器を含む。メモリは、演算するブロックデータをN個のサブブロックデータに分割して保存し、レジスタは、入力されるデータを保存した後で出力する。排他的論理和演算器は、第1ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータ及び前記レジスタに保存されたデータを排他的論理和演算して、前記レジスタのデータを更新する。回転シフト演算器は、前記排他的論理和演算器によって前記排他的論理和演算が所定の回数繰り返された後で、前記レジスタに保存されたデータを回転シフトして出力する。ロジック演算器は、第2ハッシュ演算時に動作して、前記メモリに保存されたサブブロックデータのうちのいずれか1つに対して複数のロジック演算のうちの対応するロジック演算を行う。そして、論理和演算器は、前記ロジック演算器から出力されるデータ及び前記レジスタに保存されたデータを論理和演算して、前記レジスタのデータを更新する。この時、前記第1ハッシュ演算時に前記N個のサブブロックデータ及び前記回転シフト演算器の出力データが前記複数の第1メッセージデータとして各々使用され、前記第2ハッシュ演算時に前記N個のサブブロックデータ及び所定の個数の第2メッセージデータに対して前記対応するロジック演算及び前記論理和演算を繰り返した後で、前記論理和演算によるデータが前記複数の第2メッセージデータとして各々使用される。
本発明のまた他の実施例によれば、ハッシュ暗号装置で演算するブロックデータに対してハッシュ演算を行って、メッセージダイジェストを算出するメッセージ圧縮装置が提供される。メッセージ圧縮装置は、複数のレジスタ、そして論理和演算器を含む。複数のレジスタは、入力されるデータを保存した後で出力し、前段のレジスタから出力されるデータが後段のレジスタに入力される構造に連結されている。そして、論理和演算器は、第1ハッシュ演算時に入力される複数の第1データの中から選択される第1データ及び前記複数のレジスタのうちの第1レジスタに保存されたデータを論理和演算して、前記第1レジスタのデータを更新し、第2ハッシュ演算時に入力される複数の第2データの中から選択される第2データ及び前記複数のレジスタのうちの第2レジスタに保存されたデータを論理和演算して、前記第2レジスタのデータを更新する。この時、前記第1ハッシュ演算時に前記第1データの選択を異なるようにして、前記論理和演算を第1回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記複数のレジスタのうちの一番前に位置した第3レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第1ラウンド演算を行い、前記第1ラウンド演算を前記第1ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第1ハッシュ演算によるメッセージダイジェストを算出する。そして、前記第2ハッシュ演算時に前記第2データの選択を異なるようにして、前記論理和演算を第2回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記第3レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第2ラウンド演算を行い、前記第2ラウンド演算を前記第2ハッシュ演算で設定されたラウンドの回数だけ繰り返して、前記第2ハッシュ演算によるメッセージダイジェストを算出する。
本発明のまた他の実施例によれば、外部から受信される演算データをN個のブロックデータに分割してメモリに保存する段階、前記N個のブロックデータをレジスタに保存する段階、第1ハッシュ演算時に前記レジスタに保存されたN個のブロックデータを1からN番目のラウンドで使用する第1メッセージデータに生成する段階、前記第1ハッシュ演算時に、(N+1)からM番目のラウンドの各ラウンドで前記第1メッセージデータ及び前記レジスタに保存されたデータに基づいて1つの排他的論理和演算器を利用して設定された回数だけ排他的論理和演算を行って、当該ラウンドの第1メッセージデータを生成する段階、第2ハッシュ演算時に前記レジスタに保存されたN個のブロックデータを1からN番目のラウンドで使用する第2メッセージデータに生成する段階、前記第2ハッシュ演算時に、(N+1)からK番目のラウンドの各ラウンドで前記第2メッセージデータ及び前記レジスタに保存されたデータに基づいて1つの論理和演算器を利用して設定された回数だけ論理和演算を行って、当該ラウンドの第2メッセージデータを生成する段階、前記第1ハッシュ演算時に前記1からM番目のラウンドに対応するM個の第1メッセージデータを利用して第1メッセージダイジェストを算出する段階、そして前記第2ハッシュ演算時に前記1からK番目のラウンドに対応する第2メッセージデータを利用して第2メッセージダイジェストを算出する段階を含む。
本発明は、モバイルプラットホーム用トラスティッドコンピューティングシステム、RFIDシステム、無線ネットワークシステム、センサーネットワークシステム、及びホームネットワークシステムなど低電力ハッシュ関数機能を必要とする多様な保安プラットホームにおけるシステムの無欠性の検証及び使用者情報の保護のための核心要素技術に適用される。
また、レジスタに保存されたデータが変化する時点でだけクロック信号を印加することによって、データを処理しないハードウェア資源が消耗する電力を最少化することができる。
本発明の実施例によるハッシュ暗号装置を示したブロック図である。 図1に示した制御部を示したブロック図である。 本発明の実施例によるメッセージスケジューラのハードウェアの構造を示した図面である。 SHA−1でのメッセージデータを生成するためのハードウェアの構造を示した図面である。 SHA−256でのメッセージデータを生成するためのハードウェアの構造を示した図面である。 本発明の実施例によるメッセージ圧縮部のハードウェアの構造を示した図面である。 SHA−1でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。 SHA−256でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。
以下、添付した図面を参照して、本発明の実施例について、本発明が属する技術分野で通常の知識を有する者が容易に実施することができるように詳細に説明する。しかし、本発明は、多様な相異した形態に具現されて、ここで説明する実施例に限定されない。そして、図面では、本発明の明確な説明のために、説明に不必要な部分は省略し、明細書全体を通して類似した部分には、類似した図面符号を付けた。
明細書及び請求の範囲全体で、ある部分がある構成要素を「含む」とする時、これは特に反対になる記載がない限り、他の構成要素を排除するのではなく、他の構成要素をさらに含むことを意味する。また、明細書に記載された「…部」、「…器」、「モジュール」、「ブロック」などの用語は、少なくとも1つの機能や動作を処理する単位を意味し、これはハードウェアやソフトウェア、またはハードウェア及びソフトウェアの結合によって具現される。
それでは、本発明の実施例によるハッシュ暗号装置及び方法について、図面を参照して詳細に説明する。
図1は本発明の実施例によるハッシュ暗号装置を示したブロック図であり、図2は図1に示した制御部を示したブロック図である。
図1を参照すれば、ハッシュ暗号装置10は、インターフェース部100、制御部200、メッセージスケジューラ300、及びメッセージ圧縮部400を含む。
インターフェース部100は、ハッシュ暗号装置10が適用されるシステム20のシステムバス(System Bus)21を通じてシステム20のマイクロプロセッサと接続されて、システム20のマイクロプロセッサからデータ及びSHA−1/SHA−256ハッシュ演算の開始及び終了を知らせる制御信号を受信して、SHA−1/SHA−256ハッシュ演算が終了すれば、その結果値をシステム20のマイクロプロセッサに伝達する。
制御部200は、SHA−1/SHA−256ハッシュ演算に必要な全般的なデータの流れを管理して制御する。具体的に、制御部200は、インターフェース部100によるデータの入力及び出力を制御し、入力されるデータのアドレスを検査して、入力されるデータが制御命令である場合には、当該制御命令を保存し、入力されるデータがSHA−1/SHA−256ハッシュ演算を行うための演算データである場合には、これをメッセージスケジューラ300に保存する。制御部200は、保存された制御命令を調査して、遂行するハッシュ演算がSHA−1であるかSHA−256であるのかを決定し、インターフェース部100を通じて入力される演算データの長さに基づいて演算データを512ビットのブロックデータに分割し、ブロックデータの個数によってSHA−1/SHA−256ハッシュ演算の遂行回数を決定する。例えば、演算データの長さが1024ビットである場合には、2つのブロックデータに分割されるので、上位ビットを含むブロックデータに対してSHA−1/SHA−256ハッシュ演算を行った後で、下位ビットを含むブロックデータに対してSHA−1/SHA−256ハッシュ演算が行われる。
制御部200は、保存された制御命令を調査して決定したハッシュ演算に必要な制御信号を生成して、インターフェース部100、メッセージスケジューラ300、及びメッセージ圧縮部400に伝達する。
SHA−1/SHA−256ハッシュ演算は、最大264ビットの長さのデータを受信して、各々160/256ビットのメッセージダイジェスト(Message Digest)を算出する。メッセージダイジェストを算出するために、SHA−1/SHA−256ハッシュ演算は、512ビットのデータを基本ブロック単位として行われ、1つの基本ブロックのデータに対してSHA−1ハッシュ演算は80ラウンドにわたって行われ、SHA−256ハッシュ演算は64ラウンドにわたって行われる。したがって、1024ビットの演算データの場合には、2回のSHA−1/SHA−256ハッシュ演算が行われる。つまり、上位512ビットに対して80/64ラウンドのSHA−1/SHA−256ハッシュ演算が行われた後で、下位512ビットに対して80/64ラウンドのSHA−1/SHA−256ハッシュ演算が行われる。
また、制御部200は、メッセージスケジューラ300及びメッセージ圧縮部400の内部ハードウェアモジュールの駆動に必要な演算の遂行順序及び演算結果を保存する動作を80/64ラウンドにわたって制御する。
図2を参照すれば、制御部200は、カウンタ210、220、状態遷移部230、及びレジスタ240を含む。
カウンタ210は、SHA−1/SHA−256ハッシュ演算を行う間にSHA−1/SHA−256ハッシュ演算が行われるラウンド情報を係数して、現在行われるラウンド情報を状態遷移部230に提供する。カウンタ210は、8ビットカウンタとして使用される。
カウンタ220は、現在行われるラウンドで内部クロックサイクルの進行情報を保存して、この情報を状態遷移部230に提供する。この時、カウンタ210は、4ビットカウンタとして使用される。
状態遷移部230は、SHA−1/SHA−256ハッシュ演算のための有限個の状態を各々有して、カウンタ210、220から現在行われるラウンド情報及び内部クロックサイクルの進行情報に基づいて行われる入力によって現在の状態から異なる状態に状態遷移(state transition)し、これに同期化して制御信号を生成して、生成した制御信号をインターフェース部100、メッセージスケジューラ300、及びメッセージ圧縮部400に伝達する。
レジスタ240は、入力される制御命令を保存する。
再び、図1を参照すれば、メッセージスケジューラ300は、入力されるブロックデータを保存し、ブロックデータから80/60ラウンドにわたって行われるSHA−1/SHA−256ハッシュ演算に必要な80/60個のメッセージデータ(W)を生成して、各ラウンドに対応するメッセージデータ(W)をメッセージ圧縮部400に提供する。この時、SHA−1ハッシュ演算に必要なメッセージデータ(W)は、数式1のように生成され、SHA−256ハッシュ演算に必要なメッセージデータ(W)は、数式2のように生成される。
つまり、数式1及び2に示したように、1から16ラウンドまでのハッシュ演算に使用されるメッセージデータ(W)としては、512ビットのブロックデータを32ビットに分割した16個の32ビットのサブブロックデータ(M−M16)が使用され、17から80/17から64ラウンドまでのSHA−1/SHA−256ハッシュ演算に使用されるメッセージデータ(W)としては、設定された組み合わせ論理回路を利用して別途に生成されたデータが使用される。ここで、Mは512ビットのブロックデータで最上位32ビットのデータを含む1番目のサブブロックデータであり、M16は512ビットのブロックデータで最下位32ビットのデータを含む16番目のサブブロックデータである。
Figure 0005143817
ここで、tはラウンドの数であり、Mは512ビットのブロックデータでt番目のラウンドで使用されるt番目のサブブロックデータである。ROTは回転シフト(rotate−shift)演算であり、ROTLEFT1は1ビットずつ左側に移動させる演算を意味する。
Figure 0005143817
はビット単位で行われる排他的論理和(XOR)演算である。
Figure 0005143817
ここで、tはラウンドの数であり、+はモジュラ和算演算だ。σ及びσはロジック関数であって、各々数式3及び4のように示される。
Figure 0005143817
Figure 0005143817
数式3及び4で、RはNビットを右側にシフトする演算で、シフトされるビットの数だけ「0」で満たされる演算を意味し、SはNビットを右側に回転させる演算を意味する。
メッセージ圧縮部400は、メッセージスケジューラ300から提供される32ビットのメッセージデータ(W)を80/64ラウンドにかけてSHA−1/SHA−256ハッシュ演算を行って、その結果値であるメッセージダイジェスト(Message Digest)を保存する。この時、SHA−1ハッシュ演算及びSHA−256ハッシュ演算は、各々数式5及び6のように行われる。
数式5及び6で示したように、SHA−1ハッシュ演算のためには5個の変数(a−e)が使用され、SHA−256ハッシュ演算のためには8個の変数(a−h)が使用され、これら変数は、ラウンドによって一段階ずつシフト移動したり、予め決定されている演算によって各々異なる値を保存する。
Figure 0005143817
Figure 0005143817
数式5で、KはSHA−1ハッシュ演算で定義するラウンド定数であって、演算されるラウンドによって予め設定された値を有する。fはSHA−1ハッシュ演算で使用するロジック関数であって、数式7のように示される。
また、数式6で、Ch、Maj、Σ、及びΣは各々ロジック関数であって、各々数式8乃至11のように示される。
Figure 0005143817
Figure 0005143817
Figure 0005143817
数式8及び9で、∧はビット単位で行われる論理積(AND)演算である。
Figure 0005143817
Figure 0005143817
次に、本発明の実施例によるメッセージスケジューラのハードウェアの構造について、図3乃至図5を参照して詳細に説明する。
図3は本発明の実施例によるメッセージスケジューラのハードウェアの構造を示した図面である。図4及び図5は各々SHA−1及びSHA−256でのメッセージデータを生成するためのハードウェアの構造を示した図面である。
図3を参照すれば、メッセージスケジューラ300は、メモリ302、ロジック関数演算器304、306、排他的論理和演算器308、論理和演算器310、レジスタ312、回転シフト演算器314、316、及び選択器318、320、322、324、326を含む。これらメモリ302、ロジック関数演算器304、306、排他的論理和演算器308、論理和演算器310、レジスタ312、回転シフト演算器314、316、及び選択器318、320、322、324、326は、制御部200から伝達される制御信号によって動作する。図3では、ロジック関数演算器304、305が各々行うロジック関数をσ及びσで示し、回転シフト演算器314、316が行う演算を<<1で示した。
メモリ302は、入力端及び出力端を有し、システム20のマイクロプロセッサから伝達される512ビットのブロックデータを保存する。
ロジック関数演算器304、306は、入力端及び出力端を有し、入力端に入力されるデータに対してSHA−256ハッシュ演算に必要な各々数式3及び4に相当する演算を行って、出力端を通じて出力する。
排他的論理和演算器308は、2つの入力端及び出力端を有し、2つの入力端に入力されるデータを積算演算して、出力端を通じて出力する。つまり、排他的論理和演算器308は、SHA−1ハッシュ演算に必要な数式1の
Figure 0005143817
に相当する演算を行う。
論理和演算器310は、2つの入力端及び出力端を有し、2つの入力端に入力されるデータを和算演算して、出力端を通じて出力する。
レジスタ312は、入力端及び出力端を有し、入力端に入力されるデータを保存して、保存したデータを出力端を通じて出力する。本発明の実施例では、1つの排他的論理和演算器308を利用して、17から80ラウンドに相当する数式1の演算を行い、1つの論理和演算器310を利用して、17から64ラウンドに相当する数式2の演算を行う。このために、1つの排他的論理和演算器308は、4回の積算演算を繰り返し、1つの論理和演算器310も、4回の和算演算を繰り返すので、レジスタ312には、以前の演算値、つまりSHA−1/SHA−256ハッシュ演算に必要なメッセージデータ(W)を生成する際の中間値が保存される。
回転シフト演算器314、316は、入力端及び出力端を有し、入力端に入力されるデータを1ビットずつ左側に回転させて、出力端を通じて出力する。つまり、回転シフト演算器314、316は、数式1の「ROTLEFT1」に相当する演算を行う。
選択器318、324、326は、各々2つの入力端及び出力端を有し、制御部200で決定したSHA−1/SHA−256ハッシュ演算によって2つの入力端に入力されるデータのうちの1つを選択して、出力端を通じて出力する。また、選択器320、322は、3つの入力端及び出力端を有し、制御部200で決定したSHA−1/SHA−256ハッシュ演算によって3つの入力端に入力されるデータのうちの1つを選択して、出力端を通じて出力する。
具体的に、第1入力端から512ビットのブロックデータを受信する選択器318の第2入力端が選択器326の出力端に連結されており、選択器318の出力端に入力端が連結されているメモリ302の出力端が選択器320、322の第1入力端、ロジック関数演算器304、306の入力端、及び排他的論理和演算器308の第1入力端に連結されている。ロジック関数演算器304、306の出力端が各々選択器320の第2及び第3入力端に連結されており、選択器320の出力端が論理和演算器310の第1入力端に連結されている。排他的論理和演算器308の出力端及び論理和演算器310の出力端が選択器322の第2及び第3入力端に各々連結されており、選択器322の出力端がレジスタ312の入力端及び回転シフト演算器316の入力端に連結されている。また、レジスタ312の出力端が選択器324の第1入力端、回転シフト演算器314の入力端、及び排他的論理和演算器308の第2入力端に連結されている。選択器324の第2入力端が回転シフト演算器314の出力端に連結されており、選択器324の出力端及び回転シフト演算器316の出力端が各々選択器326の第1及び第2入力端に連結されており、選択器326の出力端が選択器318の入力端に連結されている。この時、選択器324の出力端を通じて出力されるデータが当該ラウンドでのメッセージデータ(M)となる。
このようなメッセージスケジューラ300におけるSHA−1ハッシュ演算のための段階別細部動作は、表1のように行われる。表1はSHA−1ハッシュ演算のための段階別細部動作を示した表である。表1で、「x」はいかなる値であっても全体の演算には関係ないことを示し、「→」は左側のマスの値と同一な値を示す。「Mout」はメモリ302から出力されるデータを示し、「M1」及び「M2」は各々選択器322、324から出力されるデータを示し、「R1」はレジスタ312から出力されるデータを示す。また、「reg_w」はレジスタ312に保存されたデータを意味し、「<<1(reg_w)」はtラウンドでレジスタ312に保存されたデータが1ビットずつ左側に回転したデータを示す。
Figure 0005143817
まず、制御部200からの制御信号によって、メッセージスケジューラ300のメモリ302、排他的論理和演算器308、選択器318、322、324、レジスタ312、及び回転シフト演算器314、316がSHA−1ハッシュ演算のためのロジック演算部として動作して、SHA−1ハッシュ演算に使用する1から80ラウンドでのメッセージデータ(W)を生成する。
表1を参照すれば、メッセージスケジューラ300は、512ビットのブロックデータを利用して、1クロックサイクルにわたって1から16ラウンドに使用するメッセージデータ(W)を生成する。つまり、インターフェース部100を通じて512ビットのブロックデータが入力されれば、このブロックデータは、選択器318を通じてメモリ302に保存される。メモリ302に保存されたブロックデータは、選択器322を通じてレジスタ312に保存される。その後、レジスタ312は、tが1から16になる時まで保存されたブロックデータのうちのt番目のサブブロックデータを選択器324を通じてメッセージ圧縮部400に順次に出力する。この時、メッセージ圧縮部400に出力される各サブブロックデータが当該ラウンドでのメッセージデータ(W)として使用される。
次に、メッセージスケジューラ300は、4クロックサイクル(I−IV)にわたって16から80ラウンドでの各メッセージデータ(W)を生成する。
具体的に、クロックサイクル(I)で、メモリ302は、保存された512ビットのブロックデータから(t−16)番目のサブブロックデータ(Mt−16)を出力する。メモリ302から出力されるサブブロックデータ(Mt−16)は、選択器322を通じてレジスタ312に保存される。そして、レジスタ312に保存されたサブブロックデータ(Mt−16)は、排他的論理和演算器308の第2入力端に入力される。
次に、クロックサイクル(II)で、メモリ302は、保存された512ビットのブロックデータから(t−14)番目のサブブロックデータ(Mt−14)を排他的論理和演算器308の第1入力端に出力する。排他的論理和演算器308は、2つの入力端に入力されたデータ(Mt−16、Mt−14)を積算演算して出力する。排他的論理和演算器308から出力されたデータ
Figure 0005143817
は、選択器322を通じてレジスタ312に保存される。そして、レジスタ312に保存されたデータ
Figure 0005143817
は、排他的論理和演算器308の第2入力端に入力される。
クロックサイクル(III)で、メモリ302は、保存された512ビットのブロックデータから(t−8)番目のサブブロックデータ(Mt−8)を排他的論理和演算器308の第1入力端に出力する。排他的論理和演算器308は、2つの入力端に入力されたデータ
Figure 0005143817
を積算演算して出力する。排他的論理和演算器308から出力されたデータ
Figure 0005143817
は、選択器322を通じてレジスタ312に保存される。レジスタ312に保存されたデータ
Figure 0005143817
は、再び排他的論理和演算器308の第2入力端に入力される。
最後のクロックサイクル(IV)で、メモリ302は、保存された512ビットのブロックデータから(t−3)番目のサブブロックデータ(Mt−3)を排他的論理和演算器308の第1入力端に出力する。排他的論理和演算器308は、2つの入力端に入力されたデータ
Figure 0005143817
を積算演算して出力する。排他的論理和演算器308から出力されたデータ
Figure 0005143817
は、選択器322を通じてレジスタ312に保存される。また、排他的論理和演算器308から出力されたデータ
Figure 0005143817
は、選択器322を通じて回転シフト演算器316に入力される。
レジスタ312は、保存されたデータ
Figure 0005143817
を回転シフト演算器314に出力する。回転シフト演算器314は、データ
Figure 0005143817
を1ビットずつ左側に回転させた後で出力する。回転シフト演算器314から出力されたデータ[<<1(reg_w)]は、選択器324を経てメッセージ圧縮部400に入力され、選択器324から出力されたデータ[<<1(reg_w)]がt番目のラウンドでのメッセージデータ(W)として使用される。
また、回転シフト演算器316は、データ
Figure 0005143817
を1ビットずつ左側に回転させた後で出力する。回転シフト演算器316から出力されたデータ[<<1(reg_w)]は、選択器326、318を経てメモリ302のサブブロックデータの位置(Mt−18)に保存される。
これとは異なって、選択器324から出力されたデータ[<<1(reg_w)]が選択器326、318を経てメモリ302のサブブロックデータの位置(Mt−18)に保存されてもよい。このように、選択器324から出力されたデータ[<<1(reg_w)]が選択器326、318を経てメモリ302のサブブロックデータの位置(Mt−18)に保存される場合には、回転シフト演算器316及び選択器326を省略することができるが、1ラウンドのメッセージデータの生成に必要なクロックサイクルの数が1クロックだけ増加する。
このように、最後のクロックサイクル(IV)が終了すれば、1ラウンドのメッセージデータ(W)が生成される。
したがって、メッセージスケジューラ300は、17ラウンドから80ラウンドまでの毎ラウンドで段階(I−IV)を繰り返すことによって、17ラウンドから80ラウンドでのメッセージデータ(W)を生成してメッセージ圧縮部400に出力し、生成されたメッセージデータ(W)は、メモリ302のサブブロックデータの位置(Mt−16)に保存される。したがって、メモリ302のアクセスアドレスは、演算するラウンドをiとする時、(i mod2)に定義される。
また、メッセージスケジューラ300におけるSHA−256ハッシュ演算のための段階別細部動作は、表2のように行われる。表2はSHA−256ハッシュ演算のための段階別細部動作を示した表である。表2で、「x」はいかなる値でも全体の演算には関係ないことを示し、「→」は左側のマスのデータと同一な値を示す。「Mout」はメモリ302から出力されるデータを示し、「M1」及び「M3」は各々選択器322、320から出力されるデータを示し、「R1」はレジスタ312から出力されるデータを示す。また、「A1」は論理和演算器310から出力されるデータを示す。
Figure 0005143817
まず、制御部200からの制御信号によって、メッセージスケジューラ300のメモリ302、ロジック関数演算器304、306、論理和演算器310、選択器318、320、322、324、326、及びレジスタ312がSHA−256ハッシュ演算のためのロジック演算部として動作して、SHA−256ハッシュ演算に使用する1から64ラウンドでのメッセージデータ(W)を生成する。
表2を参照すれば、メッセージスケジューラ300は、SHA−1ハッシュ演算と同様な方法で、1クロックサイクルにわたって1から16ラウンドに使用するメッセージデータ(W)を生成する。
次に、メッセージスケジューラ300は、4クロックサイクル(I−IV)にわたって16から64ラウンドでの各メッセージデータ(W)を生成する。
具体的に、クロックサイクル(I)で、メモリ302は、保存された512ビットのブロックデータから(t−16)番目のサブブロックデータ(Mt−16)を選択器322に出力する。メモリ302から出力されるサブブロックデータ(Mt−16)は、選択器322を通じてレジスタ312に保存される。レジスタ312に保存されたサブブロックデータ(Mt−16)は、選択器324を経て論理和演算器310の第2入力端に入力される。
クロックサイクル(II)で、メモリ302は、保存された512ビットのブロックデータから(t−15)番目のサブブロックデータ(Mt−15)をロジック関数演算器304に出力する。ロジック関数演算器304は、サブブロックデータ(Mt−15)に対して数式3に相当する演算を行った後で出力する。ロジック関数演算器304から出力されたデータ[σ(Mt−15)]は、選択器320を通じて論理和演算器310の第1入力端に入力される。論理和演算器310は、2つの入力端に入力されたデータ[σ(Mt−15)、Mt−16]を和算演算して出力する。論理和演算器310から出力されたデータ[σ(Mt−15)+Mt−16]は、選択器322を通じてレジスタ312に保存される。そして、レジスタ312に保存されたデータ[σ(Mt−15)+Mt−16]は、選択器324を経て論理和演算器310の第2入力端に入力される。
クロックサイクル(III)で、メモリ302は、保存された512ビットのブロックデータから(t−7)番目のサブブロックデータ(Mt−7)を選択器320に出力する。メモリ302から出力されたサブブロックデータ(Mt−7)は、選択器320を通じて論理和演算器310の第1入力端に入力される。論理和演算器310は、2つの入力端に入力されたデータ[Mt−7、σ(Mt−15)+Mt−16]を和算演算して出力する。論理和演算器310から出力されたデータ[Mt−7+σ(Mt−15)+Mt−16]は、選択器322を通じてレジスタ312に保存される。そして、レジスタ312に保存されたデータ[Mt−7+σ(Mt−15)+Mt−16]は、選択器324を経て論理和演算器310の第2入力端に入力される。
最後のクロックサイクル(IV)で、メモリ302は、保存された512ビットのブロックデータから(t−2)番目のサブブロックデータ(Mt−2)をロジック関数演算器306に出力する。ロジック関数演算器306は、サブブロックデータ(Mt−2)に対して数式4に相当する演算を行った後で出力する。ロジック関数演算器306から出力されたデータ[σ(Mt−2)]は、選択器320を経て論理和演算器310の第1入力端に入力される。論理和演算器310は、2つの入力端に入力されたデータ[(σt−2)、Mt−7+σ(Mt−15)+Mt−16]を和算演算して出力する。論理和演算器310から出力されたデータ[σ(Mt−2)+Mt−7+σ(Mt−15)+Mt−16]は、選択器322を通じてレジスタ312に保存される。また、レジスタ312に保存されたデータ[σ(Mt−2)+Mt−7+σ(Mt−15)+Mt−16]は、選択器324、326、318を通じてメモリ302のサブブロックデータの位置(Mt−16)に保存される。このように、最後のクロックサイクル(IV)が終了した後にレジスタ312に保存されたデータ[σ(Mt−2)+Mt−7+σ(Mt−15)+Mt−16]は、選択器324を経てメッセージ圧縮部400に出力され、選択器324から出力されたデータ[σ(Mt−2)+Mt−7+σ(Mt−15)+Mt−16]は、t番目のラウンドでのメッセージデータ(W)として使用される。また、選択器324から出力されたデータ[σ(Mt−2)+Mt−7+σ(Mt−15)+Mt−16]は、選択器326、318を通じてメモリ302のサブブロックデータの位置(Mt−16)に保存される。
つまり、最後のクロックサイクル(IV)が終了すれば、1ラウンドのメッセージデータ(W)が生成される。したがって、メッセージスケジューラ300は、17ラウンドから64ラウンドまで毎ラウンドで段階(I−IV)を繰り返すことによって、17ラウンドから64ラウンドでのメッセージデータ(W)を生成してメッセージ圧縮部400に出力し、生成されたメッセージデータ(W)は、メモリ302のサブブロックデータの位置(Mt−16)に保存される。したがって、メモリ302のアクセスアドレスは、演算するラウンドをiとする時、(i mod2)に定義される。
一般に、数式1に示された演算のためには、図4に示したように、メモリ41、選択器42、
Figure 0005143817
の演算のための3つの排他的論理和演算器43−42、「ROTLEFT1」の演算のための回転シフト演算器44、及び16個のレジスタ45−4516が必要である。また、数式2に示された演算のためには、図5に示したように、「σ」及び「σ」の演算のための2つのロジック関数演算器51、51、「σ(Wt−2)+Wt−7+σ(Wt−15)+Wt−16」の演算のための3つの論理和演算器52−52、及び16個のレジスタ53−5316が必要である。しかし、図4及び図5のように、過度なハードウェア資源の使用は、ハードウェアの面積及び消費電力を増加させるので、低面積特性を必要とするモバイル電話や低電力エンベデッドシステムに適用するのは困難である。
しかし、本発明の実施例によるメッセージスケジューラ300は、1つのレジスタ312、1つの論理和演算器310、及び1つの排他的論理和演算器308を利用して、SHA−1及びSHA−256ハッシュ演算に必要な1−80/1−64ラウンドのメッセージデータ(W)を生成するので、ハードウェアの面積及び消費電力が最少化される。また、図4とは異なって、本発明の実施例によるメッセージスケジューラ300は、16ラウンド以降にもメモリ302を使用するので、メモリ302の活用度が最大化される。
次に、本発明の実施例によるメッセージ圧縮部のハードウェアの構造について、図6乃至図8を参照して詳細に説明する。
図6は本発明の実施例によるメッセージ圧縮部のハードウェアの構造を示した図面である。図7及び図8は各々SHA−1及びSHA−256でのメッセージダイジェストを算出するためのハードウェアの構造を示した図面である。
図6を参照すれば、メッセージ圧縮部400は、レジスタ401−408、回転シフト演算器411、412、ロジック関数演算器413−417、論理和演算器420、保存モジュール430、及び選択器441−448を含む。図6では、ロジック関数演算器413−417が各々行うロジック関数をMaj、F、Ch、Σ、及びΣで示し、回転シフト演算器411、412が行う演算を各々<<30及び<<5で示した。この時、「30」及び「5」は回転演算するビットの数を示す。また、図6で、a、b、c、d、e、f、g、及びhは、各々レジスタ401−408に保存された値を示す。
レジスタ401−408は、各々入力端及び出力端を有し、入力端に入力されるデータを保存して、保存したデータを出力端を通じて出力する。このようなレジスタ401−408には、SHA−1/SHA−256ハッシュ演算によってメッセージダイジェスト(Message Digest)が算出される際の中間値が保存される。
回転シフト演算器411、412は、各々入力端及び出力端を有し、入力端に入力されるデータを30/5ビットずつ左側に移動させて、出力端を通じて出力する。つまり、回転シフト演算器411、412は、数式1の「ROTLEFT30/ROTLEFT5」に相当する演算を行う。
ロジック関数演算器413−415は、各々3つの入力端及び出力端を有し、各々対応するロジック関数演算を行って、出力端を通じて出力する。つまり、ロジック関数演算器413、414、415は、3つの入力端に入力されるデータに対して各々「数式6のMaj/数式6のCh/数式5のf」に相当する演算を行う。また、ロジック関数演算器416、417は、入力端及び出力端を有し、入力端に入力されるデータに対して数式10のΣ/数式11のΣに相当する演算を行って、出力端を通じて出力する。
論理和演算器420は、2つの入力端及び出力端を有し、2つの入力端に入力されるデータを和算演算して、出力端を通じて出力する。
保存モジュール430は、SHA−1及びSHA−256ハッシュ演算に使用される初期値(Initial Value)であるH値及びラウンド定数Kを保存している。ラウンド定数Kは、各ラウンドごとに異なる値である。
選択器441−447は、各々2つの入力端及び出力端を有し、制御部200で決定したSHA−1/SHA−256ハッシュ演算によって2つの入力端に入力されるデータのうちの1つを選択して、出力端を通じて出力する。また、選択器448は、7個の入力端及び出力端を有し、制御部200で決定したSHA−1/SHA−256ハッシュ演算によって7個の入力端に入力されるデータのうちの1つを選択して、出力端を通じて出力する。
具体的に、論理和演算器420の第1及び第2入力端は、各々選択器447、448の出力端に各々連結されており、論理和演算器420の出力端は、レジスタ401及び選択器442、443、444の第1入力端に連結されている。
レジスタ401の出力端がレジスタ402の入力端、ロジック関数演算器413の第1入力端、回転シフト演算器412の入力端、及びロジック関数演算器416の入力端に連結されている。レジスタ402の出力端が選択器441の第1入力端、回転シフト演算器411の入力端、ロジック関数演算器413の第2入力端、及びロジック関数演算器414の第1入力端に連結されており、回転シフト演算器411の出力端が選択器441の第2入力端に連結されている。
選択器441の出力端がレジスタ403の入力端に連結されており、レジスタ403の出力端が選択器442の第2入力端、ロジック関数演算器414の第2入力端、及びロジック関数演算器413の第3入力端に連結されている。
選択器442の出力端は、レジスタ404の入力端に連結されており、レジスタ404の出力端は、選択器443の第2入力端、ロジック関数演算器414の第3入力端、及び選択器448の第3入力端に連結されている。
選択器443の出力端がレジスタ405の入力端に連結されており、レジスタ405の出力端がレジスタ406の入力端、ロジック関数演算器415の第1入力端、選択器447の第1入力端、及びロジック関数演算器417の入力端に連結されている。レジスタ406の出力端がレジスタ407の入力端及びロジック関数演算器415の第2入力端に連結されており、レジスタ407の出力端が選択器444の第2入力端及びロジック関数演算器415の第3入力端に連結されており、ロジック関数演算器415及びロジック関数演算器417の出力端が各々選択器448の第1及び第2入力端に連結されている。そして、ロジック関数演算器413、414の出力端が各々選択器445の第1及び第2入力端に連結されており、回転シフト演算器412及びロジック関数演算器416の出力端が各々選択器446の第1及び第2入力端に連結されている。
選択器444の出力端がレジスタ408の入力端に連結されており、レジスタ408の出力端が選択器447の第2入力端に連結されている。
また、選択器445、446の出力端が各々選択器448の第5及び第6入力端に連結されており、保存モジュール430が選択器448の第4入力端に連結されており、選択器448の第7入力端には、中間データ(W)が入力される。
このようなメッセージ圧縮部400におけるSHA−1ハッシュ演算のための段階別細部動作は、表3のように行われる。表3はSHA−1ハッシュ演算のためのメッセージ圧縮部400の段階別細部動作を示した表である。表3で、「a−e」は各々レジスタ401−405に保存されたデータを示す。
Figure 0005143817
制御部200からの制御信号によって、メッセージ圧縮部400のレジスタ401−405、回転シフト演算器412、ロジック関数演算器414、論理和演算器420、保存モジュール430、及び選択器441−448が動作して、SHA−1ハッシュ演算によるメッセージダイジェスト(Message Digest)を算出する。
まず、段階2のクロックサイクル(I)に先立って、SHA−1ハッシュ演算で定義している初期値であるH−Hをレジスタ401−405に設定しなければならない(段階1)。このような初期値(H−H)の設定は、5クロックサイクルにかけて行われ、このために、レジスタ401−405は、シフトレジスタとして動作し、選択器441−443は、各々前段のレジスタ402−404から出力されたデータを後段のレジスタ403−405に出力する。
具体的に、段階1のクロックサイクル(I)で、保存モジュール430は、Hを出力する。保存モジュール430から出力されたHは、選択器448を経て論理和演算器420の第1入力端に入力される。そして、論理和演算器420の第2入力端には、選択器447を通じてレジスタ405に設定されたeが入力される。この時、a、b、c、d、及びeは0であるので、論理和演算器420の出力値はHになり、Hはレジスタ401に保存される(a=H)。そして、レジスタ401−404に保存された値は、レジスタ402−405に各々1段階ずつシフトされて保存される。そうすれば、b、c、d、及びeは各々H、0、0、及び0になる。
段階1のクロックサイクル(II)で、保存モジュール430は、Hを出力する。保存モジュール430から出力されたHは、選択器448を経て論理和演算器420の第1入力端に入力される。そして、論理和演算器420の第2入力端には、選択器447を通じてレジスタ405に設定されたeが入力される。この時、eは0であるので、論理和演算器420の出力値はHになり、Hはレジスタ401に保存される(a=H)。そして、レジスタ401−404に保存された値は、レジスタ402−405に各々1段階ずつシフトされて保存される。そうすれば、b、c、d、及びeは各々H、H、0、及び0になる。
これと同様な方法で、クロックサイクル(V)が全て行われれば、a、b、c、d、及びeは各々H、H、H、H、及びHになる。
このようにして、レジスタ401−405に初期値(H−H)が設定されれば、メッセージ圧縮部400は、表3に示された段階2の動作を行う。
表3を参照すれば、段階2のクロックサイクル(I)で、保存モジュール430は、ラウンド定数(K)を出力する。保存モジュール430から出力されたKは、選択器448を経て論理和演算器420の第1入力端に入力される。論理和演算器420は、第1入力端に入力されたデータ(K)及び選択器447を通じて第2入力端に入力されるレジスタ405のeを和算演算して出力する。論理和演算器420から出力されたデータ(K+e)は、選択器443を経てレジスタ405に保存される(e=K+e)。
段階2のクロックサイクル(II)で、回転シフト演算器412は、レジスタ401のaを5ビットずつ左側に回転させた後で出力する。回転シフト演算器412から出力されたデータ[ROTLEFT5(a)]は、選択器446、448を経て論理和演算器420の第1入力端に入力される。論理和演算器420は、第1入力端に入力されたデータ[ROTLEFT5(a)]及び選択器447を通じて第2入力端に入力されるレジスタ405のe(=K+e)を和算演算して出力する。論理和演算器420から出力されたデータ[ROTLEFT5(a)+K+e]は、選択器443を経てレジスタ405に保存される[e=ROTLEFT5(a)+K+e]。
段階2のクロックサイクル(III)で、選択器448は、第7入力端に入力される中間データ(W)を出力する。そうすれば、論理和演算器420は、中間データ(W)及び選択器447を通じて入力されるレジスタ405のe[=ROTLEFT5(a)+K+e]を和算演算して出力する。論理和演算器420から出力されたデータ[W+ROTLEFT5(a)+K+e]は、選択器443を経てレジスタ405に保存される[e=W+ROTLEFT5(a)+K+e]。
段階2の最後のクロックサイクル(IV)で、ロジック関数演算器414は、レジスタ402−404のb、c、dを演算して出力する。ロジック関数演算器414から出力されたデータ[f(b、c、d)]は、選択器445、448を経て論理和演算器420の第1入力端に入力される。論理和演算器420は、第1入力端に入力されたデータ[f(b、c、d)]及び選択器447を通じて第2入力端に入力されるレジスタ405のe[=W+ROTLEFT5(a)+K+e]を和算演算して出力する。論理和演算器420から出力されたデータ[f(b、c、d)+W+ROTLEFT5(a)+K+e]は、レジスタ401に保存される[a=f(b、c、d)+W+ROTLEFT5(a)+K+e]。そして、レジスタ401−404に保存されたa、b、c、d、及びeは、各々1段階ずつシフトされて保存される。
このように、4クロックサイクル(I−IV)にかけて1つのラウンドに対するSHA−1ハッシュ演算が完了し、前記4クロックサイクル(I−IV)を80ラウンドまで繰り返す。そうすれば、レジスタ401−405には、SHA−1ハッシュ演算の中間値が保存される。この時、SHA−1ハッシュ演算のメッセージダイジェスト(Message Digest)を算出するためには、80ラウンドにわたってレジスタ401−405に保存された値(a−e)及び保存モジュール430に保存された初期値(H−H)を和算演算しなければならない。したがって、段階3では、段階1と同様な方法で、5クロックサイクルにかけてレジスタ401−405に保存された値及び保存モジュール430に保存された初期値(H−H)を各々和算演算する。
そうすれば、レジスタ401−405には、各々a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、及びe(=e+H)の値が保存される。そして、制御部200で演算の終了を知らせるインタラプト信号やポーリング(polling)信号が発生すれば、保存モジュール430に保存されている初期値(H−H)がレジスタ401−405に保存された値[a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、e(=e+H)]に更新される。
メッセージ圧縮部400は、SHA−1ハッシュ演算が1回だけ行われる場合には、このように更新された初期値[H(=a)、H(=b)、H(=c)、H(=d)、H(=e)]をSHA−1ハッシュ演算の出力値としてシステムバス21を通じてシステム10に出力し、SHA−1ハッシュ演算が何度も行われる場合には、512ビットの演算データに対するSHA−1ハッシュ演算の初期値として使用して、前記段階を80ラウンドにわたって繰り返し行う。このように、SHA−1ハッシュ演算を何度も行う場合には、2番目の512ビットの演算データに対してSHA−1ハッシュ演算を行う時に、レジスタ401−405には初期値[H(=a)、H(=b)、H(=c)、H(=d)、H(=e)]が保存されているので、段階1を行わずに直ちに段階2を行うことができる。
また、メッセージ圧縮部400におけるSHA−256ハッシュ演算のための段階別細部動作は、表4のように行われる。表4はSHA−256ハッシュ演算のためのメッセージ圧縮部400の段階別細部動作を示した表である。
Figure 0005143817
制御部200からの制御信号によって、メッセージ圧縮部400のレジスタ401−408、ロジック関数演算器413、415−417、論理和演算器420、保存モジュール430、及び選択器441−448が動作して、SHA−256ハッシュ演算によるメッセージダイジェスト(Message Digest)を算出する。
前記説明したSHA−1ハッシュ演算と同様に、SHA−256ハッシュ演算でも、段階2のクロックサイクル(I)に先立って、SHA−256ハッシュ演算で定義している初期値であるH−Hをレジスタ401−408に設定しなければならない(段階1)。このような初期値(H−H)の設定は、8クロックサイクルにかけて行われ、このために、レジスタ401−408は、シフトレジスタとして動作し、選択器441−444は、各々前段のレジスタ402−404、407から出力されたデータを後段のレジスタ403−405、408に出力する。
具体的に、段階1のクロックサイクル(I)で、保存モジュール430は、初期値(H)を出力する。保存モジュール430から出力されたHは、選択器448を経て論理和演算器420の第1入力端に入力される。そして、論理和演算器420の第2入力端には、選択器447を通じてレジスタ408に設定されたhが入力される。この時、a、b、c、d、e、f、g、及びhは0であるので、論理和演算器420の出力値はHになり、Hはレジスタ401に保存される(a=H)。そして、レジスタ401−407に保存された値は、レジスタ402−408に各々1段階ずつシフトされて保存される。そうすれば、b、c、d、e、f、g、及びhは各々H、0、…、0になる。
段階1のクロックサイクル(II)で、保存モジュール430は、Hを出力する。保存モジュール430から出力されたHは、選択器448を経て論理和演算器420の第1入力端に入力される。そして、論理和演算器420の第2入力端には、選択器447を通じてレジスタ408に設定されたhが入力される。この時、hは0であるので、論理和演算器420の出力値はHになり、Hはレジスタ401に保存される。そして、レジスタ401−407に保存された値は、レジスタ402−408に各々1段階ずつシフトされて保存される。そうすれば、b、c、d、e、f、g、及びhは各々H、H、0、…、0になる。
これと同様な方法で、段階1のクロックサイクル(III−VIII)で、各々保存モジュール430は、H−Hを出力し、クロックサイクル(VIII)が全て行われれば、a、b、c、d、e、f、g、及びhは各々H、H、H、H、H、H、H、及びHになる。
このようにしてレジスタ401−408に初期値(H−H)が全て設定されれば、メッセージ圧縮部400は、表4に示された段階2の動作を行う。
表4を参照すれば、段階2のクロックサイクル(I)で、ロジック関数演算器415は、レジスタ405−407に保存されたデータ(e、f、g)に対して数式7に相当するロジック関数演算を行って出力する。ロジック関数演算器415から出力されるデータ[Ch(e、f、g)]は、選択器448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたhが選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[Ch(e、f、g)、h]を和算演算して出力する。論理和演算器420から出力されるデータ[Ch(e、f、g)+h]は、選択器444を経てレジスタ408に保存される[h=Ch(e、f、g)+h]。
クロックサイクル(II)で、保存モジュール430は、ラウンド定数(K)を出力する。保存モジュール430から出力されたKは、選択器448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたh[=Ch(e、f、g)+h]が選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[K、Ch(e、f、g)+h]を和算演算して出力する。論理和演算器420から出力されるデータ[K+Ch(e、f、g)+h]は、選択器444を経てレジスタ408に保存される[h=K+Ch(e、f、g)+h]。
クロックサイクル(III)で、ロジック関数演算器417は、レジスタ405に保存されたeに対して数式11に相当するロジック関数演算を行って出力する。ロジック関数演算器417から出力されるデータ[Σ(e)]は、選択器448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたh[=K+Ch(e、f、g)+h]が選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[Σ(e)、K+Ch(e、f、g)+h]を和算演算して出力する。論理和演算器420から出力されるデータ[Σ(e)+K+Ch(e、f、g)+h]は、選択器444を経てレジスタ408に保存される[h=Σ(e)+K+Ch(e、f、g)+h]。
クロックサイクル(IV)で、選択器448は、中間データ(W)を出力する。選択器から出力されるデータ(W)は、選択器448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたh[=Σ(e)+K+Ch(e、f、g)+h]は、選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[W、Σ(e)+K+Ch(e、f、g)+h]を和算演算して出力する。論理和演算器420から出力されるデータ[W+Σ(e)+K+Ch(e、f、g)+h]は、選択器444を経てレジスタ408に保存される[h=W+Σ(e)+K+Ch(e、f、g)+h]。
本発明の実施例によるメッセージ圧縮部400は、メッセージスケジューラ300で中間データ(W)を生成するのに必要な時間を考慮して、中間データ(W)を第4クロックサイクル以降(IV〜)に論理和演算器420に出力する。つまり、メッセージスケジューラ300で中間データ(W)を生成するためには、4クロックサイクルが必要である。表4を参照すれば、メッセージ圧縮部400でSHA−256ハッシュ演算を行うためには、7クロックサイクルが必要であるので、これはメッセージスケジューラ300で中間データ(W)を生成するのに十分な時間となる。したがって、第4クロックサイクル(IV)以降で中間データ(W)を論理和演算器420に出力すれば、メッセージスケジューラ300で中間データ(W)を生成するための別途の時間が必要なくなる。
クロックサイクル(V)で、レジスタ404に保存されたdが選択器448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたh[=W+Σ(e)+K+Ch(e、f、g)+h]が選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[H3、W+Σ(e)+K+Ch(e、f、g)+h]を和算演算して出力する。論理和演算器420から出力されるデータ[d+W+Σ(e)+K+Ch(e、f、g)+h]は、選択器442を経てレジスタ404に保存される[d=d+W+Σ(e)+K+Ch(e、f、g)+h]。このようにして、第5クロックサイクルが終了すれば、レジスタ404には、数式6で「e=d+T」のための値が保存される。
クロックサイクル(VI)で、ロジック関数演算器413は、レジスタ401−403に保存されたデータ(a、b、c)に対して数式9に相当するロジック関数演算を行って出力する。ロジック関数演算器413から出力されたデータ[Maj(a、b、c)]は、選択器445、448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたe[=W+Σ(e)+K+Ch(e、f、g)+h]が選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[Maj(a、b、c)、W+Σ(e)+K+Ch(e、f、g)+h]を和算演算して出力する。論理和演算器420から出力されるデータ[Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+h]は、選択器442を経てレジスタ408に保存される[h=Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+h]。
最後に、クロックサイクル(VII)で、ロジック関数演算器416は、レジスタ401に保存されたaに対して数式9に相当するロジック関数演算を行って出力する。ロジック関数演算器416から出力されるデータ[Σ(a)]は、選択器446、448を経て論理和演算器420の第1入力端に入力され、レジスタ408に保存されたh[=Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+h]が選択器447を経て論理和演算器420の第2入力端に入力される。論理和演算器420は、第1及び第2入力端に入力されるデータ[Σ(a)、Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+H]を和算演算して出力する。論理和演算器420から出力されるデータ[Σ(a)+Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+h]は、レジスタ401に保存される[h=Σ(a)+Maj(a、b、c)+W+Σ(e)+K+Ch(e、f、g)+h]。そして、レジスタ401−407に保存されたデータは、各々1段階ずつシフトされてレジスタ402−408に保存される。つまり、クロックサイクル(V)で、レジスタ404には「H+W+Σ(e)+K+Ch(e、f、g)+h」が保存されているので、このデータ[H+W+Σ(e)+K+Ch(e、f、g)+h]は、レジスタ405に保存される。
このように、7クロックサイクル(I−VII)にかけて1つのラウンドに対するSHA−256ハッシュ演算が完了し、前記7クロックサイクル(I−VII)を64ラウンドまで繰り返す。そうすれば、レジスタ401−408には、SHA−256ハッシュ演算の中間値が保存される。この時、SHA−256ハッシュ演算のメッセージダイジェスト(Message Digest)を算出するためには、64ラウンドにわたってレジスタ401−408に保存された値(a−h)及び保存モジュール430に保存された初期値(H−H)を和算演算しなければならない。したがって、段階3では、段階1と同様な方法で、8クロックサイクルにかけてレジスタ401−408に保存された値及び保存モジュール430に保存された初期値(H−H)を各々和算演算する。
そうすれば、レジスタ401−408には、各々a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、e(=e+H)、f(=f+H)、g(=g+H)、及びh(=h+H)の値が保存される。そして、制御部200で演算の終了を知らせるインタラプト信号やポーリング信号が発生すれば、保存モジュール430に保存されている初期値(H−H)がレジスタ401−408に保存された値[a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、e(=e+H)、f(=f+H)、g(=g+H)、h(=h+H)]に更新される。
メッセージ圧縮部400は、SHA−256ハッシュ演算が一回だけ行われる場合には、このように更新された初期値[a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、e(=e+H)、f(=f+H)、g(=g+H)、h(=h+H)]をSHA−256ハッシュ演算の出力値としてシステムバス21を通じてシステム10に出力し、SHA−256ハッシュ演算が何度も行われる場合には、512ビットの演算データに対するSHA−256ハッシュ演算の初期値として使用して、前記段階を64ラウンドにわたって繰り返し行う。SHA−256ハッシュ演算を何度も行う場合には、2番目の512ビットの演算データからはSHA−1ハッシュ演算を行う時にレジスタ401−408に初期値[a(=a+H)、b(=b+H)、c(=c+H)、d(=d+H)、e(=e+H)、f(=f+H)、g(=g+H)、h(=h+H)]が保存されているので、段階1を行わずに直ちに段階2を行うことができる。
一般に、数式5に示された演算のためには、図7に示したように、a、b、c、d、及びeを各々保存しているレジスタ71−71、「ROTLEFT5」及び「ROTLEFT30」の演算のための回転シフト演算器72、73、「f」の演算のためのロジック演算器74、及び「f(bt−1、ct−1、dt−1)+et−1+ROTLEFT5(at−1)+W+K)」の演算のための4つの論理和演算器75−75が必要である。また、数式6に示された演算のためには、図8に示したように、a、b、c、d、e、f、g、及びhを各々保存しているレジスタ81−81、「Σ」、「Maj」、「Σ」、及び「Ch」の演算のためのロジック演算器82−85、及び「T=h+Σ(e)+Ch(e、f、g)+K+W」及び「T=Σ(a)+Maj(a、b、c)」の演算のための6個の論理和演算器86−86が必要である。しかし、図7及び図8のような過度なハードウェア資源の使用は、ハードウェアの面積及び消費電力を増加させるので、低面積特性を必要とするモバイル電話や低電力エンベデッドシステムに適用するのは困難である。
しかし、本発明の実施例によるメッセージ圧縮部400は、シフトレジスタとして動作する8個のレジスタ401−408及び1つ論理和演算器420を利用して、最終的に1つのメッセージダイジェスト(Message Digest)を算出するので、ハードウェアの面積及び消費電力を最少化することができる。
本発明の実施例は、前記説明した装置及び/または方法によってのみ具現されるのではなく、本発明の実施例の構成に対応する機能を実現するプログラムまたはそのプログラムが記録された記録媒体によって具現されることもでき、このような具現は、前記説明した実施例の記載から、本発明が属する技術分野の専門家であれば簡単に実現することができる。
以上で、本発明の実施例について詳細に説明したが、本発明の権利範囲はこれに限定されず、請求の範囲で定義している本発明の基本概念を利用した当業者の多様な変形及び改良形態も、本発明の権利範囲に属する。
10 ハッシュ暗号装置
20 システム
100 インターフェース部
200 制御部
300 メッセージスケジューラ
400 メッセージ圧縮部

Claims (14)

  1. 第1ハッシュ演算時に演算データを利用して複数の第1メッセージデータを生成し、第2ハッシュ演算時に演算データを利用して複数の第2メッセージデータを生成するメッセージスケジューラ、
    前記第1ハッシュ演算時に前記複数の第1メッセージデータを利用して第1メッセージダイジェストを算出し、前記第2ハッシュ演算時に前記複数の第2メッセージデータを利用して第2メッセージダイジェストを算出するメッセージ圧縮部、そして
    外部から受信される制御命令から前記第1及び第2ハッシュ演算のうちの前記演算データに行うハッシュ演算を決定し、前記演算データの長さによって決定された前記ハッシュ演算を行う回数を決定し、決定された前記ハッシュ演算及び前記回数によって前記メッセージスケジューラ及び前記メッセージ圧縮部を制御する制御部を含み、
    前記メッセージスケジューラは、
    前記第1ハッシュ演算時にN個の第1メッセージデータを受信して保存し、前記第2ハッシュ演算時にN個の第2メッセージデータを受信して保存するメモリ、
    前記第1ハッシュ演算時に入力されるデータを保存した後で出力し、前記第2ハッシュ演算時に入力されるデータを保存した後で出力するレジスタ、
    前記メモリに保存された第1メッセージデータ及び前記レジスタに保存されたデータに基づいて第1ロジック演算を行って、追加的な第1メッセージデータを生成する第1ロジック演算部、そして
    前記メモリに保存された第2メッセージデータ及び前記レジスタに保存されたデータに基づいて第2ロジック演算を行って、追加的な第2メッセージデータを生成する第2ロジック演算部を含み、
    前記制御部は、
    前記第1ハッシュ演算時に前記第1ロジック演算部によって追加的に生成される前記第1メッセージデータを前記メモリに保存して、前記追加的な第1メッセージデータをM個生成するまで前記第1ロジック演算を繰り返し、
    前記第2ハッシュ演算時に前記第2ロジック演算部によって追加的に生成される前記第2メッセージデータを前記メモリに保存して、前記追加的な第2メッセージデータをL個生成するまで前記第2ロジック演算を繰り返し、
    前記N、M、及びLは正の整数であり、
    前記第1ロジック演算部は、
    前記メモリに保存された第1メッセージデータのうちのいずれか1つ及び前記レジスタに保存されたデータを排他的論理和演算して、前記レジスタのデータを更新する排他的論理和演算器、そして
    前記排他的論理和演算器によって前記排他的論理和演算を所定の回数だけ繰り返した後で前記レジスタに保存されたデータを回転シフトして、前記追加的な第1メッセージデータとして出力する回転シフト演算器を含み、
    前記排他的論理和演算以前に前記メモリに保存された第1メッセージデータのうちのいずれか1つを前記レジスタに保存し、
    前記第2ロジック演算部は、
    前記メモリに保存された第2メッセージデータのうちのいずれか1つに対して複数の第3ロジック演算のうちの対応する第3ロジック演算を行って出力する第3ロジック演算器、そして
    前記第3ロジック演算器から出力されるデータ及び前記レジスタに保存されたデータを論理和演算して、前記レジスタのデータを更新する論理和演算器を含み、
    所定の個数の第2メッセージデータに対して前記第3ロジック演算及び前記論理和演算を繰り返した後で前記論理和演算によるデータを前記追加的な第2メッセージデータとして出力して、
    最初の前記第3ロジック演算以前に前記メモリに保存された第2メッセージデータのうちのいずれか1つを前記レジスタに保存する、
    ハッシュ暗号装置。
  2. 前記第1ハッシュ演算はSHA−1であり、前記第2ハッシュ演算はSHA−256である、請求項1に記載のハッシュ暗号装置。
  3. 前記複数の第3ロジック演算は、
    入力データに対して回転及びシフトを第1形態で行うロジック演算、
    入力データに対して回転及びシフトを前記第1形態と異なる第2形態で行うロジック演算、そして
    入力データをそのまま出力するロジック演算を含む、請求項に記載のハッシュ暗号装置。
  4. 前記N個の第1メッセージデータ及び前記N個の第2メッセージデータは同一である、請求項に記載のハッシュ暗号装置。
  5. 前記メッセージ圧縮部は、
    入力されるデータを保存した後で出力し、前段のレジスタから出力されるデータが後段のレジスタに入力される構造に連結されている複数のレジスタ、
    前記第1ハッシュ演算に使用する複数の第1ラウンド定数及び前記第2ハッシュ演算に使用する複数の第2ラウンド定数を保存して、前記複数の第1及び第2ラウンド定数のうちの対応するラウンドの第1及び第2ラウンド定数を出力する保存モジュール、
    前記複数のレジスタに保存されたデータのうちの少なくとも1つを利用して前記第1ハッシュ演算に必要なロジック演算を行う複数の第1演算器、
    前記複数のレジスタに保存されたデータのうちの少なくとも1つを利用して前記第2ハッシュ演算に必要なロジック演算を行う複数の第2演算器、
    前記第1ハッシュ演算時に前記保存モジュールから出力される第1ラウンド定数、前記複数の第1演算器から出力されるデータ、及び前記メッセージスケジューラから出力される第1メッセージデータの中から選択される1つの第1データ及び前記複数のレジスタのうちの第1レジスタに保存されたデータを論理和演算して、前記第1レジスタのデータを更新し、前記第2ハッシュ演算時に前記保存モジュールから出力される第2ラウンド定数、前記複数の第2演算器から出力されるデータ、及び前記メッセージスケジューラから出力される第2メッセージデータの中から選択される1つの第2データ及び前記複数のレジスタのうちの第2レジスタに保存されたデータを論理和演算して、前記第2レジスタのデータを更新する論理和演算器を含み、
    前記制御部は、
    前記第1ハッシュ演算時に前記第1データの選択を異なるようにして、前記論理和演算を第1回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記複数のレジスタのうちの一番前に位置した第3レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第1ラウンド演算を行い、
    前記第2ハッシュ演算時に前記第2データの選択を異なるようにして、前記論理和演算を第2回数だけ繰り返した後で、前記論理和演算器から出力されるデータを前記第3レジスタに保存して、前記複数のレジスタをシフトレジスタとして動作させる第2ラウンド演算を行う、請求項1または2に記載のハッシュ暗号装置。
  6. 前記制御部は、
    前記第1ハッシュ演算時に当該ラウンドの前記第1ラウンド定数及び前記第1メッセージデータを選択して、前記第1ラウンド演算を設定されたラウンドの回数だけ繰り返し、
    前記第2ハッシュ演算時に当該ラウンドの前記第2ラウンド定数及び前記第2メッセージデータを選択して、前記第2ラウンド演算を設定されたラウンドの回数だけ繰り返す、請求項に記載のハッシュ暗号装置。
  7. 前記保存モジュールには、複数の第1初期値及び複数の第2初期値が保存され、
    前記メッセージ圧縮部は、
    前記第1ハッシュ演算時に前記第1ラウンド演算が前記設定されたラウンドの回数だけ繰り返された後で、前記複数のレジスタのうちの前記第3レジスタから前記第1レジスタまで保存された複数のデータを利用して前記複数の第1初期値を更新し、
    前記第2ハッシュ演算時に前記第2ラウンド演算が前記設定されたラウンドの回数だけ繰り返された後で、前記複数のレジスタのうちの前記第3レジスタから前記第2レジスタまで保存された複数のデータを利用して前記複数の第2初期値を更新し、
    更新した前記第1及び第2初期値が各々前記第1及び第2ハッシュ演算のメッセージダイジェストとして使用される、請求項に記載のハッシュ暗号装置。
  8. 前記制御部は、
    前記当該ラウンドのラウンド情報を保存している第1カウンタ、そして
    前記当該ラウンドで前記論理和演算を繰り返す回数に対応するクロックサイクル情報を保存している第2カウンタを含み、
    前記ラウンド情報及び前記クロックサイクル情報に基づいて前記ハッシュ演算の終了を知らせる制御信号を生成して、前記メッセージ圧縮部に出力する、請求項に記載のハッシュ暗号装置。
  9. 外部から受信される演算データをN個のブロックデータに分割してメモリに保存する段階、
    前記N個のブロックデータをレジスタに保存する段階、
    第1ハッシュ演算時に前記レジスタに保存したN個のブロックデータを1からN番目のラウンドで使用する第1メッセージデータに生成する段階、
    前記第1ハッシュ演算時に、(N+1)からM番目のラウンドの各ラウンドで前記第1メッセージデータ及び前記レジスタに保存されたデータに基づいて1つの排他的論理和演算器を利用して設定された回数だけ排他的論理和演算を行って、相当するラウンドの第1メッセージデータを生成する段階、
    第2ハッシュ演算時に前記レジスタに保存したN個のブロックデータを1からN番目のラウンドで使用する第2メッセージデータに生成する段階、
    前記第2ハッシュ演算時に、(N+1)からK番目のラウンドの各ラウンドで前記第2メッセージデータ及び前記レジスタに保存されたデータに基づいて1つの論理和演算器を利用して設定された回数だけ論理和演算を行って、相当するラウンドの第2メッセージデータを生成する段階、
    前記第1ハッシュ演算時に前記1からM番目のラウンドに対応するM個の第1メッセージデータを利用して第1メッセージダイジェストを算出する段階、そして
    前記第2ハッシュ演算時に前記1からK番目のラウンドに対応する第2メッセージデータを利用して第2メッセージダイジェストを算出する段階を含み、
    前記N、M、及びKは正の整数である、ハッシュ暗号方法。
  10. 前記第1ハッシュ演算はSHA−1であり、前記第2ハッシュ演算はSHA−256である、請求項に記載のハッシュ暗号方法。
  11. 前記(N+1)からM番目のラウンドの第1メッセージデータを前記メモリに保存する段階、そして
    前記(N+1)からK番目のラウンドの第2メッセージデータを前記メモリに保存する段階をさらに含む、請求項9または10に記載のハッシュ暗号方法。
  12. 前記第1メッセージダイジェストを算出する段階は、
    入力される複数の第1データの中から選択される1つの第1データ及び前記第1ハッシュ演算時に動作する複数の第1レジスタのうちの一番最後に位置する第2レジスタに保存されたデータを他の1つの論理和演算器を利用して論理和演算して、前記第1レジスタのデータを更新する段階、
    前記第1データの選択を異なるようにして、前記論理和演算を設定された回数だけ繰り返した後で前記複数の第1レジスタのうちの一番前に位置した第3レジスタに保存した後、前記複数の第1レジスタのデータをシフトする段階、そして
    1からMラウンドまでの当該ラウンドのラウンド定数及び第1メッセージデータを選択して前記更新する段階及び前記シフトする段階を繰り返し、前記複数の第1レジスタに保存されたデータ及び複数の第1初期値を利用して前記第1メッセージダイジェストを算出する段階を含み、
    前記第2メッセージダイジェストを算出する段階は、
    入力される複数の第2データの中から選択される1つの第2データ及び前記第2ハッシュ演算時に動作する複数の第4レジスタのうちの一番最後に位置する第5レジスタに保存されたデータを前記他の1つの論理和演算器を利用して論理和演算して、前記第5レジスタのデータを更新する段階、
    前記第2データの選択を異なるようにして、前記論理和演算を設定された回数だけ繰り返した後で前記複数の第4レジスタのうちの一番前に位置した第6レジスタに保存した後、前記複数の第4レジスタのデータをシフトする段階、そして
    1からKラウンドまでの当該ラウンドのラウンド定数及び第2メッセージデータを選択して前記更新する段階及び前記シフトする段階を繰り返し、前記複数の第4レジスタに保存されたデータ及び複数の第2初期値を利用して前記第2メッセージダイジェストを算出する段階を含む、請求項9または10に記載のハッシュ暗号方法。
  13. 前記複数の第1レジスタは前記複数の第4レジスタの一部であり、前記第3レジスタ及び前記第6レジスタは同一なレジスタである、請求項12に記載のハッシュ暗号方法。
  14. 前記第1メッセージダイジェストを算出する段階は、
    前記第1レジスタのデータを更新する段階以前に、前記複数の第1レジスタに前記複数の第1初期値を設定する段階をさらに含み、
    前記第2メッセージダイジェストを算出する段階は、
    前記第2レジスタのデータを更新する段階以前に、前記複数の第4レジスタに前記複数の第2初期値を設定する段階をさらに含む、請求項12に記載のハッシュ暗号方法。
JP2009278269A 2008-12-08 2009-12-08 ハッシュ暗号装置及び方法 Expired - Fee Related JP5143817B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2008-0124199 2008-12-08
KR1020080124199A KR101210607B1 (ko) 2008-12-08 2008-12-08 해시 암호 장치 및 방법

Publications (2)

Publication Number Publication Date
JP2010134465A JP2010134465A (ja) 2010-06-17
JP5143817B2 true JP5143817B2 (ja) 2013-02-13

Family

ID=42232401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009278269A Expired - Fee Related JP5143817B2 (ja) 2008-12-08 2009-12-08 ハッシュ暗号装置及び方法

Country Status (3)

Country Link
US (1) US8275126B2 (ja)
JP (1) JP5143817B2 (ja)
KR (1) KR101210607B1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014046024A1 (ja) * 2012-09-21 2014-03-27 三菱電機株式会社 ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
CN105474205A (zh) * 2013-05-16 2016-04-06 康维达无线有限责任公司 语义命名模型
US10097345B2 (en) * 2015-04-14 2018-10-09 PeerNova, Inc. Secure hash algorithm in digital hardware for cryptographic applications
US10506388B1 (en) * 2018-06-27 2019-12-10 Harris Global Communications, Inc. Efficient short message compression
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4206205B2 (ja) 2001-03-26 2009-01-07 株式会社日立製作所 Sha演算の高速演算回路
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
JP3921424B2 (ja) * 2002-07-17 2007-05-30 富士通株式会社 ハッシュ関数処理回路
WO2004042602A1 (en) 2002-10-21 2004-05-21 Stmicroelectronics Asia Pacific Pte Ltd. Apparatus to implement dual hash algorithm
US7181009B1 (en) 2002-12-18 2007-02-20 Cisco Technology, Inc. Generating message digests according to multiple hashing procedures
US7684563B1 (en) * 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) * 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
JP4337675B2 (ja) 2004-07-23 2009-09-30 ソニー株式会社 暗号処理装置および暗号処理方法
US7570759B2 (en) * 2004-08-13 2009-08-04 Yen-Fu Liu System and method for secure encryption
KR100581662B1 (ko) 2005-08-31 2006-05-22 주식회사 칩스앤미디어 알고리즘이 다른 복수의 해쉬 함수 연산을 위한 공통엔진

Also Published As

Publication number Publication date
JP2010134465A (ja) 2010-06-17
KR20100065721A (ko) 2010-06-17
US8275126B2 (en) 2012-09-25
KR101210607B1 (ko) 2012-12-11
US20100146296A1 (en) 2010-06-10

Similar Documents

Publication Publication Date Title
JP5143817B2 (ja) ハッシュ暗号装置及び方法
KR100901697B1 (ko) 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치
JP4890976B2 (ja) 暗号処理装置
JP5648177B2 (ja) サイドチャネル攻撃に対する素数生成の保護
Banerjee et al. An energy-efficient reconfigurable DTLS cryptographic engine for securing Internet-of-Things applications
US8472621B2 (en) Protection of a prime number generation for an RSA algorithm
JPH09274560A (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
WO2003077119A1 (en) Hardware implementation of the secure hash standard
KR20030051992A (ko) 아이씨카드용 알에스에이 암호 연산 장치
CN113193962B (zh) 基于轻量级模乘的sm2数字签名生成与验证器
JP2010107947A (ja) Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置
JP2004054128A (ja) 暗号化装置
KR20050065976A (ko) Sha-1 해쉬값 연산 장치 및 방법
JP2004004341A (ja) べき乗剰余計算装置、べき乗剰余計算方法及びプログラム
CN116318660A (zh) 一种消息扩展与压缩方法及相关装置
US11750367B2 (en) Simulation device and method for homomorphic cryptosystem
JP3833175B2 (ja) 一定の区間内に含まれる素数から電子キーを生成する方法とその装置
JP5179933B2 (ja) データ処理装置
JP2004177582A (ja) 楕円曲線暗号装置、楕円曲線暗号演算方法
JP2005003745A (ja) 乱数生成装置とその方法、プログラム、および暗号処理装置
JP4243179B2 (ja) 演算装置
JP4306121B2 (ja) 除算回路,乗除算回路
JP2002351314A (ja) 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体
JP2001188468A (ja) ガロア体上の元の除算演算方法および除算演算回路
CN114297694A (zh) 解密验证方法、装置、电子芯片及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120821

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121026

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121121

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151130

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees