説明

SHAアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置

【課題】本発明はSHAアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置に関するものである。
【解決手段】本発明はメッセージスケジュール演算を行う時、1つの加算器を利用して順次にメッセージスケジュール演算を行う。また、メッセージスケジュールを演算する時に入力される演算データを貯蔵するメモリを17番目ラウンドからはメッセージスケジュール演算によって生成される中間データを貯蔵するために使用する。さらに、本発明はメッセージ圧縮演算を行う時にも1つの加算器を利用して順次にメッセージ圧縮演算を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はSHAアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置に関し、特に、SHA-256基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置に関するものである。
【0002】
本発明は知識経済部及び情報通信研究振興員のIT成長動力事業の一環として行った研究から導き出されたものである[課題管理番号:2006-S-041-03、課題名:次世代モバイル端末器の保安及び信頼サービスのための共通保安核心モジュール開発]。
【背景技術】
【0003】
最近急速な無線ネットワーク技術の発展と共にデジタル情報社会が高度化されて電子商取引が活性化することによって、暗号技術は高速インタネット網を基づく社会、経済的活動の安全性と信頼性、使用者プライバシー保護などのための核心技術として認識されている。特に、モバイルフォンのような移動用プラットホームは適切な保安措置がなければハッカーや他の悪意のあるプログラムの攻撃対象になり得る。
【0004】
信頼コンピューティンググループ(Trusted Computing Group、TCG)のモバイルフォンワーキンググループ(Mobile Phone Working Group、MPWG)は特にTCGの保安規格をモバイルフォン装置に適するように拡張する作業を行っている。このような保安規格でモバイルフォンのための必須保安モジュールであるモバイル信頼モジュール(Mobile Trusted Module、MTM)は当該プラットホームの無欠陥性を測定し、これを検証する作業を行うためにキーを使用しないSHA-1(secure hash algorithm-1)ハッシュ関数を使用するように指定している。しかし、最近は安定したハッシュ関数の使用のためにSHA-256の使用を勧告及び明示している。このような暗号パラダイムの変化を反映してTCGでは現在進行しているTPMの次期バージョンの標準であるTPM NEXTにはSHA-256の使用を明示している。
【0005】
大部分のモバイルデバイスの場合、メモリと使用可能な電源及びコンピューティング能力に限界があるので、TCGのこのような保安規格をモバイルフォンに適用するには色々技術的難しさを伴う。特に、モバイルフォンの場合、バッテリーの容量に限界があるため、このような制約要因の中で消費電力に大きな影響を受ける。したがって、低面積で低電力のSHA-256暗号回路の設計技術が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が目的とする技術的課題は、小底面積で低電力のハードウェア構造を有するSHAアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置を提供することにある。
【課題を解決するための手段】
【0007】
前記目的を達成するための本発明の特徴によるSHAアルゴリズム基盤の暗号装置は、1つの加算器を含み、第1ラウンド前には入力される演算データのうちの一部データを各ラウンド別中間データとして出力し、前記第1ラウンドからは前記加算器を利用し第1中間データに対してSHAアルゴリズムの第1演算関数を行った結果値、第2中間データに対して前記SHAアルゴリズムの第2演算関数を行った結果値、第3中間データ及び第4中間データを複数の段階にかけて既に設定された順に合算して各ラウンド別中間データとして出力するメッセージスケジュール部;及び、前記メッセージスケジュール部から各ラウンド別に出力される中間データを利用したメッセージ圧縮演算を行ってハッシュ演算の最終結果データを生成するメッセージ圧縮部を含む。
【0008】
また、本発明の他の特徴によるSHAアルゴリズム基盤の暗号装置は、入力される演算データを利用して各ラウンド別中間データを生成して出力するメッセージスケジュール部;及び1つの加算器及び複数のレジスターを含み、ハッシュ演算が開始されると前記複数のレジスターに複数の初期値をロードし、初期値ロードが完了するとメッセージ圧縮演算の各ラウンド別に、前記複数のレジスターに貯蔵された値、前記複数のレジスターに貯蔵された値を利用してハッシュ演算の演算関数をそれぞれ行った結果値、前記中間データ及びラウンド定数を複数の段階にかけて既に設定された順に前記加算器によって合算し、前記加算器によって合算した値を利用して前記複数のレジスターに貯蔵された値を更新し、前記複数のラウンドにかけて行われるメッセージ圧縮演算が完了すると前記複数の初期値と前記複数のレジスターに貯蔵された値を合算して最終結果データを生成する圧縮部を含む。
【0009】
また、本発明の他の特徴によるSHAアルゴリズム基盤の暗号装置のメッセージスケジュール演算方法は、演算データが入力されると前記演算データを複数のブロックに分類して前記演算データと同一な大きさのメモリに貯蔵する段階;第1ラウンド前には前記メモリに貯蔵された複数のブロックを前記第1ラウンド前の各ラウンド別中間データとして順次に出力する段階;及び前記第1ラウンドからは各ラウンド別に前の第1ラウンドから出力された第1中間データに対してSHAアルゴリズムの第1演算関数を行った結果値、
前の第2ラウンドから出力された第2中間データに対して前記SHAアルゴリズムの第2演算関数を行った結果値、前の第3ラウンド及び第4ラウンドから出力された第3中間データ及び第4中間データを1つの加算器を利用して複数の段階にかけて既に設定された順に合算して前記第1ラウンドからの各ラウンド別中間データを出力する段階を含む。
【0010】
また、本発明の他の特徴によるSHAアルゴリズム基盤の暗号装置のメッセージスケジュール演算によって生成された各ラウンド別中間データを利用して第1演算関数、第2演算関数、第3演算関数及び第4演算関数を含むメッセージ圧縮演算を行う方法は、複数の初期値を第1レジスター、第2レジスター及び第3レジスターを含む複数のレジスターにロードする段階;前記第1レジスターに貯蔵された値、前記複数のレジスターのうちの一部レジスターを利用して前記第1演算関数、第2演算関数、第3演算関数及び第4演算関数をそれぞれ行った結果値、対応するラウンドの中間データ及びラウンド定数を1つの加算器を利用して複数の段階にかけて既に設定された順に合算し、各段階別に前記加算器を利用して合算した結果値を前記第1レジスター、前記第2レジスター及び前記第3レジスターのうちの1つに選択的に貯蔵する段階;前記複数のレジスターのうちの前記第3レジスターを除いた残りレジスターに貯蔵された値を隣接するレジスターに1段階ずつシフトして貯蔵する段階;前記選択的に貯蔵する段階及び前記シフトして貯蔵する段階を複数のラウンドにかけて反復的に行う段階;及び前記複数のレジスターに貯蔵された値と前記複数の初期値を合算してハッシュ演算の最終結果データを出力する段階を含む。
【発明の効果】
【0011】
本発明によると、小底面積で低電力構造を有するSHAアルゴリズム基盤の暗号装置を提供する。
【図面の簡単な説明】
【0012】
【図1】本発明の実施例によるSHA-256暗号装置を示す構造図である。
【図2】本発明の実施例によるメッセージスケジュール部を示す詳細図である。
【図3】本発明の実施例によるメッセージ圧縮部を示す詳細図である。
【図4】本発明の実施例によるSHA-256暗号装置のメッセージスケジュール演算方法を示す流れ図である。
【図5】本発明の実施例によるSHA-256暗号装置のメッセージ圧縮演算方法を示す流れ図である。
【発明を実施するための形態】
【0013】
以下、添付した図面を参照して本発明の実施例について本発明が属する技術分野における通常の知識を有する者が容易に実施できるように詳しく説明する。しかし、本発明は多用で相異なる形態で実現することができ、ここで説明する実施例に限られない。また、図面で本発明を明確に説明するために説明上不要な部分は省略し、明細書全体にわたって類似の部分については類似の図面符号を付けた。
【0014】
明細書全体においてある部分がある構成要素を“含む”とする時、これは特に反対になる記載のない限り他の構成要素を除くことではなく他の構成要素をさらに含むことを意味する。また、明細書に記載された“…部”、“…器”などの用語は少なくとも1つの機能や動作を処理する単位を意味し、この単位はハードウェアやソフトウェアまたはハードウェア及びソフトウェアの結合で実現される。
【0015】
次に、以下では本発明の実施例によるSHA(Secure Hash Algorithm)アルゴリズム基盤の暗号化方法及び暗号装置について図面を参照して詳細に説明する。特に、本発明の実施例ではSHA-256基盤の暗号化方法及び暗号装置を例に上げて説明する。
【0016】
本発明の実施例について説明する前に、まず、ハッシュアルゴリズムであるSHA-256アルゴリズムについて詳細に説明する。
【0017】
まず、SHA-256アルゴリズムは最大264ビット長さのメッセージの入力を受けて256ビットの圧縮メッセージ(message digest)を出力するハッシュ演算を示す。SHA-256アルゴリズムでは1回のハッシュ演算を行うために512ビットを基本単位にして演算を行い、1つの512ビットの演算データに対するハッシュ演算のために内部的に64ラウンドにわたって演算を行う。SHA-256アルゴリズムは圧縮メッセージを計算するために次の数式1のように32ビットに基づく6種類の演算関数を使用する。
[数式1]
【数1】

