(57)【要約】【課題】  ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、従来の方式より処理速度が高速であり、従来の方式よりも少ない記憶容量で処理可能なデータ変換装置を提供する。【解決手段】  ユーザから入力されたパスワード等のユーザ識別子から、ＨＭＡＣ・ハッシュ関数等の変換関数を通して、ＭＡＣ認証用或いは鍵データに類推するデータを出力する変換装置において、ユーザ識別子の入力長に応じて、上記変換関数の構成の一部を除去する。【選択図】  図１
2008102839.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、
ユーザ識別子の長さに応じて、変換処理を動的に切り替える変換処理動的切り替え手段と、上記変換処理動的切り替え手段によって、変換処理の一部を削減する変換処理部分削減手段を備えたことを特徴とするデータ変換装置。
【請求項２】
上記ユーザ識別子は、パスワードのような上記ユーザにバインドした情報であることを特徴とする、
請求項１に記載のデータ変換装置。
【請求項３】
上記ユーザ識別子は、可変長であることを特徴とする、
請求項１に記載のデータ変換装置。
【請求項４】
上記変換処理は、HMACやハッシュ関数のような、ある決められたプロトコルに基づいた変換処理であることを特徴とする、
請求項１に記載のデータ変換装置。
【請求項５】
上記ユーザ認証用データは、鍵データであることを特徴とする、
請求項１に記載のデータ変換装置。
【請求項６】
上記変換処理動的切り替え手段は、変換処理を行う際に実行されることを特徴とする
請求項１に記載のデータ変換装置。
【請求項７】
ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、
ユーザ識別子の長さに応じて、変換処理を静的に切り替える変換処理静的切り替え手段と、
上記変換処理静的切り替え手段によって、変換処理の一部を削減する変換処理部分削減手段を備えたことを特徴とするデータ変換装置。
【請求項８】
上記ユーザ識別子は、パスワードのような上記ユーザにバインドした情報であることを特徴とする、
請求項７に記載のデータ変換装置。
【請求項９】
上記ユーザ識別子は、固定長であることを特徴とする、
請求項７に記載のデータ変換装置。
【請求項１０】
上記変換処理は、HMACやハッシュ関数のような、ある決められたプロトコルに基づいた変換処理であることを特徴とする、
請求項７に記載のデータ変換装置。
【請求項１１】
上記ユーザ認証用データは、鍵データであることを特徴とする、
請求項７に記載のデータ変換装置。
【請求項１２】
上記変換処理静的切り替え手段は、変換処理を行う前に実行されることを特徴とする、
請求項７に記載のデータ変換装置。
【請求項１３】
ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、
ユーザ識別子の長さに応じて、変換処理を静的に切り替える変換処理静的切り替え手段と、ユーザ識別子の長さに応じて、変化処理を動的に切り替える変換処理動的切り替え手段と、
上記変換処理静的切り替え手段と上記変換処理動的切り替え手段の組み合わせによって、変換処理の一部を削減する変換処理部分削減手段を備えたことを特徴とするデータ変換装置。
【請求項１４】
上記ユーザ識別子は、最大長が制限されていることを特徴とする、
請求項１３に記載のデータ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システム、情報処理装置及びそれらに用いられるコンピュータ読み取り可能な記憶媒体、プログラムに関するものである。
【背景技術】
【０００２】
現代社会において、正規の利用者として予め登録した者（以下、登録者）を認証する技術は社会の様々な局面で用いられている。例えば、通信ネットワークシステム上の情報提供サービスにユーザがアクセスするとき、また、オフィスビルの入口等に設けられる電子錠を解錠するとき等の状況で認証技術が用いられている。
【０００３】
こうした認証技術として古くから用いられているシステムとして、登録者に固定したパスワードを発行し、認証の際にシステムの利用者に対してパスワードの入力を促し、これを登録済みのパスワードと比較して、一致する場合に限り利用者にシステムの利用を認めるものがある。以下、このように原則として固定したパスワードを用いて認証を行う技術を固定パスワード方式と記す。固定パスワード方式は登録者を簡便に認証できる方式だが、覚え易い文字列をパスワードに使用したり、人目に付き易いところにパスワードをメモしがちで容易に他人に見破られたり、通信中に盗聴されたりする危険性が高い。また、パスワード送信時に暗号化しても毎回同じパスワードであればそれをそのまま盗用し、再利用すること（リプレイ攻撃）で「なりすまし」が可能である。さらに、サーバ側のパスワードファイル（通常、利用者のパスワードをキーとして暗号化された保存されている）が辞書攻撃によって破られる可能性もある。
【０００４】
これらの脅威に対抗するには、毎回パスワードを変更するなどの工夫が必要になる。そのためにパスワード方式おいては、例えば、ワンタイムパスワード方式やチャレンジレスポンス方式などのような一方向性関数や乱数を利用した、高度な一回限りのパスワードを使う方式が考案されている。以下、このように高度な一回限りのパスワードを用いて認証を行う技術を使い捨てパスワード方式と記す。以下に、使い捨てパスワード方式に関する代表技術について述べる。
【０００５】
・ワンタイムパスワード方式
文字どおり一回限りのパスワード認証方式である。有名なものとしてBellcore社が提唱したS/Key方式（RFC1760 The S/KEY One-Time Password System）がある。S/Keyの処理について以下に記載する。
【０００６】
<S/Key方式>  C:クライアント S:認証サーバとする
1. CとSは同じ一方向性関数Hを用意する。
【０００７】
2. SはHの繰り返し回数N(sequence)と秘密ではない乱数R(seed)をCに提示する。
【０００８】
3. Cは秘密のパスワードP(password)を用意する。
【０００９】
4. Cは、M=R|P(|は連結を表す)を用いて、N回Hの処理を行う。処理結果をXNとする。(ex. N=2の場合、X2=H(H(M))となる。)
5. XNをSに送付する。SはXNを保持する。
【００１０】
6. CがSへログインする際、SはN-1とRをCに提示する。
【００１１】
7. Cは、M=R||P(||は連結を表す)を用いて、N-1回Hの処理を行う。処理結果をXN-1とする。
【００１２】
8. XN-1をSに送付する。
【００１３】
9. SはH(XN-1)を計算し、H(XN-1)と保持していたXNが等しい値であった場合は、Cのログインを許可する。ログインを許可した場合、XNを破棄し、XN-1を保持する。
【００１４】
10. 再度ログインする際は、6〜9の処理を繰り返す。この際、繰り返し回数は、前回の繰り返し回数から-1したものが用いられる。
【００１５】
ここで、上記一方向性関数とは、H(X)=Yとした時、Yから元のXを求めることが困難である、H(X')=YとなるX'を求めることは困難である等の性質を持ったものである。代表的なものとしては、ハッシュ関数(ex. MD4、MD5、SHA1)が挙げられる。
【００１６】
上記記載にあるとおり、認証毎に送付されるXの値が異なるため、Xはワンタイムパスワードと呼ばれる。
【００１７】
・チャレンジレスポンス方式
point-to-pointにおける認証方式である。有名なものとしてCHAP(Challenge Handshake Autentication Protocol)方式（RFC1994 PPP Challenge Handshake Authentication Protocol (CHAP)）がある。CHAPの処理について以下に記載する。
【００１８】
<CHAP方式>
1. 認証者は、乱数(チャレンジ)を認証要求者に送付する。
【００１９】
2. 認証要求者は、チャレンジとパスワードのハッシュ値を上記ハッシュ関数を用いて計算し、認証者に送付する。（レスポンス）
3. 認証者は、予め登録してあった認証要求者のパスワードとチャレンジからハッシュ値を計算し、レスポンスと比較する。同じ値であった場合は認証する。
【００２０】
また、パスワードから暗号通信用の鍵を生成するようなプロトコルも幾つか提案されている。代表的なものにRSA Security社が提唱したPKCS＃5(RFC2898 PKCS ＃5: Password-Based Cryptography Specification Version 2.0)がある。PKCS＃5におけるパスワードから暗号鍵を生成する処理の概要を図を用いて簡単に説明する。
【００２１】
図２は、前述したPKCS＃5おけるパスワードから暗号鍵を生成する処理の一種であるPBKDF2の処理過程を示す。図２で示されている通り、Password２００(以後Pとする)、Salt２０１(以後Sとする)、Count２０２(以後Cとする)の３つを入力とし、Function２０３(以後Fとする)を通すことにより、Derived Key２０４(以後Dkとする)を算出する。ここでSは秘密ではない乱数、Cは後述するPRFの繰り返し回数、Dkは暗号鍵を指す。以下、Dkを20byteとする。図３は、Fの詳細な処理内容を示す。図３に示されている通り、F３０３は、P３００とS３０１を初期入力とし、PRF３０５を、C３０２の回数分繰り返し呼ぶことによって、U_i(1<= i<= C)を算出する。最後に各々のU_iをxor(排他的論理和)することによってDk３０４を算出する。図３の処理内容を式で表すと以下となる。
【００２２】
U_1 = PRF(P、 S||INT(1))
U_2 = PRF(P、 U_1)
・・・
U_C =PRF(P、 U_C-1)
Dk = U_1 xor U_2 xor ・・・xor U_C
式中の||は結合、INT(i)はiを4octet(bytes)表記に直したものを指す。上記PRFにはHMACSHA1が用いられるのが通例である。ここで、HMACとはMAC(Message Authentication Code) と呼ばれる共通鍵を用いてデータの完全性の検証とデータの発信者の確認を行う手法の、ハッシュ関数を用いるものを指す。そして、HMACSHA1では名前の通り、ハッシュ関数としてSHA1を用いる。
【００２３】
PKCS＃5を用いたプロトコルの一つとして、無線LANにおけるセキュリティの規格の一つであるWPAが挙げられる。WPAのユーザ認証の一つとして、無線クライアントと無線アクセスポイントでシェアしたパスワードを用いるWPA-PSKと呼ばれる認証方式があり、PKCS＃5は上記認証方式において用いられる。
【００２４】
従来例としては、例えば特許文献１と特許文献２と特許文献３をあげることが出来る。
【特許文献１】特開平10-260903号公報
【特許文献２】特開2005-244727号公報
【特許文献３】特開平10-247905号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
前述した通り、ユーザ認証や鍵生成のフェーズにおいて、パスワードは頻繁に用いられている。パスワードの性質として、ユーザフレンドリーなものが選ばれる傾向にあるというのは既知の事実である。また、人間の記憶力等を加味すると、パスワードは、一般的にそれほど長くないものが選ばれる傾向にある。上記パスワードの性質を考えた場合、 ユーザ認証や鍵生成のフェーズの処理において、本来不必要である処理がハッシュ関数、及びHMACのプロトコルの都合上発生する可能性がある。以下、PKCS＃5を例にとって説明する。
【００２６】
図４は、上記PRF４０４(HMACSHA1ベース)の１Count分の処理内容を示したものである。P４０１を3文字(3bytes)のASCII文字ABCと仮定する。P４０１は36(16進表記)を64bytesになるよう繰り返した値0x3636・・36、もしくは同様に5c(16進表記)を繰り返した値0x5c5c・・5c、とxorすることにより、64bytesのデータM1及びM1'に拡張される。また、U_i４０２(20bytes)(初回を除く)及び2回のSHA1処理の出力値の前者(20bytes)は、Padding処理によって64bytesのデータM2及びM2'に拡張される。上記Padding処理では、1bitの0，224bits(28bytes)の0及びPadding部分を除いたM1+M2(もしくはM1'+M2')の長さ(以後Lenとする)64bits(8bytes)を付加する。
【００２７】
以上の処理を考えた際、上記不必要な処理としては以下のようなものが想定される。
【００２８】
1. パスワードがそれほど長くない場合でも、HMACSHA1及びSHA1の処理の都合上、拡張を余儀なくされる。
【００２９】
2. パスワードの長さによって、Padding処理における1や0の付加bit数、及びLenの値について予め予測できる点が考慮されていない。
【００３０】
3. 1，2に関連して、予め値が予測できる(拡張部分の値やPadding処理における1、0等)点が考慮されていない。(つまりSHA1の処理で不必要な演算コストがかかる。)
以上の不必要な処理の与える影響は、繰り返し回数が多いPKCS＃5の処理等においてはより顕著である。
【００３１】
本発明は上述の問題点に鑑み、ハッシュ関数やHMACのような、ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、従来の方式より処理速度が高速であり、従来の方式よりも少ない記憶容量で処理可能なデータ変換装置、方法、記憶媒体、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３２】
ユーザから入力されたパスワード等のユーザ識別子から、ＨＭＡＣ・ハッシュ関数等の変換関数を通して、ＭＡＣ認証用或いは鍵データに類推するデータを出力する変換装置において、ユーザ識別子の入力長に応じて、上記変換関数の構成の一部を除去することである。
【発明の効果】
【００３３】
以上説明した通り、本発明によって、ユーザによって入力された、ユーザ識別子から、変換処理によってユーザ認証用データを生成するデータ変換装置において、従来の方式より処理速度が高速であり、従来の方式よりも少ない記憶容量で処理可能なデータ変換装置、方法、記憶媒体、及びプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００３４】
以下、図面を参照して、本発明の好適な実施形態を説明する。
【００３５】
（第１の実施例）
図１は本発明における各実施形態を実現する情報処理装置の電気的構成を説明するための図である。なお、本発明の実現にあたって、図１に示される全ての機能を使用することは必須ではない。
【００３６】
情報処理装置１００は、上記図１に示すように、公衆回線等のモデム１１８、表示部としてのモニタ１０２、ＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５、ＨＤ（ハードディスク）１０６、ネットワークのネットワーク接続部１０７、ＣＤ１０８、ＦＤ（フレキシブルディスク）１０９、ＤＶＤ（デジタル・ビデオ・ディスク、またはDigital Versatile Disk）１１０、プリンタ１１５のインターフェース（Ｉ／Ｆ）１１７、及び操作部としてのマウス１１２やキーボード１１３等のインターフェース（Ｉ／Ｆ）１１１が、バス１１６を介して互いに通信可能に接続されて構成されている。
【００３７】
マウス１１２及びキーボード１１３は、情報処理装置１００に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報（操作情報）は、インターフェース１１１を介して、情報処理装置１００内に取り込まれる。
【００３８】
情報処理装置１００での各種情報（文字情報や画像情報等）は、プリンタ１１５により印刷出力できるようになされている。
【００３９】
モニタ１０２は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【００４０】
ＣＰＵ１０３は、情報処理装置１００全体の動作制御を司るものであり、本実施の形態においては制御手段として機能している。
【００４１】
すなわち、ＣＰＵ１０３は、ＨＤ（ハードディスク）１０６等から処理プログラム（ソフトウェアプログラム）を読み出して実行することで、情報処理装置１００全体を制御する。特に、本実施の形態では、ＣＰＵ１０３は、ＨＤ１０６等から、変換処理機能を実現する処理プログラムを読み出して実行することで、後述する情報変換処理を実施する。
【００４２】
ＲＯＭ１０４は、変換処理機能のための処理プログラムや、プログラム内で用いられる各種データ等を記憶する。
【００４３】
ＲＡＭ１０５は、ＣＰＵ１０３での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される。
【００４４】
ＨＤ１０６は、大容量記憶装置の一例としての構成要素であり、各種データ、あるいは各種処理の実行時にＲＡＭ１０５等へ転送される情報変換処理等のための処理プログラム等を保存する。
【００４５】
ＣＤ（ＣＤドライブ）１０８は、外部記憶媒体の一例としてのＣＤ（ＣＤ−Ｒ）に記憶されたデータを読み込み、また、当該ＣＤへデータを書き出す機能を有する。
【００４６】
ＦＤ（フレキシブルディスクドライブ）１０９は、ＣＤ１０８と同様に、外部記憶媒体の一例としてのＦＤ１０９に記憶されたデータを読み出す。また、種々のデータを上記ＦＤ１０９へ書き込む機能を有している。
【００４７】
ＤＶＤ（デジタル・ビデオ・ディスク）１１０は、ＣＤ１０８やＦＤ１０９と同様に、外部記憶媒体の一例としてのＤＶＤ１１０に記憶されたデータを読み出し、また、上記ＤＶＤ１１０へデータを書き込む機能を有している。
【００４８】
なお、ＣＤ１０８、ＦＤ１０９、ＤＶＤ１１０等の外部記憶媒体に対して、例えば、編集用のプログラム或いはプリンタドライバが記憶されている場合には、これらのプログラムをＨＤ１０６へインストールしておき、必要に応じて、ＲＡＭ１０５へ転送するように構成してもよい。
【００４９】
インターフェース（Ｉ／Ｆ）１１１は、マウス１１２或いはキーボード１１３によるユーザからの入力を受け付けるためのものである。
【００５０】
モデム１１８は、通信モデムであり、インターフェース（Ｉ／Ｆ）１１９を介して、例えば、公衆回線等を通じて外部のネットワークに接続される。
【００５１】
ネットワーク接続部１０７は、インターフェース（Ｉ／Ｆ）１１４を介して、外部のネットワークに接続される。
【００５２】
なお本発明は、複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置等）に適用してもよい。
【００５３】
以下、本発明の実施の形態を図面と共に説明する。
【００５４】
図５は本発明におけるHMACSHA1の処理の構成を示す。HMAC-SHA1５０４は、可変長であるP５０１及びtext５０２を入力とし、MAC５０３を出力する。上記P５０１及びtext５０２は可変長であり、長さ情報はHMAC-SHA1５０４への入力時に与えられる。ここで、P５０１の長さをAbytes、text５０２の長さをBbytesと仮定する。（注：説明の都合上、Bbytesは55bytes以下とする。55bytesより大きい場合であれば、図４で示されているM1+M2にM3・・・Mn(n>=3)がSHA1の入力として付加される。今回は、Paddingを付ける最終blockのみを考慮するため、55bytesより大きい場合は、MnをM2に置き換えて考えればよい。）ここで、図４に示されていた従来のHMACSHA1における拡張処理及びPadding処理をSHA1への入力前に行わない。つまり、P５０１には、Abytes分だけ36(16進表記)、もしくは5c(16進表記)がxorされ、M1，M1'(Abytes)が生成される。またtext５０２(Bbytes)及び2回のSHA1処理の出力値の前者(20bytes)は、そのままSHA1への入力とする。なお、拡張処理及びPadding処理に関する考慮は、SHA1への入力データ長情報からSHA1内で補正処理を行う。
【００５５】
図６は、本実施例におけるSHA1の1block処理のフローチャートである。なお、フローチャート内の各用語に関しては、RFC3174 US Secure Hash Algorithm 1 (SHA1)の用語と同様であるので、そちらを参照されたい。フローチャートはRFC3174の6.1 Method1の処理ステップにのっとっている。Ｓ６０１では、H0〜H4が初期化される。初期化内容については、RFC3174の6.1 Method1記載と同様である。Ｓ６０２では、SHA1に入力されたデータの長さ情報から高速化用因子を生成する。例えば、入力データの長さとしてAbytes(A>0)が入力された場合、以下の演算を行う。
【００５６】
R = A%4;
M= A/4-1; (-1<=M<=15)
ここで、/は除算、%は剰余を示す。Ｓ６０３では、W(W0〜W15:各4bytes)が初期化される。ここで、RFC3174の6.1 Method1記載のa(a. Divide M(i) into 16 words W(0)，W(1)，…，W(15)、 where W(0) is the left-most word.)との相違点として、全てのW(W0〜W15)が使用されない点が挙げられる。ここで、前記M1，M1'の場合と、前記M2，M2'の場合で若干処理内容が異なるので、分けて記載する。
【００５７】
<M1，M1'の場合>
例として、前記M1(Abytes)が入力された場合、M1をW0〜WMの4bytesのバッフアに分解する（M=-1の場合を除く）。WMのMは上記Ｓ６０２記載のMを指す。さらに、上記Ｓ６０２記載Rが0でない場合、WM+1を計算する。WM+1は上位からR(1〜3)bytes分、M1で埋められ、残りは0x36(or 0x5c)で、4-Rbytes分埋められる。
【００５８】
<M2，M2'の場合>
例として、前記M2(Bbytes)が入力された場合、M2をW0〜WMの4bytesのバッフアに分解する（M=-1の場合を除く）。WMのMは上記Ｓ６０２記載の演算のAをBに置き換えたときのMを指す。さらに、WM+1を計算する。上記Ｓ６０２記載Rが0でない場合、 WM+1は上位からR(1〜3)bytes分、M2で埋められ、残りは0x80が1byte分、0x00が4-1-Rbytes分埋められる。上記Ｓ６０２記載Rが0の場合、WM+1=0x80000000となる。また、W14及びW15にPaddingデータが付加される。Paddingデータの内容に関しては、RFC3174の4. Message Paddingを参照されたい。ここでは、W14にPaddingデータの上位4bytes、W15にPaddingデータの下位4bytesが付加される。Ｓ６０４では、W16〜W79(各4bytes)が初期化される。一般式は以下で表される。
【００５９】
for(t=16; t<=79; t++)
W(t) = S^1(W(t-3) xor W(t-8) xor W(t-14) xor W(t-16));      …(1)
ここで、S^1は循環左1ビットシフトを指す。ここで、RFC3174の6.1 Method1記載との相違点として、W16〜W31の範囲において、S６０３で計算されなかったWに関しては、上記Ｓ６０３の結果のMの値に応じて、右式の演算から省く点が挙げられる。ここで、前記M1，M1'の場合と、前記M2，M2'の場合で若干処理内容が異なるので、分けて記載する。
【００６０】
<M1，M1'の場合>
例として、上記Ｓ６０３の結果、M=0の場合、W16の式は以下となる。
【００６１】
W(16) = S^1(W(0)xor 0x36363636(or0x5c5c5c5c));              …(2)
従来の式(上記式（１）)では以下となる
W(16) = S^1(W(13) xor W(8) xor W(2) xor W(0));            …(3)
本発明では、S６０３で計算されなかったWに関しては、計算式から省く構成をとる。よって、（３）式のW(13)、W(8)、W(2)は、本発明では省略される。また、式（２）のxor 0x36363636;(or 0x5c5c5c5c)は、前記補正処理に該当する。式（３）から式（２）の構成にする際、省略されたW0〜W15の数が奇数の場合にのみ付加される。また、まれなケースであるが、M=0の時はW17、W18、M=1の場合はW18が0となる。0となったW17、W18の演算についても省くことが可能であることは言うまでもない。
【００６２】
<M2，M2'の場合>
例として、上記Ｓ６０３の結果、M=0の場合、W16の式は以下となる。
【００６３】
W(16) = S^1(W(0));            …(3)
従来の式(上記式（１）)では以下となる。
【００６４】
W(16) = S^1(W(13) xor W(8) xor W(2) xor W(0));            …(4)
上記に示されている通り、M1，M1'の場合(式（３）から式（２）)と同様である。ただし上記補正処理は必要ない。また、W14に関しては、ほとんどのケースで0となるので、0となったW14の演算についても省くことが可能であることは言うまでもない。Ｓ６０５では、A、B、C、D、Eが初期化される。初期化内容については、RFC3174の6.1 Method1記載と同様である。Ｓ６０６では、SHA1の計算処理が実行される。一般式は以下で表される。
【００６５】
for(t=0; t<=79; t++) {
TEMP = S^5(A) + f(t;B、C、D) + E + W(t) + K(t);
E = D; D = C; C=S^30(B); B=A; A=TEMP;
}                …(5)
上記式の記号等の意味はRFC3174と同様であるので、ここでは割愛する。ここで、RFC3174の6.1 Method1記載との相違点として、上記Wtの未計算部分(W1〜W15)において、S６０３で計算されなかったWに関しては、演算から省く点が挙げられる。ここで、前記M1，M1'の場合と、前記M2，M2'の場合で若干処理内容が異なるので、分けて記載する。
【００６６】
<M1，M1'の場合>
t=0〜M(もしくはM+1)までは、一般式（５）と同様である。未計算部分(t=MもしくはM+1からt=15に関しては、一般式（５）のW(t)を0x36363636(or 0x5c5c5c5c)に置き換えて計算する。W16以降は、一般式（５）と同様である。
【００６７】
<M2，M2'の場合>
t=0〜M(もしくはM+1)までは、一般式（５）と同様である。未計算部分(t=MもしくはM+1からt=13に関しては、一般式（５）のW(t)を除外して計算する。W14以降は、一般式（５）と同様である。ただしW14が0の場合は、一般式（５）のW(14)を除外して計算する。
【００６８】
Ｓ６０７では、H0〜H4が更新される。更新内容については、RFC3174の6.1 Method1記載と同様である。
【００６９】
（第２の実施例）
第１の実施例では、HMACSHA1の入力であるP及びtextを可変長とし、長さ情報の入力時にHMACSHA1の処理を動的に変更できる構成をとった。本発明は、P及びtextが固定長とし、データの入力前にHMACSHA1の処理を静的に変更する構成をとることも可能である。
【００７０】
図７は本発明におけるHMACSHA1の処理の構成を示す。HMAC-SHA1７０４は、固定長であるP７０１及びtext７０２を入力とし、MAC７０３を出力する。ここで、P５０１の長さを8bytes、text５０２の長さを20bytesと仮定する。ここで、図４に示されていた従来のHMACSHA1における拡張処理及びPadding処理をSHA1への入力前に行わない。つまり、P５０１には、8bytes分だけ36(16進表記)、もしくは5c(16進表記)がxorされ、M1，M1'(３bytes)が生成される。またtext５０２(20bytes)及び2回のSHA1処理の出力値の前者(20bytes)は、そのままSHA1への入力とする。ここで、上記8bytes及び20bytesのデータ領域については、予め長さが決定しているので、長さ以上の領域を持たないよう、データの入力前に予め決定しておくことが可能となる。
【００７１】
図８は、本実施例におけるSHA1の1block処理のフローチャートである。なお、フローチャート内の各用語に関しては、RFC3174 US Secure Hash Algorithm 1 (SHA1)の用語と同様であるので、そちらを参照されたい。フローチャートはRFC3174の6.1 Method1の処理ステップにのっとっている。Ｓ８０１では、H0〜H4が初期化される。初期化内容については、Ｓ６０１と同様である。Ｓ８０２では、W(W0〜W15:各4bytes)が初期化される。ここで、初期化するWの個数については、データの長さが固定長なので、データの入力前に予め決定しておくことが可能となる。本実施例では、M1，M1'の場合、W0、 W1，M2，M2'の場合、W0〜W4及びW5(0x80000000)、W15(Paddingデータ)が初期化される。なお上記以外のW(W0〜W15)の領域を持つ必要はない。Ｓ８０３では、W16〜W79(各4bytes)が初期化される。ここで、S８０２で計算されなかったWを省く点はＳ６０４と同様である。ただし、入力データは固定長であるため、Ｓ６０４のようにMの値を考慮する必要はない。Ｓ８０４では、A、B、C、D、Eが初期化される。初期化内容については、Ｓ６０５と同様である。Ｓ８０５では、SHA1の計算処理が実行される。上記Wtの未計算部分(W1〜W15)を省く点はＳ６０６と同様である。ただし、Ｓ６０６で行われた、一般式（５）と、Wの未計算部分の切り替え処理は、予め構成しておくことが可能となる。Ｓ８０６では、H0〜H4が更新される。更新内容については、Ｓ６０７と同様である。
【００７２】
（第３の実施例）
第１および第２の実施例は、HMACSHA1の入力であるP及びtextを固定長、または可変長とした。本発明は、P及びtextの最大長が制限されている場合において、第１の実施例における動的な変更と第２の実施例における静的な変更を組み合わせることでHMACSHA1を構成することも可能である。
【００７３】
図９は本発明におけるHMACSHA1の処理の構成を示す。HMAC-SHA1９０４は、最大長が制限されているP９０１及びtext９０２を入力とし、MAC９０３を出力する。ここで、P９０１の長さをCbytes(C<=D)、text９０２の長さをEbytes(E<=F)と仮定する。ここで、図４に示されていた従来のHMACSHA1における拡張処理及びPadding処理をSHA1への入力前に行わない。つまり、P９０１には、Cbytes分だけ36(16進表記)、もしくは5c(16進表記)がxorされ、M1，M1'(Cbytes)が生成される。またtext９０２(Ebytes)及び2回のSHA1処理の出力値の前者(20bytes)は、そのままSHA1への入力とする。ここで、上記Cbytes及びEbytes領域については、予め最大長が決定しているので、長さ以上の領域を持たないよう、データの入力前に予め決定しておくことが可能となる。図９に示されている通り、Cbytes及びEbytesの領域確保のために必要な領域は、それぞれDbytes及びFbytesとなる。
【００７４】
図１０は、本実施例におけるSHA1の1block処理のフローチャートである。なお、フローチャート内の各用語に関しては、RFC3174 US Secure Hash Algorithm 1 (SHA1)の用語と同様であるので、そちらを参照されたい。フローチャートはRFC3174の6.1 Method1の処理ステップにのっとっている。Ｓ１００１では、H0〜H4が初期化される。初期化内容については、Ｓ６０１、Ｓ８０１と同様である。Ｓ１００２では、SHA1に入力されたデータの長さ情報から高速化用因子を生成する。内容はＳ６０２と同様であるので、ここでは割愛する。Ｓ１００３では、W(各4bytes)が初期化される。ここで行われる処理は、Ｓ６０３と同様であるのでここでは割愛する。この際、Mの最大長はデータ入力前に決定されているため、W0〜WM以外のW(W0〜W15)の領域を持つ必要はない。Ｓ１００４では、W16〜W79(各4bytes)が初期化される。) ここで行われる処理は、Ｓ６０４と一点を除き同様であるのでここでは割愛する。上記一点とはMの値のとりうる範囲である。Mの最大長はデータ入力前に決定されているため、Ｓ６０４のように全てのMについて考慮する必要はない。よって、必要ないMに関する処理については、データ入力前に予め除外する。Ｓ１００５では、A、B、C、D、Eが初期化される。初期化内容については、Ｓ６０５及びＳ８０４と同様である。Ｓ１００６では、SHA1の計算処理が実行される。ここで行われるアルゴリズムはＳ６０６と同様であるので、ここでは割愛する。Ｓ１００７では、H0〜H4が更新される。更新処理については、Ｓ６０７及びＳ８０６と同様である。
【００７５】
（第４の実施例）
第１、第２、第３の実施例では、P等が入力される関数として、HMACSHA1を想定していた。本発明の構成の一部及び全ては、HMACSHA1以外の関数においても適応可能である。例えば、前述したハッシュ関数のMD4、MD5やSHA1、HMACとしてはHMACMD5等が挙げられる。
【００７６】
また、本発明は、上記ハッシュ系の関数以外にも適応可能である。例えば、共通鍵暗号方式でCBCモードを用いた場合が、一例として挙げられる。上記共通鍵暗号のCBCモードはblock長に満たない時はPaddingを付加する。このPadding長及び値については、入力データ長及びPadding方式から容易に類推できる。よって、本発明を用いることによって、不必要な処理を静的又は動的に除外する構成をとることが可能となる。
【００７７】
（第５の実施例）
第１、第２、第３および第４の実施例は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等）から構成されるシステムの一部として適用しても、ひとつの機器（たとえば複写機、ファクシミリ装置）からなるものの一部に適用してもよい。
【００７８】
また、本発明は上記実施の形態を実現するための装置及び方法及び実施の形態で説明した方法を組み合わせて行う方法のみに限定されるものではなく、上記システムまたは装置内のコンピュータ（ＣＰＵあるいはＭＰＵ）に、上記実施の形態を実現するためのソフトウエアのプログラムコードを供給し、このプログラムコードに従って上記システムあるいは装置のコンピュータが上記各種デバイスを動作させることにより上記実施の形態を実現する場合も本発明の範疇に含まれる。
【００７９】
またこの場合、前記ソフトウエアのプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを格納した記憶媒体は本発明の範疇に含まれる。
【００８０】
この様なプログラムコードを格納する記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００８１】
また、上記コンピュータが、供給されたプログラムコードのみに従って各種デバイスを制御することにより、上記実施の形態の機能が実現される場合だけではなく、上記プログラムコードがコンピュータ上で稼働しているＯＳ(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して上記実施の形態が実現される場合にもかかるプログラムコードは本発明の範疇に含まれる。
【００８２】
更に、この供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施の形態が実現される場合も本発明の範疇に含まれる。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施の形態に係る処理装置の構成を示すブロックである。
【図２】ＰＫＣＳ＃５のＰＢＫＤＦ２処理の概要である。
【図３】図２におけるＦｕｎｃｔｉｏｎの詳細図である。
【図４】図３におけるＰＲＦ＜ＨＭＡＣＳＨＡ１＞の詳細図である。
【図５】本発明の第１の実施形態に係るＨＭＡＣＳＨＡ１の処理例を説明する概念図である。
【図６】本発明の第１の実施形態に係るＳＨＡ１処理フローチャートを説明する概念図である。
【図７】本発明の第２の実施形態に係るＨＭＡＣＳＨＡ１の処理例を説明する概念図である。
【図８】本発明の第２の実施形態に係るＳＨＡ１処理フローチャートを説明する概念図である。
【図９】本発明の第３の実施形態に係るＨＭＡＣＳＨＡ１の処理例を説明する概念図である。
【図１０】本発明の第３の実施形態に係るＳＨＡ１処理フローチャートを説明する概念図である。
【符号の説明】
【００８４】
１００  情報処理装置
１０２  モニタ
１０３  ＣＰＵ
１０４  ＲＯＭ
１０５  ＲＡＭ
１０６  ＨＤ
１０７  ネットワーク接続部
１０８  ＣＤドライブ
１０９  ＦＤドライブ
１１０  ＤＶＤドライブ
１１１  インターフェース
１１２  マウス
１１３  キーボード
１１４  インターフェース
１１５  プリンタ
１１６  バス
１１７  インターフェース
１１８  モデム
１１９  インターフェース
【図１】
2008102839.tif 000003
【図２】
2008102839.tif 000004
【図３】
2008102839.tif 000005
【図４】
2008102839.tif 000006
【図５】
2008102839.tif 000007
【図６】
2008102839.tif 000008
【図７】
2008102839.tif 000009
【図８】
2008102839.tif 000010
【図９】
2008102839.tif 000011
【図１０】
2008102839.tif 000012