JP5988473B2 - モジュールの暗号化/復号化プログラム - Google Patents
モジュールの暗号化/復号化プログラム Download PDFInfo
- Publication number
- JP5988473B2 JP5988473B2 JP2011204370A JP2011204370A JP5988473B2 JP 5988473 B2 JP5988473 B2 JP 5988473B2 JP 2011204370 A JP2011204370 A JP 2011204370A JP 2011204370 A JP2011204370 A JP 2011204370A JP 5988473 B2 JP5988473 B2 JP 5988473B2
- Authority
- JP
- Japan
- Prior art keywords
- module
- program
- execution
- executed
- encrypted
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 47
- 230000037430 deletion Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
<概要>
図1は、本実施例のプログラム複合体の動作の一例を説明するための概念図である。この図にあるように、プログラムAとしたプログラム複合体は記憶域のアドレスXからアドレスYの間にモジュールP個が存在している。モジュール2からモジュールPは暗号化されている。プログラムは、モジュール1から順にモジュールPまで実行されることとする。モジュール1はモジュール2を呼び出し、モジュール2はモジュール3を呼び出すという階層的な実行方式をとる。
図3は、本実施例のプログラム複合体における機能ブロックの一例を表す図である。この図にあるように、本実施例の「プログラム複合体」(0300)は、「プログラム本体」(0301)と、「モジュールの集合体」(0302)と、「復号化プログラム」(0303)と、を有する。
図5は、本実施例のプログラム複合体における処理の流れの一例を表すフローチャートである。まず、次モジュールは暗号化されているか否かの判断を行う(ステップS0501)。暗号化されている場合には、復号化するための処理を実行する(ステップS0502)。暗号化されていない場合には、ステップS0502はスキップする。その後次モジュールを実行し(ステップS0503)、プログラムの終了か否かの判断を行い(ステップS0504)、終了で無ければ、ステップS0501に戻る。終了であれば、プログラムを終了させる。
図6は、上記機能的な各構成要件をハードウエアとして実現した際の、プログラム複合体における構成の一例を表す概略図である。この図を利用してアプリケーション切換処理におけるそれぞれのハードウエア構成部の働きについて説明する。この図にあるように、本実施例のプログラム複合体は、各種演算処理を行う「CPU(中央演算装置)」(0601)と、「揮発性メモリ」(0602)と、「不揮発性メモリ」(0603)とを有している。また、ユーザからの操作入力を受け付けるマウスやキーボードなどや、表示装置などが接続される「入出力I/F」(0604)を有する。そしてそれらが「システムバス」(0605)などのデータ通信経路によって相互に接続され、情報の送受信や処理を行う。
以上のように本実施例のプログラム複合体によって、暗号化された次に実行されるべきモジュールを呼び出し元のモジュールによって復号化し、実行することができる。これにより、モジュールは階層的に実行されることとなり、実行直前まで保護すべきモジュールを暗号化したままとすることが可能である。これにより、一度に全てのモジュールを復号化する場合よりも、解析に手間がかかることとなるため、プログラムの耐タンパ性が向上する。
<概要>
図7は、本実施例のプログラム複合体の適用例について説明するための概念図である。この図にあるように、プログラムの実行開始時(0801)においては、モジュール1以外のモジュールが暗号化されている。復号化プログラムによりモジュール1の実行終了前に、次に実行すべきモジュール2を復号化する。そして、モジュール1の終了後においては、モジュール1を記憶域から削除する(0802)。
図8は、本実施例のプログラム複合体における機能ブロックの一例を表す図である。この図にあるように、本実施例の「プログラム複合体」(0800)は、「プログラム本体」(0801)と、「モジュールの集合体」(0802)と、「復号化プログラム」(0803)と、を有する。なお、これら構成要件については上記実施例にて既に記載済みであるのでその説明は省略する。本実施例のプログラム複合体の特徴点は、「プログラム複合体」(0800)が「削除プログラム」(0804)を新たに有する点である。
<処理の流れ>
図9は、本実施例のプログラム複合体における処理の流れの一例を表すフローチャートである。まず、次モジュールは暗号化されているか否かの判断を行う(ステップS0901)。暗号化されている場合には、復号化するための処理を実行する(ステップS0902)。暗号化されていない場合には、ステップS0902はスキップする。その後次モジュールを実行開始(ステップS0903)する。次いで、次モジュールは呼出元モジュールの削除を行う(ステップS0904)。その後、プログラムの終了か否かの判断を行い(ステップS0905)、終了で無ければ、ステップS0901に戻る。終了であれば、プログラムを終了させる。
図10は、上記機能的な各構成要件をハードウエアとして実現した際の、プログラム複合体における構成の一例を表す概略図である。この図を利用してアプリケーション切換処理におけるそれぞれのハードウエア構成部の働きについて説明する。この図にあるように、本実施例のプログラム複合体は、各種演算処理を行う「CPU(中央演算装置)」(1001)と、「揮発性メモリ」(1002)と、「不揮発性メモリ」(1003)とを有している。また、ユーザからの操作入力を受け付けるマウスやキーボードなどや、表示装置などが接続される「入出力I/F」(1004)を有する。そしてそれらが「システムバス」(1005)などのデータ通信経路によって相互に接続され、情報の送受信や処理を行う。
このようにして、実行後のモジュールを削除していくことによって、実行後に記憶域に残っている平文のコードを除くことができる。これにより、実行後のモジュールのコードを解析することが不可能となる。したがって、耐タンパ性の高いプログラム複合体の実行が可能となる。
<概要>
図11は、本実施例のプログラム複合体の適用例について説明するための概念図である。この図にあるように、プログラムの実行開始時(1101)においては、モジュール1以外のモジュールが暗号化されている。復号化プログラムによりモジュール1の実行終了前に、次に実行すべきモジュール2を復号化する。そして、モジュール1の終了後においては、モジュール1を再度暗号化する(1102)。
図12は、本実施例のプログラム複合体における機能ブロックの一例を表す図である。この図にあるように、本実施例の「プログラム複合体」(1200)は、「プログラム本体」(1201)と、「モジュールの集合体」(1202)と、「復号化プログラム」(1203)と、を有する。なお、これら構成要件については上記実施例にて既に記載済みであるのでその説明は省略する。本実施例のプログラム複合体の特徴点は、「プログラム複合体」(1200)が「再暗号化プログラム」(1204)を新たに有する点である。
図13は、本実施例のプログラム複合体における処理の流れの一例を表すフローチャートである。まず、次モジュールは暗号化されているか否かの判断を行う(ステップS1301)。暗号化されている場合には、復号化するための処理を実行する(ステップS1302)。暗号化されていない場合には、ステップS1302はスキップする。その後次モジュールを実行開始(ステップS1303)する。次いで、次モジュールは呼出元モジュールの再暗号化を行う(ステップS1304)。その後、プログラムの終了か否かの判断を行い(ステップS1305)、終了で無ければ、ステップS1301に戻る。終了であれば、プログラムを終了させる。
図14は、上記機能的な各構成要件をハードウエアとして実現した際の、プログラム複合体における構成の一例を表す概略図である。この図を利用してアプリケーション切換処理におけるそれぞれのハードウエア構成部の働きについて説明する。この図にあるように、本実施例のプログラム複合体は、各種演算処理を行う「CPU(中央演算装置)」(1401)と、「揮発性メモリ」(1402)と、「不揮発性メモリ」(1403)とを有している。また、ユーザからの操作入力を受け付けるマウスやキーボードなどや、表示装置などが接続される「入出力I/F」(1404)を有する。そしてそれらが「システムバス」(1405)などのデータ通信経路によって相互に接続され、情報の送受信や処理を行う。
このようにして、本実施例のプログラム複合体は、実行後に記憶域に残っている平文のコードを再び暗号化できる。これにより、実行後のモジュールのコードを解析することが不可能となる。したがって、耐タンパ性の高いプログラム複合体の実行が可能となる。
0301 プログラム本体
0302 モジュールの集合体
0303 復号化プログラム
Claims (2)
- 実行時には実行メモリ領域に展開されるモジュールの集合体からなるプログラム本体であって、
各モジュールのうち少なくとも一つは非実行時には暗号化された状態であるプログラム本体と、
次に実行されるモジュールである次モジュールが、暗号化されている場合には、現在実行中のモジュールの終了前であって次モジュールの実行直前のタイミングにて演算装置が実行可能に復号化するための処理を計算機に実行させるための復号化プログラムと、
次モジュールの実行開始後に次モジュールを呼び出したモジュールである呼出元モジュールを実行メモリ領域から削除する処理を計算機に実行させるための削除プログラムと、からなり、
前記復号化は、次モジュールの暗号化されている記憶域におけるアドレス情報を実行中のモジュールから受け取って行われるプログラム複合体。 - 実行時には実行メモリ領域に展開されるモジュールの集合体からなるプログラム本体であって、
各モジュールのうち少なくとも一つは非実行時には暗号化された状態であるプログラム本体と、
次に実行されるモジュールである次モジュールが、暗号化されている場合には、現在実行中のモジュールの終了前であって次モジュールの実行直前のタイミングにて演算装置が実行可能に復号化するための処理を計算機に実行させるための復号化プログラムと、
次モジュールの実行開始後に呼出元モジュールを実行メモリ領域にて再暗号化する処理を計算機に実行させるための再暗号化プログラムと、からなり、
前記復号化は、次モジュールの暗号化されている記憶域におけるアドレス情報を実行中のモジュールから受け取って行われるプログラム複合体。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011204370A JP5988473B2 (ja) | 2011-09-20 | 2011-09-20 | モジュールの暗号化/復号化プログラム |
US14/346,012 US9251356B2 (en) | 2011-09-20 | 2012-06-14 | Module encryption/decryption program |
KR1020167028810A KR20160123395A (ko) | 2011-09-20 | 2012-06-14 | 모듈의 암호화/복호화 프로그램 |
KR1020147010195A KR101942010B1 (ko) | 2011-09-20 | 2012-06-14 | 모듈의 암호화/복호화 프로그램 |
PCT/JP2012/065246 WO2013042409A1 (ja) | 2011-09-20 | 2012-06-14 | モジュールの暗号化/復号化プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011204370A JP5988473B2 (ja) | 2011-09-20 | 2011-09-20 | モジュールの暗号化/復号化プログラム |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015187668A Division JP2016028334A (ja) | 2015-09-25 | 2015-09-25 | モジュールの暗号化/復号化プログラム |
JP2016155565A Division JP6374454B2 (ja) | 2016-08-08 | 2016-08-08 | モジュールの暗号化/復号化プログラム |
JP2016155564A Division JP6374453B2 (ja) | 2016-08-08 | 2016-08-08 | モジュールの暗号化/復号化プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013065237A JP2013065237A (ja) | 2013-04-11 |
JP5988473B2 true JP5988473B2 (ja) | 2016-09-07 |
Family
ID=47914190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011204370A Active JP5988473B2 (ja) | 2011-09-20 | 2011-09-20 | モジュールの暗号化/復号化プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9251356B2 (ja) |
JP (1) | JP5988473B2 (ja) |
KR (2) | KR101942010B1 (ja) |
WO (1) | WO2013042409A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6083348B2 (ja) * | 2013-07-31 | 2017-02-22 | 株式会社ソシオネクスト | プログラム実行方法および復号装置 |
WO2016139078A1 (en) * | 2015-03-02 | 2016-09-09 | Inventio Ag | Protecting a computer program against reverse engineering |
JP2019149763A (ja) * | 2018-02-28 | 2019-09-05 | オムロン株式会社 | データの処理方法、制御システム、制御装置 |
US11941109B2 (en) * | 2021-12-21 | 2024-03-26 | Cyberark Software Ltd. | Customizable and dynamically mutable operating systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001029777A1 (en) * | 1999-10-18 | 2001-04-26 | Stamps.Com | Role assignments in a cryptographic module for secure processing of value-bearing items |
US7216110B1 (en) * | 1999-10-18 | 2007-05-08 | Stamps.Com | Cryptographic module for secure processing of value-bearing items |
JP4475894B2 (ja) * | 2002-08-01 | 2010-06-09 | パナソニック株式会社 | 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法 |
EP1603001B1 (en) | 2002-08-01 | 2007-10-31 | Matsushita Electric Industrial Co., Ltd. | Apparatusses and methods for decrypting blocks of data and locating the decrypted blocks of data in memory space used for execution |
JP4557516B2 (ja) * | 2003-07-30 | 2010-10-06 | パナソニック株式会社 | 暗号化プログラム生成装置および暗号化プログラム生成方法 |
JP4770425B2 (ja) * | 2005-11-24 | 2011-09-14 | 富士ゼロックス株式会社 | 保護済み実行プログラムの作成のためのプログラム、方法及び装置 |
JP5374751B2 (ja) * | 2008-07-31 | 2013-12-25 | 株式会社ハイパーテック | メモリ管理方法 |
JP2010217975A (ja) * | 2009-03-13 | 2010-09-30 | Nec System Technologies Ltd | 情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法 |
JP2011028506A (ja) | 2009-07-24 | 2011-02-10 | Renesas Electronics Corp | プログラムの難読化方法とプログラムと装置 |
US8782429B2 (en) * | 2009-12-23 | 2014-07-15 | Ab Initio Technology Llc | Securing execution of computational resources |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
-
2011
- 2011-09-20 JP JP2011204370A patent/JP5988473B2/ja active Active
-
2012
- 2012-06-14 KR KR1020147010195A patent/KR101942010B1/ko active IP Right Grant
- 2012-06-14 US US14/346,012 patent/US9251356B2/en not_active Expired - Fee Related
- 2012-06-14 KR KR1020167028810A patent/KR20160123395A/ko not_active Application Discontinuation
- 2012-06-14 WO PCT/JP2012/065246 patent/WO2013042409A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20150006909A1 (en) | 2015-01-01 |
KR20140069176A (ko) | 2014-06-09 |
KR20160123395A (ko) | 2016-10-25 |
WO2013042409A1 (ja) | 2013-03-28 |
KR101942010B1 (ko) | 2019-01-24 |
JP2013065237A (ja) | 2013-04-11 |
US9251356B2 (en) | 2016-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2620712C2 (ru) | Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ | |
US20160117518A1 (en) | File Encryption/Decryption Device And File Encryption/Decryption Method | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
CN105227565B (zh) | 用于安卓系统的防逆向破解共享对象文件的方法和装置 | |
CN107612683B (zh) | 一种加解密方法、装置、系统、设备和存储介质 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN107491317A (zh) | 一种基于异构加速平台的aes对称加解密方法及系统 | |
CN107528690A (zh) | 一种基于异构加速平台的sm4对称加解密方法及系统 | |
JP5988473B2 (ja) | モジュールの暗号化/復号化プログラム | |
CN106375080B (zh) | 一种flash文件的加密及解密方法及其装置 | |
US8918653B2 (en) | Protection of interpreted source code in virtual appliances | |
CN108229190B (zh) | 透明加解密的控制方法、装置、程序、存储介质和电子设备 | |
CN114124364A (zh) | 密钥安全处理方法、装置、设备及计算机可读存储介质 | |
KR20170022023A (ko) | 프로그램 실행 코드를 난독화하기 위한 장치 및 방법, 난독화된 프로그램 실행 코드를 복구하여 실행하기 위한 장치 및 방법 | |
JP2010217975A (ja) | 情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法 | |
JP6374454B2 (ja) | モジュールの暗号化/復号化プログラム | |
JP6374453B2 (ja) | モジュールの暗号化/復号化プログラム | |
US9378395B2 (en) | Method, a device and a computer program support for execution of encrypted computer code | |
CN103605927A (zh) | 一种基于嵌入式Linux系统实现加密和解密方法 | |
WO2016188134A1 (zh) | 一种实现应用加固的方法及装置 | |
CN109995526A (zh) | 一种密钥的存储方法和装置、密钥的调用方法和装置 | |
JP2016028334A (ja) | モジュールの暗号化/復号化プログラム | |
CN107688729B (zh) | 基于可信主机的应用程序保护系统及方法 | |
JP2011053749A (ja) | デバッグ方法、デバッグ装置、及びトランスレータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140508 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150730 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150925 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160309 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160509 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160714 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160808 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5988473 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |