(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-25
(45)【発行日】2022-04-04
(54)【発明の名称】ホワイトボックス暗号を利用したデータの暗号化/復号化方法及び装置
(51)【国際特許分類】
H04L 9/06 20060101AFI20220328BHJP
G09C 1/00 20060101ALI20220328BHJP
【FI】
H04L9/06 Z
G09C1/00 610A
(21)【出願番号】P 2021098240
(22)【出願日】2021-06-11
【審査請求日】2021-06-15
(31)【優先権主張番号】10-2020-0072474
(32)【優先日】2020-06-15
(33)【優先権主張国・地域又は機関】KR
【早期審査対象出願】
(73)【特許権者】
【識別番号】520495973
【氏名又は名称】スティーリアン インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】リー,ジュン ヨン
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2013-524322(JP,A)
【文献】特表2012-520599(JP,A)
【文献】特表2011-514091(JP,A)
【文献】特表2011-521366(JP,A)
【文献】米国特許出願公開第2017/244677(US,A1)
【文献】米国特許出願公開第2015/215117(US,A1)
【文献】韓国公開特許第2015-40576(KR,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/06
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ホワイトボックス暗号を用いてデータを暗号化するための装置であって、
暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの暗号化キーテーブルを生成するキーテーブル生成部、及び
前記暗号化キーテーブルを利用して前記データを前記ホワイトボックス暗号ベースの方式で暗号化するホワイトボックス暗号ライブラリを含み、
前記ホワイトボックス暗号ライブラリは、
Androidベースのjarライブラリとsoライブラリを含み、
前記jarライブラリは、暗号化キーテーブルを利用して前記データを暗号化して中間暗号データを生成するデータ暗号化部を含み、
前記soライブラリは、前記中間暗号データを復号してデータを生成するデータ復号化部と、生成されたデータを前記ホワイトボックス暗号方式を利用して暗号化して最終暗号データを生成するホワイトボックス暗号化部とを含む、
ことを特徴とするホワイトボックス暗号を利用したデータの暗号化装置。
【請求項2】
ホワイトボックス暗号を用いて、暗号化されたデータを復号化するための装置であって、
暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの復号化キーテーブルを生成するキーテーブル生成部、及び
前記復号化キーテーブルを利用して
、前記暗号化されたデータをホワイトボックス暗号ベースの方式で復号化するホワイトボックス暗号ライブラリを含み、
前記ホワイトボックス暗号ライブラリは、
Androidベースのjarライブラリとsoライブラリを含み、
前記jarライブラリは、前記復号化キーテーブルを利用して前記暗号化されたデータを暗号化し、中間暗号データを生成するデータ暗号化部を含み、
前記soライブラリは、前記中間暗号データを復号化して前記暗号化されたデータを生成するデータ復号化部と、生成された前記暗号化されたデータを前記ホワイトボックス暗号方式を利用して復号化してデータを生成するホワイトボックス復号化部とを含む、
ことを特徴とするホワイトボックス暗号を利用したデータの復号化装置。
【請求項3】
ホワイトボックス暗号を利用したデータの暗号化方法であって、
データ及び暗号キーを受信する段階、
前記暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの暗号化キーテーブルを生成する段階、及び
前記暗号化キーテーブルを利用して前記データを前記ホワイトボックス暗号ベースの方式で暗号化する段階を含み、
前記ホワイトボックス暗号ベースの方式で暗号化する段階は、
Androidベースのjarライブラリ
を利用して前記暗号化キーテーブルをもとに前記データを暗号化して中間暗号データを生成し、Androidベースのsoライブラリを利用して前記データに対して暗号化及び復号化過程を経た後、前記ホワイトボックス暗号方式を利用して
中間暗号データを復号しデータを生成して最終暗号データを生成し、前記生成されたデータをホワイトボックス暗号方式を利用して暗号化する、
ことを特徴とするホワイトボックス暗号を利用したデータの暗号化方法。
【請求項4】
ホワイトボックス暗号を利用したデータの復号化方法であって、
暗号化されたデータ及び暗号キーを受信する段階、
前記暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの復号化キーテーブルを生成する段階、及び
前記復号化キーテーブルを利用して前記暗号化されたデータを前記ホワイトボックス暗号ベースの方式で復号化する段階を含み、
前記ホワイトボックス暗号ベースの方式で復号化する段階は、
Androidベースのjarライブラリ
を利用して前記暗号化キーテーブルをもとに前記暗号化されたデータを暗号化して中間暗号データを生成し、Androidベースのsoライブラリを利用して前記
中間暗
号データ
を復号して復号化データを生成するデータ復号化部と、前記ホワイトボックス暗号方式を利用して
前記生成された暗号化データを復号化
してデータを生成する、
ことを特徴とするホワイトボックス暗号を利用したデータの復号化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホワイトボックス暗号を利用したデータの暗号化/復号化方法及び装置に関する発明である。
【背景技術】
【0002】
暗号化技術は、平文(Plain text)を暗号文(Cipher text)に変える技術である。これらの暗号化技術は、ソフトウェアコードで実装されることもあり、ハードウェア装置で実装されることもある。暗号化技術は大きくブラックボックス暗号方法とホワイトボックス暗号方法に分けられる。
【0003】
ブラックボックスに基づく暗号技術の場合、入力された平文を暗号化する過程で暗号化キー(Key)が必要である。この暗号化キーは、ブラックボックスと仮定した暗号化装置の内部に存在する。ブラックボックスは、その中が見えないことを意味する。
【0004】
すなわち、ブラックボックスに基づく暗号化装置の設計は、クラッカーがこの暗号化装置の内部を見ることができないという仮定から出発する。したがって、クラッカーはブラックボックスベースの暗号化装置に入力される平文と出力される暗号化文だけ見ることができる。したがって、クラッカーは2つの入力値と出力値を継続して観察し、あるパターンを突き止めようとする。
【0005】
ブラックボックスの場合は、単純に暗号化装置の設計者がこの暗号化装置自体は完璧に安全であると仮定するものなので、もしこの暗号化装置自体がクラッカーに破られてしまうと、暗号化キーが漏洩してしまうことがある。暗号化キーが漏洩すると、すべての暗号化過程は、クラッカーに完全に公開されるという問題点が発生する。
【0006】
これらのブラックボックス暗号方法よりもセキュリティ性が強化された暗号方法がホワイトボックス暗号方法であって、
図1及び
図2は、ホワイトボックス暗号を説明するための図面である。
図1は、ホワイトボックス暗号の全体的な構成を、
図2は、ホワイトボックスの作動原理を説明するための式である。
【0007】
ホワイトボックス(10)は、中を覗き込むことができる透明なボックスを意味する。したがって、ホワイトボックス暗号方法は、クラッカー(40)がホワイトボックス(10)の内部を覗き見ることができるので、暗号化及び復号化に関連するソフトウェアの実行過程をすべて見ることができるという仮定から出発する。クラッカーが暗号化装置の内部を見ることができれば、暗号化キー(Key)を獲得することができるので、クラッカー(40)が暗号文(20)を容易に平文(30)に変換することができる。そのため、設計者はより多くの事項を考慮して暗号化装置を設計しなければならない。
【0008】
暗号化装置をホワイトボックスと仮定すると、暗号化キー(Key)を簡単に装置内に保存することができない。したがって、一般的なホワイトボックスでは、暗号化キーがそのまま存在せず、複雑な暗号化演算アルゴリズムと入り混じって存在するので、暗号化キーを別途に得ることができない。また、このアルゴリズムは、元に戻す(invert)ことが難しいアルゴリズムなので、結果値を利用して元の値や暗号化キーを推測するのは難しい。
【0009】
すなわち、ホワイトボックス暗号はアルゴリズムを大きなルックアップテーブル(look-up table)に作成し、その中に暗号キーをソフトウェアで実装された暗号アルゴリズムと入り混じった状態で隠しておくことで、内部の動作を解析しても暗号キーを簡単に類推できないようにする手法である。
【0010】
暗号アルゴリズムを一つの大きなルックアップテーブルに作成すると、暗号キーを隠すことは容易であるが、テーブルの大きさが大きくなる可能性があるので、テーブルを暗号学的な手法で適切に分離するが、暗号化演算の中間値が露出しないようにデコードとエンコード過程を行うようにすればよい。
【0011】
図2に示すように、基本的なホワイトボックス暗号の基本原理は、エンコード過程(Mi)とデコード過程(Mi
-1)が、別途のテーブルで計算される。したがって、中間値が露出することなく、順次エンコードとデコードでそれぞれのエンコードとデコードは相殺され、元の暗号化動作(Xi)のみを行う結果と同じ結果が得られる。
【0012】
このように、現在のホワイトボックス暗号は、暗号キーを使用していないので、暗号キーが漏洩しない長所を持ち、標準暗号技術と互換する長所がある。しかし、暗号キーが隠されたホワイトボックス暗号アルゴリズム自体が漏洩すると、それによって暗号文を復号化することができるという問題点が存在する。
【発明の概要】
【発明が解決しようとする課題】
【0013】
したがって、一実施例によるホワイトボックス暗号を利用した暗号化/復号化方法及び装置は、従来技術が持っている問題点を解決するために考案された発明であって、アルゴリズムの一部が漏洩しても復号化をすることができないようにし、よりセキュリティ性が向上した暗号化/復号化方法及び装置を提供するためである。
【0014】
具体的には、ホワイトボックス暗号ライブラリの中に含まれているsoライブラリだけが独立的に流出した場合、復号化するデータとキーテーブルさえ獲得すれば、元のキーを知らなくても、復号化されたデータが漏洩することができるという問題点を解決するために考案された発明である。
【課題を解決するための手段】
【0015】
一実施例によるホワイトボックス暗号を利用したデータの暗号化装置は、暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの暗号化キーテーブルを生成するキーテーブル生成部と、前記暗号化キーテーブルを利用して前記データを前記ホワイトボックス暗号ベースの方式で暗号化するホワイトボックス暗号ライブラリを含み、前記ホワイトボックス暗号ライブラリは、前記データに対して暗号化及び復号化を実行した後、前記ホワイトボックス暗号方式を利用して暗号化することができる。
【0016】
前記ホワイトボックス暗号ライブラリは、Androidベースのjarライブラリとsoライブラリを含み、前記jarライブラリは、前記データに対して暗号化をして、前記soライブラリは、前記jarライブラリによって暗号化されたデータを復号化して復号化データを生成することができる。
【0017】
前記soライブラリは、ホワイトボックス暗号ベースのアルゴリズムを利用して前記復号化データを再び暗号化することができる。
【0018】
一実施例によるホワイトボックス暗号を利用したデータの復号化装置は、暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの復号化キーテーブルを生成するキーテーブル生成部と、前記復号化キーテーブルを利用して前記暗号化されたデータをホワイトボックス暗号ベースの方式で復号化をするホワイトボックス暗号ライブラリを含み、前記ホワイトボックス暗号ライブラリは、前記暗号化されたデータに対して暗号化及び復号化を実行した後、前記ホワイトボックス暗号方式を利用して復号化することができる。
【0019】
前記ホワイトボックス暗号ライブラリは、Androidベースのjarライブラリとsoライブラリを含み、前記jarライブラリは、前記暗号化されたデータに対して暗号化を行い、前記soライブラリは、前記jarライブラリによって暗号化されたデータを復号化した後、復号化されたデータをホワイトボックス暗号ベースのアルゴリズムを利用して、再び復号化することができる。
【0020】
一実施例によるホワイトボックス暗号を利用したデータの暗号化方法は、データ及び暗号キーを受信する段階、前記暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの暗号化キーテーブルを生成する段階、及び前記暗号化キーテーブルを利用して前記データを前記ホワイトボックス暗号ベースの方式で暗号化する段階を含み、前記ホワイトボックス暗号ベースの方式で暗号化する段階は、Androidベースのjarライブラリとsoライブラリを利用して前記データに対して暗号化及び復号化過程を経た後、前記ホワイトボックス暗号方式を利用して暗号化することができる。
【0021】
一実施例によるホワイトボックス暗号を利用したデータの復号化方法は、暗号化されたデータ及び暗号キーを受信する段階、前記暗号キーをもとにホワイトボックス暗号(White-Box Cryptography、WBC)ベースの復号化キーテーブルを生成する段階、及び前記復号化キーテーブルを利用して前記データを前記ホワイトボックス暗号ベースの方式で復号化する段階を含み、前記ホワイトボックス暗号ベースの方式で復号化する段階は、Androidベースのjarライブラリとsoライブラリを利用して前記暗号化されたデータに対して暗号化及び復号化過程を経た後、前記ホワイトボックス暗号方式を利用して復号化することができる。
【発明の効果】
【0022】
一実施例によるホワイトボックス暗号を利用した暗号化/復号化方法及び装置の場合、データを暗号化及び復号化することにおいて、データをjarライブラリ及びsoライブラリにより、データの暗号化及び復号化を経た後、ホワイトボックス方式の暗号化/復号化を実行するので、soライブラリのみ分離抽出されても従来技術と異なり、最終暗号データを得ることができず、よりセキュリティ性が向上した暗号化/復号化装置を提供することができる。
【図面の簡単な説明】
【0023】
【
図1】
図1は、本発明に適用されるホワイトボックス暗号の全体的な概念を説明するための図面である。
【
図2】
図2は、本発明に適用されるホワイトボックスの作動原理を説明するための式である。
【
図3】
図3は、従来の技術によるホワイトボックス暗号の脆弱性を説明するための図面である。
【
図4】
図4は、一実施例によるデータの暗号化装置の構成要素を示すブロック図である。
【
図5】
図5は、一実施例によってキーテーブル生成部から出力する2種類のキーテーブルを示す図である。
【
図6】
図6は、一実施例によってデータを暗号化する方法を説明するための図面である。
【
図7】
図7は、他の実施例によるデータの復号化装置の構成要素を示すブロック図である。
【
図8】
図8は、他の実施例によるデータを復号化する方法を説明するための図面である。
【
図9】
図9は、一実施例によるデータの暗号化/復号化装置の構成を説明するための図面である。
【
図10】
図10は、他の実施例によるデータの暗号化/復号化装置の構成を説明するための図面である。
【
図11】
図11は、他の実施例によるデータの暗号化/復号化装置の構成を説明するための図面である。
【発明を実施するための形態】
【0024】
本発明の一実施例によるホワイトボックス暗号を利用した暗号化/復号化方法は、コンピュータ装置によって実行することができる。前記コンピュータ装置は、メモリにロードされたプロセッサ、前記プロセッサによって行われるオペレーション(operation)がロード(load)されるメモリ、及び電源の供給とは無関係に前記オペレーションを保存するためのストレージを含む。ただし、前記コンピュータ装置の構成は一例に過ぎず、前記コンピュータ装置は、演算機能を有する多様な形態の装置を含む。
【0025】
コンピュータ装置は、暗号化または復号化する情報を得た後、暗号化/復号化処理を実行することができる。前記の情報は、コンピュータ装置のストレージ装置に保存された情報、コンピュータ装置に備えられたネットワークインタフェースを介して受信された情報、または前記コンピュータ装置に備えられたタッチスクリーンなどのユーザーインターフェースを介して入力された情報であることができる。
【0026】
コンピュータ装置は、入力された情報に対する暗号化/復号化を実行するホワイトボックス暗号モジュールをコンピュータ装置に備えられたメモリにロードする。一般的に、暗号化または復号化する情報を得た後にホワイトボックス暗号モジュールのメモリロードが実行されるが、それとは逆にホワイトボックス暗号モジュールのメモリロードが先に行われた後、暗号化または復号化する情報を得る動作が実行されることもある。
【0027】
すなわち、ホワイトボックス暗号モジュールは、必要な時だけメモリに一時的にロードされる一時ロードモジュールであることもでき、メモリに常時ロードされている状態を維持する常時ロードモジュールであることもできる。ホワイトボックス暗号モジュールが常時ロードモジュールであっても、コンピュータ装置の起動過程では、メモリにロードされる過程を経るだろう。
【0028】
ホワイトボックス暗号モジュールを常時ロードモジュールの形で運営する場合、一実施例によれば、メモリのカーネル(kernel)の領域に前記ホワイトボックス暗号モジュールをロードすることができる。カーネル領域は、オペレーティングシステムが使用するメモリ領域であり、オペレーティングシステム以外のユーザーアプリケーションは、前記カーネル領域に侵犯することはできない。
【0029】
したがって、メモリのカーネル領域にロードされたホワイトボックス暗号モジュールは、そのコードが流出することを防止することができる。また、起動過程で前記ホワイトボックス暗号モジュールをロードすることにより、起動が完了した後に動作できるクラッキング目的のユーザーアプリケーションが、ホワイトボックス暗号モジュールのバイナリデータを得ることを防止することができる。
【0030】
ホワイトボックス暗号モジュールが一時ロードモジュールの形で運営される場合、ホワイトボックス暗号モジュールのバイナリデータサイズほどメモリ容量を節約できる効果がある。ただし、ホワイトボックス暗号モジュールがメモリにロードされる過程で、前記ホワイトボックス暗号モジュールのバイナリがクラッキングアプリケーションによって複製される危険性が存在する。
【0031】
クラッキングアプリケーションは、前記ホワイトボックス暗号モジュールが必要な状況を作った後(例えば、ホワイトボックス暗号モジュールが使用される決済APPの実行)、メモリロードのためのシステム関数をフッキング(hooking)してメモリアドレスを取得するなどの方式で、ホワイトボックス暗号モジュールのバイナリを得ることができ(メモリダンプ技術を使用)、このような場合、セキュリティ上の問題が発生することができる。
【0032】
これらを詳しく見ると、
図3に示すように、ホワイトボックス暗号ライブラリ(70)は、暗号化するデータ(10)を暗号化キーテーブル(20)を利用して暗号化して、暗号データ(30)を出力する。ホワイトボックス暗号ライブラリ(70)は、一般的にaarファイルで構成されており、aarファイルの中には、
図3に示すように、Androidベースのjarライブラリ(71)ファイルとsoライブラリ(73)ファイルが含まれている。そして、soライブラリ(73)は入力されたデータをホワイトボックス暗号関数(75)を利用して暗号化する。
【0033】
しかし、ホワイトボックス暗号ライブラリ(70)に含まれているsoライブラリ(73)は、jarライブラリ(71)と独立的にホワイトボックス暗号ライブラリ(70)から抽出することができ、復号化するデータとキーテーブルさえ獲得すれば、元のキーを知っていなくても復号化されたデータが漏洩することができるという問題点が存在した。
【0034】
したがって、一実施例によるホワイトボックス暗号を利用したデータの暗号化/復号化装置(300)は、このような問題点を防止するために考案された発明であって、従来技術によりホワイトボックス暗号ライブラリ(70)からsoライブラリ(73)のみ独立的に抽出されたとしても、暗号データを得ることができないようにし、よりセキュリティ性が向上した暗号化/復号化方法を提供するためである。以下、図面を介して本発明の構成要素及び作動手順について調べてみる。
【0035】
図4は、一実施例によるデータの暗号化装置(100)の構成要素を示したブロック図であり、
図5は、一実施例によってキーテーブル生成部(120)から出力される2種類のキーテーブルを示す図面であり、
図6は、一実施例によるデータの暗号化装置(100)がデータを暗号化する方法を説明するための図面である。
【0036】
図5を参照すると、一実施例によるデータの暗号化装置(100)は、暗号化及び復号化に使用するキー(Key)を決定するキー決定部(110)、キー決定部(110)で決定された暗号化キー(50)をもとに暗号化に使用する暗号化キーテーブル(20)を生成するキーテーブル生成部(120)、及び暗号化キーテーブル(20)を利用してデータを暗号化するホワイトボックス暗号ライブラリ(130)を含むことができる。
【0037】
キーテーブル生成部(120)は、
図5に示すように、入力された暗号化キー(50)をキーテーブル生成関数を利用してデータ(20)を暗号化するのに必要な暗号化キーテーブル(20)と、暗号データ(30)を復号化するのに必要な復号化キーテーブル(40)をそれぞれ生成することができる。
【0038】
従来のAES(Advanced Encryption Standard:高度暗号化標準)アルゴリズム方式の暗号化方法の場合、暗号化するのに必要なキーと復号化するのに使われるキーが同一であったが、ホワイトボックス暗号方式の場合は、キーテーブルを利用して暗号化を行い、暗号化する時に使われるキーテーブルと復号化する時に使われるキーテーブルが互いに同一である点から、従来のAESアルゴリズム方式の暗号化と相違点が存在する。
【0039】
ホワイトボックス暗号ライブラリ(70)は、一般的にaarファイルで構成されており、aarファイルの中には、
図6に示すように、jarライブラリ(140)ファイルとsoライブラリ(150)ファイルが含まれている。そして、jarライブラリ(140)には、入力された暗号データ(30)を中間暗号データ(15)に暗号化するデータ暗号化部(141)が含まれており、soライブラリ(150)には、データ暗号化部(141)で暗号化した中間暗号データ(15)を復号化するデータ復号化部(151)と、復号化されたデータをホワイトボックス暗号関数アルゴリズムを利用して再び暗号化を行うホワイトボックス暗号化部(153)が含まれている。
【0040】
jarライブラリ(140)は、外部から暗号化するデータ(10)と暗号化キーテーブル(20)を受信した後、ユーザーの選択によって受信された暗号化データ(10)にパディング(padding)を挿入することができる。もし、暗号化するデータ(10)にパディングを挿入する場合、PKCS5Paddingの方式でパディングを挿入することができる。
【0041】
具体的には、jarライブラリ(140)は、JAVAでSubstitution Tableを通じた置換暗号とXOR演算を実行することができ、Javaネイティブインタフェース(JNI、Java Native Interface)に接続されたCでXOR及びSubstitution Tableを通じた暗号化過程を実行することができる。jarライブラリ(140)で使用されるSubstitution Tableは、従来のAESアルゴリズムで使用されるSubstitution Boxとは異なる構造及び内容を含んでいる。
【0042】
jarライブラリ(140)で入力されたデータ(10)が暗号化されて、中間暗号データ(15)に変換されると、soライブラリ(150)は、中間暗号データ(15)を受信した後、再び復号化及び暗号化過程を行う。
【0043】
具体的に、soライブラリ(140)に含まれているデータ復号化部(151)は、復号化する中間暗号データ(15)を受信した後、中間暗号データ(15)に対して復号化を行う。その後、ホワイトボックス暗号化部(153)は、復号化されたデータ(10)を再びホワイトボックス暗号アルゴリズムを利用して暗号化を行い、最終暗号データ(30)を出力する。
【0044】
すなわち、一実施例によるホワイトボックス暗号ライブラリ(130)によってデータを暗号化する場合、入力されるデータと出力されるデータは従来技術と同じであるが、暗号化をする過程で入力されるデータに対して暗号化及び復号化を実行した後に、再びホワイトボックスアルゴリズムに基づく暗号化を行うことに特徴がある。
【0045】
したがって、soライブラリ(150)のみホワイトボックス暗号ライブラリ(130)から分離抽出されても、soライブラリ(150)に入力されるべきデータは中間暗号データでなければならないので、暗号化するデータ(10)と暗号化キーテーブル(20)を知っていても最終暗号データ(30)を得ることができない。したがって、従来技術とは異なり、soライブラリ(150)のみホワイトボックス暗号ライブラリ(130)から分離抽出されても、最終暗号データ(30)が漏洩する問題点を解決できるという長所が存在する。
【0046】
図7は、他の実施例によるデータの復号化装置(200)の構成要素を示したブロック図であり、
図8は、他の実施例によるデータの復号化装置(200)によってデータを復号化する方法を説明するための図面である。
【0047】
図7を参照すると、一実施例によるデータの復号化装置(200)は、復号化に使用するキー(Key)を決定するキー決定部(210)、キー決定部(210)で決定された暗号化キー(50)をもとに復号化に使用する復号化キーテーブル(40)を生成するキーテーブル生成部(220)、及び復号化キーテーブル(40)を利用して暗号化されたデータを復号化するホワイトボックス暗号ライブラリ(230)を含むことができる。
【0048】
データの復号化装置(200)のキー決定部(210)、キーテーブル生成部(220)、及びホワイトボックス暗号ライブラリ(230)は、
図5で説明したキー決定部(110)、キーテーブル(120)、及びホワイトボックス暗号ライブラリ(130)と類似した役割をするので、これに対する説明は省略し、
図8を介して復号化する過程について詳細に説明する。
【0049】
図8を参考にすれば、jarライブラリ(240)は、外部から復号化する暗号データ(30)と復号化キーテーブル(40)を受信した後、JAVAでSubstitution Tableによる置換暗号とXOR演算を実行することができ、Javaネイティブインタフェース(JNI、Java Native Interface)に接続されたCでXOR及びSubstitution Tableによる暗号化過程を行うことができる。
【0050】
jarライブラリ(240)で使用されるSubstitution Tableは、従来のAESアルゴリズムで使用されるSubstitution Boxとは異なる構造及び内容を含んでいる。
【0051】
jarライブラリ(240)で暗号データ(30)が暗号化されて、中間暗号データ(25)に変換されると、soライブラリ(250)は、中間暗号データ(25)を受信した後、再び復号化及び暗号化過程を行う。
【0052】
具体的に、soライブラリ(250)に含まれているデータ復号化部(251)が復号化する中間暗号データ(25)を受信した後、中間暗号データ(25)に対して復号化を行う。その後、ホワイトボックス復号化部(153)は、復号化された暗号データ(30)を再びホワイトボックス暗号アルゴリズムベースの復号化を行い、最終データ(10)を出力する。
【0053】
すなわち、一実施例によるホワイトボックス暗号ライブラリ(230)によってデータを復号化する場合、入力されるデータと出力されるデータは、従来技術と同じであるが、復号化する過程で入力された暗号データに対して暗号化及び復号化を行った後に、再び復号化を行うことに特徴がある。
【0054】
したがって、soライブラリ(150)のみホワイトボックス暗号ライブラリ(130)から分離抽出されても、soライブラリ(150)に入力されるべきデータは、中間暗号データでなければならないので、暗号化されたデータ(10)と復号化キーテーブル(40)を知っていても元データ(10)を得ることができない。したがって、従来技術とは異なり、soライブラリ(150)のみホワイトボックス暗号ライブラリ(130)から分離抽出されても、元データ(10)が漏洩する問題点を解決できるという長所が存在する。
【0055】
図9乃至
図11は、様々な実施例によってデータの暗号化/復号化装置の構成を説明するための図面である。
【0056】
前の図面では、データの暗号化装置(100)とデータの復号化装置(200)を区分して説明したが、本発明の実施例は、これに限られるものではなく、
図9に示すように、ホワイトボックス暗号ベースのデータの暗号化装置(100)とデータの復号化装置(200)を含んでいるデータの暗号化/復号化装置(300)で実装されることがある。
【0057】
また、ホワイトボックスベースの暗号化アルゴリズムとAESベースの復号化アルゴリズムは、互いに互換できるので、一実施例によるデータの暗号化/復号化装置(300)は、
図10に示すように、ホワイトボックス暗号ベースのデータの暗号化装置(100)とAESアルゴリズムベースの復号化装置(200)を含む形で実装されることがある。
【0058】
図10のような形で実装される場合、データ(10)を暗号化する場合には、暗号化キーテーブル(20)が使用され、暗号データ(30)を復号化する場合には、復号化キー(60)が使用される。
【0059】
また、
図11に示すように、データの暗号化/復号化装置(300)は、
図10とは異なり、AESアルゴリズムベースの暗号化装置(100)とホワイトボックス暗号ベースのデータの復号化装置(200)を含んでいる形で実装されることがある。
【0060】
図11のような形で実装される場合、データ(10)を暗号化する場合には、暗号化キー(50)が使用され、暗号データを復号化する場合には、復号化キーテーブル(40)が使用される。
【0061】
一実施例によるホワイトボックス暗号を利用した暗号化/復号化方法及び装置の場合、データを暗号化及び復号化することにおいて、データをjarライブラリ及びsoライブラリにより、データの暗号化及び復号化を経た後、ホワイトボックス方式の暗号化/復号化を実行するので、soライブラリのみ分離抽出されても従来技術と異なり、最終暗号データを得ることができず、よりセキュリティ性が向上した暗号化/復号化装置を提供することができる。