【0018】
SHA-256アルゴリズムは大きく分けてメッセージスケジュール演算とメッセージ圧縮演算で実現される。メッセージスケジュール演算は次の数式2のように前述した数式1のσ()関数とσ()関数を利用して入力される512ビットの演算データから64ラウンドにかけて行われるメッセージ圧縮演算に必要な32ビットの中間データを生成する。
[数式2]
【数2】

ここで、Mはメッセージ圧縮演算の入力として使用されるt番目ラウンドの32ビット中間データを意味する。数式2を参照すると、メッセージスケジュールを演算する時、初期16番目ラウンドまでは入力される512ビットの演算データを16個のブロックに分類した32ビットのデータを順次に中間データとして出力し、残りラウンドでは数式1の演算関数(σ、σ)を使用して毎ラウンドごとに新たな32ビット中間データを計算して出力する。
【0019】
暗号装置でこのようなメッセージスケジュール演算を行うためには一般に入力される512ビットの演算データを貯蔵するための512ビットのメモリと16個のシフトレジスターが必要である。このような構造の暗号化装置は初期16番目ラウンドまでのメッセージスケジュールを演算する時には512ビットの演算データが貯蔵された512メモリから32ビットのデータを直ちに読み込んで中間データとして出力し、残りラウンドでは毎ラウンドごとに新たな32ビットの中間データを計算して使用する。したがって、入力される512ビットの演算データを貯蔵するために使用される512ビットのメモリは初期16番目ラウンドまでのメッセージスケジュール演算のために使用され、残りラウンドのメッセージスケジュール演算ではそれ以上使用しない状態に放置される。このような暗号装置は回路面積と消費電力の側面から過剰に資源(resource)を浪費する構造であるため、低電力、小底面積特性を必要とするモバイルフォンや他の低電力エンベデッドシステムに適用するには困難がある。
【0020】
一方、メッセージ圧縮演算は次の数式3のように数式1の
【数3】

Ch()、Maj()関数を利用してメッセージスケジュール演算によって生成された32ビットの中間データに対するメッセージ圧縮演算を64ラウンドにかけて繰り返して行う。
[数式3]
【数4】

