JP5734685B2 - インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 - Google Patents
インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 Download PDFInfo
- Publication number
- JP5734685B2 JP5734685B2 JP2011020280A JP2011020280A JP5734685B2 JP 5734685 B2 JP5734685 B2 JP 5734685B2 JP 2011020280 A JP2011020280 A JP 2011020280A JP 2011020280 A JP2011020280 A JP 2011020280A JP 5734685 B2 JP5734685 B2 JP 5734685B2
- Authority
- JP
- Japan
- Prior art keywords
- checksum
- state
- binary
- modules
- generating
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
Description
・S0:F1及びF2は暗号化−(S1S2)
・S1:F1は暗号化、F2は復号化−(S1S2)
・S2:F1は復号化、F2は暗号化−(S1S2)
・S3:F1及びF2は復号化−(S1S2)
最初に、プログラムは、メイン関数510を実行する。このとき、状態SはS0=S1S2である。メイン関数は関数F1及びF2を呼び出すことができる。関数F1が呼び出される場合、暗号化されているF1は復号化される(520)。その後に、F1の実行530が始まる。このとき、状態SはS2=S1S2である。同様に、関数F2が呼び出される場合、暗号化されているF2は復号化され(550)、S2は反転する。その後に、F2の実行(560)が始まる。このとき、状態SはS1=S1S2である。
1.保護される関数が入力される場合、状態は一意である。すなわち、単一の実行経路が関数に通ずる。この場合、チェックサム値は一意であり、呼び出しポイントコードは、(望ましくは、難読な方法で)チェックサム値を埋め込むコードを有してよい。例えば、
if(checksum_value equals checksum_ref) then (do_something)
2.保護される関数が入力される場合、少数(5未満)のとり得る状態が存在する。この場合も、呼び出しポイントコードにチェックサム値を埋め込むことが可能である。例えば、
if(S equals S1 and checksum_value equals checksum_S1) or
if(S equals S2 and checksum_value equals checksum_S2)
then (do_something)
3.とり得る状態が多数存在する場合には、チェックサムテーブルが望ましい解決法である。例えば、
if(checksum_value equals LookupInChecksumTable(S)) then (do_something)
明細書において、モジュールは、2つのとり得る状態(例えば、暗号化及び復号化)を有するとして記載されてきた。当業者に明らかなように、モジュールは複数の(特に、2よりも多い)状態を有することが可能である。
110 プロセッサ
120 RAMメモリ
130 ユーザインターフェース(UI)
140 第2のインターフェース(I/O)
150 デジタルデータ担体150
410 バイナリ
415 コンピュータプログラムプロダクト
420 保護エンジン420
430 保護されたバイナリ430
432 チェックサム呼び出しポイント
434 チェックサムテーブル
F1、F2 関数
M1〜M3,M’1〜M’3 モジュール
S0〜S3 状態
V1〜V3 チェックサム
Claims (6)
- プロセッサによって実行される場合に、該プロセッサに、
複数のモジュールを有し、該複数のモジュールの夫々が、暗号化された状態及び暗号化されていない状態を含む少なくとも2つの状態のうちのいずれかの状態をとることができる自己書換型のバイナリを受け取るステップと、
前記複数のモジュールがとり得る状態の組み合わせごとに状態変数を生成するステップと、
コールグラフ解析を用いて、前記状態変数から、とり得る値を有する状態変数のサブセットを生成するステップと、
前記サブセットに含まれる状態変数ごとに、対応するチェックサムを生成するステップと、
前記サブセットに含まれる状態変数の数に基づき、前記チェックサムを前記バイナリに埋め込む方法を決定するステップと、
前記チェックサムを照合するための少なくとも1つの呼び出し関数を前記バイナリに挿入することによって、且つ、前記決定された方法に従って前記チェックサムを前記バイナリに埋め込むことによって、インテグリティが保護された自己書換型のバイナリを生成するステップと
を実行させる保護エンジンプログラム。 - 前記チェックサムを埋め込む方法を決定するステップは、
前記プロセッサに、前記サブセットに含まれる状態変数の数に基づき、前記チェックサムの夫々を、そのチェックサムを照合するための呼び出し関数に埋め込む第1の方法、又は前記チェックサムをルックアップテーブルに含める第2の方法のいずれかを選択させることを含む、
請求項1に記載の保護エンジンプログラム。 - 前記状態変数の夫々は、状態ビットのストリームを有し、該状態ビットの夫々は、前記複数のモジュールの夫々1つに対応し、該対応するモジュールの状態を示す、
請求項1に記載の保護エンジンプログラム。 - 前記チェックサムは、ハッシュ値である、
請求項1乃至3のうちいずれか一項に記載の保護エンジンプログラム。 - 請求項1乃至4のうちいずれか一項に記載の保護エンジンプログラムを記憶するコンピュータ可読記憶媒体。
- インテグリティが保護された自己書換型のバイナリを生成するための装置の作動方法であって、
複数のモジュールを有し、該複数のモジュールの夫々が、暗号化された状態及び暗号化されていない状態を含む少なくとも2つの状態のうちのいずれかの状態をとることができる自己書換型のバイナリを受け取るステップと、
前記複数のモジュールがとり得る状態の組み合わせごとに状態変数を生成するステップと、
コールグラフ解析を用いて、前記状態変数から、とり得る値を有する状態変数のサブセットを生成するステップと、
前記サブセットに含まれる状態変数ごとに、対応するチェックサムを生成するステップと、
前記サブセットに含まれる状態変数の数に基づき、前記チェックサムを前記バイナリに埋め込む方法を決定するステップと、
前記チェックサムを照合するための少なくとも1つの呼び出し関数を前記バイナリに挿入することによって、且つ、前記決定された方法に従って前記チェックサムを前記バイナリに埋め込むことによって、前記インテグリティが保護された自己書換型のバイナリを生成するステップと
を有する方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP10305164A EP2362314A1 (en) | 2010-02-18 | 2010-02-18 | Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code |
| EP10305164.5 | 2010-02-18 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2011170847A JP2011170847A (ja) | 2011-09-01 |
| JP2011170847A5 JP2011170847A5 (ja) | 2014-03-06 |
| JP5734685B2 true JP5734685B2 (ja) | 2015-06-17 |
Family
ID=42320561
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011020280A Expired - Fee Related JP5734685B2 (ja) | 2010-02-18 | 2011-02-02 | インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20110202996A1 (ja) |
| EP (1) | EP2362314A1 (ja) |
| JP (1) | JP5734685B2 (ja) |
| CN (1) | CN102163268B (ja) |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2378452B1 (en) | 2010-04-16 | 2012-12-19 | Thomson Licensing | Method, device and computer program support for verification of checksums for self-modified computer code |
| US9141800B2 (en) * | 2011-12-20 | 2015-09-22 | Advanced Micro Devices, Inc. | Method and apparatus for detecting intrusions in a computer system |
| CN104798075A (zh) * | 2012-09-28 | 2015-07-22 | 惠普发展公司,有限责任合伙企业 | 应用随机化 |
| WO2014080249A1 (en) * | 2012-11-23 | 2014-05-30 | Freescale Semiconductor, Inc. | Digital device |
| KR101482700B1 (ko) * | 2013-09-27 | 2015-01-14 | (주)잉카엔트웍스 | 해시를 이용한 프로그램의 무결성 검증 방법 |
| EP3026559A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
| EP3026560A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
| EP3026557A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
| EP3026558A1 (en) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Method and device for providing verifying application integrity |
| EP3301601B1 (en) * | 2016-09-30 | 2019-07-03 | Nagravision SA | Integrity of on demand code decryption |
| WO2018108275A1 (en) * | 2016-12-15 | 2018-06-21 | Irdeto B.V. | Software integrity verification |
| CN108898006B (zh) * | 2018-05-30 | 2020-04-03 | 百富计算机技术(深圳)有限公司 | Html5文件安全保护方法、系统及终端设备 |
| FR3083343B1 (fr) | 2018-06-29 | 2023-05-26 | Ingenico Group | Procede de determination d'une validite d'un code applicatif, dispositif et produit programme d'ordinateur correspondants. |
| US12145638B2 (en) * | 2020-02-03 | 2024-11-19 | Siemens Mobility GmbH | Method for identifying and verifying control software of a rail vehicle |
| US11288360B2 (en) * | 2020-03-04 | 2022-03-29 | Kyndryl, Inc. | Preventing untrusted script execution |
| EP4396713A1 (en) * | 2021-08-30 | 2024-07-10 | Qualcomm Incorporated | Functional safety software image integrity verifier |
| CN116415281B (zh) * | 2023-04-18 | 2023-10-20 | 青海省第三地质勘查院 | 基于改进末位校验和双重散列函数的权限控制方法及系统 |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6141756A (en) * | 1998-04-27 | 2000-10-31 | Motorola, Inc. | Apparatus and method of reading a program into a processor |
| US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
| US7287166B1 (en) * | 1999-09-03 | 2007-10-23 | Purdue Research Foundation | Guards for application in software tamperproofing |
| JP4042280B2 (ja) * | 1999-12-21 | 2008-02-06 | 富士ゼロックス株式会社 | 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体 |
| US6789199B1 (en) * | 2000-02-08 | 2004-09-07 | International Business Machines Corporation | Tamper resistance with pseudo-random binary sequence program interlocks |
| US7269744B1 (en) * | 2000-09-29 | 2007-09-11 | Intel Corporation | System and method for safeguarding data between a device driver and a device |
| US20020138748A1 (en) | 2001-03-21 | 2002-09-26 | Hung Andy C. | Code checksums for relocatable code |
| JP2002297542A (ja) * | 2001-04-02 | 2002-10-11 | Nippon Telegr & Teleph Corp <Ntt> | コンテンツ時限開示方法、システム、セキュリティデバイス |
| US6880149B2 (en) | 2002-04-01 | 2005-04-12 | Pace Anti-Piracy | Method for runtime code integrity validation using code block checksums |
| US7424706B2 (en) * | 2003-07-16 | 2008-09-09 | Microsoft Corporation | Automatic detection and patching of vulnerable files |
| US7500098B2 (en) * | 2004-03-19 | 2009-03-03 | Nokia Corporation | Secure mode controlled memory |
| CN100594509C (zh) * | 2005-02-11 | 2010-03-17 | 辛普雷克斯梅杰有限公司 | 软件保护方法 |
| KR100772881B1 (ko) * | 2006-05-25 | 2007-11-05 | 삼성전자주식회사 | 자기 수정 코드의 무결성 검증 장치 및 방법 |
| US7841010B2 (en) | 2007-01-08 | 2010-11-23 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
| GB0806284D0 (en) * | 2008-04-07 | 2008-05-14 | Metaforic Ltd | Profile-guided tamper-proofing |
| GB0810695D0 (en) * | 2008-06-12 | 2008-07-16 | Metaforic Ltd | Anti-tampering MMU defence |
| WO2010127438A1 (en) * | 2009-05-06 | 2010-11-11 | Irdeto Canada Corporation | Interlocked binary protection using whitebox cryptography |
-
2010
- 2010-02-18 EP EP10305164A patent/EP2362314A1/en not_active Withdrawn
-
2011
- 2011-02-02 JP JP2011020280A patent/JP5734685B2/ja not_active Expired - Fee Related
- 2011-02-15 US US12/931,982 patent/US20110202996A1/en not_active Abandoned
- 2011-02-17 CN CN201110042102.6A patent/CN102163268B/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US20110202996A1 (en) | 2011-08-18 |
| CN102163268B (zh) | 2016-03-16 |
| CN102163268A (zh) | 2011-08-24 |
| JP2011170847A (ja) | 2011-09-01 |
| EP2362314A1 (en) | 2011-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5734685B2 (ja) | インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体 | |
| KR101798672B1 (ko) | 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 | |
| CN112514321B (zh) | 共享秘密建立 | |
| US7546587B2 (en) | Run-time call stack verification | |
| JP5113169B2 (ja) | 暗号関数を難読化する方法およびシステム | |
| EP2634960B1 (en) | Method and apparatus for incremental code signing | |
| CN102222196B (zh) | 验证自修改的计算机代码校验和的方法及装置 | |
| CN109313677B (zh) | 用于动态可执行验证的方法和装置 | |
| US20170116410A1 (en) | Software protection | |
| US9602289B2 (en) | Steganographic embedding of executable code | |
| US20050114683A1 (en) | Tamper-resistant trusted java virtual machine and method of using the same | |
| US20050198507A1 (en) | Import address table verification | |
| EP2294529A1 (en) | Electronic device and method of software or firmware updating of an electronic device | |
| US20160055331A1 (en) | Detecting exploits against software applications | |
| KR20170087887A (ko) | 애플리케이션 무결성의 검증을 제공하는 방법 및 디바이스 | |
| JP2009169489A (ja) | 暗号化方法、復号化方法、暗号化装置、復号化装置 | |
| JP2011123229A (ja) | プログラムコード暗号化装置及びプログラム | |
| CN119377920B (zh) | Hsm固件的防逆向和滥用方法、装置、设备及介质 | |
| CN112685697B (zh) | 一种防止安卓应用被破解篡改的方法及终端 | |
| CN117272377A (zh) | 权限数据处理方法、装置及电子设备 | |
| CN111338664A (zh) | 映像文件打包方法及映像文件打包系统 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140116 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140116 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141016 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141028 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150126 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150227 |
|
| 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: 20150317 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150415 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5734685 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |