JP2008124824A - 暗号化方法、復号方法、暗号化装置、及び復号装置 - Google Patents

暗号化方法、復号方法、暗号化装置、及び復号装置 Download PDF

Info

Publication number
JP2008124824A
JP2008124824A JP2006306885A JP2006306885A JP2008124824A JP 2008124824 A JP2008124824 A JP 2008124824A JP 2006306885 A JP2006306885 A JP 2006306885A JP 2006306885 A JP2006306885 A JP 2006306885A JP 2008124824 A JP2008124824 A JP 2008124824A
Authority
JP
Japan
Prior art keywords
data
instruction code
decryption
encrypted data
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006306885A
Other languages
English (en)
Inventor
Shinki Shoji
眞貴 小路
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2006306885A priority Critical patent/JP2008124824A/ja
Publication of JP2008124824A publication Critical patent/JP2008124824A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】秘匿強度の高い暗号化処理を実行するための暗号化方法、復号方法、暗号化装置、及び復号装置を提供することにある。
【解決手段】本発明による暗号化装置10は、暗号化部31と、復号命令生成部33と、混在データ生成部35とを具備する。暗号化部31は、データ100を暗号化して暗号化データ101を生成する。復号命令生成部33は、暗号化データ101を復号する装置のアーキテクチャに基づいて、暗号化データ101に対応する命令コード104を生成する。混在データ生成部35は、暗号化データ101と命令コード104とを統合して混在データ108を生成する。
【選択図】図2

Description

