JP2012165289A - 通信装置およびセキュアモジュール - Google Patents

通信装置およびセキュアモジュール Download PDF

Info

Publication number
JP2012165289A
JP2012165289A JP2011025497A JP2011025497A JP2012165289A JP 2012165289 A JP2012165289 A JP 2012165289A JP 2011025497 A JP2011025497 A JP 2011025497A JP 2011025497 A JP2011025497 A JP 2011025497A JP 2012165289 A JP2012165289 A JP 2012165289A
Authority
JP
Japan
Prior art keywords
program
secure module
scan
communication
target
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.)
Granted
Application number
JP2011025497A
Other languages
English (en)
Other versions
JP5772031B2 (ja
Inventor
Kiyoyuki Kobiyama
清之 小檜山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011025497A priority Critical patent/JP5772031B2/ja
Priority to US13/335,506 priority patent/US9152773B2/en
Priority to EP12150100.1A priority patent/EP2485173B1/en
Priority to KR1020120004363A priority patent/KR101337084B1/ko
Priority to CN201210023265.4A priority patent/CN102630085B/zh
Publication of JP2012165289A publication Critical patent/JP2012165289A/ja
Application granted granted Critical
Publication of JP5772031B2 publication Critical patent/JP5772031B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/10Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols with particular housing, physical features or manual controls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】不正ソフトウェアによる正規の暗号鍵を用いた暗号化通信の防止を図ること。
【解決手段】通信装置101内のセキュアモジュール102は、暗号鍵Kをセキュアに管理している。セキュアモジュール102は、暗号化通信をおこなうプログラムの改ざんの有無を検出する。セキュアモジュール102は、改ざんされていない正規プログラムには暗号鍵Kを供するが、改ざんされた不正プログラムには暗号鍵Kを用いた暗号化通信ができないようにする。これにより、不正プログラムが送信内容を偽装したとしても、暗号鍵Kにより暗号化通信ができないため、安全な暗号化通信を担保できる。
【選択図】図1

Description

本発明は、情報を処理する通信装置およびセキュアモジュールに関する。
従来、モバイル端末(以下、単に「端末」という)は、第3者によるソフトウェア開発を想定していなかったため、端末の仕様およびソフトウェア構造は一般に知られておらず、端末内部は秘匿性が保たれ相当に安全であった。また、安全性の保証されたセキュアモジュール(耐タンパモジュール、例えばSIMカード(Subscriber Identity Module Card))を信頼性拠点として、特に秘匿すべき情報(例えば、正規の暗号鍵)の安全性を担保していた(例えば、下記特許文献1および2参照)。
そのため、外部装置は、端末と通信をおこなう際には、受信した通信内容が、安全性の担保された正規の暗号鍵により暗号化されているかに基づいて、正規の通信内容か偽の通信内容かを判別して通信の安全性を担保していた。
特開2004−129227号公報 特許第4408601号公報
しかしながら、近年では、スマートフォンで見られるように、端末の仕様およびソフトウェア構造を公開し、第3者によるソフトウェア開発を促す傾向にある。このため、クラッカーによって、端末内のソフトウェアが読み出され、解析され、改ざんされ、不正ソフトウェアが開発される可能性が増大している。また、セキュアモジュールは、外から覗き見や改ざんは不可能であるが、ソフトウェアから利用するためのインターフェースが公開されているため、セキュアモジュール内の秘匿すべき情報は不正ソフトウェアによって容易に読み出されてしまう。
したがって、不正ソフトウェアが、偽の通信内容を正規の暗号鍵を用いて暗号化した上で、外部の装置に送信することができるため、外部の装置では偽の通信内容か否かを判別できず、通信の安全性を担保できないという問題があった。
本発明は、かかる問題点に鑑み、不正ソフトウェアによる正規の暗号鍵を用いた暗号化通信を防止する通信装置およびセキュアモジュールを提供することを目的とする。
上述した課題を解決し、目的を達成するため、通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールと、通信装置内のセキュアモジュール外に備えられ、通信装置の外部の装置との暗号化通信をセキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムが保持された記憶装置と、を備え、セキュアモジュールに実装された検出手段により、プログラムの改ざんを検出し、セキュアモジュールに実装された設定手段により、プログラムの改ざんが検出された場合に、セキュアモジュールを、プログラムによる暗号鍵を用いた暗号化通信が不可能な状態に設定する通信装置が一例として提案される。
上述した課題を解決し、目的を達成するため、通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールにおいて、通信装置内のセキュアモジュール外に備えられた記憶装置に保持され、通信装置の外部の装置との暗号化通信をセキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムの改ざんを検出し、プログラムの改ざんが検出された場合に、セキュアモジュールを、プログラムによる暗号鍵を用いた暗号化通信が不可能な状態に設定するセキュアモジュールが一例として提案される。
本発明の一側面によれば、不正ソフトウェアによる正規の暗号鍵を用いた暗号化通信の防止を図ることができるという効果を奏する。
図1は、通信装置とセンタ間の通信の内容を示す説明図である。 図2は、実施の形態にかかる通信装置101のハードウェア構成例1を示すブロック図である。 図3は、図2のセキュアモジュール102のハードウェア構成例を示すブロック図である。 図4は、実施の形態にかかる通信装置101のハードウェア構成例2を示すブロック図である。 図5は、図4のセキュアモジュール102のハードウェア構成例を示すブロック図である。 図6は、セキュアモジュール102の機能的構成を示すブロック図である。 図7は、通信装置101での動作概要例1を示す説明図である。 図8は、通信装置101での動作概要例2を示す説明図である。 図9は、スキャンプログラムSPの具体例を示す説明図(その1)である。 図10は、スキャンプログラムSPの具体例を示す説明図(その2)である。 図11は、スキャンプログラムSPの具体例を示す説明図(その3)である。 図12は、スキャンプログラムSPの具体例を示す説明図(その4)である。 図13は、スキャンプログラム生成/更新処理の手順を示すフローチャートである。 図14は、図13に示したスキャンプログラム生成処理(ステップS1303)の詳細な処理手順例を示すフローチャート(その1)である。 図15は、図13に示したスキャンプログラム生成処理(ステップS1303)の詳細な処理手順例を示すフローチャート(その2)である。 図16は、スキャンプログラム更新処理(ステップS1308)の詳細な処理手順例を示すフローチャート(その1)である。 図17は、スキャンプログラム更新処理(ステップS1308)の詳細な処理手順例を示すフローチャート(その2)である。 図18は、対象プログラムTPの加工の概要を示す説明図である。 図19は、加工プログラムPPによる対象プログラムTPの加工例を示す説明図(その1)である。 図20は、加工プログラムPPによる対象プログラムTPの加工例を示す説明図(その2)である。 図21は、加工プログラムPPによる対象プログラムTPの加工例を示す説明図(その3)である。 図22は、加工プログラムPPによる対象プログラムTPの加工例を示す説明図(その4)である。 図23は、対象プログラムTP加工処理の処理手順例を示すフローチャートである。 図24は、図23に示したシャッフリング処理(ステップS2312)の詳細な処理手順例を示すフローチャートである。 図25は、対象プログラムTPの加工例を示す説明図である。 図26は、対象プログラムTP内の演算プログラムの内容を示す説明図である。 図27は、セキュアモジュール102による認証処理の詳細を示す説明図である。 図28は、セキュアモジュール102による暗号化許可のフローチャートを示す説明図である。 図29は、通信装置101とセンタ103との相互認証を示すシーケンス図(その1)である。 図30は、通信装置101とセンタ103との相互認証を示すシーケンス図(その2)である。 図31は、通信装置101とセンタ103との暗号化通信を示すシーケンス図である。 図32は、通信装置101とセンタ103とのプログラムコードの暗号化通信を示すシーケンス図(その1)である。 図33は、通信装置101とセンタ103とのプログラムコードの暗号化通信を示すシーケンス図(その2)である。
以下に添付図面を参照して、この発明にかかる通信装置およびセキュアモジュールの実施の形態を詳細に説明する。
(通信装置とセンタ間の通信)
図1は、通信装置とセンタ間の通信の内容を示す説明図である。図1において、通信装置101は、セキュアモジュール102を有し、また、セキュアモジュール102内の暗号(復号)鍵K(以下、単に「暗号鍵K」という)を用いて暗号化通信をおこなうプログラム(以下、「暗号化通信プログラム」という)を有している。暗号化通信とは、通信内容を暗号化する通信であり、暗号化通信プログラムは、例えば、暗号鍵Kを用いて送信する通信内容を暗号化し、または、暗号鍵Kを用いて受信した通信内容を復号する。また、暗号化用の鍵と復号用の鍵は異なる鍵でもよい。
通信装置101は、暗号化通信プログラムを用いて、外部の装置(ここでは、センタ103)とネットワーク110を介した暗号化通信をおこなう。暗号化通信プログラムは、例えば、書籍注文用ソフトウェアや電子書籍注文用ソフトウェアや電子マネー受信用ソフトウェアである。また、通信装置101は、ネットワーク110を介してクラッカーのコンピュータ104に接続されている。
セキュアモジュール102は、TRM(Tamper Resistant Module)構造など内部に格納された情報を外部から参照できない構造を有するLSI(Large Scale Integration)である。これにより、セキュアモジュール102は、外部からの覗き見を防止するとともに、内部のデータの改ざんを防止する。
セキュアモジュール102は、正規の暗号鍵Kを保持している。暗号鍵Kに対応する復号鍵は、例えば、暗号鍵Kそのものである。また、暗号鍵Kと復号鍵が異なる場合は、セキュアモジュール102は、復号鍵をさらに保持する。さらに、セキュアモジュール102は、通信装置101内の通信相手であるセンタ103の暗号鍵に対応する復号鍵を保持する。
また、セキュアモジュール102は、プログラムの改ざんを検出する機能により監視対象となるプログラム(以下、「対象プログラムTP」という)が正規プログラムなのか改ざんされた不正プログラムなのかを一定時間間隔で監視している。ここでは、対象プログラムTPは、上述した通信装置101内の暗号化通信プログラムである。
セキュアモジュール102は、対象プログラムTPが正規プログラムであると判断されている場合、対象プログラムTPによる通信内容の暗号化に暗号鍵Kを供する。一方、セキュアモジュール102は、対象プログラムTPが不正プログラムであると判断された場合、自身の状態を、通信装置101内の対象プログラムTPによる暗号鍵Kを用いた暗号化通信が不可能な状態に設定する。
暗号鍵Kを用いた暗号化通信が不可能な状態とは、例えば、セキュアモジュール102が不正プログラムからの暗号鍵Kの読出し要求や通信内容の暗号化依頼を拒絶する状態である。また、例えば、セキュアモジュール102が、再起動されるまで全機能を停止させた状態であってもよい。さらに、セキュアモジュール102が通信装置101に不正プログラムの停止要求を送信し、不正プログラム自体を終了させてもよい。
センタ103は、通信装置101と暗号化通信をおこなう。また、センタ103は、セキュアモジュール102内の暗号鍵Kに対応する復号鍵を保持している。例えば、セキュアモジュール102の暗号鍵Kが秘密鍵である場合は、センタ103の復号鍵はセキュアモジュール102の公開鍵である。また、例えば、セキュアモジュール102の暗号鍵Kとセンタ103の復号鍵とは、共通鍵でもよい。
センタ103は、受信した通信内容が、安全性の担保された正規の暗号鍵Kにより暗号化されているかに基づいて、正規の通信内容か偽の通信内容かを判別している。すなわち、センタ103が、暗号鍵Kに対応する復号鍵によって、受信した通信内容が正常に復号できた場合に、正規の通信内容と判断する。
図1の(A)に示すように、通信装置101内で正規プログラムが動作している場合は、セキュアモジュール102により対象プログラムTPが正規プログラムであると判断される。よって、セキュアモジュール102は、正規プログラムの通信内容の暗号化に暗号鍵Kを供する。これにより、正規プログラムは、通信内容を正規の暗号鍵Kによって暗号化してセンタ103に送信することができる。
センタ103は、受信した通信内容が、安全性の担保された正規の暗号鍵Kにより暗号化されているかに基づいて、正規の通信内容か偽の通信内容かを判別する。ここで、センタ103が、受信した通信内容を暗号鍵Kに対応する復号鍵によって復号すると、正常に復号できるため、正規の通信内容と判断できる。よって、センタ103のユーザは、安心して、受信した通信内容にしたがって、通信装置101のユーザへの書籍の発送や課金をおこなうことができる。
次に、図1の(B)に示すように、クラッカーのコンピュータ104から不正プログラムが通信装置101に送信され、正規プログラムに上書きされたとする。不正プログラムとは、例えば、書籍販売用ソフトウェアを改ざんしたプログラムであって、通信装置101のユーザが書籍購入時に入力した宛先住所を偽装することによりユーザの購入書籍を窃取するプログラムである。
その後、図1の(C)に示すように、通信装置101内で不正プログラムが動作している場合は、セキュアモジュール102により対象プログラムTPが不正プログラムであると判断されるようになる。セキュアモジュール102は、対象プログラムTPが不正プログラムであると判断された場合、自身の状態を、通信装置101内の対象プログラムTPによる暗号鍵Kを用いた暗号化通信が不可能な状態に設定する。これにより、不正プログラムは、偽装した通信内容を正規の暗号鍵Kを用いて暗号化することができない。
このように、正規プログラムによる通信内容は正規の暗号鍵Kを用いて暗号化されるが、不正プログラムにより偽装された通信内容が正規の暗号鍵Kを用いて暗号化されることはない。よって、センタ103が偽装された通信内容を正規プログラムからの通信内容と誤認することもなくなるため、通信の安全性を担保できる。
(通信装置101のハードウェア構成例1)
図2は、実施の形態にかかる通信装置101のハードウェア構成例1を示すブロック図である。図2において、通信装置101は、プロセッサ201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、HDD(Hard Disk Drive)204と、を備えている。また、通信装置101は、I/F(Interface)205と、ディスプレイ206と、セキュアモジュール102と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、プロセッサ201は、通信装置101の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、プロセッサ201のワークエリアとして使用される。HDD204は、プロセッサ201の制御にしたがって内蔵するハードディスクに対するデータのリード/ライトを制御する駆動装置である。
インターフェース(以下、「I/F」と略する。)205は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク110に接続され、このネットワーク110を介して他の装置に接続される。そして、I/F205は、ネットワーク110と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F205には、例えばモデムやLANアダプタなどを採用することができる。
ディスプレイ206は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ206は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
セキュアモジュール102は、HDD204から対象プログラムTPを読み出す機能、対象プログラムTPをスキャンして改ざんを検出するスキャンプログラムを生成/更新する機能を備えている。また、セキュアモジュール102は、対象プログラムTPやスキャンプログラムをRAM203に実装する機能、暗号化機能、復号化機能、乱数生成機能等を備えている。セキュアモジュール102は、暗号鍵Kやユーザ識別情報をセキュアに保持している。
ただし、セキュアモジュール102は、正規の暗号鍵K、ユーザ識別情報のみを保持し、暗号化機能、復号化機能、乱数生成機能等は、通信装置101が備えることとしてもよい。この場合、セキュアモジュール102は、通信装置101の要求にしたがって、暗号鍵Kやユーザ識別情報を出力する。セキュアモジュール102は、通信装置101に内蔵されていてもよく、外付けとしてもよい。
図3は、図2のセキュアモジュール102のハードウェア構成例を示すブロック図である。セキュアモジュール102は、プロセッサ301と、I/F302と、暗号化回路303と、RAM304と、ROM305と、フラッシュメモリ306と、乱数生成回路307と、を備えている。
プロセッサ301は、セキュアモジュール310内の制御や演算処理をおこなう。I/F302は、バス300を介して通信装置101内の各構成部と接続され、通信をおこなう。暗号化回路303は、データやプログラムを暗号化したり、暗号化されたデータやプログラムを復号したりする。
RAM304は、プロセッサ301のワークエリアとして使用されるメインメモリである。ROM305は、プログラムやデータが格納される不揮発性メモリである。ROM305には、正規の暗号鍵K、ユーザ識別情報が格納されている。フラッシュメモリ306は、保存したデータやプログラムが書き換え可能な不揮発性メモリである。乱数生成回路307は、乱数を生成する。
セキュアモジュール102は、外部から覗き見や改ざんができないのが前提であるため、できる限り、図3の構成のようにワンチップのLSIにして実装するべきである。例えば、セキュアモジュール102はTRM構造である。TRM構造は、半導体チップ(この場合、セキュアモジュール102)の内部解析や改ざんを物理的および論理的に防衛するための構造をいう。具体的には、セキュアモジュール102においては、内部に強固で粘着力が高いコーティングが施され、その表面が剥がされると内部の回路が完全に破壊されたり、ダミーの配線が配されている。
(通信装置101のハードウェア構成例2)
図4は、実施の形態にかかる通信装置101のハードウェア構成例2を示すブロック図である。図4において、通信装置101は、プロセッサ201と、ROM202と、RAM203と、HDD204と、I/F205と、ディスプレイ206と、セキュアモジュール102と、を備えている。図4において、図2と同様の構成部には同一の符号を付し、その説明を省略する。
図4では、セキュアモジュール102は、暗号化機能、復号化機能、乱数生成機能等を備えるLSI401と、暗号鍵Kやユーザ識別情報をセキュアに保持する既存のSIMカード402とを接合して作成される。そして、LSI401は、必要に応じて暗号鍵KをSIMカード402から読み出して暗号化機能、復号化機能を使用する。
図5は、図4のセキュアモジュール102のハードウェア構成例を示すブロック図である。図5において、セキュアモジュール102は、LSI401とSIMカード402とで構成される。LSI401は、プロセッサ301と、I/F302と、暗号化回路303と、RAM304と、ROM305と、フラッシュメモリ306と、乱数生成回路307と、を備えている。SIMカード402は、暗号鍵Kやユーザ識別情報をセキュアに保持している。セキュアモジュール102内で、LSI401と、SIMカード402とはI/F302によって接続され、通信をおこなう。図5において、図3と同様の構成部には同一の符号を付し、その説明を省略する。
セキュアモジュール102は、外部から覗き見や改ざんができないのが前提であるため、図5の構成のように複数チップで実現した場合は、全体を一つのモジュールとし、全体を樹脂で固めて第3者が覗き見や改ざんが困難なように実装すべきである。
(セキュアモジュール102の機能的構成例)
次に、セキュアモジュール102の機能的構成例について説明する。図6は、セキュアモジュール102の機能的構成を示すブロック図である。セキュアモジュール102は、検出部601と、設定部602と、記憶部603と、生成部604と、加工部605と、判定部606と、取得部607と、暗号化部608と、出力部609と、を含む構成である。
検出部601は、プログラムの改ざんを検出する機能を有する。ここで、プログラムとは、通信装置101の記憶装置に保持され、通信装置101の外部の装置(センタ103)との暗号化通信をセキュアモジュール102内に保持されている暗号鍵Kを用いておこなうプログラムである。例えば、プログラムとは、上述した対象プログラムTPである。
例えば、通信装置101の記憶装置内の特定の記憶領域に記憶されているプログラムに対しスキャンプログラムが通信装置101で実行される。この場合、検出部601は、通信装置101でのスキャンプログラムの実行結果と記憶部603に記憶されたコードとに基づいて、特定の記憶領域に記憶されているプログラムの改ざんを検出する。ここで、特定の記憶領域とは、RAM203内の対象プログラムTPを含むスキャン対象となる領域であり、後述するスキャン対象領域230である。スキャンプログラムは、対象プログラムTPの改ざんを検出するプログラムであり、後述するスキャンプログラムSPである。この場合、スキャンプログラムは、通信装置101内で実行されている。
コードおよび実行結果とは、対象プログラムTPのプログラムコードそのもの、または、対象プログラムTPのプログラムコードに所定の演算をおこなった結果である。所定の演算とは、例えば、四則演算や論理演算、チェックサムの算出やハッシュ関数によるハッシュ値算出である。これにより、検出部601は、クラッキングによる対象プログラムTPの改ざんを検出することができる。
例えば、検出部601は、通信装置101の記憶装置内の特定の記憶領域に記憶されているプログラムに対するスキャンプログラムの実行結果と記憶部603に記憶されたコードとに基づいて、特定の記憶領域に記憶されているプログラムの改ざんを検出する。この場合、スキャンプログラムは、セキュアモジュール102内で実行されている。これにより、検出部601は、クラッキングによる対象プログラムTPの改ざんを検出することができる。また、検出部601は、安全性の担保されたセキュアモジュール102内のスキャンプログラムを実行するため、スキャンプログラム自体がクラッキングされる虞がない。
検出部601は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、その機能を実現する。
設定部602は、セキュアモジュール102を、プログラムによる暗号鍵Kを用いた暗号化通信が不可能な状態に設定する機能を有する。
具体的には、例えば、設定部602は、検出部601によってプログラムの改ざんが検出された場合に、後述する暗号化部608、出力部609、または全機能を使用不能に設定する。これにより、設定部602は、セキュアモジュール102を、改ざんが検出された対象プログラムTPからの暗号鍵Kの読出し要求や通信内容の暗号化依頼に対応しないようにできる。そのため、改ざんが検出された対象プログラムTPによる暗号鍵Kを用いた暗号化通信が不可能となる。
具体的には、例えば、後述する判定部606によって、通信装置101を装ってクラッカーのコンピュータ104がセキュアモジュール102と通信していると判断される。この場合に、設定部602は、後述する暗号化部608、出力部609、または全機能を使用不能に設定する。これにより、設定部602は、セキュアモジュール102を、クラッカーのコンピュータ104との通信に対応しないようにできる。
設定部602は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、その機能を実現する。
記憶部603は、プログラムに固有なコードを記憶する機能を有する。ここで、プログラムに固有なコードとは、対象プログラムTPのプログラムコードそのものであってもよく、プログラムコードに所定の演算をおこなった結果であってもよい。所定の演算とは、例えば、四則演算や論理演算、チェックサムの算出やハッシュ関数によるハッシュ値算出である。
具体的には、例えば、記憶部603は、対象プログラムTPを予め通信装置101のRAM203とは別にセキュアモジュール102のRAM304に保持しておく。そして、記憶部603は、セキュアモジュール102のRAM304に保持された対象プログラムTPに固有のコードを記憶しておく。
記憶部603は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、その機能を実現する。
生成部604は、プログラムに固有なコードを生成するスキャン処理をおこなうスキャンプログラムを生成する生成処理を実行する機能を有する。また、生成部604は、固有なコードと同一コードの生成を維持したままスキャンプログラムの内容をランダムに更新する更新処理を実行する機能を有する。ここで、スキャンプログラムとは、対象プログラムTPのプログラムコードを取得し、または取得したプログラムコードに所定の演算をおこなった結果を算出するプログラムである。
具体的には、例えば、生成部604は、スキャン処理を通信装置101で実行させるスキャンプログラムを生成する。これにより、生成部604は、対象プログラムTPに固有のコードを生成することができ、対象プログラムTPの改ざんの検出に使用できる。また、生成部604は、通信装置101の記憶装置に直接アクセスをおこなうスキャン処理をセキュアモジュール102で実行させるスキャンプログラムを生成する。これにより、クラッカーによるスキャンプログラムへのクラッキングをセキュアモジュール102の構造によって防止できる。
具体的には、例えば、生成部604は、定期的にスキャンプログラムを更新する。これにより、生成部604は、クラッカーによるスキャンプログラムのクラッキングを防止することができる。また、生成部604は、不定期的にスキャンプログラムを更新する。これにより、生成部604は、クラッカーによるスキャンプログラムのクラッキングを防止することができる。
また、生成部604は、スキャンプログラムを、例えば、後述する「難読化」、「スキャン対象領域変更」、「スキャン対象アドレスの順序変更」、「スキャン結果演算の追加」、「スキャンプログラムのアドレス追加」により更新する。生成部604は、スキャンプログラムを更新することにより、クラッカーによってスキャンプログラムが解読され、改ざんされることを防止することができる。
生成部604は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、または、I/F302により、その機能を実現する。
加工部605は、プログラムを、記述内容は異なるが機能は同一のプログラムコードに加工する機能を有する。具体的には、例えば、加工部605は、対象プログラムTPを、後述する「難読化」、「暗号化」、「シャッフリング」により加工する。これにより、クラッカーが対象プログラムTPを解読するのを困難にし、対象プログラムTPが解読され、改ざんされることを防止することができる。
加工部605は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、または、I/F302により、その機能を実現する。
判定部606は、プログラムを実行する通信装置内のプロセッサへ要求を出力した時から、プロセッサからの返答を取得する時までの経過時間を計測する。そして、判定部606は、通信装置内のプロセッサとセキュアモジュールとの物理的距離に対応する許容時間以上であるか否かを判定する機能を有する。
具体的には、例えば、判定部606は、セキュアモジュール102内にタイマーを設け、対象プログラムTPを実行する通信装置101内のプロセッサ201へ要求を出力した時から、タイマーの計測を開始する。そして、セキュアモジュール102は、返答を取得する時まで時間を計測し、計測した経過時間が予め定められた許容時間以上であるかを判定する。
クラッカーのコンピュータ104が、通信装置101を装って、セキュアモジュール102と通信をおこなう場合が考えられる。この場合、タイマーの経過時間が、通信装置101内のプロセッサ301とセキュアモジュール102間の物理的距離から推測される所要時間より大きく上回ると推定される。よって、判定部606により、経過時間を測定することで、クラッカーによる通信装置101のなりすましを判断できる。
判定部606は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、または、I/F302により、その機能を実現する。
取得部607は、プログラムが外部の装置に送信するデータを、送信に先だってプログラムから取得する機能を有する。また、取得部607は、暗号鍵Kの出力依頼をプログラムから取得する機能を有する。
具体的には、例えば、取得部607は、I/F302を介して、対象プログラムTPからセンタ103に送信する通信内容や暗号鍵Kの出力依頼を取得する。これにより、取得部607は、対象プログラムTPから暗号鍵Kの出力依頼を取得できる。また、これにより、取得部607は、暗号化対象となる通信内容を取得することができる。
取得部607は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、または、I/F302により、その機能を実現する。
暗号化部608は、暗号鍵Kを用いて取得部607によって取得された通信内容を暗号化する機能を有する。具体的には、例えば、暗号化部608は、暗号鍵Kを用いて通信内容を暗号化する。暗号鍵Kは、例えば、セキュアモジュール102の秘密鍵やセンタ103との共通鍵である。これにより、暗号化部608は、暗号鍵Kを外部に出力することなく、通信内容の暗号化をおこなうことができる。
暗号化部608は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、その機能を実現する。
出力部609は、暗号鍵Kをプログラムに出力する機能を有する。具体的には、例えば、出力部609は、取得部607によって、暗号鍵Kの出力依頼を取得した場合に、暗号鍵Kを対象プログラムTPに出力する。これにより、出力部609は、対象プログラムTPに暗号鍵Kを供することができる。
出力部609は、図3に示したROM305、RAM304、フラッシュメモリ306、などの記憶装置に記憶されたプログラムをプロセッサ301に実行させることにより、または、I/F302により、その機能を実現する。
また、セキュアモジュール102は、取得部607および出力部609が扱うデータを暗号化する。これにより、クラッカーによって、セキュアモジュール102と通信装置101内のプロセッサ301との間の通信路がクラッキングされ、データが解析されることを防止することができる。
(セキュアモジュール102による対象プログラムTPの正当性チェックの内容)
次に、セキュアモジュール102による対象プログラムTPの正当性チェックの内容について説明する。本実施の形態において、通信装置101上の対象プログラムTPの正当性をチェックするセキュアモジュール102は、ハードウェアスキャンが不可能なインターフェースで通信装置101に接続される場合と、ハードウェアスキャンが可能なインターフェースで通信装置101と接続される場合とがある。
まず、セキュアモジュール102が、ハードウェアスキャンが不可能なインターフェース(例えば、USBインターフェース)で通信装置101に接続される場合を例に挙げる。この場合、セキュアモジュール102が普通にUSBインターフェース経由でUSB対応ソフトウェア(一般にこの種のソフトを「ドライバ」という)にメモリのスキャン対象領域のスキャンを依頼することで対象プログラムTPの正当性をチェックできる。
しかし、この場合には、USB対応ソフトウェア自身がクラッキングされる虞がある。例えば、通信装置101上のソフトウェアが書き換えられても、さも書き換えられていないような結果を返すようにクラッキングされる。これにより、スキャン機能が有効に働かない可能性がある。したがって、本実施の形態では、以下のような処理を実行する。
(通信装置101での動作概要例1)
図7は、通信装置101での動作概要例1を示す説明図である。本実施の形態では、まず、(1)セキュアモジュール102は、HDD204内に記憶されている暗号化された対象プログラム(以下、「暗号化対象プログラムE(TP)」)を取得して、セキュアモジュール102内の暗号化回路303で対象プログラムTPに復号する。そして、セキュアモジュール102は、RAM203のスキャン対象領域230に、復号された対象プログラムTPを書き出す。対象プログラムTPはセキュアモジュール102内でも保持しておく。
なお、HDD204内に記憶されているプログラムが暗号化されていない場合は、セキュアモジュール102では復号することなく、RAM203のスキャン対象領域230に、取得した対象プログラムTPを書き出す。
また、セキュアモジュール102は、加工プログラムPPにより対象プログラムTPを加工してもよい。加工内容の詳細は後述するが、対象プログラムTPの働きは同じであっても処理内容や処理手順は異なるように加工する。また、この加工により、対象プログラムTPの一部となるプログラム片をセキュアモジュール102内に保持しておき、通信装置101での対象プログラムTPの実行の際に、セキュアモジュール102内のプログラム片を参照しないと、対象プログラムTPの実行を継続できないようにする。さらに、この加工により、対象プログラムTP内に、後述する演算プログラムを書き込んでおく。
(2)セキュアモジュール102は、定期的にまたは不定期に、スキャンプログラムSPをランダムに自動生成/更新する生成プログラムGPを実行する。具体的には、対象プログラムTPをスキャンするという機能は変わらないが、処理内容が毎回異なるスキャンプログラムSPをランダム自動生成する。
この自動生成は、例えば、数[msec]〜数分間隔で定期的に実行してもよく、ランダムな間隔で不定期に実行してもよい。いずれにしても、クラッカーが改ざんに要する時間よりも短い間隔となるよう設定しておけばよい。
生成プログラムGPによりランダムに変化させるのは、例えば、スキャン対象領域230、スキャン対象アドレスの順序、スキャン結果演算、演算したスキャン結果をセキュアモジュール102に戻す演算処理、スキャンプログラムSPコード、通信装置101のメモリ上の位置などが挙げられる。この生成プログラムGPによるスキャンプログラムSPのランダム自動生成/更新処理は、セキュアモジュール102内で実行されるため、生成過程を覗き見されたり、解析されたり、その結果無効化されることはない。
なお、生成プログラムGPによりスキャンプログラムSPが生成/更新された場合、セキュアモジュール102でも対象プログラムTPを最新のスキャンプログラムSPでスキャンし、スキャン結果R1を更新しておく。スキャン結果R1はRAM304またはフラッシュメモリ306に記憶しておく。スキャン結果R1は、対象プログラムTPに固有のコードである。
(3)スキャンプログラムSPは、プロセッサ201に、ドライバ231にRAM203上の非スキャン対象領域への配置を依頼させる。これにより、ドライバ231は、プロセッサ201に、セキュアモジュール102から送られてきたスキャンプログラムSPをRAM203の非スキャン対象領域に格納させる。
(4)RAM203に格納されたスキャンプログラムSPは、プロセッサ201に、スキャン対象領域230内の対象プログラムTPをスキャンさせる。スキャン結果R2は、ドライバ231を介してセキュアモジュール102に通知される。
(5)セキュアモジュール102はドライバ231から送られてくるスキャン結果R2を受け取る。スキャン結果R2を受け取ると、認証プログラムAPは、プロセッサ201に、セキュアモジュール102で保持しておいたスキャン結果R1と送られてきたスキャン結果R2を比較して一致判定を実行させる。
一致していれば、対象プログラムTPが改ざんされていないこととなる。一方、対象プログラムTPが書き換えられていれば、セキュアモジュール102は、例えば、対象プログラムTPの実行停止指示をプロセッサ201に通知する。これにより、プロセッサ201は当該通知を受けると対象プログラムTPの実行を停止する。
また、一定期間が経過してもドライバ231からスキャン結果R2を受け取れなかった場合も、対象プログラムTPの実行停止指示をプロセッサ201に通知する。
セキュアモジュール102は、対象プログラムTPの動作が停止するまでは、上記(2)〜(5)を繰り返す。
このように、定期的または不定期にセキュアモジュール102によってランダムに生成/更新されたスキャンプログラムSPが動作するため、たとえスキャンプログラムSPが誰もが覗き見や書き換えが可能な通信装置101のメモリ空間に存在してもクラッカーにクラックされることはない。
すなわち、クラッカーがスキャンプログラムSPを覗き見し、解析し、偽スキャンプログラムに書き換えるには、一定の時間が必要である。しかし、セキュアモジュール102が不定期あるいは定期的にスキャンプログラムをランダムに毎回違う形にするため、クラッカーは、解析し、偽スキャンプログラムに書き換える時間が得られない。
(通信装置101での動作概要例2)
次に、セキュアモジュール102が、ハードウェアスキャンが可能なインターフェース(例えば、DMA(Direct Memory Access))で通信装置101と接続される場合を例に挙げる。
図8は、通信装置101での動作概要例2を示す説明図である。まず、(1)セキュアモジュール102は、HDD204内に記憶されている暗号化対象プログラムE(TP)を取得して、セキュアモジュール102内の暗号化回路303で対象プログラムTPに復号する。そして、セキュアモジュール102は、RAM203のスキャン対象領域230に、復号された対象プログラムTPを書き出す。対象プログラムTPはセキュアモジュール102内でも保持しておく。
(2)セキュアモジュール102は、定期的にまたは不定期に、スキャンプログラムSPをランダムに自動生成/更新する生成プログラムGPを実行する。具体的には、対象プログラムTPをスキャンするという機能は変わらないが、処理内容が毎回異なるスキャンプログラムSPをランダム自動生成する。
この自動生成は、例えば、数[msec]〜数分間隔で定期的に実行してもよく、ランダムな間隔で不定期に実行してもよい。いずれにしても、クラッカーが改ざんに要する時間よりも短い間隔となるよう設定しておけばよい。
生成プログラムGPによりランダムに変化させるのは、例えば、スキャン対象領域230、スキャン対象アドレスの順序、スキャン結果演算、演算したスキャン結果をセキュアモジュール102に戻す演算処理、スキャンプログラムSPコード、通信装置101のメモリ上の位置などが挙げられる。この生成プログラムGPによるスキャンプログラムSPのランダム自動生成/更新処理は、セキュアモジュール102内で実行されるため、生成過程を覗き見されたり、解析されたり、その結果無効化されることはない。
なお、生成プログラムGPによりスキャンプログラムSPが生成/更新された場合、セキュアモジュール102でも対象プログラムTPを最新のスキャンプログラムSPでスキャンし、スキャン結果R1を更新しておく。スキャン結果R1はRAM304またはフラッシュメモリ306に記憶しておく。スキャン結果R1は、対象プログラムTPに固有のコードである。
(3)セキュアモジュール102内のスキャンプログラムSPは、スキャン対象領域230内にDMAを用いて直接アクセスし、対象プログラムTPをスキャンする。スキャン結果R2は、セキュアモジュール102に保持される。
(4)そして、認証プログラムAPが、セキュアモジュール102で保持しておいたスキャン結果R1とスキャン結果R2を比較して一致判定をおこなう。
一致していれば、対象プログラムTPが改ざんされていないこととなる。一方、対象プログラムTPが書き換えられていれば、セキュアモジュール102は、例えば、対象プログラムTPの実行停止指示をプロセッサ201に通知する。これにより、プロセッサ201は当該通知を受けると対象プログラムTPの実行を停止する。
セキュアモジュール102は、対象プログラムTPの動作が停止するまでは、上記(2)〜(4)を繰り返す。
スキャンプログラムSPは、通信装置101のプロセッサ201やドライバを一切経由しないのでドライバのクラッキングによる改ざんや覗き見に対しても安全性が強い。
(スキャンプログラムSPの具体例)
図9〜図12は、スキャンプログラムSPの具体例を示す説明図である。なお、図9〜図12では、わかりやすさを考慮して単純なスキャンプログラムSPを例示している。なお、図9〜図12において、「○○番地」と記述されている番地は、スキャン対象領域230に対応する論理アドレスである。
図9は、対象プログラムTPのスキャンを実行するスキャンプログラムSPを示している。例えば、11番地に「1」、12番地に「2」、13番地に「3」、14番地に「4」、15番地に「5」が記憶されているとする。アドレス1〜5のステップでは、11番地〜15番地の内容をそれぞれ1001番地〜1005番地に書き出す。そして、アドレス6のステップですべて加算して、アドレス7のステップで加算結果「15」を1010番地に書き込む。
アドレス8のステップで1010番地の内容「15」に「+80」して、さらに「*5」するため、(15+80)×5=475を得る。アドレス9のステップで、アドレス8の計算結果「475」を1011番地に書き込み、アドレス10のステップで1011番地の内容「475」をセキュアモジュール102に通知する。
セキュアモジュール102でも、事前のスキャンによりスキャン結果を保持している。そして、事前のスキャン結果とスキャン対象領域230内の対象プログラムTPのスキャン結果とが一致すれば、対象プログラムTPは改ざんされていないこととなる。一方、不一致であれば、対象プログラムTPは改ざんされていることとなり、対象プログラムTPの実行を停止する。
図10は、図9に示したスキャンプログラムSPにおいて、アドレス1〜5の読込先となるスキャン対象アドレスを、11番地〜15番地から21番地〜25番地に変更した例を示している。図10では、21番地〜25番地の値を読み込むため、セキュアモジュール102に通知するスキャン結果が図9の場合と異なることとなる。
図11は、図9に示したスキャンプログラムSPにおいて、スキャン対象アドレスの順序変更および順序変更に依存した演算に変更した例を示している。具体的には、スキャンプログラムSPは、アドレス1〜5でのスキャン対象アドレスの順序が変更されている。この順序変更だけでは、スキャン結果は図9と変わらないため、アドレス6のステップの演算もランダムに書き換えている。これにより、セキュアモジュール102に通知されるスキャン結果は図9のスキャン結果と異なる値となる。
図12は、図11に示したスキャンプログラムSPにおいて、スキャンプログラムSPが特定の記憶領域に保持されていないと、スキャンが実行されない例を示している。この場合、セキュアモジュール102でも、スキャンプログラムSPが保持されるアドレスが特定済みである。
具体的には、アドレス1〜5のステップにおいて、読込先のスキャン対象アドレスの値に、スキャンプログラムSPが保持されているアドレス(たとえば、先頭の番地)を加算することとしている。この場合、セキュアモジュール102に保持されている図12のスキャンプログラムSPのスキャン結果R1と、スキャン対象領域230内の対象プログラムTPのスキャン結果R2が一致すれば、対象プログラムTPが改ざんされておらず、かつ、スキャンプログラムSPが特定の位置に配置されていることが確認できる。
逆に、不一致の場合は、スキャンプログラムSPが意図的に他の位置に保持されている可能性があるため、そのような場合はスキャン結果の不一致により、対象プログラムTPが停止する。
このように、スキャンプログラムSPの存在するメモリ番地が違えば、スキャン結果が変わってしまうこととなり、スキャンプログラムSPを想定と違うメモリ番地に書き込んで動作解析するようなクラッキングが困難になる。
(スキャンプログラム生成/更新処理)
図13は、スキャンプログラム生成/更新処理の手順を示すフローチャートである。スキャンプログラム生成/更新処理は、セキュアモジュール102のプロセッサ301が生成プログラムGPを実行する時の処理である。
まず、セキュアモジュール102は、所定時間経過するまで待ち受ける(ステップS1301:No)。例えば、すでに、対象プログラムTPがRAM203のスキャン対象領域230に書き込まれて実行開始したのをトリガにして、所定時間の計時を開始する。所定時間は、上述したように、数[msec]〜数分間隔とする。なお、数[msec]〜数分間隔の範囲内でランダムに設定してもよい。
所定時間が経過した場合(ステップS1301:Yes)、セキュアモジュール102は、すでにスキャンプログラムSPが生成済みであるか否かを判断する(ステップS1302)。生成済みでない場合(ステップS1302:No)、セキュアモジュール102は、スキャンプログラム生成処理(図14〜図15)を実行し(ステップS1303)、生成されたスキャンプログラムSPをRAM203の非スキャン対象領域に書き込む(ステップS1304)。
このあと、セキュアモジュール102は、生成されたスキャンプログラムSPで対象プログラムTPをスキャンし、スキャン結果をセキュアモジュール102内(例えば、RAM304やフラッシュメモリ306)に保持しておく(ステップS1305)。そして、ステップS1301に戻る。
また、ステップS1302において、スキャンプログラムSPが生成済みである場合(ステップS1302:Yes)、セキュアモジュール102は、スキャンプログラムSPを新規生成するか生成済みのスキャンプログラムSPを更新するかを決定する(ステップS1306)。そして、新規生成である場合(ステップS1307:新規生成)、ステップS1303に移行する。一方、更新である場合(ステップS1307:更新)、スキャンプログラム更新処理(図16〜図17)を実行し(ステップS1308)、更新されたスキャンプログラムSPをRAM203の非スキャン対象領域に書き込む(ステップS1304)。
このあと、セキュアモジュール102は、更新されたスキャンプログラムSPで対象プログラムTPをスキャンし、スキャン結果をセキュアモジュール102内(例えば、RAM304やフラッシュメモリ306)に保持しておく(ステップS1305)。そして、ステップS1301に戻る。
なお、起動の契機となった対象プログラムTPが終了等により、スキャン対象領域230から消去されると、セキュアモジュール102は、スキャンプログラム生成/更新処理を終了する。
(スキャンプログラム生成処理)
図14は、図13に示したスキャンプログラム生成処理(ステップS1303)の詳細な処理手順例を示すフローチャート(その1)である。まず、セキュアモジュール102は、セキュアモジュール102外のRAM203のスキャン対象領域230[As,Ae]および書込先領域[Bs,Be]を設定する(ステップS1401)。なお、ここで設定するスキャン対象領域230[As,Ae]は、対象プログラムTPと同じサイズでもよく、対象プログラムTPの一部と同じサイズでもよい。
また、スキャン対象領域230[As,Ae]が対象プログラムTPの一部と同じサイズとする場合、スキャンプログラム生成処理を実行する都度、スキャン対象領域230[As,Ae]を異なる範囲とする。例えば、スキャンプログラム生成処理を実行する都度、スキャン対象領域230[As,Ae]をシフトしていく。
セキュアモジュール102は、スキャン対象領域230よりも大きいメモリ領域[Ms,Me](以下、「モジュール内設定領域」という)をセキュアモジュール102内のRAM304(またはフラッシュメモリ306)に設定する(ステップS1402)。また、セキュアモジュール102は、各種変数の初期値を設定する(ステップS1403)。iは初期値を1とする変数である。Aiは、スキャン対象領域230の任意のアドレスを示し、初期値は、先頭アドレスAsとする。Biは、書込先領域の任意のアドレスを示し、初期値は、先頭アドレスBsとする。
Miは、モジュール内設定領域内の任意のアドレスを示し、初期値は、先頭アドレスMsとする。Yiは、生成されるスキャンプログラムSP内で用いられるアドレスであり、初期値は、Biとする。このあと、セキュアモジュール102は、「Ai番地の内容を読み込んで、Bi番地に書き込む」というスキャン命令を、モジュール内設定領域のMi番地に書き込む(ステップS1404)。
そして、セキュアモジュール102は、Ai>Aeであるか否かを判断する(ステップS1405)。Aeは、スキャン対象領域230の末尾アドレスである。Ai>Aeでない場合(ステップS1405:No)、セキュアモジュール102は、iをインクリメントして(ステップS1406)、ステップS1404に戻る。一方、Ai>Aeである場合(ステップS1405:Yes)、図15のステップS1501に移行する。
図15は、図13に示したスキャンプログラム生成処理(ステップS1303)の詳細な処理手順例を示すフローチャート(その2)である。図14のステップS1405:Yesの後、セキュアモジュール102は、モジュール内設定領域の番地Miをインクリメントして(ステップS1501)、Mi>Me−2であるか否かを判断する(ステップS1502)。
Mi>Me−2でない場合(ステップS1502:No)、セキュアモジュール102は、変数jの初期値をj=1とし(ステップS1503)、演算方法Zjをランダムに決定する(ステップS1504)。演算方法とは、四則演算や論理演算、チェックサムの算出やハッシュ関数によるハッシュ値算出などが挙げられる。以降、演算方法Zjでの演算を「Zj演算」と称す。
そして、セキュアモジュール102は、jをインクリメントし(ステップS1505)、j=yであるか否かを判断する(ステップS1506)。ここで、yはYiの個数である。すなわち、モジュール内設定領域のMi番地の個数である。
j=yでない場合(ステップS1506:No)、ステップS1504に戻る。一方、j=yとなった場合(ステップS1506:Yes)、セキュアモジュール102は、「Y1番地の内容とY2番地の内容をZ1演算する。そして、セキュアモジュール102は、Z1演算結果とY3番地の内容とをZ2演算し、…、Z(y−2)演算結果とYy番地の内容とをZ(y−1)演算する」というスキャン命令Z(Mi)を、Mi番地に書き込む(ステップS1507)。
このあと、セキュアモジュール102は、Miをインクリメントし(ステップS1508)、「スキャン命令Z(Mi―1)の計算結果を、(Bi+1)番地に書き込む」というスキャン命令をMi番地に書き込む(ステップS1509)。そして、ステップS1501に戻る。
ステップS1502において、Mi>Me−2である場合(ステップS1502:Yes)、セキュアモジュール102は、「(Bi+1)番地の内容をセキュアモジュール102に通知する」というスキャン命令をMi番地に書き込む(ステップS1510)。そして、ステップS1304に移行する。このスキャンプログラム生成処理(ステップS1303)によれば、定期的(または不定期に)スキャンプログラムSPをランダムに生成することができる。
(スキャンプログラム更新処理)
図16は、スキャンプログラム更新処理(ステップS1308)の詳細な処理手順例を示すフローチャート(その1)である。まず、セキュアモジュール102は、更新内容をランダムに決定する(ステップS1601)。ここで、更新内容とは、例えば、「難読化」、「スキャン対象領域変更」、「スキャン対象アドレスの順序変更」、「スキャン結果演算の追加」、「スキャンプログラムSPのアドレス追加」、「何もしない」、などが挙げられる。
「難読化」、「スキャン対象領域変更」、「スキャン対象アドレスの順序変更」の順序変更については、図16で説明する。一方、「スキャン結果演算の追加」、「スキャンプログラムSPのアドレス追加」、「何もしない」については、図17で説明する。なお、スキャンプログラム更新処理としては、これら6つの更新内容のうち、少なくとも1つ(「何もしない」を除く)でもあればよい。
図16に戻って、セキュアモジュール102は、ランダムに決定された更新内容が、「難読化」であるか否かを判断する(ステップS1602)。難読化とは、対象となる命令または命令群を複雑にすることで、解読を難しくする方法である。具体的には、本当に「働きは、同じだが、処理内容が違うプログラムコード」に置き換えることである。例えば、単一の命令の場合、「X=1+Y」という命令を「X=10−9+2Y−Y」という命令に更新する。また、「X=1+Y」、「Z=X+50」を「X=26+Y」、「Z=X+25」という命令群に更新する。
更新後の命令は、更新前と同じ働きをするが、別のプログラムコードである。こうすると生成プログラムGPは、更新前後において、「働きは同じだが、プログラムコードが違う」ものになる。クラッカーが、生成プログラムGPのコードを「覗き見」したとしても、生成プログラムGPのプログラムコードが更新の都度違うのでそれだけ解析が困難である。また、生成プログラムGPのどの部分に肝心のコードがあるかわからなくなるという利点がある。
「難読化」である場合(ステップS1602:Yes)、セキュアモジュール102は、難読化の対象範囲を対象プログラムTPの中から指定し(ステップS1603)、指定された対象範囲の命令(難読化可能な命令に限る)の難読化を実行する(ステップS1604)。そして、ステップS1601に戻る。
一方、ステップS1602において、ランダムに決定された更新内容が、「難読化」でない場合(ステップS1602:No)、セキュアモジュール102は、ランダムに決定された更新内容が、「スキャン対象領域変更」か否かを判断する(ステップS1605)。
「スキャン対象領域変更」とは、スキャンプログラムSPにおいて指定されるスキャン対象アドレスを、スキャン対象領域230内の異なるアドレスに変更することである。例えば、図9に示したスキャンプログラムSPから図10に示したスキャンプログラムSPへ更新する際に、スキャン対象領域変更が実行されることとなる。
「スキャン対象領域変更」である場合(ステップS1605:Yes)、セキュアモジュール102は、対象プログラムTPからスキャン対象領域230の変更の対象範囲を指定し(ステップS1606)、指定された対象範囲のアドレスどうしを変更する(ステップS1607)。そして、ステップS1601に戻る。
スキャン対象領域変更をおこなっても、生成プログラムGPがアクセスするアドレスが変わるだけで、スキャンプログラムSPの働きは同じである。また、スキャン対象領域230が変更されることで、スキャン結果も更新されるため、セキュリティ強度が向上することとなる。
また、ステップS1605において、ランダムに決定された更新内容が、「スキャン対象領域変更」でない場合(ステップS1605:No)、セキュアモジュール102は、ランダムに決定された更新内容が、「スキャン対象アドレスの順序変更」か否かを判断する(ステップS1608)。スキャン対象アドレスの順序変更とは、スキャンプログラムSPのあるアドレスのコードとあるアドレスのコードを入れ替えることである。
例えば、図9に示したスキャンプログラムSPから図11に示したスキャンプログラムSPへ更新する際に、スキャン対象アドレスの順序変更が実行されている。なお、スキャン対象アドレスの順序変更により実行順序が入れ替わることとなるが、入れ替え前後において、スキャン結果が変わる場合と変わらない場合とがある。
「スキャン対象アドレスの順序変更」である場合(ステップS1608:Yes)、セキュアモジュール102は、対象プログラムTPから順序変更の対象範囲を指定し(ステップS1609)、指定された対象範囲のアドレスのコードどうしを変更する(ステップS1610)。そして、ステップS1601に戻る。一方、ステップS1608において、スキャン対象アドレスの順序変更でない場合(ステップS1608:No)、図17のステップS1701に移行する。
図17は、スキャンプログラム更新処理(ステップS1308)の詳細な処理手順例を示すフローチャート(その2)である。ステップS1701において、セキュアモジュール102は、ステップS1601においてランダムに決定された更新内容が、「スキャン結果演算」であるか否かを判断する(ステップS1701)。
「スキャン結果演算の追加」である場合(ステップS1701:Yes)、セキュアモジュール102は、対象プログラムTPから演算対象アドレスを指定し(ステップS1702)、演算方法をランダムに決定する(ステップS1703)。ここで、演算方法とは、ある演算対象アドレスのデータとある演算対象アドレスのデータとについて、四則演算や論理演算をおこなったり、データごとにチェックサムの算出やハッシュ関数によるハッシュ値算出をおこなったりする。
そして、セキュアモジュール102は、「演算対象アドレス内のデータを用いて、ステップS1703で決定された演算方法で演算する」スキャン命令を、更新元の生成プログラムGPに追加する(ステップS1704)。また、セキュアモジュール102は、「追加されたスキャン命令による演算結果をセキュアモジュール102に通知する」スキャン命令を、更新元の生成プログラムGPに追加する(ステップS1705)。このあと、ステップS1601に戻る。
また、ステップS1601においてランダムに決定された更新内容が、「スキャン結果演算の追加」でない場合(ステップS1701:No)、セキュアモジュール102は、ランダムに決定された更新内容が、「スキャンプログラムSPのアドレス追加」であるか否かを判断する(ステップS1706)。スキャンプログラムSPのアドレス追加とは、スキャンプログラムSPのあるアドレスの命令に、スキャンプログラムSPの書込先アドレスを与えて、この書込先アドレスに依存したスキャン結果を得る手法である。
例えば、図11に示したスキャンプログラムSPから図12に示したスキャンプログラムSPへ更新する際に、スキャンプログラムSPのアドレス追加が実行されている。
セキュアモジュール102は、ステップS1706において、「スキャンプログラムSPのアドレス追加」と判断された場合(ステップS1706:Yes)、追加対象アドレスを対象プログラムTPから指定する(ステップS1707)。そして、図12のアドレス1〜5に示したように、追加対象アドレス内のデータに、スキャンプログラムSPのアドレスの値を追加して、書き換える(ステップS1708)。このあと、ステップS1601に戻る。
また、ステップS1706で「スキャンプログラムSPのアドレス追加」でもないと判断された場合(ステップS1706:No)、セキュアモジュール102は、生成プログラムGPの更新を終了するか否かを判断する(ステップS1709)。具体的には、例えば、このケースでは、「何もしない」にランダム決定されているため、一度も更新していない場合は、更新を終了しない(ステップS1709:No)。この場合は、ステップS1601に戻る。
少なくとも1度、または、予め設定しておいた所定回数更新が行われた場合、ランダムに更新を終了する(ステップS1709:Yes)。この場合、図13のステップS1304に戻る。
この更新は、耐タンパ性構造のセキュアモジュール102内で実行されるため、スキャンプログラムSPの生成/更新を毎回セキュアにおこなうことができる。したがって、クラッキングによりスキャン機能を無効化しづらい状態となり、USB接続においてもセキュリティ強度を高めることができる。
(対象プログラムTPの加工)
次に、対象プログラムTPの加工について説明する。図7で説明したように、セキュアモジュール102内のプロセッサ301が加工プログラムPPを実行することで対象プログラムTPが加工される。ここで、対象プログラムTPの加工について具体的に説明する。
図18は、対象プログラムTPの加工の概要を示す説明図である。プログラムは、アドレス単位の命令の集合体である。ここでは、わかりやすさを考慮して、対象プログラムTPが5つのアドレス単位の命令で成り立っているものとする。具体的には、分割プログラムP1〜P5で構成されており、アドレスadr1〜adr5の順に分割プログラムP1〜P5が実行されるものとする。したがって、HDD204では、論理アドレスとして、実行順序となるアドレスadr1〜adr5の並びで記憶されている。
対象プログラムTP(分割プログラムP1〜P5)は、加工プログラムPPにより配置順、すなわち、アドレスを入れ替えられる。図18では、アドレスadr1が分割プログラムP1、アドレスadr2が分割プログラムP4、アドレスadr3が分割プログラムP2、アドレスadr4が分割プログラムP3、アドレスadr5が分割プログラムP5に加工されている。
この場合、分割プログラムP1,P4,P3の後続に、セキュアモジュール102へのRead命令を追記しておく。セキュアモジュール102内には、アドレス変更後の対応関係を示すプログラム片を保持しておく。例えば、プログラム片paは、分割プログラムP1の実行後に参照されるGoto文であり、アドレスadr3にジャンプするものとする。
また、プログラム片pbは、分割プログラムP3の実行後に参照されるGoto文であり、アドレスadr2にジャンプするものとする。プログラム片pcは、分割プログラムP4の実行後に参照されるGoto文であり、アドレスadr5にジャンプするものとする。プログラム片pa〜pcは加工の際に生成される。なお、加工前後では、スキャン結果R1は変わりない。
図19〜図22は、加工プログラムPPによる対象プログラムTPの加工例を示す説明図である。まず、図19では、HDD204内の対象プログラムTPのアドレス3〜5の命令群を、アドレス7〜9に移動させている。また、対象プログラムTPのアドレス6,7の命令群を、アドレス15,16に移動させている。アドレス1,2の命令群はそのままである。
加工前では、アドレス2の命令「Y=X+8」の次は、アドレス3の命令「Z=X+Y」が実行される。アドレス3の命令「Z=X+Y」は、アドレス7に移動したため、アドレス3の内容を、「Goto7」というプログラム片(ジャンプ命令)に書き換える。そして、セキュアモジュール102は、テーブルにアドレス3とプログラム片「Goto7」との組み合わせを保持する。
同様に、加工前では、アドレス5の命令「Z=Z+1」の次は、アドレス6の命令「Z=5+Z」が実行される。アドレス5の命令「Z=Z+1」はアドレス9に移動し、アドレス6の命令は、アドレス15に移動したため、アドレス9の次であるアドレス10の内容を、「Goto15」というプログラム片(ジャンプ命令)に書き換える。そして、セキュアモジュール102は、テーブルにアドレス10とプログラム片「Goto15」との組み合わせを保持する。
そして、セキュアモジュール102は、対象プログラムTPをスキャン対象領域230に書き出す前に、プログラム片をセキュアモジュール102へのRead命令に書き換える。これにより、スキャン対象領域230に実装された加工後の対象プログラムTPが実行される場合、アドレス3のREAD命令により、セキュアモジュール102内のテーブルを参照して、アドレス3に対応するプログラム片「Goto7」を特定する。セキュアモジュール102は、プロセッサ201に対し、「Goto7」を通知することで、プロセッサ201は加工後の対象プログラムTPのアドレス7の命令を実行することとなる。
このように、対象プログラムTPを構成する命令群を、対応関係を保持しておきながらシャッフリングする。したがって、対象プログラムTPも解読しにくい状態とすることで、セキュリティの向上を図ることができる。
図20は、図19よりも加工を複雑化した例である。具体的には、図19では、プログラム片を単なるジャンプ命令としたが、図20では、単なるジャンプ命令ではなく、プログラム片に対象プログラムTPを構成する命令も挿入している。
まず、図20では、HDD204内の対象プログラムTPのアドレス4,5の命令群を、アドレス8,9に移動させている。また、対象プログラムTPのアドレス6,7の命令群を、アドレス15,16に移動させている。アドレス1〜3の命令群はそのままである。
加工前では、アドレス2の命令「Y=X+8」の次は、アドレス3の命令「Z=X+Y」が実行される。アドレス3の次であるアドレス4の命令は、アドレス8に移動したため、Goto文「Goto8」を生成する。そして、セキュアモジュール102は、アドレス3と、アドレス3の命令「Z=X+Y」および生成されたGoto文「Goto8」との組み合わせを保持する。このように、プログラム片を単なるジャンプ命令ではなく、複雑化することで、セキュリティの向上を図ることができる。
図21は、対象プログラムTPを構成する命令群を暗号化する例である。図21では、セキュアモジュール102は、対象プログラムTP(加工前)のアドレス4〜7の命令群を暗号鍵K1〜K4で暗号化する。次に、暗号化された命令の前に、セキュアモジュール102へのREAD命令と復号命令を挿入する。これにより、挿入された命令分だけ、アドレスが繰り下がる。
例えば、アドレス4の命令「Y=Y+1」を暗号鍵K1で暗号化して、アドレス6に書き込む。そして、空いているアドレス4にセキュアモジュールへのREAD命令を挿入し、アドレス5に復号命令を挿入する。
このあと、セキュアモジュール102では、対象プログラムTP(加工後)における暗号化命令を暗号化した鍵とその暗号化命令のために挿入されたREAD命令のアドレスとの組み合わせをテーブルに保持する。例えば、アドレス6に書き込まれた暗号化命令E1(Y=Y+1)を暗号化した暗号鍵K1と、暗号化命令E1(Y=Y+1)の生成により挿入されたREAD命令のアドレス4との組み合わせをテーブルに保持する。
このあと、セキュアモジュール102は、テーブルをRAM304またはフラッシュメモリ306に保持しておき、加工した対象プログラムTPをスキャン対象領域に書き込む。対象プログラムTP(加工後)を実行する時は、挿入されたREAD命令により暗号鍵を読み出して、次の復号命令で、暗号化命令を復号する。これにより、復号された命令を実行することが可能となる。例えば、アドレス4のREAD命令があると、セキュアモジュール102は、テーブルを参照して暗号鍵K1をプロセッサ201に渡す。
プロセッサ201は、暗号鍵K1とアドレス5の復号命令により、暗号化命令E1(Y=Y+1)を復号して、アドレス6に命令「Y=Y+1」を書き込む。そして、アドレス6で、命令「Y=Y+1」を実行することとなる。こうすることで、スキャン対象プログラムが一部暗号化されていても、復号鍵をセキュアモジュールから取得することで処理の続行が可能になる。
図22は、対象プログラムTPを構成する命令群を暗号化する例である。図22では、セキュアモジュール102は、対象プログラムTP(加工前)のアドレス4〜7の命令群をセキュアモジュール102へのREAD命令に置換する。例えば、アドレス4の命令「Y=Y+1」をREAD命令に置換する。そして、次のアドレス5に、「アドレス4でセキュアモジュール102から読み出した命令「Y=Y+1」を書き込む」命令を挿入する。
このあと、セキュアモジュール102は、置換対象の命令とそのアドレスとの組み合わせをテーブルに保持する。例えば、セキュアモジュール102は、置換対象となったアドレス4とその命令「Y=Y+1」の組み合わせをテーブルに保持する。
このあと、セキュアモジュール102は、テーブルをRAM304またはフラッシュメモリ306に保持しておき、加工した対象プログラムTPをスキャン対象領域230に書き込む。対象プログラムTP(加工後)を実行する時は、プロセッサ201は、置換されたREAD命令により置換元の命令を読み出して実行する。例えば、プロセッサ201は、アドレス4のREAD命令でセキュアモジュール102から命令「Y=Y+1」を読み出して実行することとなる。
(対象プログラムTP加工処理)
図23は、対象プログラムTP加工処理の処理手順例を示すフローチャートである。まず、セキュアモジュール102が、暗号化対象プログラムE(TP)をHDD204から読み出し(ステップS2301)、暗号化対象プログラムE(TP)を復号する(ステップS2302)。なお、HDD204において対象プログラムTPが暗号化されていない場合は、HDD204から対象プログラムTPを読み出すだけでよい。
ここで、対象プログラムTPに演算プログラムを書き込んでおく(ステップS2303)。演算プログラムの内容については、図26および図27を用いて後述する。次に、セキュアモジュール102は、対象プログラムTPの加工方法をランダムに決定する(ステップS2304)。具体的には、セキュアモジュール102は、「難読化」、「暗号化」(図21を参照)、「シャッフリング」(図20,図21を参照)、「何もしない」の中から決定する。
そして、セキュアモジュール102は、加工方法が「難読化」であるか否かを判断する(ステップS2305)。加工方法が「難読化」である場合(ステップS2305:Yes)、セキュアモジュール102は、対象プログラムTPから難読化の対象範囲を指定し(ステップS2306)、対象範囲の命令を難読化する(ステップS2307)。そして、ステップS2304に戻る。
また、ステップS2305において、加工方法が「難読化」でない場合(ステップS2305:No)、セキュアモジュール102は、加工方法が「暗号化」であるか否かを判断する(ステップS2308)。加工方法が「暗号化」である場合(ステップS2308:Yes)、セキュアモジュール102は、対象プログラムTPから暗号化の対象範囲を指定し(ステップS2309)、対象範囲の命令を暗号化する(ステップS2310)。このとき、図21に示したように、セキュアモジュール102は、暗号化対象のアドレスとそのアドレスの暗号化命令を復号する復号鍵の組み合わせをテーブルに保存する。そして、ステップS2304に戻る。
また、ステップS2308において、加工方法が「暗号化」でない場合(ステップS2308:No)、セキュアモジュール102は、加工方法が「シャッフリング」であるか否かを判断する(ステップS2311)。加工方法が「シャッフリング」である場合(ステップS2311:Yes)、セキュアモジュール102は、シャッフリング処理(図19)を実行する(ステップS2312)。そして、シャッフリング処理の後、ステップS2304に戻る。
また、ステップS2311において、加工方法が「シャッフリング」でない場合(ステップS2311:No)、セキュアモジュール102は、加工終了であるか否かを判断する(ステップS2313)。具体的には、例えば、このケースでは、加工方法が「何もしない」にランダム決定されているため、一度も加工していない場合は、加工を終了しない(ステップS2313:No)。この場合は、ステップS2304に戻る。
少なくとも1度、または、予め設定しておいた所定回数加工が行われた場合、ランダムに加工を終了する(ステップS2313:Yes)。これにより、加工処理を終了する。そして、RAM203のスキャン対象領域230に加工後の対象プログラムTPを書き出す。
図24は、図23に示したシャッフリング処理(ステップS2312)の詳細な処理手順例を示すフローチャートである。ここでは、例として、図15に示したようなシャッフリングをする場合を例に挙げる。まず、セキュアモジュール102は、セキュアモジュール102内で加工先の領域を確保し(ステップS2401)、対象プログラムTPを複数の命令群に分割する(ステップS2402)。
次に、セキュアモジュール102は、先頭の命令群を対象命令群に設定する(ステップS2403)。そして、セキュアモジュール102は、対象命令群の後続命令群があるか否かを判断する(ステップS2404)。後続命令群がある場合(ステップS2404:Yes)、セキュアモジュール102は、プログラム片(たとえば、Goto文)をランダムに生成する(ステップS2405)。具体的には、セキュアモジュール102は、ランダムかつ対象命令群が入る領域が確保できるように生成する。
このあと、セキュアモジュール102は、生成されたプログラム片のアドレスを、対象命令群の末尾アドレスの次のアドレスに設定する(ステップS2406)。そして、セキュアモジュール102は、プログラム片とその書込先アドレスとの組み合わせをテーブルに追加する(ステップS2407)。
そして、セキュアモジュール102は、対象プログラムTPのプログラム片に割り当てられたアドレスに、プログラム片のRead命令を書き込む(ステップS2408)。このあと、セキュアモジュール102は、プログラム片で指定されたアドレス(プログラム片が「Goto8」なら「8」)に、後続命令群を対象命令群に設定して(ステップS2409)、ステップS2404に戻る。
ステップS2404において、対象命令群の後続命令群がない場合(ステップS2404:No)、シャッフリング処理を終了して、ステップS2304に戻る。
このように、対象プログラムTPを加工することで対象プログラムTPのクラッキングに対してもセキュリティ強度を高めることができる。なお、上述した加工処理は、暗号化対象プログラムTPを読み込む都度実行されるため、その都度、対象プログラムTPの加工方法が変更することとなる。したがって、クラッカーから見るとさらに対象プログラムTPの解析を困難にすることができる。
また、スキャンプログラムSPが、スキャン対象領域230を不定期または定期的にスキャンした場合、そのスキャンプログラムSPが更新される前に、加工プログラムPPが、スキャン対象領域230にランダムにデータやコードを書き込む。そして、更新前に、加工後のスキャンプログラムSPでスキャンすることで、スキャンプログラムSPの正常動作を再々確認することができる。
図25は、対象プログラムTPの加工例を示す説明図である。(A)では、対象プログラムTPのアドレス1〜4の命令が難読化され、アドレス5〜7にNOPを追加した例である。(B)では、アドレス1〜4の命令はそのままで、アドレス5〜7に命令が追加されているが、結果は同一となる例である。(C)では、アドレス1〜4の命令はそのままで、アドレス5〜7に無意味な命令が追加されているため、結果は同一となる例である。
このように、図25の左側の対象プログラムTPをスキャンしたあと、図25の右側のように対象プログラムTPを加工して、スキャンプログラムSPを更新する前に加工後の対象プログラムTPをスキャンする。これにより、スキャンプログラムSPの正常動作を再々確認することができる。
(対象プログラムTP内の演算プログラム)
図26は、対象プログラムTP内の演算プログラムの内容を示す説明図である。演算プログラムは、所定の演算結果を算出するプログラムであり、セキュアモジュール102は、演算プログラムの演算結果が正規の値であるか否かによって対象プログラムTPの正当性を判断する。
例えば、演算プログラムは、1番地の値に第1の秘密番号「yyy」を乗算した値を2番地に格納し、2番地の値に第2の秘密番号「zzz」を乗算した値を3番地に格納するプログラムであるとする。
ここで、セキュアモジュール102は、ランダムに生成した値「X」を1番地に格納する。セキュアモジュール102は、「X」から演算プログラムによって算出されるべき正規の値「Xans」を算出しておく。
一方、対象プログラムTPは、1番地の「X」を読出し、「X」に第1の秘密番号「yyy」を乗算した値「Y」を2番地に格納し、2番地の値「Y」に第2の秘密番号「zzz」を乗算した値「Xcul」を3番地に格納する。
セキュアモジュール102は、定期的に3番地の値を参照し、3番地の値「Xcul」を読出し、正規の値「Xans」と比較する。セキュアモジュール102は、1番地に「X」を格納してから所定時間以内に「Xcul」と「Xans」が一致した場合は、対象プログラムTPが正規プログラムであると判断する。セキュアモジュール102は、所定時間以内に「Xcul」と「Xans」が一致しなかった場合は、対象プログラムTPが不正プログラムであると判断する。
図27は、セキュアモジュール102による認証処理の詳細を示す説明図である。まず、セキュアモジュール102は、時間計測を開始する(ステップS2701)。次に、セキュアモジュール102は、ランダムに生成した値「X」を所定の第1のメモリ番地に格納する(ステップS2702)。そして、「X」から演算プログラムによって算出されるべき正規の値「Xans」を算出する(ステップS2703)。
次に、セキュアモジュール102は、所定の第2のメモリ番地を読み出す(ステップS2704)。セキュアモジュール102は、読み出した値が「Xans」と一致するか判定する(ステップS2705)。「Xans」と一致する場合(ステップS2705:Yes)、セキュアモジュール102は、対象プログラムTPを正規プログラムと判断して(ステップS2706)、認証処理を終了する。
一方、「Xans」と一致しない場合(ステップS2705:No)、セキュアモジュール102は、ステップS2701の時間計測の開始から一定時間が経過したか判定する(ステップS2707)。一定時間が経過していない場合(ステップS2707:No)、ステップS2704に戻る。
一方、一定時間が経過した場合(ステップS2707:Yes)、セキュアモジュール102は、対象プログラムTPを不正プログラムと判断して(ステップS2708)、認証処理を終了する。なお、この認証処理(演算プログラム)の内容は、毎回違う内容になるように加工してもよい。この加工処理を暗号化対象プログラムTPを読み込む都度実行すれば、その都度、対象プログラムTPの中の演算プログラムが変更されることとなる。したがって、クラッカーから見ると認証処理(演算プログラム)の解析となりすましを困難にすることができる。
(セキュアモジュール102の暗号化処理プログラム)
図28は、セキュアモジュール102による暗号化許可のフローチャートを示す説明図である。まず、セキュアモジュール102は、対象プログラムTPが改ざんされているか否かを判断する(ステップS2801)。
改ざんされていない場合(ステップS2801:No)、セキュアモジュール102は、対象プログラムTPから処理要求を受信したか否か判断する(ステップS2802)。
処理要求を受信した場合(ステップS2802:Yes)、セキュアモジュール102は、対象プログラムTPからの処理要求にしたがって処理を行い(ステップS2803)、ステップS2801に戻る。また、処理要求を受信していない場合(ステップS2802:No)、ステップS2801に戻る。
一方、改ざんされている場合(ステップS2801:Yes)、セキュアモジュール102は、「エラーモード」に移行して(ステップS2804)、暗号化許可処理を終了する。「エラーモード」では、セキュアモジュール102は、対象プログラムTPを再起動しない限り、対象プログラムTPからの操作を受け付けない状態となる。
(通信装置101とセンタ103との通信)
次に図29〜図33を用いて、通信装置101とセンタ103との通信の内容について説明する。まず、図29および図30に示すように、通信装置101とセンタ103とは、相互に、通信の相手方が正規の装置であることを認証する。
図29は、通信装置101とセンタ103との相互認証を示すシーケンス図(その1)である。ここでは、セキュアモジュール102は、センタ103の公開鍵およびセキュアモジュール102の秘密鍵を保持しており、センタ103は、セキュアモジュール102の公開鍵およびセンタ103の秘密鍵を保持している。ただし、セキュアモジュール102とセンタ103で共通な共通鍵を保持しているとしてもよい。
図29に示すように、まず、対象プログラムTPは、発生させた通信装置乱数と、ユーザ情報と、を認証依頼としてセンタ103に送信する(ステップS2901)。
認証依頼を受信したセンタ103は、センタ103で発生させたセンタ乱数と、センタ103で生成したセッション鍵(一時鍵)と、受信した認証依頼に含まれる通信装置乱数と、をセンタの秘密鍵により暗号化する(ステップS2902)。そして、センタ103は、暗号化したセンタ乱数と、セッション鍵と、通信装置乱数と、を対象プログラムTPに送信する(ステップS2903)。
暗号化されたセンタ乱数と、セッション鍵と、通信装置乱数と、を受信した対象プログラムTPは、暗号化されたセンタ乱数と、セッション鍵と、通信装置乱数と、を、復号依頼としてセキュアモジュール102に送信する(ステップS2904)。復号依頼を受信したセキュアモジュール102は、対象プログラムTPからプログラム認証情報を取得する(ステップS2905)。そして、セキュアモジュール102は、取得したプログラム認証情報によって対象プログラムTPの正当性を認証する(ステップS2906)。
次に、セキュアモジュール102は、通信装置乱数と、センタ乱数と、セッション鍵と、をセンタ103の公開鍵により復号する(ステップS2907)。セキュアモジュール102は、復号したセッション鍵を保持しておく。また、セキュアモジュール102は、復号したセンタ乱数をセキュアモジュール102の秘密鍵で再暗号化する(ステップS2908)。そして、セキュアモジュール102は、復号した通信装置乱数と、再暗号化したセンタ乱数と、を対象プログラムTPに送信する(ステップS2909)。
通信装置乱数と、再暗号化されたセンタ乱数を受信した対象プログラムTPは、受信したセキュアモジュール102に復号された通信装置乱数と、ステップS2901において送信した通信装置乱数とが一致するか判定する。一致しているならば、対象プログラムTPは、正規のセンタ103に接続されていることを認証する(ステップS2910)。また、対象プログラムTPは、再暗号化されたセンタ乱数を、センタ103に送信する(ステップS2911)。
そして、センタ103は、受信した再暗号化されたセンタ乱数を復号する(ステップS2912)。センタ103は、復号したセンタ乱数と、ステップS2903において送信したセンタ乱数とが一致するか判定する。一致しているならば、センタ103は、正規の対象プログラムTPと接続されていることを認証する(ステップS2913)。そして、図30のステップS3001処理に進む。
図30は、通信装置101とセンタ103との相互認証を示すシーケンス図(その2)である。図30に示すように、対象プログラムTPを認証したセンタ103は、接続確認を、セッション鍵により暗号化する(ステップS3001)。そして、センタ103は、暗号化した接続確認を対象プログラムTPに送信する(ステップS3002)。
暗号化された接続確認を受信した対象プログラムTPは、暗号化された接続確認を、復号依頼としてセキュアモジュール102に送信する(ステップS3003)。復号依頼を受信したセキュアモジュール102は、対象プログラムTPからプログラム認証情報を取得する(ステップS3004)。そして、セキュアモジュール102は、取得したプログラム認証情報によって対象プログラムTPの正当性を認証する(ステップS3005)。
次に、セキュアモジュール102は、接続確認を復号依頼からセンタ103のセッション鍵により復号する(ステップS3006)。セキュアモジュール102は、復号した接続確認を対象プログラムTPに送信する(ステップS3007)。
接続確認を受信した対象プログラムTPは、センタ103と相互接続が完了したと判断して、ユーザからの入力待ちの状態に移行する(ステップS3008)。
ここで、相互認証の際、通信装置101とセンタ103それぞれの乱数を送信するのは、いわゆる再送攻撃を防止するための処理である。すなわち、相互認証を複数回おこなった場合、乱数を送信しないと、常に同じ暗号化された信号列を送信することになる。
よって、クラッカーは暗号化された信号列を復号することができずとも、全く同じ信号列をセンタ103に送ることで正規の通信装置として偽装できる。これを防止するため、相互認証の都度、乱数を送信し、相互認証の信号列が変わるようにする。なお、乱数を予測されると、クラッカーに信号列を偽装される虞があるため、乱数生成機能もセキュアである必要がある。
これにより、通信装置101とセンタ103とが、相互に通信の相手方が正規の装置であることを認証してから、通信装置101は対象プログラムTPによるデータの送受信をおこなうことができる。次に、図31を用いて、対象プログラムTPが書籍購入用の通信プログラムである場合の通信装置101とセンタ103との暗号化通信の内容について説明する。
図31は、通信装置101とセンタ103との暗号化通信を示すシーケンス図である。ここで、ユーザが、届け先住所と購入書籍の情報からなる購入情報を対象プログラムTPに入力したとする。
図31に示すように、対象プログラムTPは、ユーザから購入情報の入力を受けると、購入情報を、暗号化依頼としてセキュアモジュール102に送信する(ステップS3101)。暗号化依頼を受信したセキュアモジュール102は、対象プログラムTPからプログラム認証情報を取得する(ステップS3102)。そして、セキュアモジュール102は、取得したプログラム認証情報によって対象プログラムTPの正当性を認証する(ステップS3103)。
購入情報を受信したセキュアモジュール102は、購入情報を、セキュアモジュール102のセッション鍵により暗号化する(ステップS3104)。そして、セキュアモジュール102は、暗号化した購入情報を対象プログラムTPに送信する(ステップS3105)。暗号化された購入情報を受信した対象プログラムTPは、暗号化された購入情報をセンタ103に送信する(ステップS3106)。
暗号化された購入情報を受信したセンタ103は、購入情報を、センタ103のセッション鍵により復号する(ステップS3107)。センタ103は、復号した購入情報に基づいて、商品の販売処理をおこなう(ステップS3108)。
これにより、セキュアモジュール102は、対象プログラムTPが正規プログラムであることを確認してから、購入情報の暗号化をおこなうため、偽装された購入情報がセンタ103に送信されることを防止できる。次に、図32および図33を用いて、対象プログラムTPが希望ソフトウェアサービスのダウンロード用の通信プログラムである場合の通信装置101とセンタ103との暗号化通信の内容について説明する。
図32は、通信装置101とセンタ103とのプログラムコードの暗号化通信を示すシーケンス図(その1)である。ここで、ユーザが、希望ソフトウェアサービスのサービス識別番号を対象プログラムTPに入力したとする。
図32に示すように、対象プログラムTPは、ユーザからサービス識別番号の入力を受けると、サービス識別番号を、暗号化依頼としてセキュアモジュール102に送信する(ステップS3201)。暗号化依頼を受信したセキュアモジュール102は、対象プログラムTPからプログラム認証情報を取得する(ステップS3202)。そして、セキュアモジュール102は、取得したプログラム認証情報によって対象プログラムTPの正当性を認証する(ステップS3203)。
サービス識別番号を受信したセキュアモジュール102は、サービス識別番号を、セキュアモジュール102のセッション鍵により暗号化する(ステップS3204)。そして、セキュアモジュール102は、暗号化したサービス識別番号を対象プログラムTPに送信する(ステップS3205)。暗号化されたサービス識別番号を受信した対象プログラムTPは、暗号化されたサービス識別番号をセンタ103に送信する(ステップS3206)。
暗号化されたサービス識別番号を受信したセンタ103は、サービス識別番号を、センタのセッション鍵により復号する(ステップS3207)。次に、センタ103は、復号したサービス識別番号と、サービス識別番号に対応するプログラムコードと、をセンタ103のセッション鍵により暗号化する。そして、センタ103は、暗号化したサービス識別番号と、プログラムコードと、を対象プログラムTPに送信する(ステップS3208)。次に、図33のステップS3301の処理に進む。
図33は、通信装置101とセンタ103とのプログラムコードの暗号化通信を示すシーケンス図(その2)である。図33に示すように、対象プログラムTPは、受信した暗号化されたサービス識別番号と、プログラムコードと、を、復号依頼としてセキュアモジュール102に送信する(ステップS3301)。復号依頼を受信したセキュアモジュール102は、対象プログラムTPからプログラム認証情報を取得する(ステップS3302)。そして、セキュアモジュール102は、取得したプログラム認証情報によって対象プログラムTPの正当性を認証する(ステップS3303)。
暗号化されたサービス識別番号とプログラムコードとを受信したセキュアモジュール102は、サービス識別番号とプログラムコードとを、セキュアモジュール102のセッション鍵により復号する(ステップS3304)。次に、セキュアモジュール102は、復号したプログラムコードを、ランダムに生成した鍵により再暗号化する(ステップS3305)。
そして、セキュアモジュール102は、サービス識別番号と、再暗号化したプログラムコードと、を対象プログラムTPに送信する(ステップS3306)。また、セキュアモジュール102は、ランダムに生成した暗号鍵と、サービス識別番号と、を対応付けて保存する(ステップS3307)。次に、対象プログラムTPは、受信したサービス識別番号と、再暗号化されたプログラムコードと、を対応付けて保存する(ステップS3308)。
これにより、セキュアモジュール102は、対象プログラムTPが正規プログラムであることを確認してから、サービス識別番号の暗号化をおこなうため、偽装されたサービス識別番号がセンタ103に送信されることを防止できる。また、セキュアモジュール102は、センタ103から送信されたプログラムコードを再暗号化して、プログラムコードの復号鍵をセキュアに管理するため、プログラムコードの改ざんを防止できる。
以上説明したように、通信装置101およびセキュアモジュール102によれば、対象プログラムTPの改ざんを検出し、検出した対象プログラムTPが暗号化通信ができないようにするため、安全な暗号化通信が実現できる。
また、改ざんの検出は、安全性の担保されたセキュアモジュール102内のスキャンプログラムSPによりおこなわれるため、スキャンプログラムSPがクラッキングされる虞がなく、安全に改ざんの検出ができる。
また、改ざんの検出が通信装置101内のスキャンプログラムSPによりおこなわれる場合には、セキュアモジュール102は通信装置101内のスキャンプログラムSPの更新をランダムにおこなう。そのため、クラッカーによりスキャンプログラムSPがクラッキングされる虞を減らすことができる。
また、セキュアモジュール102は、スキャンプログラムSPを、「難読化」、「スキャン対象領域変更」、「スキャン対象アドレスの順序変更」、「スキャン結果演算の追加」、「スキャンプログラムのアドレス追加」により更新する。これにより、クラッカーによってスキャンプログラムSPが解読され、改ざんされることを防止することができる。
また、セキュアモジュール102は、対象プログラムTPを加工することにより、クラッカーにより対象プログラムTPがクラッキングされる虞を減らすことができる。例えば、セキュアモジュール102は、対象プログラムTPを、「難読化」、「暗号化」、「シャッフリング」により加工する。これにより、クラッカーによって対象プログラムTPが解読され、改ざんされることを防止することができる。
そして、改ざんが検出された場合には、セキュアモジュール102は、暗号化部608、出力部609、または全機能を使用不能に設定する。これにより、改ざんが検出された対象プログラムTPからの暗号鍵Kの読出し要求や通信内容の暗号化依頼に対応しないようにできるため、改ざんが検出された対象プログラムTPによる暗号鍵Kを用いた暗号化通信が不可能となる。
また、セキュアモジュール102は、通信装置101内に対する要求の出力時とその応答の取得時との時間間隔から、セキュアモジュール102と応答の送信元との物理的距離を推定する。これにより、セキュアモジュール102は、クラッカーのコンピュータ104による通信装置101のなりすましを判定し、クラッカーのコンピュータ104との通信に対応しないようにできる。
また、セキュアモジュール102は、通信装置101内の対象プログラムTPとやり取りするデータを暗号化する。そのため、クラッカーによって、セキュアモジュール102と通信装置101内のプロセッサ301との間の通信路がクラッキングされ、データが解析されることを防止することができる。
このように安全な暗号化通信が実現されるため、セキュアモジュール102のユーザおよびセンタ103のユーザの損害を防止できる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールと、
前記通信装置内の前記セキュアモジュール外に備えられ、前記通信装置の外部の装置との暗号化通信を前記セキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムが保持された記憶装置と、
前記セキュアモジュールに備えられ、前記プログラムの改ざんを検出する検出手段と、
前記セキュアモジュールに備えられ、前記検出手段によって前記プログラムの改ざんが検出された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定する設定手段と、
を備えることを特徴とする通信装置。
(付記2)前記セキュアモジュールに備えられ、前記プログラムに固有なコードを記憶する記憶手段と、
前記セキュアモジュールに備えられ、前記プログラムに固有なコードを生成するスキャン処理を前記通信装置で実行させるスキャンプログラムを生成する生成処理と、前記固有なコードと同一コードの生成を維持したまま前記スキャンプログラムの内容をランダムに更新する更新処理とを実行する生成手段と、を備え、
前記検出手段は、
前記記憶装置内の特定の記憶領域に記憶されている前記プログラムに対し前記スキャンプログラムが前記通信装置で実行された場合、前記通信装置での前記スキャンプログラムの実行結果と前記記憶手段に記憶された前記コードとに基づいて、前記特定の記憶領域に記憶されている前記プログラムの改ざんを検出することを特徴とする付記1に記載の通信装置。
(付記3)前記セキュアモジュールに備えられ、前記プログラムに固有なコードを記憶する記憶手段と、
前記セキュアモジュールに備えられ、前記記憶装置に直接アクセスをおこない読み出した前記プログラムから前記プログラムに固有なコードを生成するスキャン処理を実行するスキャンプログラムを生成する生成処理と、前記固有なコードと同一コードの生成を維持したまま前記スキャンプログラムの内容をランダムに更新する更新処理とを実行する生成手段と、を備え、
前記検出手段は、
前記スキャンプログラムの実行結果と、前記記憶手段に記憶された前記コードとに基づいて、前記プログラムの改ざんを検出することを特徴とする付記1に記載の通信装置。
(付記4)前記生成手段は、前記更新処理を定期的に実行することを特徴とする付記2または3に記載の通信装置。
(付記5)前記生成手段は、前記更新処理を不定期に実行することを特徴とする付記2または3に記載の通信装置。
(付記6)前記生成手段は、前記更新処理として、前記スキャンプログラムの命令を難読化することを特徴とする付記2〜5のいずれか一つに記載の通信装置。
(付記7)前記生成手段は、前記更新処理として、前記スキャンプログラムで指定された前記特定の記憶領域内のスキャン先アドレスを変更することを特徴とする付記2〜5のいずれか一つに記載の通信装置。
(付記8)前記生成手段は、前記更新処理として、前記スキャンプログラム内の命令群においてそれぞれ指定された前記特定の記憶領域内のスキャン先アドレスの順序を変更することを特徴とする付記2〜5のいずれか一つに記載の通信装置。
(付記9)前記生成手段は、前記更新処理として、前記スキャンプログラム内の命令で指定されたデータに基づく演算命令の内容を変更して、変更後の演算命令による演算結果を前記記憶手段に記憶しておき、前記変更後の演算命令による演算結果を前記セキュアモジュールに返す命令を追加することを特徴とする付記2〜5のいずれか一つに記載の通信装置。
(付記10)前記生成手段は、前記更新処理として、前記スキャンプログラム内の命令を、前記スキャンプログラムの前記通信装置での格納先アドレスに依存した命令に変更することを特徴とする付記2〜5のいずれか一つに記載の通信装置。
(付記11)前記生成手段は、前記生成処理として、前記固有なコードと同一コードの生成を維持したまま記述内容が異なるスキャンプログラムをランダムに生成することを特徴とする付記2または3に記載の通信装置。
(付記12)前記生成手段は、前記生成処理を定期的に実行することを特徴とする付記11に記載の通信装置。
(付記13)前記生成手段は、前記生成処理を不定期に実行することを特徴とする付記12に記載の通信装置。
(付記14)前記プログラムを、記述内容は異なるが機能は同一のプログラムコードに加工する加工手段を備え、
前記加工手段による加工後のプログラムに固有なコードを前記記憶手段に上書きすることを特徴とする付記2〜13のいずれか一つに記載の通信装置。
(付記15)前記プログラムを、記述内容は異なるが機能は同一のプログラムコードに加工し、加工後のプログラムに固有なコードを前記記憶手段に上書きする加工手段を備え、
前記検出手段は、
前記加工手段による加工後のプログラム内の演算プログラムの演算結果の正当性に基づいて、前記加工後のプログラムの改ざんを検出することを特徴とする付記1に記載の通信装置。
(付記16)前記加工手段は、前記通信装置において前記スキャンプログラムの実行中に、前記プログラムを、記述内容は異なるが機能は同一のプログラムコードに加工し、前記加工後のプログラムに固有なコードを前記記憶手段に上書きすることを特徴とする付記15に記載の通信装置。
(付記17)前記加工手段は、前記プログラムの命令を難読化することを特徴とする付記14〜16のいずれか一つに記載の通信装置。
(付記18)前記加工手段は、前記プログラムの命令群をシャッフリングし、ジャンプ先命令のアドレスを指定するジャンプ命令と当該ジャンプ命令のアドレスとの組み合わせを特定するテーブルを前記記憶手段に記憶し、シャッフリング後の前記プログラムにおける前記ジャンプ命令の内容を前記テーブルのリード命令に変更して、前記特定の記憶領域に書き出すことを特徴とする付記14〜16のいずれか一つに記載の通信装置。
(付記19)前記加工手段は、前記プログラムの命令群をシャッフリングし、ジャンプ先命令のアドレスを指定するジャンプ命令およびジャンプ元命令と当該ジャンプ元命令のアドレスとの組み合わせを特定するテーブルを前記記憶手段に記憶し、シャッフリング後の前記プログラムにおける前記ジャンプ元命令の内容を前記テーブルのリード命令に変更して、前記特定の記憶領域に書き出すことを特徴とする付記14〜16のいずれか一つに記載の通信装置。
(付記20)前記加工手段は、前記プログラムの任意の命令を、当該命令を暗号化した暗号化命令と、前記セキュアモジュールに対するリード命令と、前記暗号化命令を復号する復号命令とに置換し、前記リード命令のアドレスと前記暗号化命令を復号する復号鍵との組み合わせを特定するテーブルを前記記憶手段に記憶し、加工後の前記プログラムを前記特定の記憶領域に書き出すことを特徴とする付記14〜16のいずれか一つに記載の通信装置。
(付記21)前記加工手段は、前記プログラムの任意の命令を前記セキュアモジュールに対するリード命令に置換し、当該リード命令のアドレスと置換元の命令との組み合わせを特定するテーブルを前記記憶手段に記憶し、加工後の前記プログラムを前記特定の記憶領域に書き出すことを特徴とする付記14〜16のいずれか一つに記載の通信装置。
(付記22)前記検出手段によって前記プログラムの改ざんが検出されなかった場合に、前記プログラムを実行する前記通信装置内のプロセッサへ要求を出力した時から、前記プロセッサからの返答を取得する時までの経過時間が、前記通信装置内の前記プロセッサと前記セキュアモジュールとの物理的距離に対応する許容時間以上であるか否かを判定する判定手段を前記セキュアモジュール内に備え、
前記設定手段は、
前記判定手段によって前記許容時間以上であると判定された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする付記1〜21のいずれか一つに記載の通信装置。
(付記23)前記セキュアモジュールに備えられ、前記プログラムが前記外部の装置に送信するデータを、前記送信に先だって前記プログラムから取得する取得手段と、
前記セキュアモジュールに備えられ、前記取得手段によって取得された前記データを前記暗号鍵を用いて暗号化する暗号化手段と、を備え、
前記設定手段は、
前記暗号化手段を不能な状態に設定することにより、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする付記1〜22のいずれか一つに記載の通信装置。
(付記24)前記セキュアモジュールに備えられ、前記暗号鍵の出力依頼を前記プログラムから取得する取得手段と、
前記セキュアモジュールに備えられ、前記取得手段によって前記出力依頼が取得された場合に、前記暗号鍵を前記プログラムに出力する出力手段と、を備え、
前記設定手段は、
前記出力手段を不能な状態に設定することにより、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする付記1〜22のいずれか一つに記載の通信装置。
(付記25)前記データは、前記セキュアモジュールと前記プログラムを実行するプロセッサとが有する共通鍵を用いて暗号化されることを特徴とする付記23または24に記載の通信装置。
(付記26)前記暗号鍵は、前記外部の装置が有する公開鍵に対応する前記セキュアモジュールの秘密鍵であることを特徴とする付記22〜25のいずれか一つに記載の通信装置。
(付記27)前記暗号鍵は、前記セキュアモジュールと前記外部の装置とが共通して有する共通鍵であることを特徴とする付記22〜25のいずれか一つに記載の通信装置。
(付記28)通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールにおいて、
前記通信装置内の前記セキュアモジュール外に備えられた記憶装置に保持され、前記通信装置の外部の装置との暗号化通信を前記セキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムの改ざんを検出する検出手段と、
前記検出手段によって前記プログラムの改ざんが検出された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定する設定手段と、
を備えることを特徴とするセキュアモジュール。
101 通信装置
102 セキュアモジュール
601 検出部
602 設定部
603 記憶部
604 生成部
605 加工部
606 判定部
607 取得部
608 暗号化部
609 出力部

Claims (11)

  1. 通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールと、
    前記通信装置内の前記セキュアモジュール外に備えられ、前記通信装置の外部の装置との暗号化通信を前記セキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムが保持された記憶装置と、
    前記セキュアモジュールに備えられ、前記プログラムの改ざんを検出する検出手段と、
    前記セキュアモジュールに備えられ、前記検出手段によって前記プログラムの改ざんが検出された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定する設定手段と、
    を備えることを特徴とする通信装置。
  2. 前記セキュアモジュールに備えられ、前記プログラムに固有なコードを記憶する記憶手段と、
    前記セキュアモジュールに備えられ、前記プログラムに固有なコードを生成するスキャン処理を前記通信装置で実行させるスキャンプログラムを生成する生成処理と、前記固有なコードと同一コードの生成を維持したまま前記スキャンプログラムの内容をランダムに更新する更新処理とを実行する生成手段と、を備え、
    前記検出手段は、
    前記記憶装置内の特定の記憶領域に記憶されている前記プログラムに対し前記スキャンプログラムが前記通信装置で実行された場合、前記通信装置での前記スキャンプログラムの実行結果と前記記憶手段に記憶された前記コードとに基づいて、前記特定の記憶領域に記憶されている前記プログラムの改ざんを検出することを特徴とする請求項1に記載の通信装置。
  3. 前記セキュアモジュールに備えられ、前記プログラムに固有なコードを記憶する記憶手段と、
    前記セキュアモジュールに備えられ、前記記憶装置に直接アクセスをおこない読み出した前記プログラムから前記プログラムに固有なコードを生成するスキャン処理を実行するスキャンプログラムを生成する生成処理と、前記固有なコードと同一コードの生成を維持したまま前記スキャンプログラムの内容をランダムに更新する更新処理とを実行する生成手段と、を備え、
    前記検出手段は、
    前記スキャンプログラムの実行結果と、前記記憶手段に記憶された前記コードとに基づいて、前記プログラムの改ざんを検出することを特徴とする請求項1に記載の通信装置。
  4. 前記プログラムを、記述内容は異なるが機能は同一のプログラムコードに加工し、加工後のプログラムに固有なコードを前記記憶手段に上書きする加工手段を備え、
    前記検出手段は、
    前記加工手段による加工後のプログラム内の演算プログラムの演算結果の正当性に基づいて、前記加工後のプログラムの改ざんを検出することを特徴とする請求項1に記載の通信装置。
  5. 前記検出手段によって前記プログラムの改ざんが検出されなかった場合に、前記プログラムを実行する前記通信装置内のプロセッサへ要求を出力した時から、前記プロセッサからの返答を取得する時までの経過時間が許容時間以上であるか否かを判定する判定手段を前記セキュアモジュール内に備え、
    前記設定手段は、
    前記判定手段によって前記許容時間以上であると判定された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする請求項1〜4のいずれか一つに記載の通信装置。
  6. 前記セキュアモジュールに備えられ、前記プログラムが前記外部の装置に送信するデータを、前記送信に先だって前記プログラムから取得する取得手段と、
    前記セキュアモジュールに備えられ、前記取得手段によって取得された前記データを前記暗号鍵を用いて暗号化する暗号化手段と、を備え、
    前記設定手段は、
    前記暗号化手段を不能な状態に設定することにより、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする請求項1〜5のいずれか一つに記載の通信装置。
  7. 前記セキュアモジュールに備えられ、前記暗号鍵の出力依頼を前記プログラムから取得する取得手段と、
    前記セキュアモジュールに備えられ、前記取得手段によって前記出力依頼が取得された場合に、前記暗号鍵を前記プログラムに出力する出力手段と、を備え、
    前記設定手段は、
    前記出力手段を不能な状態に設定することにより、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定することを特徴とする請求項1〜5のいずれか一つに記載の通信装置。
  8. 前記データは、前記セキュアモジュールと前記プログラムを実行するプロセッサとが有する共通鍵を用いて暗号化されることを特徴とする請求項6または7に記載の通信装置。
  9. 前記暗号鍵は、前記外部の装置が有する公開鍵に対応する前記セキュアモジュールの秘密鍵であることを特徴とする請求項5〜8のいずれか一つに記載の通信装置。
  10. 前記暗号鍵は、前記セキュアモジュールと前記外部の装置とが共通して有する共通鍵であることを特徴とする請求項5〜8のいずれか一つに記載の通信装置。
  11. 通信装置内に備えられ、内部に格納された情報を外部から参照ができない構造のセキュアモジュールにおいて、
    前記通信装置内の前記セキュアモジュール外に備えられた記憶装置に保持され、前記通信装置の外部の装置との暗号化通信を前記セキュアモジュール内に保持されている暗号鍵を用いておこなうプログラムの改ざんを検出する検出手段と、
    前記検出手段によって前記プログラムの改ざんが検出された場合に、前記セキュアモジュールを、前記プログラムによる前記暗号鍵を用いた前記暗号化通信が不可能な状態に設定する設定手段と、
    を備えることを特徴とするセキュアモジュール。
JP2011025497A 2011-02-08 2011-02-08 通信装置およびセキュアモジュール Active JP5772031B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011025497A JP5772031B2 (ja) 2011-02-08 2011-02-08 通信装置およびセキュアモジュール
US13/335,506 US9152773B2 (en) 2011-02-08 2011-12-22 Communication apparatus and secure module including function for disabling encrypted communication
EP12150100.1A EP2485173B1 (en) 2011-02-08 2012-01-03 Communication apparatus and secure module
KR1020120004363A KR101337084B1 (ko) 2011-02-08 2012-01-13 통신 장치 및 보안 모듈
CN201210023265.4A CN102630085B (zh) 2011-02-08 2012-01-20 通信装置和安全模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011025497A JP5772031B2 (ja) 2011-02-08 2011-02-08 通信装置およびセキュアモジュール

Publications (2)

Publication Number Publication Date
JP2012165289A true JP2012165289A (ja) 2012-08-30
JP5772031B2 JP5772031B2 (ja) 2015-09-02

Family

ID=45540780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011025497A Active JP5772031B2 (ja) 2011-02-08 2011-02-08 通信装置およびセキュアモジュール

Country Status (5)

Country Link
US (1) US9152773B2 (ja)
EP (1) EP2485173B1 (ja)
JP (1) JP5772031B2 (ja)
KR (1) KR101337084B1 (ja)
CN (1) CN102630085B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2940621A1 (en) 2014-04-28 2015-11-04 Tatsuhiro Shirai Apparatus, system, and method for controlling encryption and decryption with respect to a key
JP2018509723A (ja) * 2015-03-13 2018-04-05 エバースピン コーポレーション 動的なセキュリティーモジュール端末装置及びその駆動方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719938B2 (en) * 2012-04-09 2014-05-06 Landis+Gyr Innovations, Inc. Detecting network intrusion using a decoy cryptographic key
US10230762B2 (en) 2012-08-31 2019-03-12 Jpmorgan Chase Bank, N.A. System and method for sharing information in a private ecosystem
EP2917866B1 (en) 2012-11-06 2020-01-01 Nec Corporation Method and system for executing applications in an untrusted environment
US9569618B2 (en) * 2013-08-28 2017-02-14 Korea University Research And Business Foundation Server and method for attesting application in smart device using random executable code
KR101594380B1 (ko) 2015-03-04 2016-02-16 엘지전자 주식회사 이동 단말기 및 코일 안테나 모듈
KR102349714B1 (ko) * 2015-08-13 2022-01-12 삼성전자주식회사 전자 기기의 프로그램 관리 방법 및 장치
CN110176987B (zh) * 2016-02-02 2022-08-09 斑马智行网络(香港)有限公司 一种设备认证的方法、装置、设备和计算机存储介质
JP7013921B2 (ja) 2018-02-19 2022-02-01 株式会社デンソー 検証端末
JP7031374B2 (ja) 2018-03-01 2022-03-08 株式会社デンソー 検証端末、検証システム
US10831899B2 (en) * 2018-05-14 2020-11-10 Sap Se Security-relevant code detection system
US11362824B2 (en) * 2018-05-25 2022-06-14 Intertrust Technologies Corporation Content management systems and methods using proxy reencryption
EP3786818A1 (de) * 2019-08-27 2021-03-03 Siemens Aktiengesellschaft Verfahren zum schützen einer softwareanwendung gegen ein unbefugtes nutzen

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330872A (ja) * 1999-03-15 2000-11-30 Sony Corp データ処理装置、データ処理システムおよびその方法
JP2003134102A (ja) * 2001-10-19 2003-05-09 Dainippon Printing Co Ltd 暗号化システム
JP2004129227A (ja) * 2002-07-30 2004-04-22 Fujitsu Ltd 情報再生装置、セキュアモジュールおよび情報再生方法
JP2007013677A (ja) * 2005-06-30 2007-01-18 Fujitsu Ltd Icチップ、ボード、情報処理装置及びコンピュータプログラム
JP2007515704A (ja) * 2003-11-17 2007-06-14 インテル コーポレイション Sim装置用コンピュータシステムの中で信頼できるチャネルを与えるための装置及び方法
JP2007150965A (ja) * 2005-10-28 2007-06-14 Victor Co Of Japan Ltd デジタルデータ送受信装置及び送信・復号化制御用プログラム
JP2007172653A (ja) * 2007-02-26 2007-07-05 Fujitsu Ltd 情報再生装置およびセキュアモジュール
JP2008118265A (ja) * 2006-11-01 2008-05-22 Fujitsu Ltd 情報処理装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI981232A (fi) 1998-06-01 1999-12-02 Nokia Mobile Phones Ltd Menetelmä sulautetun järjestelmän ohjelmiston suojaamiseksi ja sulautettu järjestelmä
KR100358705B1 (ko) * 1999-11-25 2002-10-30 주식회사 소프트 프로텍 Pc 기반의 유.에스.비. 보안 모듈과 암호칩을 사용한정보 보호 장치
WO2003028283A1 (en) * 2001-09-21 2003-04-03 Telefonaktiebolaget Lm Ericsson (Publ) Arrangement and method for execution of code
JP4145118B2 (ja) * 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
JP4408601B2 (ja) 2001-12-27 2010-02-03 富士通株式会社 情報再生装置およびセキュアモジュール
EP1795993B1 (en) 2002-07-30 2018-02-28 Fujitsu Limited Method and apparatus for reproducing information using a security module
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
JP2005157930A (ja) * 2003-11-28 2005-06-16 Matsushita Electric Ind Co Ltd 機密情報処理システムおよびlsi
US8140664B2 (en) * 2005-05-09 2012-03-20 Trend Micro Incorporated Graphical user interface based sensitive information and internal information vulnerability management system
JP4912772B2 (ja) * 2005-09-22 2012-04-11 富士通株式会社 暗号化方法,暗号復号化方法,暗号化装置,暗号復号化装置,送受信システムおよび通信システム
GB0605383D0 (en) * 2006-03-17 2006-04-26 Williams Paul N Processing system
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
JP4912921B2 (ja) * 2007-02-27 2012-04-11 富士通セミコンダクター株式会社 セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法
US8548168B2 (en) * 2007-07-19 2013-10-01 Vixs Systems, Inc. Security module for securing an encrypted signal with system and method for use therewith
US8490189B2 (en) * 2009-09-25 2013-07-16 Intel Corporation Using chipset-based protected firmware for host software tamper detection and protection

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330872A (ja) * 1999-03-15 2000-11-30 Sony Corp データ処理装置、データ処理システムおよびその方法
JP2003134102A (ja) * 2001-10-19 2003-05-09 Dainippon Printing Co Ltd 暗号化システム
JP2004129227A (ja) * 2002-07-30 2004-04-22 Fujitsu Ltd 情報再生装置、セキュアモジュールおよび情報再生方法
JP2007515704A (ja) * 2003-11-17 2007-06-14 インテル コーポレイション Sim装置用コンピュータシステムの中で信頼できるチャネルを与えるための装置及び方法
JP2007013677A (ja) * 2005-06-30 2007-01-18 Fujitsu Ltd Icチップ、ボード、情報処理装置及びコンピュータプログラム
JP2007150965A (ja) * 2005-10-28 2007-06-14 Victor Co Of Japan Ltd デジタルデータ送受信装置及び送信・復号化制御用プログラム
JP2008118265A (ja) * 2006-11-01 2008-05-22 Fujitsu Ltd 情報処理装置
JP2007172653A (ja) * 2007-02-26 2007-07-05 Fujitsu Ltd 情報再生装置およびセキュアモジュール

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2940621A1 (en) 2014-04-28 2015-11-04 Tatsuhiro Shirai Apparatus, system, and method for controlling encryption and decryption with respect to a key
US9411984B2 (en) 2014-04-28 2016-08-09 Nintendo Co., Ltd. Cryptographic processing apparatus, cryptographic processing system, and cryptographic processing method
JP2018509723A (ja) * 2015-03-13 2018-04-05 エバースピン コーポレーション 動的なセキュリティーモジュール端末装置及びその駆動方法
JP2018511133A (ja) * 2015-03-13 2018-04-19 エバースピン コーポレーション 動的なセキュリティーモジュールサーバー装置及びその駆動方法
JP2018511899A (ja) * 2015-03-13 2018-04-26 エバースピン コーポレーション 動的なセキュリティーモジュール生成方法及び生成装置

Also Published As

Publication number Publication date
EP2485173A1 (en) 2012-08-08
EP2485173B1 (en) 2019-03-06
US9152773B2 (en) 2015-10-06
KR20120100714A (ko) 2012-09-12
JP5772031B2 (ja) 2015-09-02
CN102630085B (zh) 2015-05-13
KR101337084B1 (ko) 2013-12-05
CN102630085A (zh) 2012-08-08
US20120201380A1 (en) 2012-08-09

Similar Documents

Publication Publication Date Title
JP5772031B2 (ja) 通信装置およびセキュアモジュール
JP5775738B2 (ja) 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
EP3074907B1 (en) Controlled storage device access
JP5681028B2 (ja) 改ざん監視システム、管理装置及び管理方法
CN108229220B (zh) 用于在不可信用户设备上的信息的可信呈现的系统和方法
EP3552131B1 (en) Password security
WO2020186457A1 (zh) 网络摄像机的认证方法和装置
CN111046405B (zh) 一种数据处理方法、装置、设备及存储介质
CN111147259A (zh) 鉴权方法和设备
CN114662150A (zh) 一种数据获取方法、装置及电子设备
KR101043255B1 (ko) Usb 허브 보안 장치 및 이를 이용한 데이터 보안 방법
CN113918392B (zh) 一种调试保护系统及调试处理模块
CN115688120A (zh) 安全芯片固件导入方法、安全芯片及计算机可读存储介质
Jarvis et al. Inside a targeted point-of-sale data breach
JP2009021739A (ja) 暗号化ユニットおよび可搬型装置
KR102656375B1 (ko) 공유 콘텐츠 보안 향상을 위한 디지털 권한 관리 시스템 및 그 동작 방법
CN111506324B (zh) 一种利用传统rom结合存储孤岛实现mcu芯片安全的方法
CN108255723B (zh) 用于软件检测的方法和装置以及计算机可读存储介质
Simeon et al. Smart Phone Security Threats And Risk Mitigation Strategies
Borg et al. IoT Pentesting: Obtaining the firmware of a smart lock
CN107305607A (zh) 一种防止后台恶意程序独立运行的方法和装置
CN115618306A (zh) 一种软件保护方法、装置、系统、cpu芯片及电子设备
CN117034229A (zh) 设备端口控制方法、装置、计算机设备及可读存储介质
CN116707906A (zh) 一种软件集开发平台的安全防护系统
Galal et al. Security Test of iZettle's Reader 2: A card terminal for safe payments?

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150518

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: 20150602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150615

R150 Certificate of patent or registration of utility model

Ref document number: 5772031

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150