ここで、Wはメッセージスケジュール演算によって毎ラウンドごとに出力される32ビットの中間データを示し、KはSHA-256アルゴリズムで定義するラウンド定数であって32ビットで表現される。また、a、b、c、d、e、f、g、hはメッセージ圧縮演算に使用される変数を示し、これら変数は各ラウンドごとに1段階ずつシフト移動したり或いは既に決められている演算によってそれぞれ異なる値を貯蔵する。
【0021】
数式3を参照すると、メッセージ圧縮演算のためには7回の32ビット加算演算が必要である。したがって、暗号化装置でメッセージ圧縮演算のために最も多い回路面積を占めるのは加算器となる。このように、複数の加算演算のためにいくつかの加算器を使用する場合、高速のメッセージ圧縮演算は可能であるが、暗号装置の回路面積と消費電力が増加してモバイルフォンや他の低電力エンベデッドシステムに使用することはできない。
【0022】
図1は本発明の実施例によるSHA-256基盤の暗号装置100を示す構造図である。
【0023】
図1を参照すると、SHA-256基盤の暗号装置100はインターフェース部101、制御部102、メッセージスケジュール部103及びメッセージ圧縮部104を含む。
【0024】
インターフェース部101は暗号装置100が使用されるシステムのシステムバス(System bus)に連結され、システムバスから暗号装置100に入力される演算データ及び制御命令を受信する。また、SHA-256演算の結果データと演算の終了を知らせるインタラプタ(interrupter)信号またはポリング(polling)信号をシステムバスを通じてシステムに伝送する機能を行う。
【0025】
一方、インターフェース部101はシステムバスを通じてシステムが伝送した制御命令を受信すると、これをインターフェース部内の制御レジスターに貯蔵する。このように制御レジスターに貯蔵された制御命令は制御部102で参照して暗号装置100の駆動に必要な制御信号を発生するのに使用される。ここで、制御レジスターの各ビットは暗号装置100の動作を制御するために既に定義された値を使用する。
【0026】
また、インターフェース部101はシステムバスを通じてシステムが伝送した演算データが入力されると、制御部102の制御信号に基づいて入力された演算データをメッセージスケジュール部103内の第1メモリに貯蔵する。ここで、制御部102は演算データをメッセージスケジュール部103内の第1メモリに貯蔵するための貯蔵経路を設定する制御信号をインターフェース部101に印加する。
【0027】
制御部102は暗号装置100の全般的なデータ流れを制御する。
【0028】
まず、制御部102はSHA-256演算の遂行のためにメッセージスケジュール部103とメッセージ圧縮部104の内部モジュールの駆動に必要な演算遂行順と演算結果貯蔵過程を64ラウンドにわたって制御する。
【0029】
また、制御部102はインターフェース部101を通じたデータの入力と出力を制御し、インターフェース部101に入力されるデータのアドレスに基づいて当該データが制御命令であるか演算データであるかを判別する。そして、入力されるデータが制御命令である場合、これを制御レジスターに貯蔵するようにインターフェース部101を制御し、制御レジスターに貯蔵された制御命令を分析して暗号装置100で行うべき演算の種類を判別する。そして、行うべき演算を行うように暗号装置100状態遷移を制御する。
【0030】
これに反し、入力されるデータが演算データである場合、制御部102はこれをメッセージスケジュール部103内の第1メモリに貯蔵するようにインターフェース部101を制御する。ここで、制御部102は制御信号を通じて入力される演算データが貯蔵される第1メモリ内アドレス及び演算データの貯蔵順などを制御する。
【0031】
メッセージスケジュール部103は第1メモリを含み、インターフェース部101を通じて入力される演算データを第1メモリに貯蔵し、入力される演算データを利用して全体64ラウンドにかけてメッセージ圧縮演算を行うために必要な32ビットの中間データを生成してメッセージ圧縮部104に伝達する。
【0032】
メッセージ圧縮部104はメッセージ圧縮演算、つまり、SHA-256ハッシュ演算を行い、メッセージスケジュール部103から入力される32ビットの中間データに対する64ラウンドの演算を行い、最終結果データを内部レジスターに貯蔵する。
【0033】
図2は本発明の実施例によるメッセージスケジュール部103を示す詳細図である。
【0034】
図2を参照すると、メッセージスケジュール部103は第1メモリ201、第1演算関数演算部202、第2演算関数演算部203、第1加算器204及びレジスター205を含む。また、第1マルチプレクサー206、第2マルチプレクサー207、第3マルチプレクサー208をさらに含むことができる。
【0035】
第1メモリ201は512ビットの大きさを有し、16番目ラウンドまではメッセージスケジュール部103に入力される512ビットの演算データを16個のブロックに分類して貯蔵し、17番目ラウンドからは演算データの代わりにメッセージスケジュール部103から出力される32ビットの中間データとして順次に貯蔵する。ここで、16番目ラウンドまでは演算データに含まれた16個の32ビットデータが中間データとして順次に出力されるので、演算データが直ちに中間データとなる。したがって、16番目ラウンドまでは演算データをメッセージスケジュール部103から出力される中間データに更新する必要がない。
【0036】
第1演算関数演算部202は17番目ラウンドから前述した数式2に基づいて第1メモリ201に貯蔵された中間データのうちの(t-15)番目ラウンドから出力された中間データに対して第1演算関数(σ)を行って出力する。ここで、tは現在ラウンドが何番目ラウンドであるかを示す。
【0037】
第2演算関数演算部203は17番目ラウンドから前述した数式3に基づいて第1メモリ201に貯蔵された中間データのうちの(t-2)番目ラウンドから出力された中間データに対して第2演算関数(σ)を行って出力する。
【0038】
第1加算器204は17番目ラウンドから各ラウンド別に複数の段階にかけて(t-16)番目ラウンドから出力された中間データ、第1演算関数演算部202から出力される出力値、(t-7)番目ラウンドから出力された中間データ及び第2演算関数演算部203から出力される出力値を既に設定された順に順次に合算して出力する。このために、第1加算器204で複数の段階別に合算される合算値はレジスター205に貯蔵され、レジスター205に貯蔵された合算値は次の段階で再び第1加算器204に入力されて合算に使用される。
【0039】
例えば、第1段階では第1加算器204を通じて(t-16)番目ラウンドから出力された中間データが入力され、第1加算器204は(t-16)番目ラウンドで出力された中間データを出力する。第1加算器204から出力された(t-16)番目ラウンドの中間データはレジスター205に貯蔵されて次の段階で第1加算器204に出力される。したがって、第2段階では第1演算関数演算部202から出力される出力値と(t-16)番目ラウンドの中間データが合算されて出力される。そして、この合算値はレジスター205に貯蔵されて再び次の段階で第1加算器204に出力される。このような方法で、第1加算器204は第3段階では(t-16)番目ラウンドの中間データ及び第1ロジック関数演算部202の出力値を合算した結果に(t-7)番目ラウンドの中間データを合算して出力し、第4段階では(t-16)番目ラウンドの中間データ、第1ロジック関数演算部202の出力値及び(t-7)番目ラウンドの中間データを合算した結果に第2演算関数203の出力値を合算して最終的に当該ラウンドの中間データを出力する。
【0040】
レジスター205には、第1メモリ201から出力される中間データと各ラウンドごとに第1加算器204から出力される段階別合算値を貯蔵する。つまり、16番目ラウンドまでは各ラウンド別に第1メモリ201から出力される中間データを貯蔵し、17番目ラウンド後には各段階別にメッセージスケジュール演算のために第1メモリ201から出力される直前ラウンドの中間データと第1加算器204で各段階別に出力される合算値のうちの1つを貯蔵する。ここで、各ラウンドの最後段階でレジスター205に貯蔵される値は当該ラウンドの中間データとなる。
【0041】
第1マルチプレクサー206はメッセージスケジュール部103に入力される512ビットの演算データとレジスター205から出力される各ラウンド別中間データのうちの1つを選択して第1メモリ201に出力する。つまり、16番目ラウンドまでは入力される512ビットの演算データを第1メモリ201に出力し、17番目ラウンドからは各ラウンド別に最終的に生成された中間データをレジスター205から読み込んで第1メモリ201に出力する。
【0042】
第2マルチプレクサー207は17番目ラウンド後から各段階別に入力される値の中で(t-16)番目ラウンドの中間データ、第1演算関数演算部202の出力値、(t-7)番目ラウンドの中間データ及び第2演算関数演算部203の出力値のうちの1つを選択して出力する。
【0043】
第3マルチプレクサー208は第1メモリ201から出力される中間データと第1加算器204の出力値のうちの1つを選択してレジスター205に出力する。つまり、16番目ラウンドまでは第1メモリ201から順次に出力される32ビットのデータをレジスター205に出力し、17番目ラウンドからは各段階別に出力される第1加算器204の出力値をレジスター205に出力する。
【0044】
次の表1は前述したメッセージスケジュール部103の各構成要素の動作に基づいて各ラウンド別遂行結果を示したものである。表1でx表示はいずれの値でも全体演算に関係ない値(Don't care)であることを意味する。
【表1】

【0045】
一方、前述したメッセージスケジュール演算を行うためにメッセージスケジュール部103の第1メモリ201は制御部102の制御信号に基づいて第1メモリ201にデータを貯蔵したり第1メモリ201に貯蔵されたデータを出力する。また、第1マルチプレクサー206、第2マルチプレクサー207及び第3マルチプレックス208は制御部102の制御信号に基づいて入力されるデータのうちの1つを選択して出力する。
【0046】
図3は本発明の実施例によるメッセージ圧縮部104を示す構造図である。
【0047】
図3を参照すると、メッセージ圧縮部104は第2メモリ301、8個のレジスター(a、b、c、d、e、f、g、h)302〜309、第3演算関数演算部310、第4演算関数演算部311、第5演算関数演算部312、第6演算関数演算部313、第2加算器314、第4マルチプレクサー315、第5マルチプレクサー316及び第6マルチプレクサー317を含む。
【0048】
第2メモリ104はメッセージ圧縮演算に使用される初期値(H〜H)及びラウンド定数(K)を貯蔵する。ここで、ラウンド定数(K)はルックアップテーブル(Look Up Table)形態で貯蔵される。
【0049】
複数のレジスター302〜309はシフトレジスターで構成され、メッセージ圧縮演算で使用される変数が貯蔵される。まず、SHA-256ハッシュ演算が開始されると複数のレジスター302〜309には初期値(H〜H)が貯蔵される。そして、各ラウンド別にメッセージ圧縮演算中に発生する中間値が貯蔵され、64ラウンドにかけたメッセージ圧縮演算が完了されると、メッセージ圧縮演算による最終結果データが貯蔵される。
【0050】
第3演算関数演算部310はeレジスター305、fレジスター306及びgレジスター307に貯蔵された値に対して第3演算関数(Ch(,,))を行って出力する。
【0051】
第4演算関数演算部311はeレジスター305に貯蔵された値に対して第4演算関数
【数5】

を行って出力する。
【0052】
第5演算関数演算部312はaレジスター302、bレジスター303及びcレジスター304に貯蔵された値に対して第5演算関数(Maj(,,))を行って出力する。
【0053】
第6演算関数演算部313はaレジスター302に貯蔵された値に対して第6演算関数
【数6】

を行って出力する。
【0054】
第2加算器314は初期値ロードの時には毎クロックサイクルごとに第2メモリ301から出力される初期値をaレジスター302に出力して初期値がシフトされて対応するレジスターに貯蔵させる。また、メッセージ圧縮演算の毎ラウンドごとに複数の段階にかけてhレジスター309に貯蔵された初期値(H)、第3演算関数演算部310の出力値(Ch(e、f、g))、当該ラウンドのラウンド定数(K)、第4演算関数演算部311の出力値
【数7】

、当該ラウンドのメッセージスケジュール演算による中間データ(W)、dレジスター305に貯蔵された初期値(H)、第5演算関数演算部312の出力値(Maj(a、b、j))及び第6演算関数演算部313の出力値
【数8】

を順次に合算して出力する。この時、各段階ごとに第2加算器314から出力された値はhレジスター309、dレジスター305及びaレジスター304のうちの1つに選択的に貯蔵される。また、64ラウンドにかけたメッセージ圧縮演算が行われると、第2メモリ301から出力される初期値とこれに対応するレジスターに貯蔵された値を合算してaレジスター302に出力して各レジスターに貯蔵された初期値を更新する。
【0055】
第4マルチプレクサー315はcレジスター304から出力される値と第2加算器314の出力のうちの1つを選択してdレジスター305に出力する。初期値を各レジスターにロードしたり64ラウンドにかけてメッセージ圧縮演算を行って獲得した最終結果データを各レジスターに貯蔵する過程ではcレジスター304から出力されるデータを選択する。これに反し、毎ラウンドごとに複数の段階を経てメッセージ圧縮演算を行う間には第2加算器314から出力される値を選択して出力する。
【0056】
第5マルチプレクサー316はgレジスター308から出力される値と第2加算器314の出力のうちの1つを選択してhレジスター305に出力する。初期値を各レジスターにロードしたり64ラウンドにわたってメッセージ圧縮演算を行って獲得した最終結果データを各レジスターに貯蔵する過程ではgレジスター304から出力されるデータを選択して出力する。反面、毎ラウンドごとに複数の段階を経てメッセージ圧縮演算を行う間には第2加算器314から出力される値を選択して出力する。
【0057】
第6レジスター317は前述した数式3に基づいてメッセージ圧縮演算の各段階別に第3演算関数演算部310、第4演算関数演算部311、第5演算関数演算部312、第6演算関数演算部313から出力される出力値、第2メモリ301から出力される初期値及びラウンド定数のうちの1つを選択して第2加算器314に出力する。
【0058】
次の表2は前述したメッセージ圧縮部104の各構成要素の動作に基づいて各ラウンド別遂行結果を示したものである。
【表2】

【0059】
表2を参照すると、第2加算器314で各段階別に順次に合算された値は各段階別にhレジスター309、dレジスター305、aレジスター302のうちの1つに貯蔵される。
【0060】
一方、前述のように動作するために制御部102は前述した数式3のメッセージ圧縮演算を基準にメッセージ圧縮部104を制御するための制御信号を出力する。その結果、第2メモリ302は制御部102の制御信号に基づいて第2メモリ302に貯蔵された初期値またはラウンド定数を出力したり、初期値を更新する。また、第4マルチプレクサー315、第5マルチプレクサー316及び第6マルチプレクサー317は制御部102の制御信号に基づいて入力される値のうちの1つを選択して出力する。
【0061】
図4は本発明の実施例によるメッセージスケジュール部103のメッセージスケジュール演算方法を示す流れ図である。
【0062】
図4までを全体的に参照すると、まず、 メッセージスケジュール部103に512ビットの演算データが入力されると、第1マルチプレクサー206は512ビットの演算データを第1メモリ201に出力し、第1メモリ201は512ビットが16個のブロックに分かれた32ビットのデータを順次に貯蔵するように制御する。
【0063】
その後、メッセージスケジュール部103は初期16番目ラウンドまで(t≦16)は第1メモリ201に貯蔵された32ビットのデータを各ラウンド別中間データに順次に出力する(S101、S102)。このために、第1メモリ201は制御部102の制御信号に基づいて32ビットのデータを順次に出力し、第2マルチプレクサー207は第1メモリ201から出力されるデータをレジスター205に出力する。したがって、レジスター205は第2マルチプレクサー207から出力されるデータを貯蔵し、その後、レジスター205に貯蔵された中間データはメッセージ圧縮部104の入力データとして使用される。このように、初期16番目ラウンドまで中間データを出力するためには単純に第1メモリ201からデータを読み込む作業のみ行えば良いので、各ラウンド別に1クロックサイクルだけの時間を要する。一方、メッセージ演算部103の構成要素のうちの第1メモリ201、レジスター205及び第2マルチプレクサー207を除いた残り構成要素は初期16番目ラウンドまでは入力値に関係なく動作する。つまり、中間データ決定にいかなる影響も与えない。
【0064】
17番目ラウンドから64番目ラウンドまでのメッセージスケジュール部103は、各ラウンド別に複数の段階にかけてメッセージスケジュール演算を行って中間データを出力し(S103)、生成された中間データを第1メモリ201に順次に貯蔵する過程を繰り返して行う(S104、S105)。
【0065】
ここで、メッセージスケジュール演算は全4段階にわたって行われ、第1加算器204を利用して各段階別に(t-16)番目ラウンドで出力された中間データ(Mt-16)、(t-15)番目ラウンドから出力された中間データに対する第1演算関数(σ)演算を行った結果値(σ(Mt-15))、(t-7)番目ラウンドで出力された中間データ(Mt-7)、そして(t-2)番目ラウンドで出力された中間データ(Mt-2)に対する第2演算関数(σ)演算を行った結果値(σ(Mt-2))を順次に合算して出力する。一方、メッセージスケジュール演算の各段階別には1クロックサイクルずつかかるので、各ラウンド別メッセージスケジュール演算のために全4クロックサイクルがかかる。
【0066】
第1段階で、第1メモリ201は(t-16)番目ラウンドで出力された中間データ(Mt-16)を出力し、第3マルチプレクサー208はこれをレジスター205に出力する。したがって、第1段階では(t-16)番目ラウンドで出力された中間データがレジスター205に貯蔵され、レジスター205に貯蔵された値は次の段階で第1加算器204に入力される。例えば、17番目ラウンドの場合、第1段階では第1ラウンドで出力された中間データ(M)が結果値としてレジスター205に貯蔵され、この値は第2段階で第1加算器204の入力として出力される。
【0067】
第2段階で、第1メモリ201は(t-15)番目ラウンドで出力された中間データを出力する。また、第1演算関数演算部202は(t-15)番目ラウンドで出力された中間データに対する第1演算関数(σ)を行った結果値(σ(Mt-15))を出力し、第2マルチプレクサー207はこれを第1加算器204に出力する。その結果、第1加算器204は直前段階で出力された結果値(Mt-16)と第1演算関数演算部202から出力される出力値(σ(Mt-15))を合算して出力する。また、第1加算器204から出力された値(Mt-16+σ(Mt-15))は第3マルチプレクサー208を通じてレジスター205に貯蔵され、レジスター205に貯蔵された値は次の段階で第1加算器204に入力される。例えば、17番目ラウンドの場合、第2段階ではMとσ(2)を合算した値(M+σ(M))がレジスター205に貯蔵され、この値は第3段階で第1加算器204に出力される。
【0068】
第3段階で、第1メモリ201は(t-7)番目ラウンドで出力された中間データ(Mt-7)を出力し、第2マルチプレクサー207はこれを第1加算器204に出力する。その結果、第1加算器204は直前段階で出力された結果値(Mt-16+σ(Mt-15))と(t-7)番目ラウンドで出力された中間データ(Mt-7)を合算して出力する。また、第1加算器204から出力された値(Mt-16+σ(Mt-15)+Mt-7)は第3マルチプレクサー208を通じてレジスター205に貯蔵され、レジスター205に貯蔵された値は次の段階で第1加算器204の入力として入力される。例えば、17番目ラウンドでは、第3段階では(M+σ(M))とM10を合算した値(M+σ(M)+M10)がレジスター205に貯蔵され、この値は第3段階で第1加算器204に出力される。
【0069】
第4段階で、第1メモリ201は(t-2)番目ラウンドで出力された中間データ(Mt-2)を出力し、第2演算関数演算部203はこの値に対する第2演算関数(σ)演算を行って出力する。第2演算関数演算部203から出力された値(σ(Mt-2))は第2マルチプレクサー207によって第1加算器204に出力され、第1加算器204は第2演算関数演算部203から出力された値(σ(Mt-2))と直前段階で出力された値(Mt-16+σ(Mt-15)+Mt-7)を合算して出力する。また、第1加算器204から出力された値(Mt-16+σ(Mt-15)+Mt-7+σ(Mt-2))は第3マルチプレクサー208を通じてレジスター205に貯蔵され、レジスター205に貯蔵された値は当該ラウンドの中間データとして使用される。つまり、第4段階でレジスター204に貯蔵された値(Mt-16+σ(Mt-15)+Mt-7+σ(Mt-2))は当該ラウンドの中間データとしてメッセージ圧縮部104で使用され、次のラウンドでのメッセージスケジュール演算のために第1メモリ201に貯蔵される。例えば、17番目ラウンドの場合、第4段階では(M+σ(M)+M10)とσ(M15)を合算した値(M+σ(M)+M10+σ(M15)))がレジスター205に貯蔵され、この値は17番目ラウンドの最終中間データとなる。
【0070】
一方、各ラウンド別に生成された中間データのうちの17番目ラウンドから生成された中間データは第1メモリ201に順次に貯蔵される。ここで、16番目ラウンドまで出力された中間データはメッセージスケジュール部103に入力された512ビットの演算データを32ビットのデータに分類した16個のブロックと順次に一致するので、別途の貯蔵過程は省略する。一方、17番目ラウンドから生成された中間データは512ビットデータを分類した16個のブロックのうちの(i mod 16)番目ブロックが貯蔵された第1メモリ201のアドレスに上書きされる。
【0071】
一方、前述したメッセージスケジュール部103で第1メモリ201のデータを読み書きするための制御信号と各マルチプレクサー(206、207、208)から入力されるデータのうちの1つを選択するようにする制御信号は制御部102から出力される。ここで、第1メモリ201を制御するための制御信号は読取り(read)/書込み(write)選択信号と対応する第1メモリのアドレスを含む。
【0072】
前述のように、本発明の実施例ではメッセージスケジュール部103を実現するために512ビット第1メモリ、第1加算器、レジスターをそれぞれ1つずつ使用する。したがって、メッセージスケジュール演算に使用されるメモリの活用度を高め、ハードウェア面積及び消費電力を最少化する効果がある。
【0073】
図5は本発明の実施例によるメッセージ圧縮部104のメッセージ圧縮演算方法を示す流れ図である。
【0074】
図5を参照すると、SHA-256ハッシュ演算が開始されると、まず、メッセージ圧縮部104は第2メモリ301に貯蔵された既初期値(H〜H)を複数のレジスター(a〜h)302乃至309に順次にロードする(S201)。ここで、初期値を複数のレジスター(302乃至309)に順次にロードするためには全8クロックサイクルがかかり、各レジスターはシフトレジスターで駆動して毎クロックサイクルごとにレジスターに貯蔵された値を隣接するレジスターにシフトさせるシフト演算を行う。
【0075】
これをより詳しく参照するとまず、第2メモリ301は制御部102の制御信号に基づいて毎クロックサイクルごとに第2メモリ301に貯蔵された初期値を順次に出力する。
【0076】
つまり、第2メモリ301は第1クロックサイクルでは初期値のうちのHを出力し、その後、毎クロックサイクルごとにH、H、…、H順に初期値を順次に出力する。このように出力された初期値は第6マルチプレクサー317及び第2加算器314を経てaレジスター302に出力される。そして、直前にa〜gレジスターに貯蔵された値はb〜hレジスターにそれぞれ1段階ずつシフトされて貯蔵される。
【0077】
したがって、第1クロックサイクルではaレジスター302にHが貯蔵され、残りレジスターには0が貯蔵され、第2クロックaレジスター302にHが貯蔵され、bレジスター303にはHが貯蔵される。そして、最終的に8クロックサイクルが経過すると、各レジスターにはa=H、b=H、c=H、…、h=Hのように初期値がロードされる。
【0078】
前述のように各レジスターに初期値をロードする過程が終わると、メッセージ圧縮部104は64ラウンドにわたってメッセージスケジュール部103から入力される32ビットの中間データを利用して数式3のようにメッセージ圧縮演算を行う(S202)。ここで、各ラウンド別メッセージ圧縮演算は全7段階にわたって行われ、第2加算器314を利用してhレジスター309に貯蔵された初期値(a)、第3演算関数演算部310の出力値(Ch(e、f、g))、ラウンド定数(K)、第4演算関数演算部311の出力値
【数9】