本発明は、暗号化方法、復号方法、暗号化装置、及び復号装置に関する。
従来広く利用されている暗号化技術は、元データに対して何らかの暗号化計算式を用いてデータ変換(暗号化)を行い、元データの閲覧を不可能にするものである。この際、復号に利用される復号鍵は、暗号化処理に伴って生成される。元データへの復号に際しては、暗号化されたデータ及び復号鍵を用いて、復号計算式を利用し、元データへの復元が行われる。このように、従来技術では、元データから復号鍵を取り出すことで情報の欠落を発生させ、復号を困難にしている。
暗号化の方式には、大きく共通鍵方式と公開鍵方式の2つの方式がある。公開鍵方式は、秘密鍵と、秘密鍵に基づいて生成された公開鍵とを利用して、暗号化及び復号を行う(例えば、特許文献1:特開2004−289847号公報、特許文献2:特開2006−091967号公報)。公開鍵方式では、データの送信先(閲覧者)に対し1つの公開鍵を用意すれば良く、鍵の管理が容易である。又、公開鍵が漏洩しても、秘密鍵がなければ復号することができないので、秘匿性が高い。しかし、暗号化(復号)アルゴリズムが複雑であるため暗号化(復号)処理の速度は比較的遅い。このため、公開鍵方式によって膨大な量のデータを暗号化(復号)すると、多くの時間を要してしまう。一方、共通鍵方式による暗号化方法では、暗号化処理や復号処理を比較的高速に行うことができる。一般に、公開鍵暗号方式に比べて高速に処理することができるため、データ量の大きなデータの暗号化に適している。
近年、コンピュータ間、あるいはコンピュータ内のデバイス間における通信速度や演算処理能力の向上に伴い、膨大な量の情報の転送が行われている。このため、インターネット回線を介した動画コンテンツの配信、デジタル放送番組データの記録、DVD等に記録されたコンテンツデータの読み取り等が普及している。すなわち、大きなデータ量で、且つ暗号化を必要とするデータが装置間で転送される場面が急増している。従って、これらのデータに対する暗号化(復号)には、より高速に暗号化が可能な共通鍵方式が有効である。
共通鍵方式では、復号処理をする装置は、復号鍵を取得して復号処理を実行する。このため、暗号化データの転送元が復号鍵を復号側の装置に転送する、あるいは予め復号側の装置が復号鍵を保持している必要がある。従って、共通鍵方式では、復号鍵が第三者に渡ると容易に復号される恐れがあるため、復号鍵の転送や管理には充分注意しなければならない。
一方、復号鍵は、暗号化計算式を使用してデータを暗号化する際に取り出される。すなわち、暗号化されたデータ(以下、暗号化データと称す)には元データに関する情報と復号鍵に関する情報とが内包される。このため、暗号化データと暗号計算式とによって、復号鍵の推理が可能であり、時間さえかければ復号鍵を作成し、元データを解読・閲覧することが可能となる。このため、暗号化されたデータと別のデータとを混在させたデータを復号先に転送することで、データの秘匿性を高める技術がある。以下に、暗号化データと別データとを混在させたデータによって暗号強度を向上させた暗号化技術の一例を示す。
特開2002−023625号公報には、暗号化データに他の暗号化データを統合したデータを復号する技術が記載されている(特許文献3参照)。特許文献1に記載の技術では、暗号化データの統合の際、統合する暗号化データ毎の位置を指定するキーコードが使用される。又、統合されたデータを分離・復号する際、このキーコードを用いてデータを分離し、分離したデータのそれぞれを復号する。特開2006−085676号公報に記載の暗号化命令処理装置は、暗号化されたプログラムと、復号鍵を識別する鍵識別子とを備えたデータを暗号化拡張命令コードとして生成する。復号側の装置は、復号鍵を予め保持し、送信される暗号化命令拡張コードに含まれる鍵識別子に対応する復号鍵を利用して復号処理を行う(特許文献4参照)。特開平11−215122号公報に記載のデータ暗号化装置は、復号する範囲を指定する復号範囲指定命令や、復号に用いる復号鍵を指定する鍵情報指定命令を暗号化されたデータに追加して復号側の受信装置に転送する。復号側では、予め復号鍵を有しており、鍵情報指定命令に対応する復号鍵を用いて、復号範囲指定命令で指定された範囲の暗号化データを復号する(特許文献5参照)。
特開2004−289847号公報 特開2006−091967号公報 特開2002−023625号公報 特開2006−085676号公報 特開平11−215122号公報
暗号化されたデータと別のデータを混在させることで、転送されるデータの秘匿性は高まるが、正当な閲覧権利者における復号が困難になる恐れがある。特に、無作為なデータを暗号化データに混在させた場合、適切な復号キーを使用しても復号の対象となるデータを適切に分離しなければ復号に失敗することがある。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を括弧付きで用いて、[課題を解決するための手段]を説明する。この番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]の記載との対応関係を明らかにするために付加されたものであるが、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明による暗号化装置(10)は、暗号化部(31)と、復号命令生成部(33)と、混在データ生成部(35)とを具備する。暗号化部(31)は、元データ(100)を暗号化して暗号化データ(101)を生成する。復号命令生成部(33)は、復号計算式から、暗号化データ(101)を元データ(100)に復号するための復号命令コード(104)を生成する。混在データ生成部(35)は、暗号化データ(101)と復号命令コード(104)とを統合して混在データ(108)を生成する。本発明によれば、復号命令コード(104)を暗号化データ(102)に混在させるため、暗号化データ(101)を特定しにくく、復号鍵の推測が困難となる。又、無作為なデータを暗号化データ(101)に混在させているのではなく、暗号化データ(101)を復号するための復号命令コード(104)を混在させているため、データ(100)の閲覧を許可された装置は、復号に失敗することなく暗号化データを元データ(100)に復号することができる。
本発明による復号命令生成部(33)は、暗号化データ(101)を復号する演算装置(1)の型式を指定するアーキテクチャ情報(340)に対応する復号命令コード(104)を生成することが好ましい。このように本発明によれば、アーキテクチャ情報(340)に基づく復号命令コード(104)を暗号化データ(102)に混在させるため、復号命令コード(104)が不正に抽出されても、アーキテクチャが一致していない演算装置では、この復号命令コード(104)を実行することができず、対応する暗号化データ(101)を特定することができない。このように、本発明による暗号化装置(10)は秘匿強度の高い暗号化を実現できる。
本発明による暗号化装置(10)は、暗号化データ(101)を、複数の暗号化データ(102)に分割する暗号化データ分割部(32)と、復号命令コード(104)を複数の復号命令コード(105)に分割する復号命令分割部(34)とを更に具備することが好ましい。この場合、混在データ生成部(35)は、複数の暗号化データ(102)と、複数の復号命令コード(105)とを統合して混在データ(108)を生成する。このように、暗号化データ(101)と復号命令コード(104)とをそれぞれ分割して統合することで、更に秘匿強度を高めることができる。
暗号化部(31)は、複数の暗号化データ(102)の復号に使用する復号鍵(107)を生成する。複数の復号命令コード(105)が実行されると、この復号鍵(107)が用いられて対応する暗号化データ(102)が復号される。このように、復号鍵(107)と、複数の暗号化データ(102)と、混在データ(108)内の複数の復号命令コード(105)とが、複数の暗号化データ(102)の復号に使用されるため、復号命令コード(105)を実行できる装置は、容易に暗号化データ(102)を復号することができる。
混在データ生成部(35)は、複数の復号命令コード(105)をチェーン化するJump命令を生成し混在データ(108)に統合することが好ましい。複数の復号命令コード(105)をチェーン化することで、混在データ(108)内にばらばらで存在する複数の命令コード(105)を一連の命令コード(104)として実行することができる。
又、混在データ生成部(35)は、混在データ(108)から暗号化データ(104)を抽出するための抽出命令コード(103)を混在データ(108)に統合することが好ましい。
本発明による復号装置(10)は、命令コードと暗号化されたデータである暗号化データ(101)とを有する混在データ(108)から、復号処理を行うための復号命令コード(104)を読み出す復号部(37)と、復号処理を行う演算装置(1)の型式を示すアーキテクチャ情報(340)を有する記憶装置とを具備する。復号部(37)は、復号命令コード(104)が自身のアーキテクチャ情報(340)に基づく復号命令コード(104)である場合、復号命令コード(104)を実行し、暗号化データ(101)を元データ101に復号する。
ここで、混在データ(108)は、暗号化データ(101)を分割した複数の暗号化データ(102)と、抽出命令コード(103)とを有することが好ましい。この場合、抽出命令コード(103)を実行することで、混在データ(108)から複数の暗号化データ(102)を抽出し、暗号化データ(101)を生成する暗号化データ抽出部(36)を更に具備することが好ましい。
又、混在データ(108)は、復号命令コード(104)を分割した複数の復号命令コード(105)と、複数の復号命令コード(105)をチェーン化するためのJump命令コード(106)とを更に有することが好ましい。この際、復号部(37)は、複数の命令コード(104)のいずれかに続けて、Jump命令コード(106)を実行し、Jump命令コード(106)によって指定される他の復号命令コードを読み出して実行する。これにより、複数の復号命令コード(105)は一連の復号命令コード(104)として実行され、暗号化データ(101)を復号することができる。
本発明による暗号化方法は、コンピュータによって実行されるプログラム(310)で実現され、データを暗号化して暗号化データ(101)を生成するステップと、暗号化データ(101)を復号する演算装置のアーキテクチャに基づいて、暗号化データ(101)に対応する命令コード(104)を生成するステップと、暗号化データ(101)と命令コード(104)とを統合して混在データ(108)を生成するステップとを具備する。
又、本発明による復号方法は、コンピュータによって実行されるプログラム(310)で実現され、命令コードと暗号化されたデータである暗号化データ(101)とを有する混在データ(108)から、暗号化データ(101)を復号するための復号命令コード(104)を読み出すステップと、復号命令コード(104)が自身のアーキテクチャ情報(340)に基づく命令コードである場合、復号命令コード(104)を実行し、混在データ(108)内の暗号化データ(101)を元データ(100)に復号するステップとを具備する。
本発明によれば、秘匿強度の高い暗号化を実現できる。
又、データの復号に用いる復号鍵が漏洩しても復号が困難となる。
更に、データの復号に用いる復号計算式の使用を制限することができる。
更に、暗号化、又は復号に要する時間を短縮できる。
以下、添付図面を参照して、本発明による暗号化方法、暗号化プログラム、及び暗号化装置の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
1.構成
図1から図3を参照して、本実施の形態における暗号化装置10の構成を説明する。図1は、暗号化装置10の構成を示す図である。図1を参照して、暗号化装置10は、相互にバス5を介して接続される演算装置1、RAM2、記憶装置3、I/Oインタフェースを具備する。
演算装置1は、CPUに例示され、記憶装置3に格納される暗号化プログラム310を実行する。この際、各種データやプログラムは、RAM2に一次格納されて演算装置1に利用される。I/Oインタフェース4は、図示しない外部装置と、演算装置1や記憶装置3との間における各種データの転送を制御する。この外部装置とは、例えば、図示しないネットワークを介して接続される外部のコンピュータ装置や、図示しない外部バスを介して接続される外部記憶装置(例:DVDドライバやハードディスクドライバ)等である。又、I/Oインタフェース4は、他の暗号化装置10に接続され、この暗号化装置10との間におけるデータの転送を制御する。
記憶装置3は、暗号化又は復号に必要な各種プログラム及びデータを格納する。詳細には、記憶装置3は、暗号化プログラム310、暗号化計算式320、復号計算式330、アーキテクチャ情報340を格納している。暗号化プログラム310は、演算装置1によって実行されることで、対象データに対し暗号化処理又は復号処理を施す。暗号化計算式320は、データを暗号化するためのアルゴリズムにより決定される式である。復号計算式330は、暗号化計算式320の逆手順を記載した式である。アーキテクチャ情報340は、復号処理を実行する暗号化装置10における演算装置1の型式(例えば、V850、Intel(登録商標)、SH等)を指定する情報である。復号処理を実行する暗号化装置10が複数あり、それぞれのアーキテクチャが異なる場合、記憶装置3にはそれぞれの暗号化装置10に対応する複数種のアーキテクチャ情報340が格納される。又、記憶装置3に格納される暗号化計算式320及び復号計算式330は1つとは限らず複数種の式でも構わない。
図2は、暗号化処理時における暗号化装置10のブロック図である。図2を参照して、演算装置1は暗号化プログラム310を実行することで、暗号化部31、暗号化データ分割部32、復号命令生成部33、復号命令分割部34、混在データ生成部35の機能を実現する。
暗号化部31は、I/Oインタフェース4を介して入力されるデータ(元データ100)に対し、記憶装置3内の暗号化計算式330を用いて暗号化処理を行い暗号化データ101を生成する。又、暗号化データ101を生成する際に復号鍵を抽出し、I/Oインタフェース4を介して復号処理を実行する装置に転送する。
暗号化データ分割部32は、暗号化データ101を所定の大きさに分割して複数の分割暗号化データ102として出力する。尚、複数の分割暗号化データ102のそれぞれのデータサイズは、一定でも良いが、暗号強度を高めるため、それぞれ異なる大きさであることが好ましい。
復号命令生成部33は、記憶装置3内の復号計算式330を、アーキテクチャ情報340に基づいてクロスコンパイルして、復号命令コード104を生成する。ここで使用されるアーキテクチャ情報340は、閲覧を許可された装置に対応するアーキテクチャ情報340である。このため、生成された復号命令コード104は、閲覧を許可された暗号装置10のアーキテクチャに対応した命令コードとなる。又、復号命令分割部34は、復号命令コード104を所定の大きさに分割して、複数の分割復号命令コード105を生成する。尚、複数の分割復号命令コード105のそれぞれのデータサイズは、一定でも良いが、暗号強度を高めるため、それぞれ異なる大きさであることが好ましい。
混在データ生成部35は、暗号化データ101に復号命令コード104を挿入して混在データ108を生成する。すなわち、混在データ生成部35は、複数の分割暗号化データ102と、複数の分割復号命令コード105とを所定の順で統合して混在データ108を生成する。この際、混在データ生成部35は、復号処理を実行する際に統合データ108から暗号化データ101を抽出するための抽出命令コード103を生成して混在データ108に統合する。又、混在データ生成部35は、混在データ108内の命令コードをチェーン化して一連の命令コードとして実行させるためのJump命令コード106を生成し、混在データ108に統合する。
抽出命令コード103及びJump命令コード106は、復号命令コード104を生成する際に用いたアーキテクチャ情報340に基づいて生成されることが好ましい。抽出命令コード103は、抽出対象の分割暗号データ102を指定するためのオフセットアドレス及び抽出対象の分割分割暗号データ102のデータサイズを含む。又、Jump命令コード106は、抽出命令コード103や分割復号命令コード105に対応して生成され、対応する命令コードの次に実行すべき分割復号命令コード105を指定する命令コードを含む。
混在データ生成部35は、混在データ108に統合する分割暗号化データ102、抽出命令コード103、分割復号命令コード105、Jump命令コード106のそれぞれのデータサイズ、データ数を統合パラメータとして取得する。又、混在データ生成部35は、混在データ108を生成する前に、統合されるそれぞれのデータ及び命令コードの位置(統合順)を決定する。混在データ生成部35は統合パラメータ及び統合順に応じて、混在データ108における分割暗号化データ102、及び各命令コードの位置(アドレス)を決定する。尚、統合パラメータ及び統合順は、予め設定された値でも、元データ100の大きさに応じて変更される値でも良い。混在データ生成部35は、この統合パラメータ及び統合順に基づき、抽出命令コード103に含まれるオフセットアドレスや、Jump命令コード106で指定する次に実行すべき分割復号命令コード105のアドレスを決定する。
混在データ生成部35は、複数の分割暗号化データ102、複数の分割復号命令コード105、抽出命令103、及びJump命令コード106を統合して混在データ108を生成し、I/Oインタフェース4を介して復号処理を実行する暗号化装置10に転送する。又、復号処理のとき、最初に実行する抽出命令コード103のアドレスを指定する実行開始アドレス109を転送する。
図3は、復号処理時における暗号化装置10のブロック図である。図3を参照して、演算装置1は暗号化プログラム310を実行することで、暗号化データ抽出部36、復号部37の機能を実現する。ここで暗号化装置10は、復号装置として機能し、暗号化プログラム310は復号プログラムとして機能する。
図3を参照して、暗号化データ抽出部36及び復号部37は、I/Oインタフェース4を介して他の装置(暗号化処理を実行した暗号化装置10)から転送された混在データ108に対し、復号鍵107、実行開始アドレス109、アーキテクチャ情報340を用いて復号処理を実行する。詳細には、混在データ108を受け取った暗号化データ抽出部36は、転送された実行開始アドレス109に対応する抽出命令コード103を読み出して実行し、混在データ108から複数の分割暗号化データ102(暗号化データ101)を抽出する。復号部37は、アーキテクチャ情報340に従い、混在データ108内の分割復号命令コード105を読み出して実行し、抽出された暗号化データ101を復号して元データ100を出力する。元データ100は、I/Oインターフェース4を介して図示しない記憶装置、あるいは表示装置等に出力される。尚、抽出命令コード103が、アーキテクチャ情報340に基づいて生成されている場合、暗号化データ抽出部36は、アーキテクチャ情報340を参照して抽出命令コード103を実行する。
ここで、暗号化装置10が暗号化処理を専用とする装置である場合、記憶装置3は復号計算式330を格納しなくても良く、暗号化プログラム310は、暗号化データ抽出部36及び復号部37を備えなくても良い。同様に暗号化装置10が復号処理を専用とする復号装置である場合、記憶装置3は、暗号化計算式320を格納しなくても良く、暗号化プログラム310は、暗号化部31、暗号化データ分割部32、復号命令生成部33、復号命令分割部34、混在データ生成部35を備えない復号プログラムとなる。
2.暗号化処理の動作
図4から図6を参照して、本実施の形態における暗号化装置10の暗号化処理動作の詳細を説明する。以下では、図示しない外部記憶装置内のデータ(元データ100)を暗号化装置10で暗号化し、他の暗号化装置10に転送するまでを説明する。図4は、本実施の形態における暗号化処理の動作を示すフロー図である。図5A及び図5Bは、本実施の形態における暗号化処理の概念図である。
図4及び5Aを参照して、I/Oインタフェース4を介して元データ100が入力されると、暗号化部31は、元データ100を暗号化計算式320を用いて暗号化して暗号化データ101及び復号鍵107を生成する(ステップS101)。次に、暗号化データ分割部32によって暗号化データ101は、複数の分割暗号化データ102(分割暗号化データA〜C)に分割される(ステップS102)。
一方、復号命令生成部33は、暗号化部32で使用された復号計算式320に対応する復号計算式330を記憶装置3から抽出するとともに、復号する暗号化装置10(データの閲覧を許可された装置)に対応するアーキテクチャ情報340を記憶装置3から抽出する。復号命令生成部33は、アーキテクチャ情報340に基づいて、抽出した復号計算式330をクロスコンパイルし、復号命令コード104を生成する(ステップS103)。又、復号命令分割部34は、生成された復号命令コード104を所定の大きさ及び数に分割し、複数の分割復号命令コード105(分割復号命令コードA〜C)を生成する(ステップS104)。
図5Bは、混在データ生成部35における混在データ108の生成処理の概念図である。図4及び図5Bを参照して、混在データ生成部35は、混在データ108における分割暗号化データ102と分割復号命令コード105の位置を決定し、抽出命令コード103及びJump命令コード106を生成する(ステップS105)。詳細には、混在データ生成部35は、分割暗号化データ102、抽出命令コード103、分割復号命令コード105、Jump命令コード106を、所定の順あるいはランダムに並び替え、統合順を決定する。この際、Jump命令コード106は、抽出命令コード103及び複数の分割復号命令コード105が一連の命令コードとして実行されるように、それぞれの命令コードの直後のアドレスに配置される。例えば、抽出命令コード103の後に、分割復号命令コードAにジャンプするJump命令コードAが配置され、分割復号命令コードAの後に分割命令コードBにジャンプするJump命令コードBが配置される。これにより、後述する復号処理において、抽出命令コード103が実行された後にJump命令コードAが実行され、続けて分割復号命令コードAが実行される。同様に、分割復号命令コードAが実行された後にJump命令コードBが実行され、続いて分割復号命令コードBが実行される。
又、混在データ生成部35は、分割暗号化データ102、抽出命令コード103、分割復号命令コード105、Jump命令コード106のデータサイズと統合順とに基づき、それぞれの混在データ108における位置情報を取得する。尚、Jump命令コード106のサイズは一意に決めてしまうことができる。混在データ生成部35は、この位置情報に基づいて、抽出命令コード103を生成し、抽出対象の分割暗号化データ102を指定するためのオフセットアドレスを抽出命令コード103に追加する。
抽出命令コード103は、実行開始アドレス109にオフセット分を加えたアドレスにある分割暗号化データを抽出するように設定される。すなわち、オフセットアドレスは、実行開始アドレス109から抽出対象の分割暗号化データ102までに挿入されるデータのデータサイズに応じて設定される。例えば、図5Bに示される統合順で混在データ108が生成される場合、抽出対象の分割暗号化データBに対応するオフセットアドレスは、抽出命令コード103、Jump命令コードA、分割暗号化データA、分割復号命令コードA、Jump命令コードBのデータサイズに基づき設定される。又、抽出命令コード103には、抽出対象の分割暗号化データ102のデータサイズも設定される。このように、オフセットアドレス及び抽出対象データのデータサイズによって、抽出対象の分割暗号化データ102を特定することができる。
同様に、Jump命令コード106は、分割暗号化データ102、抽出命令コード103、分割復号命令コード105、Jump命令コード106のデータサイズと統合順から得られた位置情報に基づいて生成される。Jump命令コード106は、混在データ108内の命令コードをチェーン化して一連の命令コードとして実行させるための命令コードである。すなわち、Jump命令コード106は、次に実行する分割復号命令コード105をジャンプ先として指定するように設定される。このため、Jump命令コード106には、自身の位置(アドレス)からジャンプ先の分割復号命令コード105までに挿入されるデータのデータサイズに応じてジャンプ先が設定される。本実施の形態では、抽出命令コード103、及び分割復号命令コードA〜Bの後に実行され、それぞれ分割復号命令コードA〜CにJumpするためのJump命令コードA〜Cが生成される。例えば、図5Bに示される統合順で混在データ108が生成される場合、Jump命令コードAには、分割暗号化データAのデータサイズに基づいて、分割復号命令コードAの開始アドレスがジャンプ先として設定される。
次に、混在データ生成部35は、分割暗号化データ102、抽出命令コード103、分割復号命令コード105、Jump命令コード106を、統合順に従って統合し、混在データ108を生成する(ステップS106)。暗号化部31及び混在データ生成部35は、生成した復号鍵107、混在データ108、実行開始アドレス109をI/Oインタフェース4を介して復号処理を実行する他の暗号化装置10に転送する。
尚、混在データ108における分割復号命令コード105、Jump命令コード106、分割暗号化データ102、抽出命令コードの並び順は上記に限定せずランダムで良い。本実施の形態では、分割暗号化データ102の下位アドレスに分割復号命令コード105が挿入されているが、これに限らず上位アドレスに挿入されても構わない。又、抽出命令コード103は、最上位アドレス(先頭アドレス)に配置されているが、これに限らず、実行開始アドレス109に対応する位置に配置されればどこでも良い。更に、本実施の形態では、命令コードの実行順(A、B、C)に対応して上位アドレスから順に配置されているがこれに限らない。
3.復号処理の動作
図6から図8Bを参照して、本実施の形態における暗号化装置10の復号処理動作の詳細を説明する。以下では、他の暗号化装置10で暗号化された暗号化データ(ここでは上述の暗号化処理によって生成された混在データ108)を複合化する動作について説明する。図6は、復号処理を行うために記憶装置に格納された混在データ108の一部を示す図である。図7は、本実施の形態における復号処理の動作を示すフロー図である。図8A及び図8Bは、本実施の形態における復号処理の概念図である。
I/Oインタフェース4を介して復号鍵107、混在データ108、実行開始アドレス109が入力されると、混在データ108は、図6に示されるようにメモリ等の記憶装置に格納される。本実施の形態では、図5Bに示される統合順で生成された混在データ108が入力され、上位アドレスから順に、抽出命令コード103(0x10000000〜0x100007FC)、Jump命令コードA(0x10000800)、分割暗号化データA(0x10000804〜0x10000C00)、復号命令コードA(0x10000C04〜0x10001000)、Jump命令コードB(0x10001004)、分割暗号化データB(0x10001008〜0x10001400)、復号命令コードB(0x10001408〜0x10001C04)、Jump命令コードC(0x10001C08)、・・・が書き込まれる。尚、図6には、説明の便宜上Jump命令コードCまでが記載されているが、それ以降に続く分割暗号化データC、分割復号命令コードCも同様に、続くアドレスに対応するメモリ領域に格納される。
暗号化データ抽出部36は、実行開始アドレス109(0x10000000)に対応する抽出命令コード103を読み出す(ステップS201)。この際、暗号化データ抽出部36は、抽出命令コード103が記憶装置3内のアーキテクチャ情報340に対応していない命令コードである場合、復号処理を終了する(ステップS202No)。抽出命令コード103がアーキテクチャ情報340に対応している場合、暗号化データ抽出部36は抽出命令コード103を実行して分割暗号化データA、B、・・・を抽出する(ステップS203)。
図6及び図8Aを参照して、暗号化データ抽出部36の動作の詳細を説明する。暗号化データ抽出部36が実行する抽出処理は、入力された実行開始アドレス109に基づいて開始される。以降の実行アドレスは、演算装置1に備わっているプログラムカウンタ(PC(図示なし))で管理される。先ず、実行開始アドレス109が示す“0x10000000番地”の命令1を実行する。命令1には、実行開始アドレス109“0x10000000”をレジスタ(図示なし)に格納するような命令が格納されている。その後、プログラムカウンタが進み抽出命令2以降が順次実行されていく。
ここで抽出命令コード103には、抽出対象の分割暗号化データA、B、Cを指定するオフセットアドレス及びそれぞれのデータサイズが挿入されている。ここで、抽出対象の分割暗号化データA、Bを指定するオフセットアドレスをそれぞれ、“0x00000804”、“0x00000804”とし、それぞれのデータサイズは256バイトとする。
暗号化データ抽出部36は、抽出命令2から抽出命令512を実行することで、以下の抽出処理を行う。先ず、レジスタに格納されたアドレス“0x10000000”とオフセットアドレス“0x00000804”を加算した “0x10000804”を抽出開始アドレスとする。次に、この抽出開始アドレスから抽出命令コード103に設定されたデータサイズ分の分割暗号化データ102を抽出する。ここでは、“0x00000804〜0x00000C00”に格納された分割暗号化データAが抽出される。続いて、次に抽出する分割暗号化データ102に対応するオフセットアドレス“0x00000804”を抽出開始アドレスに加算して抽出開始アドレスを更新する。次に、この抽出開始アドレスから抽出命令コード103に設定されたデータサイズ分の分割暗号化データ102を抽出する。ここでは、“0x00001008〜0x00001404”に格納された分割暗号化データBが抽出される。暗号化データ抽出部36は、同様にして、抽出開始アドレスの更新と、分割暗号化データ102の抽出処理を繰り返し、混在データ108内の全ての分割暗号化データA〜Cを抽出し、暗号化データ101として、図示しないメモリ内に展開する。尚、図6に記載されているアドレスなどは単なる一例であり、演算装置のアーキテクチャなどで異なる。
図6、図7及び図8Bを参照して、抽出命令コード103の全てが実行されると、プログラムカウンタが進むと、復号部37は、引き続きJump命令コードAを読み出し実行する(ステップS204Yes)。復号部37は、Jump命令コードAに従い、次の分割復号命令コードAを読み出す(ステップS205)。この際、復号部37は、分割復号命令コードAが記憶装置3内のアーキテクチャ情報340に対応していない命令コードである場合、復号処理を終了する(ステップS202No)。分割復号命令コードAがアーキテクチャ情報340に対応している場合(ステップS202Yes)、復号部37は読み出した分割復号命令コードAを実行してメモリ内に展開された暗号化データ102に対し復号する(ステップS203)。復号部37は、分割復号命令コードAを実行すると引き続きJump命令Bを実行し(ステップS204Yes)、分割復号命令コードBを読み出して実行する(ステップS205、S202Yes、S203)。復号部37は、以上のような復号処理を、Jump命令106がなくなるまで実行し(ステップS204No)、暗号化データ101を復号して元データ100を生成・出力する(ステップS203)。尚、復号部37は、入力された復号鍵107を用いて暗号化データ101を復号する。元データ100はI/Oインタフェース4を介して外部装置(例えば画像処理装置)に出力される。
以上のように、本発明による暗号化装置10は、暗号化データ101と復号に用いる復号命令コードを混在させたデータ(混在データ108)を生成し、これを復号側の装置に転送することで、暗号強度を向上させている。すなわち、転送されるデータ内に暗号化データ101とは別のデータが、分散して挿入されているため、このデータから復号鍵を推測することが困難となる。又、転送されるデータに混在させるデータが復号に用いる復号命令コードであり、その実行開始アドレス109を別に転送しているため、復号を許可された装置が、失敗せずに復号することができる。更に、混在データ108内の分割復号命令コード105を読み出せたとしても、自身のアーキテクチャによって読み取りが制限されるため、不正な閲覧を防止できる。例えば、16ビット命令と32ビット命令とでは、命令コードの読み取り自体が全く違うため、混在データ108を取得した装置のアーキテクチャが命令コードと異なる場合、その装置は分割復号命令コード105を解読することができない。
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。本実施の形態では、復号命令コード104は、復号計算式330をアーキテクチャ情報に基づいてクロスコンパイルすることで生成しているが、復号命令コード104をアーキテクチャに依存しない独自命令コードとしてもよい。例えば、復号計算式330で加算式及び減算式が使われ、この加算式、減算式があるアーキテクチャではそれぞれ"ADD"、”SUB”という命令コードだった場合、これを"0xA0"、”0xA1”という独自命令コードに変換して、復号命令コード104として暗号化データ101に混在させる。"0xA0"、”0xA1”は単なる一例であるが、これだけでは意味を持たない16進コードとなっているため、更に、暗号強度を向上することができる。
独自命令コードへの変換は、図5において、抽出命令コード103、復号命令コード104、分割復号命令コード105、Jump命令コード106のいずれかに対して行えばよく、アーキテクチャ依存の命令コードを、独自命令コードに変換後、混在データ108とする。復号時においては、"ADD"−"0xA0"、”SUB”−”0xA1”という対応情報が必要となるため、当事者間でこの情報をお互いに保持することになる。そして、復号時は、この対応情報が、混在データ108、実行開始アドレス109、アーキテクチャ情報340、複合化鍵107とともに暗号化データ抽出部36及び復号部37に入力され、復号部37は、独自命令コードを元のアーキテクチャに依存した復号命令コード104に逆変換した後、元データ100へ復号する。図5に示した混在データ108において、復号命令コード104への逆変換は、分割復号命令コードA〜Cが有している独自命令コードに対して行われ、逆変換後は、図7のフローチャートと同様の復号処理が行われる。
以下に、独自形式の選別命令コードの一例を示す。ここでは、8ビットの独自命令コードの場合について説明する。
例えば、選別命令コードを以下のように規定する。
0xA0 : ADD命令 計算用レジスタ1及び2(図示なし)の値を加算し、結果をレジスタ1に格納する。
0xA1 : SUB命令 計算用レジスタ1の値から2番の値を減算し、結果をレジスタ1に格納する。
0xB0 : レジスタ1に格納されているアドレスからデータを1バイト読み出し、レジスタ1に格納する。
0xB1 : レジスタ2番に格納されているアドレスからデータを1バイト読み出し、レジスタ2番に格納する。
0xC0 : この命令の後に書かれている4バイトの数値を、レジスタ1に格納する。
0xC1 : この命令の後に書かれている4バイトの数値を、レジスタ2に格納する。
0x00 : 何もしない(Not operation)
ここで、命令コードバイナリ(以下は全て16進)、バイナリデータ番地:0 1 2 3 4 5 6 7 8 9 A B C D E Fとし、混在データ108:00000000 C0 10 00 00 00 C1 10 00 00 01 B0 B1 A0 00 00 0000000010 C1 10 00 00 02 B1 A1 00 00 00 00 00 00 00 00 00が入力された場合、以下の実行処理が行われる。
1.0xC0命令 : 0x10000000の数値を、レジスタ1に格納する。
2.0xC1命令 : 0x10000001の数値を、レジスタ2に格納する。
3.0xB0命令 : 1の工程でレジスタ1にセットしたアドレス0x10000000番地から1バイトRead
4.0xB1命令 : 2の工程でレジスタ2にセットしたアドレス0x10000001番地から1バイトRead
5.0xA0命令 : 3と4の工程でレジスタ1及び2に読み出した値を加算し、レジスタ1に格納する。
6.0xC1命令 : 0x10000002の数値をレジスタ2番に格納する。
7.0xB1命令 : 6の工程でレジスタ2にセットしたアドレス0x10000002番地から1バイトRead
8.0xA1命令 : 5の加算結果数値から、7の工程でReadした値を減算し、レジスタ1に格納する。
以上のように、独自の選別命令コードを用いて、入力された混在データ108から暗号化データ101を抽出することができる。
更に、復号命令生成部33は、復号する暗号化装置10に対応するアーキテクチャを指定せずに復号命令コード104あるいは上記選別命令コードを生成しなくても良い。すなわち、復号する暗号化装置10のアーキテクチャ情報340に基づいてデータを暗号化しなくても良い。この場合、復号命令生成部33は、自身のアーキテクチャに基づいて復号命令コード104を作成する。
図1は、本発明による暗号化装置の実施の形態における構成を示す図である。 図2は、本発明による暗号化装置の暗号化処理におけるブロック図である。 図3は、本発明による暗号化装置の復号処理におけるブロック図である。 図4は、本発明による暗号化装置の暗号化処理の動作を示すフロー図である。 図5Aは、本発明による暗号化装置の暗号化処理(分割処理)の概念図である。 図5Bは、本発明による暗号化装置の暗号化処理(統合処理)の概念図である。 図6は、復号処理を行う暗号化装置に格納された混在データの一例を示す図である。 図7は、本発明による暗号化装置の復号処理の動作を示すフロー図である。 図8Aは、本発明による暗号化装置の復号処理(抽出処理)の概念図である。 図8Bは、本発明による暗号化装置の復号処理(復号処理)の概念図である。
符号の説明
10:暗号化装置
1:演算装置
2:RAM
3:記憶装置
4:I/Oインタフェース
5:バス
310:暗号化プログラム
320:暗号化計算式
330:復号計算式
340:アーキテクチャ情報
31:暗号化部
32:暗号化データ分割部
33:復号命令生成部
34:復号命令分割部
35:混在データ生成部
36:暗号化データ抽出部
37:復号部
100:元データ
101:暗号化データ
102:分割暗号化データ
103:抽出命令コード
104:復号命令コード
105:分割復号命令コード
106:Jump命令コード
107:復号鍵
108:混在データ
109:実行開始アドレス
110:復号データ

