(57)【要約】【課題】メモリの利用の効率化を図ること。【解決手段】情報送信装置１００は、送信先へ送信する送信データについて、パディングデータサイズ算出部２０１によって、暗号化アルゴリズムと、認証コードおよびコンテンツのデータサイズとに基づいて、パディングデータサイズを算出し、送信データサイズ算出部２０２によって、パディングデータサイズと、認証コードおよびコンテンツのデータサイズとから、送信データサイズを算出する。つぎに、生成部２０３によって、送信データの種別と送信データサイズとを含むヘッダを生成し、暗号化部２０４によって送信データを暗号化する。そして、送信部２０５によって、ヘッダと、送信データとを送信先へ送信する。【選択図】図２
2008219746.tif 000002
【特許請求の範囲】
【請求項１】
送信指示を受け付けたコンテンツと、当該コンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信する情報送信装置において、
前記暗号化アルゴリズムと、前記認証コードおよび前記コンテンツのデータサイズとに基づいて、前記パディングデータのパディングデータサイズを算出するパディングデータサイズ算出手段と、
前記パディングデータサイズ算出手段によって算出されたパディングデータサイズと、前記認証コードおよび前記コンテンツのデータサイズとから、前記送信データの送信データサイズを算出する送信データサイズ算出手段と、
前記送信データサイズ算出手段によって算出された送信データサイズを用いて、前記送信データの種別と当該送信データサイズとを含むヘッダを生成する生成手段と、
前記送信データを暗号化する暗号化手段と、
前記生成手段によって生成されたヘッダと、前記暗号化手段によって暗号化された送信データとを前記送信先へ送信する送信手段と、
を備えることを特徴とする情報送信装置。
【請求項２】
前記暗号化手段は、
前記送信データを一時的に保持する送信バッファのメモリサイズよりも小さな前記暗号化アルゴリズムにおける暗号化の単位ブロックサイズごとに当該送信データを分割して、当該単位ブロックサイズごとに分割された複数のブロックデータを順次暗号化し、当該単位ブロックサイズに満たない最後のブロックデータに前記パディングデータがパディングされた当該単位ブロックサイズの最終ブロックデータを暗号化し、
前記送信手段は、
前記暗号化手段によって順次暗号化されたブロックデータおよび最終ブロックデータを前記送信先へ順次送信することを特徴とする請求項１に記載の情報送信装置。
【請求項３】
前記送信手段は、
前記ヘッダを送信した後に、前記ブロックデータおよび前記最終ブロックデータを送信することを特徴とする請求項２に記載の情報送信装置。
【請求項４】
前記パディングデータサイズ算出手段は、
前記認証コードおよび前記コンテンツのデータサイズを、前記暗号化アルゴリズムにおける暗号化の単位ブロックサイズで除算することで、当該認証コードおよび当該コンテンツのデータサイズと、前記パディングデータサイズとの合計が当該単位ブロックサイズの整数倍になるように当該パディングデータサイズを算出することを特徴とする請求項１〜３のいずれか一つに記載の情報送信装置。
【請求項５】
前記認証コードのデータサイズは、当該認証コードを生成するＭＡＣ生成アルゴリズムに応じて特定されることを特徴とする請求項１〜４のいずれか一つに記載の情報送信装置。
【請求項６】
送信指示を受け付けたコンテンツと、当該コンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信する情報送信方法において、
前記暗号化アルゴリズムと、前記認証コードおよび前記コンテンツのデータサイズとに基づいて、前記パディングデータのパディングデータサイズを算出するパディングデータサイズ算出工程と、
前記パディングデータサイズ算出工程によって算出されたパディングデータサイズと、前記認証コードおよび前記コンテンツのデータサイズとから、前記送信データの送信データサイズを算出する送信データサイズ算出工程と、
前記送信データサイズ算出工程によって算出された送信データサイズを用いて、前記送信データの種別と当該送信データサイズとを含むヘッダを生成する生成工程と、
前記送信データを暗号化する暗号化工程と、
前記生成工程によって生成されたヘッダと、前記暗号化工程によって暗号化された送信データとを前記送信先へ送信する送信工程と、
を含むことを特徴とする情報送信方法。
【請求項７】
送信指示を受け付けたコンテンツと、当該コンテンツの改竄と送信者のなりすましを防ぐための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信させる情報送信プログラムにおいて、
前記暗号化アルゴリズムと、前記認証コードおよび前記コンテンツのデータサイズとに基づいて、前記パディングデータのパディングデータサイズを算出させるパディングデータサイズ算出工程と、
前記パディングデータサイズ算出工程によって算出されたパディングデータサイズと、前記認証コードおよび前記コンテンツのデータサイズとから、前記送信データの送信データサイズを算出させる送信データサイズ算出工程と、
前記送信データサイズ算出工程によって算出された送信データサイズを用いて、前記送信データの種別と当該送信データサイズとを含むヘッダを生成させる生成工程と、
前記送信データを暗号化させる暗号化工程と、
前記生成工程によって生成されたヘッダと、前記暗号化工程によって暗号化された送信データとを前記送信先へ送信させる送信工程と、
をコンピュータに実行させることを特徴とする情報送信プログラム。
【請求項８】
送信指示を受け付けたコンテンツと、当該コンテンツの改竄と送信者のなりすましを防ぐための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信させる情報送信プログラムにおいて、
前記暗号化アルゴリズムと、前記認証コードおよび前記コンテンツのデータサイズとに基づいて、前記パディングデータのパディングデータサイズを算出させるパディングデータサイズ算出工程と、
前記パディングデータサイズ算出工程によって算出されたパディングデータサイズと、前記認証コードおよび前記コンテンツのデータサイズとから、前記送信データの送信データサイズを算出させる送信データサイズ算出工程と、
前記送信データサイズ算出工程によって算出された送信データサイズを用いて、前記送信データの種別と当該送信データサイズとを含むヘッダを生成させる生成工程と、
前記送信データを暗号化させる暗号化工程と、
前記生成工程によって生成されたヘッダと、前記暗号化工程によって暗号化された送信データとを前記送信先へ送信させる送信工程と、
をコンピュータに実行させることを特徴とする情報送信プログラムを記録したコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号を用いたＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）やＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）などの情報通信規格にしたがって情報通信をおこなう情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
従来より、インターネットなどのネットワーク上で、プライバシーに関わる情報や企業秘密などの情報を安全に送受信するため、暗号化をおこなって送受信するＳＳＬやＴＬＳなどのプロトコルが用いられている。
【０００３】
近年では、ＳＳＬを用いた通信におけるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｏｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットから暗号化データへの組み立てに伴う遅延を低減させるため、受信復号時には分割されて送られてくるパケットを順次復号する。さらに、暗号化送信時にはアプリケーション層のデータをブロック暗号化後の一つのＴＣＰパケットで転送できるよう分割する提案がされている（たとえば、下記特許文献１参照。）。
【０００４】
ところで、ＳＳＬやＴＬＳなどのプロトコルを用いてコンテンツの送受信をおこなう場合、通常、下記（１）〜（４）に示すような手順によってコンテンツを加工して生成された送信データを、送信先のサーバやクライアントに送信する。
【０００５】
（１）ＭＡＣ（Ｍａｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の生成。
（２）必要に応じて、パディング処理。
（３）コンテンツ、ＭＡＣ、パディングデータを含む送信データの暗号化。
（４）送信データのヘッダ部分の生成。
【０００６】
具体的に、図８を用いて、従来におけるコンテンツを加工して生成される送信データについて説明する。図８は、従来における送信データの生成の一例を示す説明図である。図８において、送信データは、コンテンツ８０１と、ＭＡＣ８０２と、パディングデータ８０３と、から構成されており、送信バッファ８２０に保持されている。
【０００７】
コンテンツ８０１は、送信する対象となるコンテンツのデータである。また、ＭＡＣ８０２は、送信データが改竄されていないこと、および、送信者が別人になりすましていないことを認証するために用いられる認証子であり、具体的には、たとえば、ＭＡＣ生成アルゴリズムによって生成されるＭＡＣ値などである。パディングデータ８０３は、送信データを暗号化する際に、暗号化部分が所定の暗号化アルゴリズムにおける暗号化の単位ブロックサイズの倍数となるようにするためのデータである。
【０００８】
ヘッダ８１０は、送信バッファ８２０に一時的に保持された送信データの属性を示す情報が記載されており、たとえば、コンテンツ８０１の種別を示すｔｙｐｅと、送受信に用いられるプロトコルのバージョンを示すｖｅｒｓｉｏｎと、送信データのサイズを示すｌｅｎｇｔｈとから構成される。
【０００９】
このヘッダ８１０は、データの送受信の際に必要な情報であり、送信データのサイズを記載するために、ＭＡＣ８０２の生成、パディング処理によるパディングデータ８０３の生成、送信データの暗号化の後に生成されることとなる。
【００１０】
【特許文献１】特開２００４−３６４０２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来技術では、送信データを送信する際、はじめに送信すべきヘッダを送信データの加工・生成の後に生成する構成であるため、ヘッダの生成が終了するまで送信データを保持可能な送信バッファが必要であった。すなわち、ＭＡＣやパディングデータなどのデータサイズに応じて様々なデータサイズとなる送信データに対応するため、規格で定められた最大サイズ（たとえば、約１６ｋバイト）の送信バッファを準備しなければならない。
【００１２】
したがって、組み込み用途のメモリ領域を用いて送信バッファを準備する場合、メモリ領域の最小サイズに制限があると、送信バッファによってメモリ領域が圧迫されてしまうこととなる。特に、送信データのデータサイズが小さく、小さなサイズの送信バッファで送信データを保持できる場合、送信バッファに使用しない領域であってもメモリ領域に送信バッファとして確保しておくため、メモリの利用が非効率的であるという問題があった。
【００１３】
一方、小さなサイズの送信バッファを準備する場合、送信バッファよりも大きなサイズの送信データを送信できなくなってしまうという問題があった。
【００１４】
この発明は、上述した従来技術による問題点を解消するため、送信データのデータサイズを算出してヘッダを生成することで、メモリの利用の効率化を図ることができる情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、この発明にかかる情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体は、送信指示を受け付けたコンテンツと、当該コンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信する情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体において、前記暗号化アルゴリズムと、前記認証コードおよび前記コンテンツのデータサイズとに基づいて、前記パディングデータのパディングデータサイズを算出し、算出されたパディングデータサイズと、前記認証コードおよび前記コンテンツのデータサイズとから、前記送信データの送信データサイズを算出し、算出された送信データサイズを用いて、前記送信データの種別と当該送信データサイズとを含むヘッダを生成し、前記送信データを暗号化し、生成されたヘッダと、暗号化された送信データとを前記送信先へ送信することを特徴とする。
【００１６】
この発明によれば、暗号化アルゴリズムと、認証コードおよびコンテンツのデータサイズから算出されるパディングデータサイズおよび送信データサイズによってヘッダを生成することで、ヘッダと暗号化された送信データを適切に送信先へ送信することができる。
【００１７】
また、上記発明において、前記送信データを一時的に保持する送信バッファのメモリサイズよりも小さくなるように、当該送信データを分割して、前記暗号化アルゴリズムにより順次暗号化して、前記送信先へ順次送信することとしてもよい。このときの分割するデータのサイズは、前記暗号化アルゴリズムにおける暗号化の単位ブロックサイズの倍数となるようにする。最後のブロックデータのサイズは、暗号化の単位ブロックサイズに満たなくてもよい。
【００１８】
この発明によれば、送信データから分割された複数のブロックデータおよび最終ブロックデータを順次暗号化して順次送信するため、送信バッファを効率的に利用して、送信データを送信することができる。
【００１９】
また、上記発明において、前記ヘッダを送信した後に、前記ブロックデータおよび前記最終ブロックデータを送信することとしてもよい。
【００２０】
この発明によれば、ヘッダを送信してから送信バッファを利用して、送信データを送信することができる。
【００２１】
また、上記発明において、前記認証コードおよび前記コンテンツのデータサイズを、前記暗号化アルゴリズムにおける暗号化の単位ブロックサイズで除算することで、当該認証コードおよび当該コンテンツのデータサイズと、前記パディングデータサイズとの合計が当該単位ブロックサイズの整数倍になるように当該パディングデータサイズを算出することとしてもよい。
【００２２】
この発明によれば、認証コードおよびコンテンツのデータサイズと、暗号化の単位ブロックサイズとを用いて、適切にパディングデータサイズを算出することができる。
【００２３】
また、上記発明において、前記認証コードのデータサイズは、当該認証コードを生成するＭＡＣ生成アルゴリズムに応じて特定されることとしてもよい。
【００２４】
この発明によれば、認証コードを生成するＭＡＣ生成アルゴリズムによって、認証コードのデータサイズを簡易に特定することができる。
【発明の効果】
【００２５】
本発明にかかる情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体によれば、送信データのデータサイズを算出してヘッダを生成することで、メモリの利用の効率化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２６】
以下に添付図面を参照して、この発明にかかる情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体の好適な実施の形態を詳細に説明する。
【００２７】
（実施の形態１）
（情報送信装置のハードウェア構成）
まず、図１を用いて、この発明の実施の形態１にかかる情報送信装置のハードウェア構成について説明する。図１は、この発明の実施の形態１にかかる情報送信装置のハードウェア構成を示す説明図である。
【００２８】
図１において、情報送信装置１００は、コンピュータ本体１１０と、入力装置１２０と、出力装置１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１４０に接続可能である。
【００２９】
コンピュータ本体１１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、情報送信装置１００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３０】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１およびフラッシュメモリはコンピュータ本体１１０に対し着脱自在である。インターフェースは、入力装置１２０からの入力、出力装置１３０への出力、ネットワーク１４０に対する送受信の制御をおこなう。
【００３１】
また、入力装置１２０としては、キーボード１２１、マウス１２２、スキャナ１２３などがある。キーボード１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１０内のメモリに格納される。なお、スキャナ１２３にＯＣＲ機能を持たせてもよい。
【００３２】
また、出力装置１３０としては、ディスプレイ１３１、スピーカ１３２、プリンタ１３３、などがある。ディスプレイ１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ１３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ１３３は、画像データや文書データを印刷する。
【００３３】
（情報送信装置１００の機能的構成）
つぎに、図２を用いて、この発明の実施の形態１にかかる情報送信装置１００の機能的構成について説明する。図２は、この発明の実施の形態１にかかる情報送信装置の機能的構成を示すブロック図である。
【００３４】
図２において、送信指示を受け付けたコンテンツと、当該コンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するための認証コードと、パディングデータと、を含む送信データを、所定の暗号化アルゴリズムによって暗号化して、送信先へ送信する情報送信装置１００は、パディングデータサイズ算出部２０１と、送信データサイズ算出部２０２と、生成部２０３と、暗号化部２０４と、送信部２０５と、から構成されている。
【００３５】
これら各機能２０１〜２０５は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能２０１〜２０５からの出力データはメモリに保持される。また、図２中矢印で示した接続先の機能的構成は、接続元の機能からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００３６】
ここで、コンテンツは、たとえば、図１に示したＨＤおよび光ディスク１１１に記録されていたり、ネットワーク１４０を介して取得する構成でもよい。また、送信データの送信は、たとえば、図１に示した入力装置１２０や送信先からコンテンツの送信指示を受け付けた場合におこなう構成である。
【００３７】
暗号化アルゴリズムは、たとえば、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｔａｎｄａｒｄ）などである。そして、ＣＰＵによって、暗号化アルゴリズムに応じて、暗号化の単位ブロックサイズごとに送信データの暗号化処理をおこなう。より具体的には、たとえば、送信データの暗号化処理は、ＣＰＵによって、ＲＯＭやＲＡＭなどに設定されているＡＥＳを用いて、メモリをワークエリアとしておこなう。
【００３８】
認証コードは、たとえば、暗号化された送信データの送信先の機器でコンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するためのＭＡＣである。具体的には、たとえば、ＭＡＣは、ＣＰＵによって、ＭＡＣ生成アルゴリズムを用いて生成される。より具体的には、たとえば、ＭＡＣの生成は、ＣＰＵによって、ＲＯＭやＲＡＭなどに設定されているＭＡＣ生成アルゴリズム（たとえば、ＨＭＡＣ−ＳＨＡ−１や、ＨＭＡＣ−ＭＤ５）を用いておこなう。
【００３９】
なお、ＭＡＣのデータサイズは、たとえば、ＭＡＣを生成するＭＡＣ生成アルゴリズムによって特定され、具体的には、ＨＭＡＣ−ＳＨＡ−１を用いる場合は、２０バイト、ＨＭＡＣ−ＭＤ５を用いる場合は１６バイトである。
【００４０】
パディングデータは、たとえば、送信データを暗号化する際に、暗号化部分が暗号化の単位ブロックサイズの倍数となるようにパディングするデータである。
【００４１】
パディングデータサイズ算出部２０１は、暗号化アルゴリズムと、認証コードおよびコンテンツのデータサイズとに基づいて、パディングデータのパディングデータサイズを算出する。
【００４２】
詳細は図３および図４を用いて説明するが、パディングデータサイズ算出部２０１は、たとえば、ＭＡＣおよびコンテンツのデータサイズを、暗号化アルゴリズムにおける暗号化の単位ブロックサイズで除算する。そして、ＭＡＣおよびコンテンツのデータサイズと、パディングデータサイズとの合計が単位ブロックサイズの整数倍になるようにパディングデータサイズを算出する。
【００４３】
具体的には、たとえば、パディングデータサイズ算出部２０１は、ＣＰＵによって、図１に示した入力装置１２０によって送信先への送信指示を受け付けたコンテンツについて、パディングデータサイズを算出してメモリに保持する。
【００４４】
送信データサイズ算出部２０２は、パディングデータサイズ算出部２０１によって算出されたパディングデータサイズと、ＭＡＣおよびコンテンツのデータサイズとから、送信データの送信データサイズを算出する。
【００４５】
具体的には、たとえば、送信データサイズ算出部２０２は、ＣＰＵによって、ＭＡＣを生成するＭＡＣ生成アルゴリズムによって特定されるＭＡＣのデータサイズと、送信指示を受け付けたコンテンツのデータサイズと、メモリに保持されたパディングデータサイズとから送信データサイズを算出してメモリに保持する。
【００４６】
生成部２０３は、送信データサイズ算出部２０２によって算出された送信データサイズを用いて、送信データの種別と送信データサイズとを含むヘッダを生成する。具体的には、たとえば、生成部２０３は、ＣＰＵによって、送信指示を受け付けたコンテンツの種別、メモリに保持された送信データサイズを含むヘッダを生成してメモリに保持する。すなわち、すべての送信データを送信バッファに保持しなくても、送信データサイズを的確に予測してヘッダを生成することができる。
【００４７】
暗号化部２０４は、送信データを暗号化する。具体的には、たとえば、暗号化部２０４は、送信データを一時的に保持する送信バッファのメモリサイズよりも小さくなるように、送信データを分割する。このときの分割するデータのサイズは、暗号化アルゴリズムにおける暗号化の単位ブロックサイズとなるようにする。最後のブロックデータのサイズは、暗号化の単位ブロックサイズに満たなくてもよい。
【００４８】
詳細は図３および図７を用いて説明するが、送信バッファは、たとえば、メモリに設定されており、暗号化部２０４は、分割された送信データを、順次暗号化する。また、暗号化部２０４は、ＭＡＣとパディングデータを暗号化する。
【００４９】
より具体的には、たとえば、暗号化部２０４は、ＣＰＵによって、送信指示を受け付けたコンテンツを取得して、送信バッファに単位ブロックサイズごとのブロックデータに分割して保持し、順次暗号化する。つぎに、暗号化部２０４は、ＣＰＵによって、暗号化の単位ブロックサイズに満たない最後のブロックデータの後ろに、ＭＡＣ生成アルゴリズムを用いてＭＡＣを生成して、送信バッファに保持し、暗号化する。また、暗号化部２０４は、ＣＰＵによって、パディングデータを生成して、送信バッファに保持し、暗号化する。
【００５０】
送信部２０５は、生成部２０３によって生成されたヘッダと、暗号化部２０４によって暗号化された送信データとを送信先へ送信する。具体的には、たとえば、送信部２０５は、暗号化部２０４によって順次暗号化されたブロックデータおよび最終ブロックデータを送信先へ順次送信する。つぎに、暗号化部２０４によって生成され、順次暗号化されたＭＡＣとパディングデータを送信先へ順次送信する。また、送信部２０５は、ヘッダを送信した後に、ブロックデータおよび最終ブロックデータを送信することとしてもよい。
【００５１】
より具体的には、たとえば、送信部２０５は、ＣＰＵによって、送信バッファに保持された送信データを送信先へ順次送信する構成である。このように、送信データの送信以前に送信データのヘッダを送信して、送信データを順次暗号化および送信する構成とすることで、すべての送信データを送信バッファに保持しなくてもよく、送信バッファのサイズを削減することができる。
【００５２】
（送信データの概要）
つぎに、図３を用いて、この発明の実施の形態１にかかる送信データの概要について説明する。図３は、この発明の実施の形態１にかかる送信データの概要を示す説明図である。
【００５３】
図３において、送信データ３００は、コンテンツ３０１と、ＭＡＣ３０２と、パディングデータ３０３と、から構成されており、送信バッファ３２０（３２０ａ，３２０ｂ，３２０ｃ）に保持される。また、ヘッダ３１０は、送信データ３００の属性を示す情報が記載されており、たとえば、コンテンツ３０１の種別を示すｔｙｐｅと、送受信に用いられるプロトコルのバージョンを示すｖｅｒｓｉｏｎと、送信データ３００の送信データサイズを示すｌｅｎｇｔｈとから構成されている。
【００５４】
コンテンツ３０１は、送信先に送信する対象となる送信対象コンテンツのデータである。具体的には、たとえば、コンテンツ３０１は、図１に示したＨＤおよび光ディスク１１１に記録されている構成でもよいし、ネットワーク１４０を介して取得する構成でもよい。また、送信データ３００の送信は、たとえば、図１に示した入力装置１２０や送信先からコンテンツの送信指示を受け付けた場合におこなうこととしてもよい。
【００５５】
ＭＡＣ３０２は、送信データ３００を送信先でコンテンツが改竄されていないこと、および、送信者が別人になりすましていないことを認証するために用いられる認証子であり、所定のＭＡＣ生成アルゴリズムによって生成されるＭＡＣ値などである。ＭＡＣ３０２のデータサイズは、たとえば、ＭＡＣ３０２を生成するＭＡＣ生成アルゴリズムによって特定され、具体的には、ＨＭＡＣ−ＳＨＡ−１を用いる場合は、２０バイト、ＨＭＡＣ−ＭＤ５を用いる場合は１６バイトである。
【００５６】
パディングデータ３０３は、送信データ３００を暗号化する際に、暗号化部分が所定の暗号化アルゴリズムにおける暗号化の単位ブロックサイズの倍数となるようにするためのデータである。換言すれば、パディングデータ３０３は、たとえば、ＭＡＣおよびコンテンツのデータサイズと、パディングデータサイズとの合計が単位ブロックサイズの整数倍となるデータである。
【００５７】
送信バッファ３２０は、保持される送信データ３００を複数回に分けて送信先へ送信する。具体的には、たとえば、情報送信装置１００は、暗号化の単位ブロックサイズの倍数分の送信データ３００を、送信バッファ３２０へ可能な限りコピーして、暗号化処理と送信を順次繰り返すこととなる。そして、最終段階では、暗号化の単位ブロックサイズに満たないコンテンツ３０１と、ＭＡＣ３０２と、パディングデータ３０３とを送信バッファ３２０にコピーして送信することとなる。
【００５８】
処理の詳細は図５および図６を用いて説明するが、より具体的には、たとえば、送信データ３００の送信は、コンテンツ３０１の一部を送信バッファ３２０ａにコピー、暗号化処理をおこなって送信先へ送信し、さらに、コンテンツ３０１の一部を送信バッファ３２０ｂにコピー、暗号化処理をおこなって送信先へ送信する。そして、最終段階では、コンテンツ３０１の残りの一部と、ＭＡＣ３０２と、パディングデータ３０３とを送信バッファ３２０ｃにコピー、暗号化処理をおこなって送信先へ送信する。
【００５９】
このようにすることで、送信バッファ３２０は、従来よりも小さなサイズとすることができ、メモリの利用の効率化を図ることができる。具体的には、たとえば、送信バッファ３２０のサイズは、ＡＥＳによって暗号化される単位ブロックサイズを１６バイト、ＨＭＡＣ−ＳＨＡ−１を用いて生成されるＭＡＣ３０２のデータサイズを２０バイトとした場合、送信バッファ３２０の最小サイズは４８バイトでよい。
【００６０】
より具体的には、たとえば、送信バッファ３２０の最小サイズは、単位ブロックサイズ（１６バイト）とＭＡＣ３０２のデータサイズ（２０バイト）の合計値（３６バイト）よりも大きく、かつ、単位ブロックサイズで割りきれる最小の値である４８バイトとなる。なお、パディングデータサイズは、２５５バイトを上限として任意に選択可能であり、実施の形態１では１〜１６バイトを用いる構成である。
【００６１】
ここで、図４を用いて、この発明の実施の形態１にかかる送信データ３００の送信データサイズの算出の概要について説明する。図４は、この発明の実施の形態１にかかる送信データサイズの算出の概要を示す説明図である。
【００６２】
図４において、送信データ３００の送信データサイズＬｒは、コンテンツ３０１のデータサイズＬｃと、ＭＡＣ３０２のデータサイズＬｍと、パディングデータ３０３のパディングデータサイズＬｐの合計であり、つぎの（式１）で示すことができる。
【００６３】
Ｌｒ＝（Ｌｃ＋Ｌｍ）＋Ｌｐ                                        （式１）
【００６４】
パディングデータサイズＬｐは、送信データ３００が単位ブロックサイズの整数倍となるようにするサイズである。単位ブロックサイズＬｂｌｋ、コンテンツ３０１のデータサイズＬｃと、ＭＡＣ３０２のデータサイズＬｍとの合計を単位ブロックサイズＬｂｌｋで割った余りをＬｍｏｄとすると、最低限必要となるパディングデータサイズＬｐは、つぎの（式２）で示すことができる。
【００６５】
Ｌｐ＝Ｌｂｌｋ−Ｌｍｏｄ
＝Ｌｂｌｋ−（Ｌｃ＋Ｌｍ）ｍｏｄＬｂｌｋ                      （式２）
【００６６】
したがって、上述した（式１）および（式２）より、送信データ３００の送信データサイズＬｒは、つぎの（式３）となる。
【００６７】
Ｌｒ＝（Ｌｃ＋Ｌｍ）＋Ｌｂｌｋ−（Ｌｃ＋Ｌｍ）ｍｏｄＬｂｌｋ      （式３）
【００６８】
より具体的には、データサイズＬｃが４０バイトのコンテンツ３０１を、ＡＥＳによって暗号化、ＨＭＡＣ−ＳＨＡ−１によってＭＡＣ３０２を生成する場合、単位ブロックサイズＬｂｌｋは１６バイト、ＭＡＣ３０２のデータサイズＬｍは２０バイトとなり、（式３）より、送信データサイズＬｒは、６４バイト（４０＋２０＋１６−（４０＋２０）ｍｏｄ１６）となる。
【００６９】
また、データサイズＬｃが１０００バイトのコンテンツ３０１を、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）によって暗号化、ＨＭＡＣ−ＭＤ５によってＭＡＣ３０２を生成する場合、単位ブロックサイズＬｂｌｋは８バイト、ＭＡＣ３０２のデータサイズＬｍは１６バイトとなり、（式３）より、送信データサイズＬｒは、１０２４バイト（１０００＋１６＋８−（１０００＋１６）ｍｏｄ８）となる。
【００７０】
このように、暗号化に用いられる暗号化アルゴリズムと、ＭＡＣ３０２の生成に用いられるＨＭＡＣ生成アルゴリズムとから単位ブロックサイズＬｂｌｋおよびＭＡＣ３０２のデータサイズＬｍを特定し、コンテンツ３０１のデータサイズＬｃを参照することで、パディングデータサイズＬｐおよび送信データサイズＬｒを算出することができる。
【００７１】
すなわち、送信バッファ３２０を用いて送信データ３００を送信先へ送信する前に送信データサイズＬｒを的確に予測してヘッダを生成することができるため、無駄に大きなサイズとならないように送信バッファ３２０を適切なサイズに設定することで、メモリの効率的な利用を図ることができる。
【００７２】
なお、図３および図４の説明では、ヘッダと、送信データ３００とを別個独立に送信することとして、ヘッダを送信してから送信データ３００を送信バッファ３２０にあわせて順次送信する構成としたが、ヘッダも送信バッファ３２０へコピーして送信データ３００とともに順次送信する構成としてもよい。その際、ヘッダの部分は暗号化せずに送信することとなる。
【００７３】
（情報送信装置１００の処理の内容）
つぎに、図５および図６を用いて、この発明の実施の形態１にかかる情報送信装置１００の処理の内容について説明する。図５は、この発明の実施の形態１にかかる情報送信装置の処理の内容を示すフローチャートである。図５のフローチャートにおいて、まず、入力装置１２０によって、コンテンツの送信指示を受け付けたか否かを判断する（ステップＳ５０１）。
【００７４】
ステップＳ５０１において、コンテンツの送信指示を受け付けるのを待って、受け付けた場合（ステップＳ５０１：Ｙｅｓ）は、ＣＰＵによって、ステップＳ５０１において受け付けた送信指示に応じたコンテンツの送信データについて、ヘッダ生成・送信処理をおこなう（ステップＳ５０２）。ヘッダ生成・送信処理は、たとえば、図３および図４に示した送信データ３００について算出される送信データサイズＬｒを用いておこなうこととしてもよく、詳細は図６に後述する。
【００７５】
つぎに、ＣＰＵによって、未送信コンテンツのデータサイズが暗号化の単位ブロックサイズ以上か否かを判断する（ステップＳ５０３）。ステップＳ５０３において、未送信コンテンツのデータサイズが暗号化の単位ブロックサイズ以上であった場合（ステップＳ５０３：Ｙｅｓ）は、ＣＰＵによって、ステップＳ５０１において送信指示を受け付けたコンテンツのうち未送信部分の未送信コンテンツを、送信対象コンテンツと未送信コンテンツに分割する（ステップＳ５０４）。
【００７６】
具体的には、たとえば、未送信コンテンツの分割は、暗号化の単位ブロックサイズの倍数、かつ、送信バッファに格納可能なサイズの最大値となるような送信対象コンテンツと、残りのコンテンツ（未送信コンテンツ）とに分割する。
【００７７】
そして、ＣＰＵによって、ステップＳ５０４において分割された送信対象コンテンツを送信バッファにコピーして（ステップＳ５０５）、コピーされた送信対象コンテンツに対して順次暗号化処理をおこなう（ステップＳ５０６）。
【００７８】
また、ステップＳ５０３において、未送信コンテンツのデータサイズが暗号化の単位ブロックサイズ未満であった場合（ステップＳ５０３：Ｎｏ）は、未送信コンテンツを送信バッファにコピーして（ステップＳ５０９）、ＭＡＣ、パディングデータを送信バッファに生成する（ステップＳ５１０）。そして、ＣＰＵによって、送信バッファに保持されている未送信コンテンツ、ＭＡＣ、パディングデータに対して暗号化処理をおこなう（ステップＳ５０６）。
【００７９】
つづいて、インターフェースを介して、ステップＳ５０６において暗号化処理の施された送信データを送信する（ステップＳ５０７）。具体的には、たとえば、送信バッファに保持される送信データを、ステップＳ５０１において受け付けた送信指示に応じた送信先へ順次送信する。
【００８０】
そして、ＣＰＵによって、送信が終了したか否かを判断し（ステップＳ５０８）、終了していない場合（ステップＳ５０８：Ｎｏ）は、ステップＳ５０３へ戻って処理を繰り返す。具体的には、たとえば、送信の終了は、ステップＳ５０１において送信指示を受け付けたコンテンツに関する送信データをすべて送信したか否かを判断する。
【００８１】
また、ステップＳ５０８において、送信が終了した場合（ステップＳ５０８：Ｙｅｓ）は、そのまま一連の処理を終了する。
【００８２】
つぎに、図６を用いて、この発明の実施の形態１にかかる情報送信装置１００における送信データのヘッダ生成・送信処理（図５のステップＳ５０２）手順について説明する。図６は、この発明の実施の形態１にかかる送信データのヘッダ生成・送信処理（図５のステップＳ５０２）手順を示すフローチャートである。
【００８３】
図６のフローチャートにおいて、まず、ＣＰＵによって、図５のステップＳ５０１において送信指示を受け付けたコンテンツのデータサイズを取得する（ステップＳ６０１）。コンテンツのデータサイズの取得は、たとえば、ＨＤなどに記録されたコンテンツのデータサイズを読み出す。
【００８４】
つぎに、ＣＰＵによって、図５のステップＳ５０１において送信指示を受け付けたコンテンツのＭＡＣを生成するＭＡＣ生成アルゴリズムを取得する（ステップＳ６０２）。ＭＡＣ生成アルゴリズムは、たとえば、ＭＡＣを生成するＭＡＣ生成アルゴリズムの内部で用いられるハッシュ関数などを読み出すこととしてもよく、ＭＡＣ生成アルゴリズムの内部で用いられるハッシュ関数によってＭＡＣのデータサイズを特定することができる。
【００８５】
つぎに、ＣＰＵによって、送信データを暗号化する暗号化アルゴリズムを取得する（ステップＳ６０３）。暗号化アルゴリズムは、たとえば、ＡＥＳやＤＥＳなどであり、ＲＯＭなどにあらかじめ設定された情報を読み出す。
【００８６】
なお、図６のフローチャートでは、ステップＳ６０１〜ステップＳ６０３の順で説明したが、この順序に限ることはない。具体的には、たとえば、同時並行的におこなってもよいし、暗号化アルゴリズム、ＭＡＣ生成アルゴリズム、コンテンツのデータサイズの順に取得してもよい。
【００８７】
つぎに、ＣＰＵによって、ステップＳ６０３において取得された暗号化アルゴリズムと、図５のステップＳ５０１において送信指示を受け付けたコンテンツと、ＭＡＣ生成アルゴリズムと、から、パディングデータサイズを算出し（ステップＳ６０４）、送信データサイズを算出する（ステップＳ６０５）。
【００８８】
そして、ＣＰＵによって、ステップＳ６０４において算出された送信データサイズから、送信データのヘッダを生成する（ステップＳ６０６）。その後、インターフェースを介して、コンテンツの送信先に、ステップＳ６０７において生成されたヘッダを送信して（ステップＳ６０７）、図５におけるステップＳ５０２のヘッダ生成・送信処理を終了して、ステップＳ５０３へ移行する。
【００８９】
このように、この発明の実施の形態１によれば、送信データにおけるパディングデータの生成、ＭＡＣの生成および暗号化処理をおこなう前にヘッダを生成して、送信データの送信をおこなうことができる。したがって、送信バッファなどのメモリを効率的に利用することができる。
【００９０】
具体的には、送信データの生成、暗号化および送信を、適切なサイズの送信バッファによって順次おこなうことで、メモリ利用の効率化を図ることができる。
【００９１】
（実施の形態２）
つぎに、この発明の実施の形態２について説明する。前述の実施の形態１では、送信対象コンテンツを順次送信バッファにコピーして、送信先へ送信した。そして、最終段階で、暗号化の単位ブロックサイズに満たない未送信コンテンツと、ＭＡＣと、パディングデータとを送信バッファにコピーして、送信先へ送信することとして説明した。この発明の実施の形態２では、ＭＡＣを送信バッファにコピーするのではなく、ＭＡＣ用のバッファを設けて送信先へ送信する場合について説明する。
【００９２】
なお、この発明の実施の形態２にかかる情報送信装置のハードウェア構成については図１、機能的構成については図２とそれぞれほぼ同様であるため説明を省略する。ただし、暗号化アルゴリズムについては、暗号化の単位ブロックの倍数ではないデータも入力可能であることが求められる。
【００９３】
（送信データの概要）
図７を用いて、この発明の実施の形態２にかかる送信データの概要について説明する。図７は、この発明の実施の形態２にかかる送信データの概要を示す説明図である。
【００９４】
図７においてコンテンツ７０１を送信する場合、送信バッファ７２０（７２０ａ，７２０ｂ，７２０ｃ，７２０ｄ）に分割して順次コピーする。具体的には、たとえば、情報送信装置１００は、送信するコンテンツ７０１におけるＤ１の部分を送信バッファ７２０ａにコピーして暗号化する。その後、インターフェースを介して、送信先へＤ１を送信する。
【００９５】
つぎに、コンテンツ７０１におけるＤ２の部分を送信バッファ７２０ｂにコピーして暗号化する。その後、インターフェースを介して、送信先へＤ２を送信する。
【００９６】
そして、コンテンツ７０１における残りのＤ３の部分を送信バッファ７２０ｃにコピーするとともに暗号化する。その後、インターフェースを介して送信先へＤ３を送信する。
【００９７】
さらに、コンテンツ７０１のＭＡＣ７０２をＭＡＣ用バッファ７２１に生成して、暗号化して、インターフェースを介して送信先へ送信する。なお、ＭＡＣ７０２の生成は、Ｄ１、Ｄ２、Ｄ３を送信バッファ７２０のコピーごとに中間値を生成することとしてもよい。
【００９８】
つぎに、送信バッファ７２０ｄにパディングデータ７０３を生成し、暗号化する。その後、インターフェースを介して送信先へパディングデータ７０３を送信する。
【００９９】
このように、ＭＡＣ用バッファ７２１を設けてＭＡＣ７０２を保持することとすれば、送信バッファ７２０のサイズは、最小で暗号化の単位ブロックサイズだけでよく、メモリの効率的な活用を実現できる。
【０１００】
なお、図７では説明を省略したが、ヘッダの生成は、コンテンツのデータサイズ、暗号化アルゴリズム、ＭＡＣ生成アルゴリズムから算出される送信データのデータサイズを用いておこない、送信先に送信する構成である。具体的には、たとえば、パディングデータサイズは、ＭＡＣおよびコンテンツのデータサイズを、暗号化の単位ブロックサイズで割った余りから算出でき、送信データサイズは、コンテンツのデータサイズと、パディングデータサイズと、ＭＡＣのデータサイズから算出する構成である。
【０１０１】
以上説明したように、この発明の実施の形態２によれば、ＭＡＣ用バッファによって、送信バッファにＭＡＣを保持することなく送信データの送信ができるため、送信バッファのサイズの低減を図ることができる。
【０１０２】
なお、本実施の形態で説明した情報送信方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【０１０３】
以上のように、本発明にかかる情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体は、所定の通信規格にしたがってコンテンツを送信する場合に有用であり、特に、メモリサイズに制限のある場合におけるコンテンツの送信に適している。
【図面の簡単な説明】
【０１０４】
【図１】この発明の実施の形態１にかかる情報送信装置のハードウェア構成を示す説明図である。
【図２】この発明の実施の形態１にかかる情報送信装置の機能的構成を示すブロック図である。
【図３】この発明の実施の形態１にかかる送信データの概要を示す説明図である。
【図４】この発明の実施の形態１にかかる送信データサイズの算出の概要を示す説明図である。
【図５】この発明の実施の形態１にかかる情報送信装置の処理の内容を示すフローチャートである。
【図６】この発明の実施の形態１にかかる送信データのヘッダ生成・送信処理（図５のステップＳ５０２）手順を示すフローチャートである。
【図７】この発明の実施の形態２にかかる送信データの概要を示す説明図である。
【図８】従来における送信データの生成の一例を示す説明図である。
【符号の説明】
【０１０５】
１００  情報送信装置
１１０  コンピュータ本体
１１１  光ディスク
１２０  入力装置
１２１  キーボード
１２２  マウス
１２３  スキャナ
１３０  出力装置
１３１  ディスプレイ
１３２  スピーカ
１３３  プリンタ
１４０  ネットワーク
２０１  パディングデータサイズ算出部
２０２  送信データサイズ算出部
２０３  生成部
２０４  暗号化部
２０５  送信部
【図１】
2008219746.tif 000003
【図２】
2008219746.tif 000004
【図３】
2008219746.tif 000005
【図４】
2008219746.tif 000006
【図５】
2008219746.tif 000007
【図６】
2008219746.tif 000008
【図７】
2008219746.tif 000009
【図８】
2008219746.tif 000010