、当該ラウンドのメッセージスケジュール演算による中間データ(W)、dレジスター305に貯蔵された初期値(d)、第5演算関数演算部312の出力値(Maj(a、b、c))及び第6演算関数演算部313の出力値
【数10】

を順次に合算する。
【0079】
そして、合算結果をhレジスター309、dレジスター305及びaレジスター302のうちの1つに選択的に貯蔵する。一方、メッセージ圧縮演算の各段階別に1クロックサイクルずつかかるので、各ラウンド別メッセージ圧縮演算のために全7クロックサイクルがかかる。
【0080】
第1段階で、第2加算器314はhレジスター309に貯蔵された初期値(h)と第3演算関数演算部310の出力値(Ch(e、f、g))を合算して出力し、この合算値(h+Ch(e、f、g))はhレジスター309に貯蔵される。このために、第6マルチプレクサー317は入力される値の中で第3演算関数演算部310の出力値(Ch(e、f、g))を選択して第2加算器314に出力し、第5マルチプレクサー316は入力される値の中で第2加算器314から出力される値をhレジスター309に出力する。
【0081】
第2段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値(h+Ch(e、f、g))とラウンド定数(K)を合算して出力し、この合算値(h+Ch(e、f、g)+Kj)はhレジスター309に貯蔵される。ここで、ラウンド定数(K)各ラウンドに対応する定数で、第2メモリ301にルックアップテーブル形態で貯蔵される。したがって、第2メモリ301は制御部102の制御信号に基づいて当該ラウンドに対応するラウンド定数(K)を出力し、第6マルチプレクサー317は入力される値のうちの第2メモリ301から出力される値(K)を選択して第2加算器314に出力する。したがって第2加算器314はhレジスター309に貯蔵された値(h+Ch(e、f、g))と第6マルチプレクサー317から出力される値(K)を合算して出力し、この値(h+Ch(e、f、g)+K)は第5マルチプレクサー316を通じてhレジスター309に貯蔵される。
【0082】
第3段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値(h+Ch(e、f、g)+K)と第4演算関数演算部311から出力される値
【数11】