Claims (20)

  1. コンピュータを用いて、入力された元データに対して暗号化を行う方法であって、
    前記元データを暗号化して暗号化データを生成するステップと、
    前記暗号化データを復号する復号計算式から、前記暗号化データを前記元データに復号するための復号命令コードを生成するステップと、
    前記暗号化データと前記復号命令コードとを統合して混在データを生成するステップと、
    を具備する暗号化方法。
  2. 請求項1に記載の暗号化方法において、
    前記暗号化データを復号する演算装置の型式を指定するステップを更に具備し、
    前記復号命令コードは、前記型式に対応する命令コードである
    暗号化方法。
  3. 請求項1又は2に記載の暗号化方法において、
    前記暗号化データを、複数の暗号化データに分割するステップと、
    前記復号命令コードを複数の復号命令コードに分割するステップと、
    を更に具備し、
    前記混在データを生成するステップは、
    前記複数の暗号化データと、前記複数の復号命令コードとを統合して混在データを生成するステップを備える
    暗号化方法。
  4. 請求項3に記載の暗号化方法において、
    前記混在データを生成するステップは、
    前記複数の復号命令コードをチェーン化するためのJump命令コードを前記混在データに統合するステップを更に備える
    暗号化方法。
  5. 請求項4に記載の暗号化方法において、
    前記混在データを生成するステップは、
    前記Jump命令コードと、前記複数の暗号化データと、前記複数の復号命令コードのそれぞれのデータサイズに基づいて、前記混在データにおける前記複数の復号命令コードのそれぞれの位置情報を取得するステップと、
    前記位置情報に基づいて、前記Jump命令コードを生成するステップと
    を備える
    暗号化方法。
  6. 請求項1から5いずれか1項に記載の暗号化方法において、
    前記混在データを生成するステップは、
    前記混在データから前記暗号化データを抽出するための抽出命令コードを、前記混在データに統合するステップを更に備える
    暗号化方法。
  7. 請求項1から6いずれか1項に記載の暗号化方法をコンピュータに実現させる暗号化プログラム。
  8. コンピュータを用いて、入力されたデータを復号する方法であって、
    命令コードと、暗号化されたデータである暗号化データとを有する混在データから、前記暗号化データを復号するための復号命令コードを読み出すステップと、
    前記復号命令コードが復号処理を実行する演算装置の型式に対応する命令コードである場合、前記復号命令コードを実行し、前記暗号化データを前記元データに復号するステップと、
    を具備する復号方法。
  9. 請求項8に記載の復号方法において、
    前記混在データは、前記暗号化データを分割した複数の暗号化データと、抽出命令コードとを有し、
    前記暗号化データを復号するステップは、
    前記抽出命令コードを実行し、前記複数の暗号化データを抽出して前記暗号化データを生成するステップとを更に備える
    復号方法。
  10. 請求項9に記載の復号方法において、
    前記混在データは、
    前記復号命令コードを分割した複数の復号命令コードと、
    前記複数の復号命令コードをチェーン化するためのJump命令コードとを更に有し、
    前記暗号化データを復号するステップは、
    前記複数の復号命令コードのいずれかに続けて、前記Jump命令コードを実行するステップと、
    前記Jump命令コードによって指定される他の復号命令コードを実行するステップと
    を備える
    復号方法。
  11. 請求項8から10いずれか1項に記載の復号方法をコンピュータに実現させる復号プログラム。
  12. 元データを暗号化して暗号化データを生成する暗号化部と、
    前記暗号化データを復号する復号計算式から、前記暗号化データを前記元データに復号するための復号命令コードを生成する復号命令生成部と、
    前記暗号化データと前記復号命令コードとを統合して混在データを生成する混在データ生成部と、
    を具備する暗号化装置。
  13. 請求項12に記載の暗号化装置において、
    前記復号命令生成部は、前記暗号化データを復号する演算装置の型式を指定するアーキテクチャ情報に対応する前記復号命令コードを作成する
    暗号化装置。
  14. 請求項12又は13に記載の暗号化装置において、
    前記暗号化データを、複数の暗号化データに分割する暗号化データ分割部と、
    前記復号命令コードを複数の復号命令コードに分割する復号命令分割部と、
    を更に具備し、
    前記混在データ生成部は、前記複数の暗号化データと、前記複数の復号命令コードとを統合して混在データを生成する
    暗号化装置。
  15. 請求項14に記載の暗号化装置において、
    前記混在データ生成部は、前記複数の復号命令コードをチェーン化するJump命令コードを生成し、前記混在データに統合する
    暗号化装置。
  16. 請求項15に記載の暗号化装置において、
    混在データ生成部は、前記Jump命令コードと、前記複数の暗号化データと、前記複数の復号命令コードのそれぞれのデータサイズに基づいて、前記混在データにおける前記複数の復号命令コードの位置情報を取得し、前記位置情報に基づいて、前記Jump命令コードを生成する
    暗号化装置。
  17. 請求項12から16いずれか1項に記載の暗号化装置において、
    前記混在データ生成部は、前記混在データから前記暗号化データを抽出するための抽出命令コードを前記混在データに統合する
    暗号化方法。
  18. 命令コードと暗号化されたデータである暗号化データとを有する混在データから、復号処理を行うための復号命令コードを読み出す復号部と、
    復号処理を行う演算装置の型式を示すアーキテクチャ情報を有する記憶装置と、
    を具備し、
    前記復号部は、前記復号命令コードが自身のアーキテクチャ情報に基づく命令コードである場合、前記復号命令コードを実行し、前記暗号化データを前記元データに復号する
    復号装置。
  19. 請求項18に記載の復号装置において、
    前記混在データは、前記暗号化データを分割した複数の暗号化データと、抽出命令コードとを有し、
    前記抽出命令コードを実行し、前記混在データから前記複数の暗号化データを抽出して前記暗号化データを生成する暗号化データ抽出部を更に具備する
    復号装置。
  20. 請求項18又は19に記載の復号装置において、
    前記混在データは、
    前記復号命令コードを分割した複数の復号命令コードと、
    前記複数の復号命令コードをチェーン化するためのJump命令コードとを更に有し、
    前記復号部は、前記複数の命令コードのいずれかに続けて、前記Jump命令コードを実行し、前記Jump命令コードによって指定される他の復号命令コードを読み出して実行する
    復号装置。
