(57)【要約】      （修正有）【課題】安全性が高く、暗号鍵として用いられる乱数が盗難されにくく、例え盗難された場合であっても盗難された事実の検出が容易であり、更に暗号化及び復号化を極めて高速に処理することができる暗号復号化装置。【解決手段】送信装置及び受信装置からなる暗号復号化装置で、送信装置は、送信側インタフェース部と、分割ハッシュ値を求める送信側暗号制御部と、分割ハッシュ値を分割変換ハッシュ値に変換する送信側暗号補助部と、対応乱数を送信側暗号制御部に出力する送信側乱数記録部とを有している。受信装置は、受信側ネットワークインタフェース部と、分割暗号データ及び分割ハッシュ値を生成する受信側暗号制御部と、分割ハッシュ値を、分割変換ハッシュ値に変換する受信側暗号制御部に出力する受信側暗号補助部と、分割変換ハッシュ値が入力されると、対応乱数を受信側暗号制御部に出力する受信側乱数記録部とを有している。【選択図】図１
2008054033.tif 000002
【特許請求の範囲】
【請求項１】
送信装置と、送信装置にネットワークを介して接続された受信装置とを備えた暗号復号化装置において、
送信装置は、
平文データが入力される送信側インタフェース部と、
送信側インタフェース部に接続され、送信側インタフェース部から入力される平文データを所定の長さで区切って分割平文データを生成して、当該分割平文データの各々に関する分割ハッシュ値を求める送信側暗号制御部と、
送信側暗号制御部に接続され、送信側暗号制御部から入力される分割ハッシュ値を外部から分からない規則に従って分割変換ハッシュ値に変換するとともに、当該分割変換ハッシュ値を前記送信側暗号制御部に出力する送信側暗号補助部と、
送信側暗号制御部に接続され、乱数が乱数番号で分類されて記録され、送信側暗号補助部から出力される分割変換ハッシュ値が送信側暗号制御部を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を送信側暗号制御部に出力する送信側乱数記録部とを有し、
送信側暗号制御部は、前記対応乱数を暗号鍵として用いて、前記分割平文データを分割暗号データに変換するとともに、多数の分割暗号データを組み合わせることによって生成される暗号データと、多数の分割ハッシュ値を組み合わせて生成されるハッシュ値とを、送信側ネットワークインタフェース部を介して受信装置に出力し、
受信装置は、
送信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力される受信側ネットワークインタフェース部と、
受信側ネットワークインタフェース部に接続され、受信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ハッシュ値を区切って分割ハッシュ値を生成する受信側暗号制御部と、
受信側暗号制御部に接続され、受信側暗号制御部から入力される分割ハッシュ値を、送信側暗号補助部と同一の方法で分割変換ハッシュ値に変換するとともに、当該分割変換ハッシュ値を受信側暗号制御部に出力する受信側暗号補助部と、
受信側暗号制御部に接続され、乱数が乱数番号で分類されて記録され、受信側暗号補助部から出力される分割変換ハッシュ値が、受信側暗号制御部を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を受信側暗号制御部に出力する受信側乱数記録部とを有し、
受信側暗号制御部は、受信側乱数記録部から入力される対応乱数を暗号鍵として用いて、前記分割暗号データを分割平文データに復号するとともに、多数の分割平文データを組み合わせることによって平文データを復号して、受信側インタフェース部を介して外部へ出力することを特徴とする暗号復号化装置。
【請求項２】
送信装置と、送信装置にネットワークを介して接続された受信装置とを備えた暗号復号化装置において、
送信装置は、
平文データが入力される送信側インタフェース部と、
送信側インタフェース部に接続され、送信側インタフェース部から平文データが入力されると、平文データを所定の長さで区切って分割平文データを生成する送信側制御部と、
送信側制御部に接続され、送信側制御部から入力される分割平文データの各々に関する分割ハッシュ値を求めるハッシュ値計算部と、ハッシュ値計算部に接続され、ハッシュ値計算部から入力される分割ハッシュ値を外部から分からない規則に従って分割変換ハッシュ値に変換する送信側ハッシュ値変換部と、送信側ハッシュ値変換部に接続されるとともに、乱数が乱数番号で分類されて記録され、送信側ハッシュ値変換部から分割変換ハッシュ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する送信側乱数記録部と、送信側乱数記録部に接続され、送信側乱数記録部の乱数を更新する送信側乱数更新部と、前記対応乱数を暗号鍵として用いて、送信制御部からの前記分割平文データを分割暗号データに変換する平文データ暗号化部とを含む送信側暗号部とを有するとともに、
送信側暗号部から入力される前記分割暗号データを組み合わせることによって生成される当該暗号データと、前記分割ハッシュ値を組み合わせて生成されるハッシュ値とを受信装置に出力し、
受信装置は、
ネットワークを介して送信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力される受信側ネットワークインタフェース部と、
受信側ネットワークインタフェース部に接続され、受信側ネットワークインタフェース部を介して暗号データ及びハッシュ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ハッシュ値を区切って分割ハッシュ値を生成する受信側制御部と、
受信側制御部に接続され、受信側制御部から入力される分割ハッシュ値を、送信側ハッシュ値変換部と同一の方法で分割変換ハッシュ値に変換する受信側ハッシュ値変換部と、受信側ハッシュ値変換部に接続されるとともに、乱数が乱数番号で分類されて記録され、受信側ハッシュ値変換部から分割変換ハッシュ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する受信側乱数記録部と、受信側乱数記録部に接続され、受信側乱数記録部の乱数を更新する受信側乱数更新部と、前記対応乱数を暗号鍵として用いて、前記分割暗号データを分割平文データに復号する平文データ復号化部とを含む受信側暗号部とを有するとともに、
当該分割平文データを組み合わせることによって平文データへ復号して外部へ出力することを特徴とする暗号復号化装置。
【請求項３】
送信側暗号制御部は、対応乱数を暗号鍵として平文データを暗号データに変換する前に、平文データの順序を並べ替え、
受信側暗号制御部は、対応乱数を暗号鍵として暗号データを平文データに復号した後に、当該平文データを送信側暗号制御部とは逆に並べ替えることを特徴とする請求項１又は２のいずれか１項に記載の暗号復号化装置。
【請求項４】
送信側暗号部の送信側乱数記録部は、一つのハッシュ値から二つの乱数番号を作り出すとともに、当該二つの乱数番号から二つの対応乱数を出力し、
受信側暗号部の受信側乱数記録部は、一つのハッシュ値から二つの乱数番号を作り出すとともに、当該二つの乱数番号から二つの対応乱数を出力することを特徴する請求項２記載の暗号復号化装置。
【請求項５】
送信側暗号補助部と受信側暗号補助部の各々は、互いに、同一の順序の乱数番号を出力し、
送信側暗号制御部は、ハッシュ値を計算することなく送信側暗号補助部に乱数番号を要求し、
受信側暗号制御部は、ハッシュ値を計算することなく受信側暗号補助部に乱数番号を要求することを特徴とする請求項１及び３のいずれかに記載の暗号復号化装置。
【請求項６】
受信側暗号部は、予め所定の照合アドレスが記録されているネットワークアドレス判定部を更に有し、
ネットワークアドレス判定部は、当該照合アドレスと、受信側ネットワークインタフェースの有するネットワークアドレスとを照合し、両者が不一致と判断した場合には、暗号データを正常な方法で平文データに復号しないことを特徴とする請求項４記載の暗号復号化装置。
【請求項７】
送信側暗号部は、送信側乱数更新部に入力する乱数を変換する送信側乱数変換部を更に有し、
受信側暗号部は、受信側乱数更新部に入力する乱数を、送信側乱数変換部と同一の方法で変換する受信側乱数変換部を更に有することを特徴とする請求項２、４及び６のいずれかに記載の暗号復号化装置。
【請求項８】
送信装置は、乱数を更新し、送信側制御部に出力する送信側乱数入力部を更に有し、
受信装置は、乱数を更新し、受信側制御部に出力する受信側乱数入力部を更に有し、
送信側暗号制御部は、送信側乱数入力部から入力された乱数を、送信側暗号補助部を介して別の乱数に変換して、送信側乱数記録部に入力し、
受信側暗号制御部は、受信側乱数入力部から入力された乱数を、受信側暗号補助部を介して別の乱数に変換して、受信側乱数記録部に入力することを特徴とする請求項１記載の暗号復号化装置。
【請求項９】
請求項１乃至８のいずれか１項に記載の暗号復号化装置にプログラムを入力するプログラム入力方法において、
ハードウェア記述言語で記述され、ハッシュ値を変換ハッシュ値に変換する変換プログラムを送信側暗号補助部又は送信側暗号部に書き込む送信側書込工程と、
前記変換プログラムを受信側暗号補助部又は受信側暗号部に書き込む受信側書込工程と、
を備えたことを特徴とするプログラム入力方法。
【請求項１０】
前記変換プログラムを、ハードウェアに実装可能な形式に変換する変換工程と、
ハードウェアに実装可能な形式に変換された変換プログラムを、送信装置及び受信装置にネットワークを介して送信し実装する実装工程と、
を更に備えたことを特徴とする請求項９記載のプログラム入力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高い安全性を有し、暗号化及び復号化を高速に行う暗号復号化装置、及び当該暗号復号化装置に入力されるプログラムの入力方法に関する。
【背景技術】
【０００２】
通信コストは低いがセキュリティの低いネットワーク、例えばインターネットを用いて、高いセキュリティを実現することは、特にプラントの遠隔監視制御等の利用においては重要である。このようなインターネットを用いて安全な通信を実現することを目的とする技術は多数知られている。
【０００３】
例えば、インターネットとは別の安全な回線を用いてインターネット上を流れるデータの暗号化等の加工方式を通信するもの（例えば特許文献１）、インターネット上の通信をトンネリング装置を用いて通信することでセキュリティを維持するもの（例えば特許文献２）、物理乱数を使い捨て暗号鍵として用いてデータを暗号化し、セキュリティを維持するもの（例えば特許文献３）、暗号化／復号化の回路をハードウェア記述言語によって記述し、通信先で暗号化／復号化回路を構成することで、暗号化したデータを通信するもの（例えば特許文献４）などが知られている（その他、特許文献５など）。
【０００４】
なお上述した特許文献２では、トンネリング装置はＤＥＳ暗号（米国Federal Information Processing Standardsとして、１９７６年に制定）あるいはＡＥＳ暗号(ＤＥＳに代わり２００１年に制定）を用いて、暗号化したデータをインターネット上で通信しているが、現在ではＤＥＳ暗号の安全性は低い。
【０００５】
また特許文献３では、使い捨て暗号鍵による暗号（バーナム暗号）は理論的に完全な安全性が保証されているが、プラント監視制御における利用においては、リアルタイム性が重要な要素となるため、暗号化、復号化の速度が重要となるが、一般的に安全性の高い暗号は複雑な処理が必要であり速度は遅くなる。
【特許文献１】特開平１０-３２７２１１号公報
【特許文献２】特開２００２-２６５８３２号公報
【特許文献３】特開２００３-３３３０２３号公報
【特許文献４】特開平１０-５５１３５号公報
【特許文献５】特許第３１４８１８１号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、これらの暗号技術は、潜在的な利用者として多くの人々を想定し、その中で互いに了解を得た少数の人たちのグループが、暗号鍵を交換し、秘密の通信を行なうことが目的である。潜在的な利用者は不特定多数であるため、暗号鍵の保管や運搬が楽であることが重要である。
【０００７】
この目的のため短い暗号鍵が好まれている。例えば、ＤＥＳ暗号では鍵の長さは５６ｂｉｔであり、ＡＥＳでは１２８ｂｉｔ、１９２ｂｉｔあるいは、２５６ｂｉｔである。この様な短い暗号鍵で暗号の安全性を高めるため、暗号アルゴリズムは複雑なものとなる。複雑な暗号アルゴリズムは処理が遅く、リアルタイム制御には適さない。
【０００８】
また、短い暗号鍵は鍵の盗難が容易である。１２８ｂｉｔあるいは２５６ｂｉｔの長さ暗号鍵は、人間が記憶するためには長すぎる場合があるので、暗号鍵が電子的に何処かに記録されることも多い。一度電子的に記録されると、ネットワークを通じて盗まれる可能性がある。２５６ｂｉｔ程度の小さなデータをネットワークで伝送する時間はほとんど一瞬であり、ネットワークを監視しても盗難を検出することは難しい。また、他のデータに紛れ込ませた場合はさらに検出が難しい。
【０００９】
一方、バーナム暗号を代表とする、長い鍵を使用する暗号は安全性を鍵の長さに求めている。バーナム暗号はデータと暗号鍵のｂｉｔ毎の排他的論理和を計算することで暗号化および復号化を行なうため、処理が極めて高速にできる。暗号鍵は非常に長いため、ネットワークを通じて鍵を盗むことは難しく、また盗難が行なわれた場合、ネットワークのトラフィックからこれを検出できる可能性が大きい。しかしながら純粋のバーナム暗号は、暗号鍵として乱数を使用するが、暗号鍵を使い捨てるため、データと同じ量の暗号鍵を予め、送信側と受信側に配置しておく必要がある。オンラインで周期的にデータを常時送信している用途で、例えば１時間当たり１ＧＢのデータを送信していれば、一年では８７６０ＧＢの乱数が必要である。ＤVＤを使用しても千枚以上必要となる。
【００１０】
また暗号鍵を使い捨てにせず、再使用する場合は、再使用の方法を秘密にすることが暗号の安全性の上で重要である。例えば、再使用の方法を通常のソフトウェアで実装した場合、ソフトウェアの盗難が安全性の上で脅威となる。
【００１１】
本発明は、このような点を考慮してなされたものであり、安全性が高く、暗号鍵として用いられる乱数が盗難されにくく、例え盗難された場合であっても盗難された事実の検出が容易であり、更に暗号化及び復号化を極めて高速に処理することのできる暗号復号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、送信装置と、送信装置にネットワークを介して接続された受信装置とを備えた暗号復号化装置において、送信装置が、平文データが入力される送信側インタフェース部と、送信側インタフェース部に接続され、送信側インタフェース部から入力される平文データを所定の長さで区切って分割平文データを生成して、当該分割平文データの各々に関する分割ハッシュ値を求める送信側暗号制御部と、送信側暗号制御部に接続され、送信側暗号制御部から入力される分割ハッシュ値を外部から分からない規則に従って分割変換ハッシュ値に変換するとともに、当該分割変換ハッシュ値を前記送信側暗号制御部に出力する送信側暗号補助部と、送信側暗号制御部に接続され、乱数が乱数番号で分類されて記録され、送信側暗号補助部から出力される分割変換ハッシュ値が送信側暗号制御部を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を送信側暗号制御部に出力する送信側乱数記録部とを有し、送信側暗号制御部が、前記対応乱数を暗号鍵として用いて、前記分割平文データを分割暗号データに変換するとともに、多数の分割暗号データを組み合わせることによって生成される暗号データと、多数の分割ハッシュ値を組み合わせて生成されるハッシュ値とを、送信側ネットワークインタフェース部を介して受信装置に出力し、受信装置が、送信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力される受信側ネットワークインタフェース部と、受信側ネットワークインタフェース部に接続され、受信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ハッシュ値を区切って分割ハッシュ値を生成する受信側暗号制御部と、受信側暗号制御部に接続され、受信側暗号制御部から入力される分割ハッシュ値を、送信側暗号補助部と同一の方法で分割変換ハッシュ値に変換するとともに、当該分割変換ハッシュ値を受信側暗号制御部に出力する受信側暗号補助部と、受信側暗号制御部に接続され、乱数が乱数番号で分類されて記録され、受信側暗号補助部から出力される分割変換ハッシュ値が、受信側暗号制御部を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を受信側暗号制御部に出力する受信側乱数記録部とを有し、受信側暗号制御部が、受信側乱数記録部から入力される対応乱数を暗号鍵として用いて、前記分割暗号データを分割平文データに復号するとともに、多数の分割平文データを組み合わせることによって平文データを復号して、受信側インタフェース部を介して外部へ出力することを特徴とする暗号復号化装置である。
【００１３】
本発明は、送信装置と、送信装置にネットワークを介して接続された受信装置とを備えた暗号復号化装置において、送信装置が、平文データが入力される送信側インタフェース部と、送信側インタフェース部に接続され、送信側インタフェース部から平文データが入力されると、平文データを所定の長さで区切って分割平文データを生成する送信側制御部と、送信側制御部に接続され、送信側制御部から入力される分割平文データの各々に関する分割ハッシュ値を求めるハッシュ値計算部と、ハッシュ値計算部に接続され、ハッシュ値計算部から入力される分割ハッシュ値を外部から分からない規則に従って分割変換ハッシュ値に変換する送信側ハッシュ値変換部と、送信側ハッシュ値変換部に接続されるとともに、乱数が乱数番号で分類されて記録され、送信側ハッシュ値変換部から分割変換ハッシュ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する送信側乱数記録部と、送信側乱数記録部に接続され、送信側乱数記録部の乱数を更新する送信側乱数更新部と、前記対応乱数を暗号鍵として用いて、送信制御部からの前記分割平文データを分割暗号データに変換する平文データ暗号化部とを含む送信側暗号部とを有するとともに、送信側暗号部から入力される前記分割暗号データを組み合わせることによって生成される当該暗号データと、前記分割ハッシュ値を組み合わせて生成されるハッシュ値とを受信装置に出力し、受信装置が、ネットワークを介して送信側ネットワークインタフェース部から暗号データ及びハッシュ値が入力される受信側ネットワークインタフェース部と、受信側ネットワークインタフェース部に接続され、受信側ネットワークインタフェース部を介して暗号データ及びハッシュ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ハッシュ値を区切って分割ハッシュ値を生成する受信側制御部と、受信側制御部に接続され、受信側制御部から入力される分割ハッシュ値を、送信側ハッシュ値変換部と同一の方法で分割変換ハッシュ値に変換する受信側ハッシュ値変換部と、受信側ハッシュ値変換部に接続されるとともに、乱数が乱数番号で分類されて記録され、受信側ハッシュ値変換部から分割変換ハッシュ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する受信側乱数記録部と、受信側乱数記録部に接続され、受信側乱数記録部の乱数を更新する受信側乱数更新部と、前記対応乱数を暗号鍵として用いて、前記分割暗号データを分割平文データに復号する平文データ復号化部とを含む受信側暗号部とを有するとともに、当該分割平文データを組み合わせることによって平文データを復号して外部へ出力することを特徴とする暗号復号化装置である。
【発明の効果】
【００１４】
本発明によれば、安全性が高く、暗号鍵として用いられる乱数が盗難されにくく、例え盗難された場合であっても盗難された事実の検出が容易であり、更に暗号化及び復号化を極めて高速に処理することのできる暗号復号化装置を提供することができる。
【発明を実施するための最良の形態】
【００１５】
第１の実施の形態
以下、本発明に係る暗号復号化装置の第１の実施の形態について、図面を参照して説明する。ここで、図１乃至図４は本発明の第１の実施の形態を示す図である。
【００１６】
図１に示すように、本発明の暗号復号化装置は、送信装置１０１と、送信装置１０１にネットワーク１１３を介して接続された受信装置１０２とを備えている。
【００１７】
本発明を、プラントの監視制御を遠隔地に設置された監視制御ステーションから行なう場合に適用すると、プラント及び監視制御ステーション双方から送信と受信が行なわれる。しかしながら、暗号通信に関しては、プラントと監視制御ステーションは対等と考え、以下プラントに送信装置１０１を、監視制御ステーションに受信装置１０２を設置したものとして説明する。
【００１８】
図１に示すように、送信装置１０１は、平文データが入力される送信側インタフェース部１０３と、送信側インタフェース部１０３に接続され、送信側インタフェース部１０３から入力される平文データを所定の長さで区切って分割平文データを生成して、当該分割平文データの各々に関する分割ＣＲＣ値（分割ハッシュ値）を求める送信側暗号制御部１０４と、送信側暗号制御部１０４に接続され、送信側暗号制御部１０４から入力される分割ＣＲＣ値を外部から分からない規則に従って分割変換ＣＲＣ値（分割変換ハッシュ値）に変換するとともに、当該分割変換ＣＲＣ値を送信側暗号制御部１０４に出力する送信側暗号補助部１０６とを有している。
【００１９】
また図１に示すように、送信側暗号制御部１０４には、乱数が乱数番号で分類されて記録され、送信側暗号補助部１０６から出力される分割変換ＣＲＣ値が送信側暗号制御部１０４を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を送信側暗号制御部１０４に出力する送信側乱数記録部１０５が接続されている。
【００２０】
また図１に示すように、送信側暗号制御部１０４は、対応乱数を暗号鍵として用いて、前記分割平文データを分割暗号データに変換するとともに、当該分割暗号データを組み合わせることによって生成される暗号データと、前記分割ＣＲＣ値を組み合わせて生成されるＣＲＣ値（ハッシュ値）とを受信装置１０２に出力する送信側ネットワークインタフェース部１０７に接続されている。
【００２１】
また図１に示すように、受信装置１０２は、送信側ネットワークインタフェース部１０７から暗号データ及びＣＲＣ値が入力される受信側ネットワークインタフェース部１１０と、受信側ネットワークインタフェース部１１０に接続され、受信側ネットワークインタフェース部１１０から暗号データ及びＣＲＣ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ＣＲＣ値を区切って分割ＣＲＣ値を生成する受信側暗号制御部１０９と、受信側暗号制御部１０９に接続され、受信側暗号制御部１０９から入力される分割ＣＲＣ値を、送信側補助部１０６と同一の方法で分割変換ＣＲＣ値に変換するとともに、当該分割変換ＣＲＣ値を受信側暗号制御部１０９に出力する受信側暗号補助部１１１とを有している。
【００２２】
また図１に示すように、受信側暗号制御部１０９には、乱数が乱数番号で分類されて記録され、受信側暗号補助部１１１から出力される分割変換ＣＲＣ値が、受信側暗号制御部１０９を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を受信側暗号制御部１０９に出力する受信側乱数記録部１１２に接続されている。
【００２３】
また図１に示すように、受信側暗号制御部１０９には、受信側乱数記録部１１２から入力される対応乱数を暗号鍵として用いて、前記分割暗号データを分割平文データに復号するとともに、当該分割平文データを組み合わせることによって平文データを復号して外部（操作者など）へ出力する受信側インタフェース部１０８に接続されている。
【００２４】
図１に示すように、送信装置１０１は、平文データが入力される送信側インタフェース部１０３と、送信側インタフェース部１０３に接続され、送信側インタフェース部１０３から入力された平文データを所定の長さで区切り、区切った平文データの各々に関するＣＲＣ値を計算する送信側暗号制御部１０４と、送信側暗号制御部１０４に接続され、送信側暗号制御部１０４から入力されたＣＲＣ値を外部から分からない規則に従って変換ＣＲＣ値に変換するとともに、当該変換ＣＲＣ値を前記送信側暗号制御部１０４に出力する送信側暗号補助部１０６とを有している。
【００２５】
また図１に示すように、送信側暗号制御部１０４には、乱数が乱数番号で分類されて記録され、送信側暗号補助部１０６から出力された変換ＣＲＣ値が送信側暗号制御部１０４を介して乱数番号として入力されると、当該乱数番号に対応する対応乱数を送信側暗号制御部１０４に出力する送信側乱数記録部１０５が接続されている。
【００２６】
次に上述した暗号復号化装置の各構成部分について、更に詳しく説明する。
【００２７】
（乱数記録部）
送信側乱数記録部１０５は、暗号鍵として用いる数十ＧＢから数百ＧＢの大量の乱数が記録されている。乱数には８ＫＢ毎に３２ｂｉｔの乱数番号が付けられている。送信側乱数記録部１０５は、乱数番号が入力されると乱数番号に対応した１ＫＢの乱数を出力する。
【００２８】
送信側乱数記録部１０５に記録される乱数としては、特許番号３０３４５１６号及び特許番号２９８０５７６号に開示されている物理乱数を用いることができる。
【００２９】
受信側乱数記録部１１２は、送信側乱数記録部１０５と同じ乱数を記録している。このため、同じ乱数番号を送信側乱数記録部１０５と受信側乱数記録部１１２に入力すると、送信側乱数記録部１０５から出力される対応乱数と、受信側乱数記録部１１２から出力される対応乱数は同一のものになる。送信側乱数記録部１０５及び受信側乱数記録部１１２としては、例えばハードディスク装置、光ディスク、光磁気ディスク装置又はフラッシュメモリを用いることができる。
【００３０】
（暗号補助部）
送信側暗号補助部１０６は、３２ｂｉｔの数値を外部からは判らない方法によって３２ｂｉｔの別の数値に変換することができる。具体的には変換処理はantifuseタイプのField Programmable Gate Array(antifuse-ＦＰＧＡ)にプログラムされる。antifuseタイプＦＰＧＡは、ＶＨＤＬ等のハードウェア記述言語によって記述された変換処理アルゴリズムに基づいて内部の接点を融着する(antifuse)ことで、内部の処理をプログラムされる。また、接点をフラッシュメモリによって実現するフラッシュタイプのＦＰＧＡを使用することもできる。
【００３１】
受信側暗号補助部１１１は、送信側暗号補助部１０６と同一のものである。すなわち同一の３２ｂｉｔの数値を送信側暗号補助部１０６と受信側暗号補助部１１１に入力すると、送信側暗号補助部１０６から出力される３２ｂｉｔの数値と、受信側暗号補助部１１１から出力される３２ｂｉｔの数値とは同一の数値になる。
【００３２】
次に図２を用いて、暗号補助部１０６，１１１における３２ｂｉｔの数値を変換する方法について説明する。
【００３３】
図２に示すように、まず、３２ｂｉｔの数値データがシリアル信号としてシリアル/パラレル変換部２０１に入力され、パラレル信号に変換される。次に、パラレル信号に変換された３２ｂｉｔの数値データが入力バッファ２０２に送られる。この入力バッファ２０２には、３２ｂｉｔの数値データを４ｂｉｔ毎に分割出力するためのポート２０３が設けられている。
【００３４】
次に、３２ｂｉｔの数値データは、ポート２０３から、４ｂｉｔ毎に順序を入れ替えられて、４ｂｉｔ変換テーブル２０４の列に入力される。この際に行われる順序の入れ替え方法のプログラムはＶＨＤＬによって記述されている。
【００３５】
４ｂｉｔ変換テーブル２０４では、入力した４ｂｉｔの数値データをプログラムされた変換方式に従って別の４ｂｉｔの数値データに変換する。４ｂｉｔ変換テーブル２０４による数値データの変換は入力と出力が一対一に対応している。すなわち、異なる入力データは、必ず異なる出力データに変換される。
【００３６】
以下に、ＶＨＤＬによる４ｂｉｔデータ変換の記述例を示す。
process (IN) begin
case IN is
when "0000"  => OUT <= "0010";
when "0001"  => OUT <= "1001";
when "0010"  => OUT <= "1101";
when "0011"  => OUT <= "0000";
when "0100"  => OUT <= "1010";
when "0101"  => OUT <= "1100";
when "0110"  => OUT <= "0100";
when "0111"  => OUT <= "0001";
when "1000"  => OUT <= "1111";
when "1001"  => OUT <= "1110";
when "1010"  => OUT <= "0011";
when "1011"  => OUT <= "1011";
when "1100"  => OUT <= "1000";
when "1101"  => OUT <= "0110";
when "1110"  => OUT <= "0111";
when "1111"  => OUT <= "0101";
end case;
end process;
【００３７】
次に、４ｂｉｔ変換テーブル２０４からの出力される４ｂｉｔの数値データは、順序を入れ替えて出力バッファ２０６の入力ポート２０５に送信される。この際の出力順序の入れ替え方法のプログラムも、ＶＨＤＬで記述されている。
【００３８】
次に、出力バッファ２０６において、４ｂｉｔの数値データから３２ｂｉｔの数値データが生成され、この３２ｂｉｔの数値データがパラレル／シリアル変換部２０７に送信されて、パラレル／シリアル変換部２０７でシリアルデータに変換され出力される。
【００３９】
なお、antifuse タイプＦＰＧＡを用いて構成された暗号補助部１０６は、名刺程度の大きさで実装できるため、プラント及び監視制御ステーションへ容易に持ち運ぶことができる。またハードウェアであるため、ネットワーク１１３を通じてデータが盗難されることもない。
【００４０】
antifuseタイプＦＰＧＡの融着された接点は１００ナノメートル以下と極めて小さく、チップ上部から見えないため、処理アルゴリズムを外部から調べることは極めて困難であり、複製を作ることはできない。フラッシュタイプのＦＰＧＡの場合、接点は内部の微小なセルへ電荷を加えることで決められる。従ってこの場合、も処理アルゴリズムを外部から調べることは極めて困難である。
【００４１】
なお、送信側暗号制御部１０４及び受信側暗号制御部１０９は、一般的なコンピュータを用いて実装される。
【００４２】
次に、このような構成からなる本実施の形態の作用について述べる。
【００４３】
まず、送信側インタフェース部１０３に平文データが入力される。
【００４４】
次に、送信側暗号制御部１０４において、送信側インタフェース部１０３から送信側暗号制御部１０４に平文データが入力され、平文データが所定の長さで区切られて分割平文データが生成される。その後、送信側暗号制御部１０４において、分割平文データの各々に関する分割ＣＲＣ値が求められる。
【００４５】
次に、送信側暗号補助部１０６において、送信側暗号制御部１０４から入力される分割ＣＲＣ値を外部から分からない規則に従って分割変換ＣＲＣ値に変換する。その後、分割変換ＣＲＣ値を送信側暗号制御部１０４に出力する。
【００４６】
次に、送信側乱数記録部１０５において、送信側暗号補助部１０６から出力される分割変換ＣＲＣ値が、送信側暗号制御部１０４を介して乱数番号として入力される。その後、入力された乱数番号に対応する対応乱数が送信側暗号制御部１０４に出力される。
【００４７】
次に、送信側暗号制御部１０４において、対応乱数を暗号鍵として用いて、分割平文データを分割暗号データに変換する。その後、このようにして変換された多数の分割暗号データを組み合わせることによって暗号データを生成する。このとき、送信側暗号制御部１０４において、多数の分割ＣＲＣ値を組み合わせてＣＲＣ値が生成される。次に、送信側ネットワークインタフェース部１０７を介して暗号データ及びＣＲＣ値が受信装置１０２に出力される。
【００４８】
次に、暗号データ及びＣＲＣ値が送信側ネットワークインタフェース部１０７に入力される。
【００４９】
次に、受信側暗号制御部１０９に受信側ネットワークインタフェース部１１０から暗号データ及びＣＲＣ値が入力される。その後、受信側暗号制御部１０９において、暗号データを区切って分割暗号データが生成される。このとき、受信側暗号制御部１０９において、ＣＲＣ値を区切って分割ＣＲＣ値も生成される。
【００５０】
次に、受信側暗号補助部１１１において、受信側暗号制御部１０９から入力される分割ＣＲＣ値が、送信側暗号補助部１０６と同一の方法で分割変換ＣＲＣ値に変換された後、受信側暗号制御部１０９に出力される。
【００５１】
次に、受信側乱数記録部１１２において、受信側暗号補助部１１１から出力される分割変換ＣＲＣ値が、受信側暗号制御部１０９を介して乱数番号として入力されると、この乱数番号に対応する対応乱数が受信側暗号制御部１０９に出力される。
【００５２】
次に、受信側暗号制御部１０９において、受信側乱数記録部１１２から入力される対応乱数を暗号鍵として用いて、分割暗号データが分割平文データに復号される。その後、多数の分割平文データを組み合わせることによって平文データが復号される。最後に、この平文データが受信側インタフェース部１０８を介して外部（操作者など）へ出力される。
【００５３】
次に図３を用いて、送信装置１０１において行われる処理について、更に詳述する。
【００５４】
まず、送信側インタフェース部１０３から平文データを受信することで処理を開始し、データ領域ｂuｆに平文データ全体を入れる（平文データ入力工程３０１）。またこのとき、送信のための暗号データを格納するｓｂuｆ及び変換された変換ＣＲＣ値を格納するｃｂuｆを空にする。
【００５５】
次に、ｂuｆの平文データを先頭から８ＫＢ単位で取出し、データ領域tｂuｆに入れて分割平文データを生成する（分割平文データ生成工程３０３）。このとき、ｂuｆに入っているデータは、取出された分だけ減る。
【００５６】
tｂuｆデータに対し巡回冗長検査の方式により３２ｂｉｔのＣＲＣ値を計算する（分割ＣＲＣ値計算工程３０４）。ＣＲＣ値の計算方法のとしては、例えばＲＦＣ２０８３に記載されている。なお巡回冗長検査の方式以外の適当なＣＲＣ値計算法を用いても良い。
【００５７】
平文データに対して計算されたＣＲＣ値を暗号補助部に送信し、返信として変換されたＣＲＣ値を得る（分割ＣＲＣ値変換工程３０５）。
【００５８】
変換されたＣＲＣ値を乱数番号として、乱数記録部に送信し、返信として８ＫＢの乱数を得る（対応乱数取得工程３０６）。その後、この対応乱数をデータ領域ｄｂuｆに入れる。
【００５９】
tｂuｆに格納された８ＫＢの平文データと、ｄｂuｆに格納された８ＫＢの対応乱数に対して、ｂｉｔ毎の排他的論理和を計算し、結果をデータ領域ｓｂuｆに追加する（平文暗号化工程３０７）。ｓｂuｆには暗号化されたｂuｆのデータが蓄積される。排他的論理和は極めて高速に処理可能である。また、変換前のＣＲＣ値をｃｂuｆに追加する。
【００６０】
次に、ループ終了条件の判定を行う（送信側終了判定工程３０２）。具体的には、ｂuｆが空でないかどうかを調べる。ｂuｆが空でなければ、上述した工程を、分割平文データ生成工程３０３から順次行っていき、ｂuｆが空になっていれば、ループを終了して、ｓｂuｆとｃｂuｆに格納された暗号データと、ＣＲＣ値を送信側ネットワークインタフェース部１０７およびネットワーク１１３を介して監視制御ステーションにある受信装置１０２に送信する（データ送信工程３０８）。
【００６１】
なお、ループの最後では、ｂuｆに入っているデータが８ＫＢ未満のこともあり得る。この場合はtｂuｆの８ＫＢのデータの不足分を０を入れて埋める。
【００６２】
また、図３には描かれていないが暗号制御部を実装するコンピュータは送信側ネットワークインタフェース部１０７の通信プロトコルに関係した処理も行なう。
【００６３】
次に図４を用いて、受信装置１０２において行われる処理について、更に詳述する。
【００６４】
受信側暗号処理部は受信側ネットワークインタフェース部１１０から暗号データ及びＣＲＣ値を受信することで処理を開始し、受信した暗号データをデータ領域ｒｂuｆに、ＣＲＣ値をデータ領域ｃｂuｆに入れる（受信データ入力工程４０１）。
【００６５】
次に、ｒｂuｆの暗号データを先頭から８ＫＢ単位で取出し、データ領域tｂuｆに入れる（分割暗号データ入力工程４０３）。この際、ｒｂuｆに入っている暗号データは、取出された分だけ減る。
【００６６】
次に、ｃｂuｆからＣＲＣ値を一つ取出して暗号補助部１１１に送信し、返信として変換された変換ＣＲＣ値を得る（分割変換ＣＲＣ取得工程４０４）。なおｃｂuｆから取出される分割ＣＲＣ値はtｂuｆに格納された分割暗号データに対応したものである。また、分割ＣＲＣ値を取出した後ｃｂuｆに格納されているＣＲＣ値は一つ減る。
【００６７】
次に分割変換ＣＲＣ値を乱数番号として、乱数記録部に送信し、返信として８ＫＢの乱数を得る（対応乱数取得工程４０５）。このようにして取得した対応乱数をデータ領域ｒｂuｆに入れる。なお、この対応乱数は、tｂuｆに格納されている暗号データへ暗号化する時に用いた対応乱数と同一のものである。
【００６８】
tｂuｆに格納された８ＫＢの暗号データとｒｂuｆに格納された８ＫＢの対応乱数に対して、ｂｉｔ毎の排他的論理和を計算して、分割平文データを復号しデータ領域ｂuｆに追加する（平文データ復号工程４０６）。
【００６９】
次に、ループ終了条件の判定が行われ、ｒｂuｆが空でないかどうかを調べる（受信側終了判定工程４０２）。ｒｂuｆが空の場合にはループを終了し、ｂuｆのデータを受信側インタフェース部１０８を介して受信装置１０２の外部（操作者など）に送信する（復号平文データ送信工程４０７）。また、ｒｂuｆが空になっていない場合には、分割暗号データ入力工程４０３から順に、上述した工程を繰り返し行う。
【００７０】
なお、ループの最後では、送信装置１０１の暗号制御部１０４の処理において、データの量は必ず８ＫＢの倍数になるように不足部分には０が加えられる。
【００７１】
また、図４には描かれていないが暗号制御部を実装するコンピュータは受信側ネットワークインタフェース部１１０の通信プロトコルに関係した処理も行なう。
【００７２】
上述した本実施の形態の暗号復号化装置は、長い乱数を暗号鍵として使用しているため、暗号自体の安全性が高い。また本実施の形態の暗号復号化装置において暗号鍵として用いられる乱数は、大容量のためネットワーク１１３を通じて盗難することが難しく、また盗難が行なわれた場合であっても、ネットワーク１１３の監視によってその事実を検出が容易である。ま本実施の形態の暗号復号化装置における乱数データから暗号鍵を抽出する方法は、外部から処理方法を調べる手段のないハードウェアとして実現しているため安全性が高い。さらに、暗号化及び復号化のアルゴリズムが単純であるため、極めて高速に処理することができる。
【００７３】
第２の実施の形態
次に図５乃至図１１により本発明の第２の実施の形態について説明する。図５乃至図１１に示す第２の実施の形態は、構成の異なる送信装置１０１及び受信装置１０２を用いたものであり、他は図１乃至図４に示す第１の実施の形態と略同一である。
【００７４】
図５乃至図１１に示す第２の実施の形態において、図１乃至図４に示す第１の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【００７５】
図５に示すように、送信装置１０１は、平文データが入力される送信側インタフェース部１０３と、送信側インタフェース部１０３に接続され、送信側インタフェース部１０３から平文データが入力されると、平文データを所定の長さで区切って分割平文データを生成する送信側制御部５０４と、送信側制御部５０４に接続された送信側暗号部５０６とを備えている。
【００７６】
このうち送信側暗号部５０６は、図５及び図６に示すように、送信側制御部５０４に接続され、送信側制御部５０４から入力される分割平文データの各々に関する分割ＣＲＣ値（分割ハッシュ値）を求めるＣＲＣ計算部（ハッシュ値計算部）６０２と、ＣＲＣ計算部６０２に接続され、ＣＲＣ計算部６０２から入力される分割ＣＲＣ値を外部から分からない規則に従って分割変換ＣＲＣ値（分割ハッシュ値）に変換する送信側ＣＲＣ変換部（送信側ハッシュ値変換部）６０５と、送信側ＣＲＣ変換部６０５に接続されるとともに、乱数が乱数番号で分類されて記録され、送信側ＣＲＣ変換部６０５から分割変換ＣＲＣ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する送信側乱数記録部５０７と、送信側乱数記録部５０７に接続され、送信側乱数記録部５０７の乱数を更新する送信側乱数更新部６０８と、対応乱数を暗号鍵として用いて、送信制御部からの分割平文データを分割暗号データに変換する送信側排他的論理和計算部（平文データ暗号化部）６０６とを含んでいる。
【００７７】
また送信側入力部６０１には、ＣＲＣ計算部６０２及び送信側排他的論理和計算部６０６に平文データを出力する送信側バッファ６０３が接続されている。
【００７８】
上述した構成を有する送信装置１０１は、送信側暗号部５０６から入力される前記分割暗号データを組み合わせることによって生成される当該暗号データと、分割ＣＲＣ値を組み合わせて生成されるＣＲＣ値とを受信装置１０２に出力する。なおこ暗号データ及びＣＲＣ値は、送信側ネットワークインタフェース部１０７を介して受信装置１０２に出力される。
【００７９】
また図５に示すように、受信装置１０２は、ネットワーク１１３を介して送信側ネットワークインタフェース部１０７から暗号データ及びＣＲＣ値が入力される受信側ネットワークインタフェース部１１０と、受信側ネットワークインタフェース部１１０に接続され、受信側ネットワークインタフェース部１１０を介して暗号データ及びＣＲＣ値が入力されると、暗号データを区切って分割暗号データを生成するとともに、ＣＲＣ値を区切って分割ＣＲＣ値を生成する受信側制御部５０８と、受信側制御部５０８に接続された受信側暗号部５０９と、受信側制御部５０８に接続され、受信側制御部５０８から出力されるデータを外部（操作者など）へ出力する受信側インタフェース部１０８とを備えている。
【００８０】
このうち受信側暗号部５０９は、図５及び図７に示すように、受信側制御部５０８に接続され、受信側制御部５０８から入力される分割ＣＲＣ値を、送信側ＣＲＣ変換部６０５と同一の方法で分割変換ＣＲＣ値に変換する受信側ＣＲＣ変換部（受信側ハッシュ値計算部）６１５と、受信側ＣＲＣ変換部６１５に接続されるとともに、乱数が乱数番号で分類されて記録され、受信側ＣＲＣ変換部６１５から分割変換ＣＲＣ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する受信側乱数記録部５１７と、受信側乱数記録部５１７に接続され、受信側乱数記録部５１７の乱数を更新する受信側乱数更新部６１８と、対応乱数を暗号鍵として用いて、分割暗号データを分割平文データに復号する平文データ復号化部６１６とを含んでいる。
【００８１】
また受信装置１０２は、分割平文データを組み合わせることによって復号される平文データを外部（操作者など）に出力する受信側インタフェース部１０８を有している。
【００８２】
なお受信側制御部５０８には、分割暗号データ及び分割ＣＲＣ値が入力される受信側入力部６１１が接続され、この受信側入力部６１１には、送信側排他的論理和計算部６１６に平文データを出力する送信側バッファ６１３が接続されている。
【００８３】
また送信側乱数記録部５０７と受信側乱数記録部５１０には、同一の乱数が記録されている。また、送信装置１０１において、送信側制御部５０４は、一般的なコンピュータを使用して実装され、送信装置１０１全体の制御を行なう。
【００８４】
また暗号部（送信側暗号部５０６及び受信側暗号部５０９）は、antifuseあるいはフラッシュタイプのＦＰＧＡとして実装される。暗号部５０６，５０９は、小型で簡単に持ち運びが可能であるが、内部構造を調べることは極めて困難で、複製を作ることができない。
【００８５】
また乱数記録部（送信側乱数記録部５０７及び受信側乱数記録部５１０）は、フラッシュメモリあるいは小型のハードディスクを使って実装され、数百ＭＢから数ＧＢの乱数を記録する。
【００８６】
図５において、受信装置１０２はネットワーク１１３を介して送られてきた暗号データとＣＲＣ値を用いてデータを暗号化し、インタフェース部１０８を通じて、受信装置１０２に送信する。
【００８７】
また、受信側暗号部５０９は送信装置１０１の送信側暗号部５０６と同一であり、受信側乱数記録部５１０は送信装置１０１の送信側乱数記録部５０７と同一である。このため、送信側乱数更新部６０８によって更新される乱数と、受信側乱数更新部６１８によって更新される乱数は同一であり、同じ乱数番号を送信側乱数記録部５０７と受信側乱数記録部５１７に入力すると、送信側乱数記録部５０７から出力される対応乱数と、受信側乱数記録部５１７から出力される対応乱数は同一のものになる。
【００８８】
次に、このような構成からなる本実施の形態の作用について述べる。
【００８９】
まず、送信側インタフェース部１０３は、プラント（図示せず）からプロセスデータを平文データとして受信し、送信側制御部５０４に通知する（図５参照）。
【００９０】
次に、送信側暗号部５０６は、送信側制御部５０４から送られてきた１ＫＢの平文データを暗号化し、送信側制御部５０４に返す（図５参照）。
【００９１】
次に、シリアルデータとして１ＫＢの分割平文データが送信側暗号部５０６の送信側入力部６０１に入力され、送信側バッファ６０３に格納される。次に、送信側バッファ６０３に格納された平文データに対し、ＣＲＣ計算部６０２によって分割ＣＲＣ値（分割ハッシュ値）が計算される。次に、分割ＣＲＣ値は送信側ＣＲＣ変換部６０５によって、第１の実施の形態の送信側暗号補助部１０６と同様に分割変換ＣＲＣ値（分割変換ハッシュ値）に変換される。このため、送信側暗号部５０６に入力された分割平文データに対し、変換後の変換ＣＲＣ値がどうなるかを外部から調べることは極めて困難である。
【００９２】
次に、変換された分割変換ＣＲＣ値は送信側乱数記録部５０７に入力され、１ＫＢの対応乱数が送信側排他的論理和計算部６０６に出力される。送信側排他的論理和計算部６０６には送信側バッファ６０３から分割平文データが入力され、対応乱数と平文データのｂｉｔ毎の排他的論理和を計算して分割暗号データを得て、送信側出力部６０７に出力する。
【００９３】
次に、送信側制御部５０４は、送信側暗号部５０６の送信側出力部６０７から入力される分割暗号データを組み合わせることによって生成される暗号データと、分割ＣＲＣ値を組み合わせて生成されるＣＲＣ値とをシリアルデータとして、送信側ネットワークインタフェース部１０５を介して受信装置１０２に出力する。
【００９４】
なお図６に示すように、送信側乱数記録部５０７への乱数データの書込みが送信側乱数更新部６０８によって行われ、送信側乱数記録部５０７の乱数データを送信側暗号部５０６の外部から読み出す方法は設けられていない。
【００９５】
受信側ネットワークインタフェース部１１０は、ネットワーク１１３から暗号化され暗号データ及びＣＲＣ値を受信すると、当該暗号データ及びＣＲＣ値を受信側制御部５０８に送信する（図５参照）。
【００９６】
次に、受信側制御部５０８は、入力された暗号データを所定の長さで区切って分割平文データを生成するとともに、ＣＲＣ値を区切って分割ＣＲＣ値を生成し、当該分割平文データ及び分割ＣＲＣ値を受信側暗号部５０９の受信側入力部６１１に入力する。
【００９７】
次に、受信側ＣＲＣ変換部６１５は、受信側制御部５０８から入力される分割ＣＲＣ値を、送信側ＣＲＣ変換部６０５と同一の方法で分割変換ＣＲＣ値に変換する。
【００９８】
次に、受信側乱数記録部５１７は、受信側ＣＲＣ変換部６１５から分割変換ＣＲＣ値が乱数番号として入力されると、当該乱数番号に対応する対応乱数を出力する。
【００９９】
次に、受信側排他的論理和計算部（平文データ復号化部）６１６は、対応乱数を暗号鍵として用いて、分割暗号データを分割平文データに復号する。
【０１００】
次に、受信側制御部５０８は、当該分割平文データを組み合わせることによって平文データを復号して、受信側インタフェース部１０８を介して外部（操作者など）へ出力する。
【０１０１】
なお図７に示す受信側ＣＲＣ変換部６１５には、ＣＲＣバッファ６０４からの分割ＣＲＣ値が優先して入力される。このＣＲＣバッファ６０４は、受信装置１０２において受信側暗号部５０９に直接入力された分割ＣＲＣ値を格納するものである。
【０１０２】
次に図８を用いて、送信側制御部５０４において行われる処理について、更に詳述する。
【０１０３】
まず送信側制御部５０４は送信側インタフェース部１０３から平文データを受信することで処理を開始し、受信したデータをデータ領域ｂuｆに格納する（平文データ入力工程７０１）。また、ｓｂuｆ及びｃｂuｆを空にする。
【０１０４】
次に送信側制御部５０４は、ｂuｆから平文データを先頭から１ＫＢ単位で取出し（分割平文データ生成工程７０３）、送信側暗号部５０６に送信する。
【０１０５】
次に送信側制御部５０４は、送信側暗号部５０６から返信されてきた暗号データとＣＲＣ値をそれぞれデータ領域ｓｂuｆに及びｃｂuｆに追加する（暗号データ及びＣＲＣ値生成工程７０４）。
【０１０６】
次に送信側制御部５０４は、ループ終了条件の判定を行う（送信側終了判定工程７０２）。具体的には、ｂuｆが空でないかどうかを調べる。ｂuｆが空でなければ、上述した工程を、分割平文データ生成工程７０３から順次行っていき、ｂuｆが空になっていれば、ループを終了して、ｓｂuｆに格納されたデータと、ｃｂuｆに格納されたＣＲＣ値とを、ネットワークインタフェース部１０７を通じて受信装置１０２に送信する（データ送信工程７０５）。
【０１０７】
次に図９を用いて、受信側制御部５０８において行われる処理について、更に詳述する。
【０１０８】
まず受信側制御部５０８は、受信側ネットワークインタフェース部１１０からデータを受信することで処理を開始し、受信した暗号データをデータ領域ｒｂuｆに、ＣＲＣ値をｃｂuｆに格納する（受信データ入力工程８０１）。このとき同時に、ｂuｆを空にする。
【０１０９】
次に受信側制御部５０８は、ｒｂuｆの暗号データを先頭から１ＫＢ取出すとともに、ｃｂuｆから対応する分割ＣＲＣ値を取出し、受信側暗号部５０９に送信する（分割暗号データ入力工程８０３）。
【０１１０】
このとき、送信側制御部５０４の場合と異なり、受信側入力部６１１を通して分割ＣＲＣ値が入力されＣＲＣバッファ６０４に格納されるため、受信側ＣＲＣ変換部６１５は入力された分割ＣＲＣ値を変換した分割変換ＣＲＣ値を乱数番号として受信装置１０２の受信側乱数記録装置５１０に送信する（図７参照）。受信側乱数記録装置５１０は送信側乱数記録装置５０７と同一の乱数が記録されているため、送信時と同じ１ＫＢの対応乱数が出力される。受信側排他的論理和計算部６０６で分割暗号データとｂｉｔ毎の排他的論理和が計算され、分割平文データが復号されて、受信側出力部６１７を通して受信側制御部５０８に返信される。
【０１１１】
次に受信側制御部５０８は、受信側暗号部５０９から返信されてきた分割平文データをｂuｆに追加する（平文データ復号工程８０４）。
【０１１２】
次に受信側制御部５０８は、受信側のループの終了判定を行う（受信側終了判定工程）。具体的には、ｒｂuｆが空でなければ、上述した工程を、分割暗号データ入力工程８０３から順次行っていき、ｂuｆが空になっていれば、ループを終了して、ｂuｆに格納された復号平文データを、データインタフェース部１０８を介して受信装置１０２の外部（操作者など）に送信する（復号平文データ出力工程８０５）。
【０１１３】
本実施の形態によれば、暗号鍵となる乱数は、乱数単体では読出し不可能なハードウェアの内部に格納されるため、ネットワーク１１３を経由しての暗号鍵の盗難を完全に防ぐことができる。また、第１の実施の形態における送信側乱数記録部５０７と送信側暗号補助部１０６、及び受信側乱数記録部５１７と受信側暗号補助部１１１が一体化される他、送信側暗号制御部１０４及び受信側暗号制御部１０９から、暗号に特有の処理がなくなるため、一般的なコンピュータによる実装が簡単なものとなる。
【０１１４】
なお上述した平文データ暗号化部として送信側排他的論理和計算部６０６の代わりに、図１０に示すように、送信側ＡＥＳ暗号部６０６Ｄを用い、平文データ復号化部として受信側排他的論理和計算部６１６の代わりに、図１１に示すように、受信側ＡＥＳ暗号部６１６Ｄを用いてもよい。本実施の形態においては、送信側乱数記録部５０７はＡＥＳ暗号で暗号鍵として使用される２５６ｂｉｔの乱数を送信側ＡＥＳ暗号部６０６Ｄに送り、受信側乱数記録部５１７はＡＥＳ暗号で暗号鍵として使用される２５６ｂｉｔの乱数を受信側ＡＥＳ暗号部６１６Ｄに送る。
【０１１５】
なおＡＥＳ暗号は米国商務省がFederal Information Processing Standardsとして制定されたものでアルゴリズムが公開されている。
【０１１６】
このようにＡＥＳ暗号部（送信側ＡＥＳ暗号部６０６Ｄ及び受信側ＡＥＳ暗号部６１６Ｄ）を用いることによって、暗号鍵として使用される乱数を、第１の実施の形態の１／４とすることができるため、同じ長さの平文を暗号化するのに必要な乱数の量が少なくでき、このため送信側乱数記録部５０７及び受信側乱数記録部５１７の容量が少なくすることができる。また、使用される暗号鍵は受信側暗号部５０９がない限り知ることができないので安全性が高い。さらに暗号の鍵を１ＫＢ毎に切替えることができるため、安全性が高い。
【０１１７】
第３の実施の形態
次に本発明の第３の実施の形態について説明する。第３の実施の形態は、送信側暗号制御部１０４において、対応乱数を暗号鍵として平文データを暗号データに変換する前に、平文データの順序を並べ替えるとともに、受信側暗号制御部１０９において、対応乱数を暗号鍵として暗号データを平文データに復号した後に、当該平文データを送信側暗号制御部１０４とは逆に並べ替えるものであり、他は図１乃至図４に示す第１の実施の形態と略同一である。
【０１１８】
具体的には、平文データを格納しているtｂuｆと、乱数データを格納しているｄｂuｆの間でｂｉｔ毎の排他的論理和の計算処理を行なう（平文暗号化工程３０７）の前に、平文データを保存しているtｂuｆのデータを１バイト単位に並べ替える処理を追加すればよい（図３参照）。
【０１１９】
なおデータを並べ替える順序は、送信側暗号制御部１０４と受信側暗号制御部１０９に、予め共通の並べ替えのための順序テーブルを組み込むことで決定することができる（図１参照）。
【０１２０】
乱数全体が盗まれた場合には、暗号データに対して総当り解読される可能性がある。例えば、乱数データ全体が４００ＧＢとすると、８ＫＢの暗号データは約５千万回の試行で解読されてしまう。しかしながら、本実施の形態のような構成にすることによって、１回の試行の度にデータを並べ替える必要があるため、万一暗号鍵として使用する乱数全体が盗まれた場合であっても、暗号データの内容を守ることができる。
【０１２１】
なお図５乃至図１１に示す第２の実施の形態において、上述したようにデータ順序の並べ替えを行う場合には、送信側バッファ６０３から送信側排他的論理和計算部６０６へデータ伝送する間で平文データの順序を並べ替え、受信側バッファ６１３から受信側排他的論理和計算部６１６へデータ伝送する間で復号された平文データを逆に並べ替えればよい。
【０１２２】
第４の実施の形態
次に図１２及び図１３により本発明の第４の実施の形態について説明する。図１２及び図１３に示す第４の実施の形態は、一つのハッシュ値から二つの乱数番号を作り出すとともに、当該二つの乱数番号から二つの対応乱数を出力する送信側乱数記録部５０７Ａと、一つのハッシュ値から二つの乱数番号を作り出すとともに、当該二つの乱数番号から二つの対応乱数を出力する受信側乱数記録部５１７Ａを用いたものである。
【０１２３】
具体的には図１２に示すように、送信側乱数記録部５０７Ａには、送信側第１排他的論理和計算部６０６Ａが接続され、この送信側第１排他的論理和計算部６０６Ａには送信側第２排他的論理和計算部６０６Ｂが接続されている。なお送信側第１排他的論理和計算部６０６Ａは送信側バッファ６０３に接続され、送信側第２排他的論理和計算部６０６Ｂは、送信側乱数記録部５０７Ａにも接続されている。
【０１２４】
また図１３に示すように、受信側乱数記録部５１７Ａには、受信側第１排他的論理和計算部６１６Ａが接続され、この受信側第１排他的論理和計算部６１６Ａには受信側第２排他的論理和計算部６１６Ｂが接続されている。なお受信側第１排他的論理和計算部６１６Ａは受信側バッファ６１３に接続され、受信側第２排他的論理和計算部６１６Ｂは、受信側乱数記録部５１７Ａにも接続されている。
【０１２５】
その他の構成は、図５乃至図１１に示す第２の実施の形態と略同一であり、図５乃至図１１に示す第２の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【０１２６】
なお図１２に示すように、ＣＲＣ計算部６０２の代わりにハッシュ値計算部６０２Ａが用いられ、送信側ＣＲＣ変換部６０５の代わりに送信側ハッシュ値変換部６０５Ａが用いられている。また図１３に示すように、受信側ＣＲＣ計算部６１２の代わりに受信側ハッシュ値計算部６１２Ａが用いられ、受信側ＣＲＣ変換部６１５の代わりに受信側ハッシュ値変換部６１５Ａが用いられている。
【０１２７】
本実施の形態の構成の暗号復号化装置の作用について説明する。
【０１２８】
図１２に示すハッシュ値計算部６０２Ａは、送信側バッファ６０３に格納された１ＫＢのデータに対して６４ｂｉｔのハッシュ値を計算する。
【０１２９】
また送信側ハッシュ値変換部６０５Ａは、６４ｂｉｔのハッシュ値を送信側ＣＲＣ変換部６０５と同様に外部からはわからない方法によって別の６４ｂｉｔの数値に変換し、送信側乱数記録部５０７Ａに送信する。
【０１３０】
また送信側乱数記録部５０７Ａは、４ＧＢ（２３２個)の乱数データを記録しており、乱数番号として６４ｂｉｔの数値を入力すると、３２ｂｉｔの二つの乱数番号に分けて、１ＫＢの二つの乱数を出力する。３２ｂｉｔの数値は４ＧＢのデータを１ｂｙｔｅ単位のアドレスとして指定できる。３２ｂｉｔの乱数番号ＸからＸ+１０２３までの１ＫＢのデータを抜き出して出力する。なお、乱数番号Ｘ+１０２３が４ＧＢのアドレス空間の最大値である２３２-１を超えない様に、Ｘ+１０２３を２３２-１で割った剰余をアドレスとして使用する。
【０１３１】
また送信側第１排他的論理和計算部６０６Ａは、送信側乱数記録部５０７Ａから出力された一つ目の１ＫＢの対応乱数と、送信側バッファ６０３に格納された１ＫＢの分割平文データとのｂｉｔ毎の排他的論理和を計算し、結果を送信側第２排他的論理和計算部６０６Ｂに送信する。
【０１３２】
また送信側第２排他的論理和計算部６０６Ｂは、送信側第１排他的論理和計算部６０６Ａから受信した１ＫＢのデータと送信側乱数記録部５０７Ａから出力された二つ目の１ＫＢの対応乱数とｂｉｔ毎の排他的論理和を計算して、送信側出力部６０７に送信する。
【０１３３】
また受信側ハッシュ値変換部６１５Ａは、受信側ハッシュ値バッファ６１４Ａから入力された６４ｂｉｔの数値を、外部からはわからない方法によって別の６４ｂｉｔの数値に変換する（図１３参照）。
【０１３４】
また受信側乱数記録部５１７Ａも、４ＧＢ（２３２個)の乱数データを記録しており、乱数番号として６４ｂｉｔの数値を入力すると、３２ｂｉｔの二つの乱数番号に分けて、１ＫＢの二つの乱数を出力する。３２ｂｉｔの数値は４ＧＢのデータを１ｂｙｔｅ単位のアドレスとして指定できる。３２ｂｉｔの乱数番号ＸからＸ+１０２３までの１ＫＢのデータを抜き出して出力する。なお、乱数番号Ｘ+１０２３が４ＧＢのアドレス空間の最大値である２３２-１を超えない様に、Ｘ+１０２３を２３２-１で割った剰余をアドレスとして使用する。
【０１３５】
また受信側第１排他的論理和計算部６１６Ａは、受信側乱数記録部５１７Ａから出力された一つ目の１ＫＢの対応乱数と、受信側バッファ６１３に格納された１ＫＢの分割暗号データとのｂｉｔ毎の排他的論理和を計算し、結果を受信側第２排他的論理和計算部６０６Ｂに送信する。
【０１３６】
また受信側第２排他的論理和計算部６０６Ｂは、受信側第１排他的論理和計算部６０６Ａから受信した１ＫＢのデータと受信側乱数記録部５０７Ａから出力された二つ目の１ＫＢの対応乱数とｂｉｔ毎の排他的論理和を計算して、受信側出力部６０７に送信する。
【０１３７】
第２の実施の形態において万一暗号鍵として使用する乱数全体が、送信側暗号部５０６に入力される前に盗まれた場合、暗号データに対して総当り解読の可能性がある。例えば、４ＧＢの乱数では１ＫＢの暗号データは約４百万回の試行で解読されてしまう。
【０１３８】
しかしながら本実施の形態によれば、乱数を１byte単位のアドレスで管理し、２回用いているため、総当り解読に必要な試行回数は約４３億の４３億倍となり、極めて高い安全性が得られる。
【０１３９】
第５の実施の形態
次に図１４及び図１５により本発明の第５の実施の形態について説明する。図１４及び図１５に示す第５の実施の形態は、ハッシュ値を計算することなく送信側暗号補助部１０６に乱数番号を要求する送信側暗号制御部１０４と、ハッシュ値を計算することなく受信側暗号補助部１１１に乱数番号を要求する受信側暗号制御部１０９とを用いたものであり、送信側暗号補助部１０６と受信側暗号補助部１１１の各々は、互いに、同一の順序の乱数番号を出力する
【０１４０】
具体的には図１４に示すように、送信側暗号制御部１０４は、送信側要求入力部２１０と、送信側要求入力部２１０に接続された送信側アドレスカウンタ２１１と、送信側アドレスカウンタ２１１及び送信側要求入力部２１０に接続された送信側乱数番号記録部２１２と、送信側乱数番号記録部２１２に接続された送信側出力部２１３とを有している。
【０１４１】
また図１５に示すように、受信側暗号制御部１０９は、受信側要求入力部２２０と、受信側要求入力部２２０に接続された受信側アドレスカウンタ２２１と、受信側アドレスカウンタ２２１及び受信側要求入力部２２０に接続された受信側乱数番号記録部２２２と、受信側乱数番号記録部２２２に接続された受信側出力部２２３とを有している。
【０１４２】
その他は図５乃至図１１に示す第２の実施の形態と略同一であり、図５乃至図１１に示す第２の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【０１４３】
図１４及び図１５に示すように、本実施の形態は、第１の実施の形態の送信側暗号補助部１０６の代わりに、乱数番号の列を出力する送信側乱数番号記録部２１２を用い、受信側暗号補助部１１１の代わりに、乱数番号の列を出力する受信側乱数番号記録部２２２を用いたものである。
【０１４４】
図１４において、送信側要求入力部２１０は、送信側暗号制御部１０４からの乱数番号の要求が入力されると、送信側アドレスカウンタ２１１に当該要求を送信する。
【０１４５】
送信側アドレスカウンタ２１１は、最後に使用した送信側乱数番号記録部２１２におけるアドレスを記録しており、これをカウントアップし送信側乱数番号記録部２１２に送信する。送信側アドレスカウンタ２１１は最後に使用したアドレスの記録のためにフラッシュメモリが使われる。
【０１４６】
送信側乱数番号記録部２１２は、乱数番号の５千万個の列を記録している。この列は０から５千万までの数をランダムに並び替えたものであり、アドレスが付けられている。乱数番号は３２ｂｉｔのサイズを持っているので、５千万個の乱数番号は約２００ＭＢのデータサイズとなる。この送信側乱数番号記録部２１２はフラッシュメモリを使って実装される。アドレスカウンタから新しい乱数番号のアドレスを受信すると、この乱数番号アドレスに記録された送信側乱数番号を出力部２１３に送信する。そして、この送信側出力部２１３は乱数番号を出力する。
【０１４７】
受信装置１０２は送信装置１０１同様に機能し、送信側暗号制御部１０４と受信側暗号制御部１０９は順番に同じ乱数番号を使用して送信側乱数記録部１０５及び受信側乱数記録部１１２から乱数を取得する。
【０１４８】
なお、乱数番号記録部２１２，２２２への乱数番号の列の書込みは書込み要求と乱数番号を要求入力部２１０，２２０に入力することで行なわれる。乱数番号の列の書込み終了時にアドレスカウンタ２１１，２２１が０にリセットされる。また、本実施例では送信装置１０１から受信装置１０２に対して、ＣＲＣ値は送信されない。また、乱数番号の書込みは、送信装置１０１が置かれた場所と送信装置１０１が置かれた場所が地理的に離れている場合、ネットワーク１１３を経由して伝送することも可能である。
【０１４９】
なお第３の実施の形態に対しても同様に、本実施の形態の構成のものを適用することができる。
【０１５０】
本実施の形態によると、乱数番号を得るためにＣＲＣあるいはハッシュ値を計算する必要がなく、処理が単純である。また、ネットワーク１１３上をＣＲＣ値あるいはハッシュ値が流れないため、元のデータについての情報が漏れる危険性が低下する。
【０１５１】
第６の実施の形態
次に図１６により本発明の第６の実施の形態について説明する。図１６に示す第６の実施の形態は、予め所定の照合アドレスが記録され、当該照合アドレスと、受信側ネットワークインタフェース部１１０の有するネットワークアドレスとを照合し、両者が不一致と判断した場合には、暗号データを正常な方法で平文データに復号しないネットワークアドレス判定部６０１Ｂを受信側暗号部５０９に更に設けたものであり、他は図１０及び図１１に示す第４の実施の形態と略同一である。なお、具体的な方法については、以下に詳述する。
【０１５２】
図１６に示す第６実施の形態において、図１０及び図１１に示す第４の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【０１５３】
図１６において、受信装置１０２に実装される受信側暗号部５０９のネットワークアドレス判定部６０１Ｂには、受信側ネットワークインタフェース部１１０のネットワークアドレスが記録されている。
【０１５４】
受信側制御部５０８は受信側暗号部５０９にデータを送信するとき、同時に受信側ネットワークインタフェース部１１０のネットワークアドレスを送信する。
【０１５５】
ネットワークアドレス判定部６０１Ｂは、データと同時に送信されてきたネットワークアドレスを予め記録されているネットワークアドレスと照合し、不一致の場合は受信側第２排他的論理和計算部６１６Ｂに所定の信号を送信する。この信号を受け取った受信側第２排他的論理和計算部６１６Ｂは、排他的論理和を計算せずに受信側第１排他的論理和計算部６１６Ａの結果をそのまま受信側出力部６１７に送信する。
【０１５６】
本実施の形態によると、受信側暗号部５０９を不正に入手した者が使用しても正しく暗号を解読することができない。また、受信側暗号部５０９は一見正常に作動しているように見えるので、暗号を解読できない理由を簡単に解明できない。また、ネットワークアドレス判定部６０１Ｂの判定処理の間に他の部分の処理を平行して実行しているため、暗号部の処理時間が遅くなることはない。これらのことより、受信側暗号部５０９が盗難されたとしても、暗号データを解読することは非常に困難である。
【０１５７】
第７の実施の形態
次に図１７及び図１８により本発明の第７の実施の形態について説明する。図１７及び図１８に示す第７の実施の形態は、送信側乱数更新部６０８に入力する乱数を変換する送信側乱数変換部６０８Ｃを更に有する送信側暗号部５０６と、受信側乱数更新部６１８に入力する乱数を、送信側乱数変換部６０８Ｃと同一の方法で変換する受信側乱数変換部６１８Ｃを更に有する受信側暗号部５０９とを用いたものであり、他は図１６に示す第６の実施の形態と略同一である。
【０１５８】
図１７及び図１８に示す第７実施の形態において、図１６に示す第６の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【０１５９】
図１７に示すように、送信側入力部６０１と送信側乱数更新部６０８との間に送信側乱数変換部６０８Ｃが設けられ、図１８に示すように、受信側入力部６１１と受信側乱数更新部６１８との間に受信側乱数変換部６１８Ｃが設けられている。
【０１６０】
図１７において、送信側乱数変換部６０８Ｃは、送信側乱数記録部５０７Ａの乱数を更新する際に、送信側入力部６０１を通じて入力される乱数を３２ｂｉｔ毎に別の３２ｂｉｔの値に変換する機能を有する。
【０１６１】
なお受信側装置においても同様に、受信側乱数変換部６１８Ｃは、受信側乱数記録部５１７Ａの乱数を更新する際に、受信側入力部６１１を通じて入力される乱数を３２ｂｉｔ毎に別の３２ｂｉｔの値に変換する機能を有する。
【０１６２】
本実施の形態のような構成にすることによって、送信側乱数記録部５０７Ａに記録される乱数は送信側暗号部５０６に入力される乱数とは異なったものとなり、受信側乱数記録部５１７Ａに記録される乱数は受信側暗号部５０９に入力される乱数とは異なったものとなる。
【０１６３】
第４の実施の形態において、一度乱数記録部（送信側乱数記録部５０７Ａ及び受信側乱数記録部５１７Ａ）に記録された乱数を外部から読み出すことは極めて困難であるが、入力する前の乱数が盗まれる可能性は残る。そこで、本実施の形態によれば、たとえ入力する前の乱数が盗まれても、使用する乱数は変換したものであるため、暗号の安全性が向上する。
【０１６４】
なお第６の実施の形態においても同様に、本実施の形態の構成のものを用いることができる。
【０１６５】
第８の実施の形態
次に図１９により本発明の第８の実施の形態について説明する。図１９に示す第８の実施の形態は、乱数を更新し、送信側制御部５０４に出力する送信側乱数入力部９０１を更に有する送信装置１０１と、乱数を更新し、受信側制御部５０８に出力する受信側乱数入力部９１１を更に有する受信装置１０２とを用いたものであり、他は図１乃至４に示す第１の実施の形態と略同一である。
【０１６６】
このうち送信側暗号制御部１０４は、送信側乱数入力部９０１から入力された乱数を、送信側暗号補助部１０６を介して別の乱数に変換して、送信側乱数記録部１０５に入力する。また受信側暗号制御部１０９は、受信側乱数入力部９１１から入力された乱数を、受信側暗号補助部１１１を介して別の乱数に変換して、受信側乱数記録部１１２に入力する。
【０１６７】
図１９に示す第８実施の形態において、図１乃至図４に示す第１の実施の形態と同一部分には同一符号を付して詳細な説明は省略する。
【０１６８】
送信側暗号制御部１０４は、送信側乱数入力部９０１から送られてきた乱数を３２ｂｉｔ毎に送信側暗号補助部１０６に送信する。次に、送信側暗号補助部１０６は受信した乱数を別の３２ｂｉｔの数値に変換して送信側暗号補助部１０６に返す。次に、送信側暗号制御部１０４は送信側暗号補助部１０６から返信された変換後の乱数を送信側乱数記録部１０５に送信し、更新する。
【０１６９】
受信装置１０２においても同様であって、受信側暗号制御部１０９は、受信側乱数入力部９１１から送られてきた乱数を３２ｂｉｔ毎に受信側暗号補助部１１１に送信する。次に、受信側暗号補助部１１１は受信した乱数を別の３２ｂｉｔの数値に変換して、受信側暗号制御部１０９に返す。次に、受信側暗号制御部１０９は受信側暗号補助部１１１から返信された変換後の乱数を受信側乱数記録部１１２に送信し、更新する。
【０１７０】
本実施の形態によると、入力される乱数が別の乱数に置き換えられて処理に使われるため、入力前に乱数が盗難された場合でも平文データの安全性を確保することができる。
【０１７１】
（プログラム入力方法）
次に図２０を用いて、上述した各実施の形態におけるＣＲＣ変換部６０５及びハッシュ値変換部６０５Ａにおける数値の変換方法をＶＨＤＬ等のハードウェア記述言語で定義したプログラム入力方法について説明する。
【０１７２】
なお変換の一部として４ｂｉｔ変換テーブルのコードの例は、図２に示されている。
【０１７３】
当該プログラム入力方法には、図１６に示すように、送信側暗号補助部１０６又は送信側暗号部５０６に書き込む送信側書込工程と、前記変換プログラムを受信側暗号補助部１１１又は受信側暗号部５０９に書き込む受信側書込工程とが含まれている。
【０１７４】
本実施例では、４ｂｉｔ変換テーブル、あるいは図２におけるデータ順序の入替を定義するハードウェア記述言語によるコードを自動的に生成するためのものである。
【０１７５】
図２０に４ｂｉｔ変換テーブルを例とした本実施例の構成を示す。
【０１７６】
図２０に示すように、元データ部Ａ０１は、４ｂｉｔで表現される０から１５までの元データが順番に記録されている。
【０１７７】
図２０に示すように、順序変換部Ａ０２は元データの順序を適当な乱数を用いてランダムに並べ替え、ランダムデータ部Ａ０３に出力する。コード生成部Ａ０４は、元データ部Ａ０１とランダムデータ部Ａ０３を基に、予め定められた規則に従ってＶＨＤＬによるコードを生成し、コード部Ａ０５に出力する。
【０１７８】
コード部Ａ０５に出力されたＶＨＤＬコードは、ＣＲＣ変換部（送信側ＣＲＣ変換部６０５及び受信側ＣＲＣ変換部６１５）及びハッシュ値変換部（送信側ハッシュ値変換部６０５Ａ及び受信側ハッシュ値変換部６１５Ａ）の他の処理を定義するコードと結合された後、論理合成ツール及び配置配線ツールを用いて、ＦＰＧＡの処理を決定するネットリストに変換される。ネットリストをＣＲＣ変換部６０５，６１５及びハッシュ値変換部６０５Ａ，６１５Ａに書き込むことで、変換規則を変更することができる。
【０１７９】
このような暗号復号化装置製造方法を用いることによって、ＣＲＣ変換、ハッシュ値変換の規則を容易に変更することができ、暗号安全性を向上させることができる。
【０１８０】
また、変換プログラムを、ハードウェアに実装可能な形式に変換する変換工程と、ハードウェアに実装可能な形式に変換された変換プログラムを、送信装置１０１及び受信装置１０２にネットワーク１１３を介して送信し実装する実装工程とを更に設けても良い。
【０１８１】
ネットリストはデータであるから、ネットワーク１１３を通じて送信装置１０１あるいは受信装置１０２に送信し、内蔵されているＣＲＣ変換部６０５，６１５及びハッシュ値変換部６０５Ａ，６１５Ａの処理を変更する。
【０１８２】
ネットリストは複雑な処理を記述しており、ＣＲＣ変換部６０５，６１５及びハッシュ値変換部６０５Ａ，６１５Ａに使用されるＦＰＧＡの型式に依存するため、ＣＲＣ変換部６０５，６１５及びハッシュ値変換部６０５Ａ，６１５Ａが盗まれても、ただちに暗号の解読ができるわけではないが、暗号復号化装置を使って送信することで安全性を高めることができる。
【０１８３】
このようなプログラム入力方法を用いることによって、ＣＲＣ変換及びハッシュ値変換の規則を容易に変更することができ、暗号の安全性を向上できる。
【図面の簡単な説明】
【０１８４】
【図１】本発明による暗号復号化装置の第１の実施の形態を示す概略図。
【図２】本発明による暗号復号化装置の第１の実施の形態の暗号補助部における数値変換を説明するための説明図。
【図３】本発明による暗号復号化装置の第１の実施の形態の送信装置における各工程を説明するためのフロー図。
【図４】本発明による暗号復号化装置の第１の実施の形態の受信装置における各工程を説明するためのフロー図。
【図５】本発明による暗号復号化装置の第２の実施の形態を示す概略図。
【図６】本発明による暗号復号化装置の第２の実施の形態の送信側暗号部の構成を示す概略図。
【図７】本発明による暗号復号化装置の第２の実施の形態の受信側暗号部の構成を示す概略図。
【図８】本発明による暗号復号化装置の第２の実施の形態の送信装置における各工程を説明するためのフロー図。
【図９】本発明による暗号復号化装置の第２の実施の形態の受信装置における各工程を説明するためのフロー図。
【図１０】第２の実施の形態の変形例における送信側暗号部の構成を示す概略図。
【図１１】第２の実施の形態の変形例における受信側暗号部の構成を示す概略図。
【図１２】本発明による暗号復号化装置の第４の実施の形態の送信側暗号部の構成を示す概略図。
【図１３】本発明による暗号復号化装置の第４の実施の形態の受信側暗号部の構成を示す概略図。
【図１４】本発明による暗号復号化装置の第５の実施の形態の送信側暗号制御部の構成を示す概略図。
【図１５】本発明による暗号復号化装置の第５の実施の形態の受信側暗号制御部の構成を示す概略図。
【図１６】本発明による暗号復号化装置の第６の実施の形態の受信側暗号部の構成を示す概略図。
【図１７】本発明による暗号復号化装置の第７の実施の形態の送信側暗号部の構成を示す概略図。
【図１８】本発明による暗号復号化装置の第７の実施の形態の受信側暗号部の構成を示す概略図。
【図１９】本発明による暗号復号化装置の第８の実施の形態を示す概略図。
【図２０】本発明によるプログラム入力方法を説明するための概略図。
【符号の説明】
【０１８５】
１０１  送信装置
１０２  受信装置
１０３  送信側インタフェース部
１０４  送信側暗号制御部
１０８  受信側インタフェース部
５０７  送信側乱数記録部
１０６  送信側暗号補助部
１０７  送信側ネットワークインタフェース部
１０９  受信側暗号制御部
１１０  受信側ネットワークインタフェース部
１１１  受信側暗号補助部
１１２，５１７  受信側乱数記録部
１１３  ネットワーク
５０４  送信側制御部
５０６  送信側暗号部
５０８  受信側制御部
５０９  受信側暗号部
６０１  送信側入力部
６０１Ｂ  ネットワークアドレス判定部
６０２  ＣＲＣ計算部
６０５  送信側ＣＲＣ変換部
６０６  平文データ暗号化部
６０７  送信側出力部
６０８  送信側乱数更新部
６０８Ｃ  送信側乱数変換部
６１１  受信側入力部
６１５  受信側ＣＲＣ変換部
６１６  平文データ復号化部
６１７  受信側出力部
６１８  受信側乱数更新部
６１８Ｃ  受信側乱数変換部
９０１  送信側乱数入力部
９１１  受信側乱数入力部
【図１】
2008054033.tif 000003
【図２】
2008054033.tif 000004
【図３】
2008054033.tif 000005
【図４】
2008054033.tif 000006
【図５】
2008054033.tif 000007
【図６】
2008054033.tif 000008
【図７】
2008054033.tif 000009
【図８】
2008054033.tif 000010
【図９】
2008054033.tif 000011
【図１０】
2008054033.tif 000012
【図１１】
2008054033.tif 000013
【図１２】
2008054033.tif 000014
【図１３】
2008054033.tif 000015
【図１４】
2008054033.tif 000016
【図１５】
2008054033.tif 000017
【図１６】
2008054033.tif 000018
【図１７】
2008054033.tif 000019
【図１８】
2008054033.tif 000020
【図１９】
2008054033.tif 000021
【図２０】
2008054033.tif 000022