を合算して出力し、この合算値
【数12】

はhレジスター309に貯蔵される。これのために、第6マルチプレクサー317は入力される値のうちの第4演算関数演算部311から出力される値
【数13】

を選択して第2加算器314に出力し、第2加算器314はhレジスター309に貯蔵された値(h+Ch(e、f、g)+K)と第6マルチプレクサー317から出力される値
【数14】

を合算して出力する。そして、第2加算器314で合算された値
【数15】

は第5マルチプレクサー316を通じてhレジスター309に貯蔵される。
【0083】
第4段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値
【数16】

とメッセージスケジュール部103から入力される中間データ(W)を合算して出力し、この合算値
【数17】

はhレジスター309に貯蔵される。このために、第6マルチプレクサー317は入力される値のうちのメッセージスケジュール部103から入力される中間データ(W)を選択して第2加算器314に出力し、第2加算器314はhレジスター309に貯蔵された値
【数18】

と第6マルチプレクサー317から出力される値(W)を合算して出力する。そして、第2加算器314で合算された値
【数19】

は第5マルチプレクサー316を通じてhレジスター309に貯蔵される。
【0084】
ここで、第2加算器314がメッセージ圧縮演算の第4段階、つまり、第4クロックサイクルにメッセージスケジュール部103から出力される中間データ(W)を合算したことは、メッセージスケジュール部103で中間データ(W)を計算するために全4クロックサイクルを所要する時間的特性を考慮したことである。メッセージ圧縮部104で各ラウンド別メッセージ圧縮演算を行うのに全7クロックサイクルが必要であるので、メッセージスケジュール部103で中間データ(W)を計算するのに十分な時間が保障される。したがって、本発明の実施例ではメッセージスケジュール部103で中間データ(W)を計算するために別途のクロックがさらに必要でなく、メッセージスケジュール演算とメッセージ圧縮演算を同時に行うことが可能である。
【0085】
一方、本発明の実施例ではメッセージ圧縮演算を行う時に各ラウンド別に第4段階でメッセージスケジュール部103から出力される中間データを合算するか、本発明では第4段階の後の段階でメッセージスケジュール部103から出力される中間データを合算することもまた可能である。
【0086】
第5段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値
【数20】