JP2006306885A 2006-11-13 2006-11-13 暗号化方法、復号方法、暗号化装置、及び復号装置 Withdrawn JP2008124824A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006306885A JP2008124824A (ja) 2006-11-13 2006-11-13 暗号化方法、復号方法、暗号化装置、及び復号装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006306885A JP2008124824A (ja) 2006-11-13 2006-11-13 暗号化方法、復号方法、暗号化装置、及び復号装置

Publications (1)

Publication Number Publication Date
JP2008124824A true JP2008124824A (ja) 2008-05-29

Family

ID=39509115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006306885A Withdrawn JP2008124824A (ja) 2006-11-13 2006-11-13 暗号化方法、復号方法、暗号化装置、及び復号装置

Country Status (1)

Country Link
JP (1) JP2008124824A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3288241A1 (en) 2016-08-24 2018-02-28 Fujitsu Limited Medium storing data conversion program, data conversion device, and data conversion method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3288241A1 (en) 2016-08-24 2018-02-28 Fujitsu Limited Medium storing data conversion program, data conversion device, and data conversion method
US10459878B2 (en) 2016-08-24 2019-10-29 Fujitsu Limited Medium storing data conversion program, data conversion device, and data conversion method

Similar Documents

Publication Publication Date Title
JP6078555B2 (ja) 鍵駆動の難読化を用いる仮想マシンデバイス及び方法
JP5532291B2 (ja) プロセッサのバーチャルマシン内で機密コンテンツをセキュアに処理するための方法及び装置
KR101560131B1 (ko) 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법
US8266448B2 (en) Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
JP5337411B2 (ja) 情報秘匿化方法および情報秘匿化装置
US8135964B2 (en) Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
CN111656345B (zh) 启用容器文件中加密的软件模块
WO2005098570A1 (ja) 実行装置
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
EP3281357B1 (en) Session based watermarking of media content using encrypted content streams
US9075999B2 (en) Memory device and method for adaptive protection of content
JP6698774B2 (ja) 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法
US9292708B2 (en) Protection of interpreted source code in virtual appliances
CN106375080B (zh) 一种flash文件的加密及解密方法及其装置
JP2004171367A (ja) 回路動作シミュレーション装置、回路動作シミュレーション方法、回路動作シミュレーションプログラム、および回路情報復号化プログラム
JP2008009717A (ja) 情報処理端末およびコンテンツ書き込みシステム
CN114547653B (zh) 开发环境的加密方法、解密方法及装置、设备和介质
JP2020187184A (ja) 暗号復号装置
JP2008124824A (ja) 暗号化方法、復号方法、暗号化装置、及び復号装置
JP4897066B2 (ja) 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP2007172526A (ja) 情報処理システム、情報処理方法
JP4502359B2 (ja) 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP5574550B2 (ja) 情報秘匿化方法および情報秘匿化装置
WO2022074757A1 (ja) 制御方法、制御プログラム、および情報処理装置
GURUNADH et al. Secrete Image Transmission using AES Algorithm on Raspberry Pi

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100202