とdレジスター305に貯蔵された初期値(d)を合算して出力し、この合算値
【数21】

はdレジスター305に貯蔵される。このために、第6マルチプレクサー317は入力される値のうちのdレジスター305から入力される値(d)を選択して第2加算器314に出力し、第2加算器314はhレジスター309に貯蔵された値
【数22】

と第6マルチプレクサー317から出力される値(d)を合算して出力する。そして、第2加算器314で合算された値
【数23】

は第4マルチプレクサー315を通じてdレジスター305に貯蔵される。
【0087】
一方、第5段階でhレジスター309は第2加算器314から出力される値を貯蔵しない。つまり、第5段階が行われた後、hレジスター309には直前段階で貯蔵された値
【数24】

が維持され、dレジスター305には第2加算器314の出力値
【数25】

が貯蔵される。これは、数式3のe=d+T1を行うためのもので、dレジスター305に貯蔵された値はメッセージ圧縮演算の最後段階でeレジスター306にシフトされる。
【0088】
第6段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値
【数26】

と第5演算関数演算部312から出力される値(Maj(a、b、c))を合算して出力し、この合算値
【数27】

はhレジスター309に貯蔵される。このために、第6マルチプレクサー317は入力される値のうちの第5演算関数演算部312から出力される値(Maj(a、b、c))を選択して第2加算器314に出力し、第2加算器314はhレジスター309に貯蔵された値
【数28】

と第6マルチプレクサー317から出力される値(Maj(a、b、c))を合算して出力する。そして、第2加算器314で合算された値
【数29】

は第5マルチプレクサー316を通じてhレジスター309に貯蔵される。
【0089】
第7段階で、第2加算器314は直前段階でhレジスター309に貯蔵された値
【数30】

と第6演算関数演算部313から出力される値
【数31】

を合算して出力し、この合算値
【数32】

はaレジスター302に貯蔵される。このために、第6マルチプレクサー317は入力される値のうちの第6演算関数演算部313から出力される値
【数33】

を選択して第2加算器314に出力し、第2加算器314はhレジスター309に貯蔵された値
【数34】

と第6マルチプレクサー317から出力される値
【数35】

を合算して出力する。そして、第2加算器314で合算された値
【数36】

はaレジスター302に貯蔵される。ここで、第2加算器314から出力された値
【数37】

がaレジスター302に貯蔵されると同時に、各レジスターに前に貯蔵された値が1つずつシフトされて貯蔵される。つまり、aレジスター302に貯蔵された値はbレジスター303に、bレジスター303に貯蔵された値はcレジスター304にシフトされる。また、第4マルチプレクサー315を通じてcレジスター304に貯蔵された値はdレジスター305にシフトされ、第5段階でdレジスター305に貯蔵された値
【数38】

はeレジスター306にシフトされる。また、eレジスター306に貯蔵された値はfレジスター307にシフトされ、fレジスター307に貯蔵された値はgレジスター308にシフトされ、gレジスター308に貯蔵された値は第5マルチプレクサー316を通じてhレジスター309にシフトされる。
【0090】
前述した7段階のメッセージ圧縮演算は64ラウンドにわたって繰り返され、64ラウンドのメッセージ圧縮演算が完了すると各レジスターにはメッセージ圧縮演算による中間値が貯蔵される。
【0091】
このように、64ラウンドにわたってすべてのメッセージ圧縮演算が完了されると、SHA-256演算の最終結果データを得るためにメッセージ圧縮部104は次の数式4のように初期値を更新し、更新された初期値を各レジスターにロードする(S203)。
[数式4]
【数39】

【0092】
このような初期値更新過程は初期に8クロックサイクルにかけて各レジスターに初期値をロードする過程と同一に行われる。ただし、初期値ロードの時には各レジスターらが全て‘0'に初期化された状態であったが、初期値更新の時には各レジスターに64ラウンドにかけたメッセージ圧縮演算の結果である中間値が貯蔵されている差がある。
【0093】
初期値更新過程をより詳しく参照するとまず、第2メモリ301は制御部102の制御信号に基づいて毎クロックサイクルごとに第2メモリ301に貯蔵された初期値を順次に出力する。つまり、第2メモリ301は第1クロックサイクルでは初期値のうちのHを出力し、その後、毎クロックサイクルごとにH、H、…、H順に初期値を順次に出力する。また、第4マルチプレクサー315は入力される値の中で第2メモリ301から出力される値を第2加算器314に出力し、第2加算器314は毎クロックサイクルごとに第2メモリ301から出力される値とhレジスター309に貯蔵された値を合算してaレジスター302に出力する。ここで、第2加算器314から出力された値がaレジスター302に貯蔵されると同時に、直前にa〜gレジスターに貯蔵された値はb〜hレジスターにそれぞれ1段階ずつシフトされて貯蔵される。
【0094】
例えば、第1クロックサイクルには第2メモリ301から出力される初期値(H)とhレジスター309に貯蔵された中間値(h)が合算され、この合算された値(h+H)はaレジスター302に貯蔵される。また、直前にa〜gレジスターに貯蔵された中間データはb〜hレジスターにそれぞれ一段階ずつシフトされて貯蔵される。
【0095】
また、第2クロックサイクルには第2メモリ301から出力される初期値(H)と直前クロックサイクルでhレジスターに貯蔵された中間値(e)が合算される。ここで、第1クロックサイクルでhレジスター309でeレジスター306に貯蔵された中間値がシフトされて貯蔵されたので、第2クロックサイクルで第2加算器314はeレジスター306に貯蔵された中間値と初期値(H)を合算した値(e+H)をaレジスター302に出力する。したがって、第2加算器314から出力された値(e+H)はaレジスター302に貯蔵され、同時に第1クロックサイクルでa〜gレジスターに貯蔵された値はb〜hレジスターにそれぞれ1段階ずつシフトされて貯蔵される。その結果、第2クロックサイクルの後にはaレジスター302に(e+H)が貯蔵され、bレジスター303には(h+H)が貯蔵され、残りc〜hレジスターには直前クロックサイクルでa〜fレジスターに貯蔵された値がシフトされて貯蔵される。
【0096】
前述した方法で8クロックサイクルの間の初期値更新過程が完了されると、各レジスターに貯蔵された値は次の数式5のようになる。
[数式5]
a = a + H0, b = b + H1, c = c + H2, …, h = h + H7
【0097】
このように初期値更新が完了されると、各レジスターに貯蔵された値がSHA-256演算を行った最終結果データとなり、制御部102は各レジスターに貯蔵された値で第2メモリ301に貯蔵された初期値を更新する。そして、SHA-256演算を1回のみ行う時には第2メモリ301に貯蔵された更新された初期値(H、H、…、H)をSHA-256演算の最終結果データとしてシステムバスを通じて出力する。一方、SHA-256演算を何回にかけて反復して行う場合、更新された初期値は次回のメッセージ圧縮演算のための初期値として使用される。
【0098】
したがって、メッセージ圧縮部104はSHA-256演算を行うべきメッセージの長さが512ビットより長くて前述したメッセージスケジュール演算及びメッセージ圧縮演算を複数回行わなければならない場合、第2メッセージ圧縮演算からは既に各レジスターに初期値(H、H、…、H)がロードされた状態であるので、初期値ロード過程を省略することが可能である。
【0099】
一方、前述したメッセージ圧縮演算を行う時、第4マルチプレクサー315、第5マルチプレクサー316及び第6マルチプレクサー317から入力される値のうちの1つを選択するための制御信号と各レジスターにデータを貯蔵するための制御信号(write信号)は制御部102から出力され、制御部102は前述した表2の順にメッセージ圧縮演算が行われるように各クロックサイクル別に各マルチプレクサー及びレジスターを制御する。
【0100】
前述のように、本発明の実施例ではメッセージ圧縮部104を実現するために加算器を1つのみ使用する。したがって、メッセージ圧縮演算を行うためのメッセージ圧縮部104の回路面積及び消費電力を減らすことが可能であり、モバイルフォンのように低電力エンベデッドシステムに適用することが可能な効果がある。
【0101】
以上で説明した本発明の実施例は装置及び方法によってのみ実現されることではなく、本発明の実施例の構成に対応する機能を実現するプログラムまたはそのプログラムが記録された記録媒体を通じて実現されることもでき、このような実現は前記で説明した実施例の記載から本発明が属する技術分野における専門家であれば容易に実現することができる。
【0102】
以上、本発明の実施例について詳細に説明したが、本発明の権利範囲はこれに限定されず、請求範囲で定義している本発明の基本概念を利用した当業者の多用な変形及び改良形態もまた本発明の権利範囲に属する。
【符号の説明】
【0103】
100 暗号装置
101 インターフェース部
102 制御部
103 メッセージスケジュール部
104 メッセージ圧縮部
201 第1メモリ
202 第1演算関数演算部
203 第2演算関数演算部
204 第1加算器
205 レジスター
206 第1マルチプレクサー
207 第2マルチプレクサー
208 第3マルチプレクサー
301 第2メモリ
302〜309 レジスター
310 第3演算関数演算部
311 第4演算関数演算部
312 第5演算関数演算部
313 第6演算関数演算部
314 第2加算器
315 第4マルチプレクサー
316 第5マルチプレクサー
317 第6マルチプレクサー

【特許請求の範囲】
【請求項1】
SHAアルゴリズム基盤の暗号装置において、
1つの加算器を含み、第1ラウンド前には入力される演算データのうちの一部データを各ラウンド別中間データとして出力し、前記第1ラウンドからは前記加算器を利用して第1中間データに対してSHAアルゴリズムの第1演算関数を行った結果値、第2中間データに対して前記SHAアルゴリズムの第2演算関数を行った結果値、第3中間データ及び第4中間データを複数の段階にかけて既に設定された順に合算して各ラウンド別中間データとして出力するメッセージスケジュール部;及び
前記メッセージスケジュール部で各ラウンド別に出力される中間データを利用したメッセージ圧縮演算を行って、ハッシュ演算の最終結果データを生成するメッセージ圧縮部
を含む暗号装置。
【請求項2】
前記メッセージスケジュール部及び前記メッセージ圧縮部の演算遂行順と結果貯蔵過程を制御するための制御信号を出力する制御部をさらに含むことを特徴とする、請求項1に記載の暗号装置。
【請求項3】
前記メッセージスケジュール部は、
前記入力されるデータの大きさと同一な大きさを有し、前記制御部の制御信号に基づいて前記第1ラウンド前には前記入力される演算データを各ラウンド別中間データとして貯蔵し、前記第1ラウンドからは前記メッセージスケジュール部で各ラウンド別に出力される中間データを貯蔵するメモリ;及び
前記制御部の制御信号に基づいて前記第1ラウンド前には前記入力される演算データを選択して前記メモリに出力し、前記第1ラウンドからは前記メッセージスケジュール部で各ラウンド別に出力される中間データを選択して前記メモリに出力する第1マルチプレクサーをさらに含むことを特徴とする、請求項2に記載の暗号装置。
【請求項4】
前記メモリは、
前記制御部の制御信号に基づいて前記第1ラウンド前には前記入力される演算データのうちの一部データを各ラウンド別中間データとして出力し、前記第1ラウンドからは各段階別に前記第1中間データ、前記第2中間データ、前記第3中間データ及び前記第4中間データのうちの1つを出力することを特徴とする、請求項3に記載の暗号装置。
【請求項5】
前記メッセージスケジュール部は、
前記メモリから出力される前記第1中間データに対して前記第1演算関数を行った結果値を出力する第1演算関数演算部;及び
前記メモリから出力される前記第2中間データに対して前記第2演算関数を行った結果値を出力する第2演算関数演算部をさらに含むことを特徴とする、請求項4に記載の暗号装置。
【請求項6】
前記メッセージスケジュール部は、
前記制御部の制御信号に基づいて前記第1ラウンドからは各段階別に前記第1演算関数演算部の出力値、前記第2演算関数演算部の出力値及び前記メモリから出力される前記第3中間データのうちの1つを選択して前記加算器に出力する第2マルチプレクサーをさらに含むことを特徴とする、請求項5に記載の暗号装置。
【請求項7】
前記メッセージスケジュール部は、
前記制御部の制御信号に基づいて前記第1ラウンド前には前記メモリから出力される各ラウンド別中間データを選択して出力し、前記第1ラウンドからは各段階別に前記メモリから出力される前記第4中間データ及び前記加算器の出力値のうちの1つを選択して出力する第3マルチプレクサー;及び
前記第3マルチプレクサーの出力値を貯蔵し、貯蔵された値を前記メモリ及び前記加算器に出力するレジスターをさらに含むことを特徴とする、請求項6に記載の暗号装置。
【請求項8】
前記SHAアルゴリズムはSHA-256アルゴリズムであることを特徴とする、請求項1乃至7のいずれかに記載の暗号装置。
【請求項9】
SHAアルゴリズム基盤の暗号装置において、
入力される演算データを利用して各ラウンド別中間データを生成して出力するメッセージスケジュール部;及び
1つの加算器及び複数のレジスターを含み、ハッシュ演算が開始されると前記複数のレジスターに複数の初期値をロードし、初期値ロードが完了するとメッセージ圧縮演算の各ラウンド別に前記複数のレジスターに貯蔵された値、前記複数のレジスターに貯蔵された値を利用してハッシュ演算の演算関数をそれぞれ行った結果値、前記中間データ及びラウンド定数を複数の段階にかけて既に設定された順に前記加算器を利用して合算し、前記加算器で合算した値を利用して前記複数のレジスターに貯蔵された値を更新し、前記複数のラウンドにかけて行われるメッセージ圧縮演算が完了すると、前記複数の初期値と前記複数のレジスターに貯蔵された値を合算して最終結果データを生成する圧縮部を含むことを特徴とする暗号装置。
【請求項10】
前記メッセージスケジュール部及び前記メッセージ圧縮部の演算遂行順と結果貯蔵過程を制御するための制御信号を出力する制御部をさらに含むことを特徴とする、請求項9に記載の暗号装置。
【請求項11】
前記メッセージ圧縮部は、
前記複数のレジスターのうちのeレジスター、fレジスター及びgレジスターに貯蔵された値を利用して前記演算関数のうちの第1演算関数を行った結果値を出力する第1演算関数演算部;
前記eレジスターに貯蔵された値を利用して前記演算関数のうちの第2演算関数を行った結果値を出力する第2演算関数演算部;
前記複数のレジスターのうちのaレジスター、bレジスター及びcレジスターに貯蔵された値を利用して前記演算関数のうちの第3演算関数を行った結果値を出力する第3演算関数演算部;及び
前記aレジスターに貯蔵された値を利用して前記演算関数のうちの第4演算関数を行った結果値を出力する第4演算関数演算部を含むことを特徴とする、請求項9に記載の暗号装置。
【請求項12】
前記メッセージ圧縮部は、
前記複数の初期値と前記ラウンド定数を貯蔵し、前記制御部の制御信号に基づいて前記複数の初期値を前記複数のレジスターにロードする間には前記複数の初期値を順次に出力し、前記メッセージ圧縮演算の各ラウンド別に対応する前記ラウンド定数を出力し、前記複数のラウンドにかけて行われるメッセージ圧縮演算が完了すると前記複数の初期値を順次に出力するメモリをさらに含むことを特徴とする、請求項11に記載の暗号装置。
【請求項13】
前記メッセージ圧縮部は、
前記複数の初期値を前記複数のレジスターにロードする間には前記メモリから出力される初期値を選択して出力し、前記メッセージ圧縮演算の各ラウンド別に前記第1演算関数演算部の出力値、前記第2演算関数演算部の出力値、前記第3演算関数演算部の出力値、前記複数のレジスターのうちのdレジスターに貯蔵された値、前記中間データ及び前記ラウンド定数のうちの1つを各段階別に選択して出力し、前記複数のラウンドにかけて行われるメッセージ圧縮演算が完了すると前記メモリから出力される初期値を選択して出力するマルチプレクサーをさらに含み、
前記加算器は、前記複数のレジスターのうちのhレジスターに貯蔵された値と前記マルチプレクサーの出力値を合算して前記aレジスター、前記dレジスター及び前記hレジスターに出力することを特徴とする、請求項12に記載の暗号装置。
【請求項14】
前記複数のレジスターはシフトレジスターであることを特徴とする、請求項9乃至13のうちのいずれかに記載の暗号装置。
【請求項15】
SHAアルゴリズム基盤の暗号装置のメッセージスケジュール演算方法において
演算データが入力されると、前記演算データを複数のブロックに分類して前記演算データと同一な大きさのメモリに貯蔵する段階;
第1ラウンド前には前記メモリに貯蔵された複数のブロックを前記第1ラウンド前の各ラウンド別中間データとして順次に出力する段階;及び
前記第1ラウンドからは各ラウンド別に前の第1ラウンドで出力された第1中間データに対してSHAアルゴリズムの第1演算関数を行った結果値、前の第2ラウンドから出力された第2中間データに対して前記SHAアルゴリズムの第2演算関数を行った結果値、前の第3ラウンド及び第4ラウンドから出力された第3中間データ及び第4中間データを1つの加算器を利用して複数の段階にかけて既に設定された順に合算して前記第1ラウンドからの各ラウンド別中間データを出力する段階を含むことを特徴とする方法。
【請求項16】
前記第1ラウンドからの各ラウンド別中間データは前記メモリに順次に貯蔵され、前記第1中間データ、前記第2中間データ、前記第3中間データ及び前記第4中間データは前記メモリから出力されることを特徴とする、請求項15に記載の方法。
【請求項17】
前記第1ラウンドからの各ラウンド別中間データを出力する段階は、
前記加算器によって前記第3中間データ及び前記第1演算関数を行った結果値を合算した第1結果値を出力する段階;
前記加算器によって前記第1結果値に前記第4中間データを合算した第2結果値を出力する段階;及び
前記加算器によって前記第2結果値に前記第2演算関数を行った結果値を合算した第3結果値を出力する段階を含み、
前記第3結果値が対応するラウンドの中間データであることを特徴とする、請求項16に記載の方法。
【請求項18】
SHAアルゴリズム基盤の暗号装置のメッセージスケジュール演算によって生成された各ラウンド別中間データを利用して第1演算関数、第2演算関数、第3演算関数及び第4演算関数を含むメッセージ圧縮演算を行う方法において、
複数の初期値を第1レジスター、第2レジスター及び第3レジスターを含む複数のレジスターにロードする段階;
前記第1レジスターに貯蔵された値、前記複数のレジスターのうちの一部レジスターを利用して前記第1演算関数、第2演算関数、第3演算関数及び第4演算関数をそれぞれ行った結果値、対応するラウンドの中間データ及びラウンド定数を1つの加算器を利用して複数の段階にかけて既に設定された順に合算し、各段階別に前記加算器を利用して合算した結果値を前記第1レジスター、前記第2レジスター及び前記第3レジスターのうちの1つに選択的に貯蔵する段階;
前記複数のレジスターのうちの前記第3レジスターを除いた残りレジスターに貯蔵された値を隣接するレジスターに1段階ずつシフトして貯蔵する段階;
前記選択的に貯蔵する段階及び前記シフトして貯蔵する段階を複数のラウンドにかけて反復的に行う段階;及び
前記複数のレジスターに貯蔵された値と前記複数の初期値を合算してハッシュ演算の最終結果データを出力する段階を含むことを特徴とする方法。
【請求項19】
前記選択的に貯蔵する段階は、
前記第1レジスターに貯蔵された値、前記第1演算関数及び第2演算関数をそれぞれ行った結果値、対応する中間データ及びラウンド定数を1つの加算器を利用して複数の段階にかけて既に設定された順に合算した第1結果値を前記第1レジスターに貯蔵する段階;
前記第2レジスターに貯蔵された値と前記第1レジスターに貯蔵された値を前記加算器を利用して合算した第2結果値を前記第2レジスターに貯蔵する段階;
前記第3演算関数を行った結果値に前記第1レジスターに貯蔵された値を前記加算器を利用して合算した第3結果値を前記第1レジスターに貯蔵する段階;及び
前記第4演算関数を行った結果値に前記第1レジスターに貯蔵された値を前記加算器を利用して合算した第4結果値を前記第3レジスターに貯蔵する段階を含むことを特徴とする、請求項18に記載の方法。
【請求項20】
前記ロードする段階は、
前記複数の初期値のうちの1つを前記第3レジスターに貯蔵し、前記複数のレジスターのうちの前記第3レジスターを除いた残りレジスターに貯蔵された値を隣接するレジスターに1段階ずつシフトして貯蔵する過程を前記複数のレジスターの数だけ繰り返して行う段階であることを特徴とする、請求項19に記載の方法。
【請求項21】
前記出力する段階は、
前記複数の初期値のうちの1つと前記第1レジスターに貯蔵された値を前記加算器を利用して合算した値を前記第3レジスターに貯蔵し、前記複数のレジスターのうちの前記第3レジスターを除いた残りレジスターに貯蔵された値を隣接するレジスターに1段階ずつシフトして貯蔵する過程を前記複数のレジスターの数だけ繰り返して行う段階;及び
前記複数のレジスターに貯蔵された値を前記最終結果データとして出力する段階を含むことを特徴とする、請求項19に記載の方法。
【請求項22】
前記複数のレジスターに貯蔵された前記最終結果データは次のメッセージ圧縮演算の初期値として使用されることを特徴とする、請求項21に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2010−107947(P2010−107947A)
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願番号】特願2009−148791(P2009−148791)
【出願日】平成21年6月23日(2009.6.23)
【出願人】(596180076)韓國電子通信研究院 (733)
【氏名又は名称原語表記】Electronics and Telecommunications Research Institute
【住所又は居所原語表記】161 Kajong−dong, Yusong−gu, Taejon korea
【Fターム(参考)】