KR101333377B1 - 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 - Google Patents

정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR101333377B1
KR101333377B1 KR1020120020369A KR20120020369A KR101333377B1 KR 101333377 B1 KR101333377 B1 KR 101333377B1 KR 1020120020369 A KR1020120020369 A KR 1020120020369A KR 20120020369 A KR20120020369 A KR 20120020369A KR 101333377 B1 KR101333377 B1 KR 101333377B1
Authority
KR
South Korea
Prior art keywords
program
storage area
information processing
secure module
processing apparatus
Prior art date
Application number
KR1020120020369A
Other languages
English (en)
Other versions
KR20120123640A (ko
Inventor
기요시 고히야마
마사카즈 다카쿠스
겐이치 와카스기
Original Assignee
후지쯔 세미컨덕터 가부시키가이샤
후지쯔 가부시끼가이샤
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 후지쯔 세미컨덕터 가부시키가이샤, 후지쯔 가부시끼가이샤 filed Critical 후지쯔 세미컨덕터 가부시키가이샤
Publication of KR20120123640A publication Critical patent/KR20120123640A/ko
Application granted granted Critical
Publication of KR101333377B1 publication Critical patent/KR101333377B1/ko

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/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/86Secure or tamper-resistant housings
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • 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/2101Auditing as a secondary aspect
    • 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/2107File encryption
    • 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/2143Clearing memory, e.g. to prevent the data from being stolen

Abstract

부정 프로그램의 개발 방지를 도모하는 것을 과제로 한다.
정보 처리 장치(101)는, 안전성이 담보되지 않은 메인 메모리(103)에 기록되는 프로그램(예컨대, 서브루틴(SR))을 신뢰성이 담보된 시큐어 모듈(102)로 암호화하고 나서 메인 메모리(103)에 기록한다. 이에 따라, 정보 처리 장치(101)는 메인 메모리(103)에서의 프로그램의 안전성을 담보하여 크래커(105)에 의한 프로그램의 해석 및 위조를 방지하여, 부정 프로그램의 개발을 방지한다. 또한, 정보 처리 장치(101)는 암호화된 프로그램을 프로그램의 실행시에만 복호하여, 프로그램의 실행 종료시에 삭제한다. 이에 따라, 정보 처리 장치(101)는 암호화되지 않은 상태의 프로그램이 메인 메모리(103)에 존재하는 시간을 적게 하여, 크래커(105)에 의한 프로그램의 해석 및 위조를 방지하여 부정 프로그램의 개발을 방지한다.

Description

정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체{INFORMATION PROCESSING APPARATUS, SECURE MODULE, INFORMATION PROCESSING METHOD, AND COMPUTER-READABLE RECORDING MEDIUM HAVING INFORMATION PROCESSING PROGRAM}
본 발명은 정보를 처리하는 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램에 관한 것이다.
종래 모바일 단말기(이하, 단순히 "단말기"라고 함)는, 제3자에 의한 소프트웨어 개발을 가정하지 않았기 때문에, 단말기의 사양 및 소프트웨어 구조는 일반적으로 알려지지 않았으며, 단말기 내부는 은닉성이 유지되어 상당히 안전했다. 또한, 안전성이 보증된 시큐어 모듈(내 탬퍼 모듈, 예컨대 SIM 카드(Subscriber Identity Module Card))를 신뢰성 거점으로 하여, 특히 은닉해야 할 정보(예컨대, 정규 암호 키나 사용자 식별 정보)의 안전성을 담보했었다(예컨대, 하기 특허 문헌 1 및 2 참조).
즉, 은닉해야 할 정보는 단말기 내부의 정규 소프트웨어밖에 이용할 수 없다. 따라서, 외부 장치는 단말기로부터 수신한 통신 내용이 안전성이 담보된 정규 암호 키에 의해 암호화되어 있거나, 안전성이 담보된 사용자 식별 정보를 포함하고 있거나의 여부에 기초하여 정규 통신 내용인지 거짓 통신 내용인지를 판별하여 통신의 안전성을 담보할 수 있었다.
특허 문헌 1 : 일본 특허 공개 2004-129227호 공보 특허 문헌 2 : 일본 특허 제4408601호 공보
그러나, 최근에는 스마트폰에서 볼 수 있는 바와 같이, 단말기의 사양 및 소프트웨어 구조를 공개하여, 제3자에 의한 소프트웨어 개발을 재촉하는 경향이 있다. 따라서, 크래커에 의해 단말기 내의 소프트웨어가 판독되고 해석되고 위조되어 부정 소프트웨어가 개발될 가능성이 증가했다. 또한, 시큐어 모듈은 밖에서 엿보거나 위조는 불가능하지만, 소프트웨어로부터 이용하기 위한 인터페이스가 공개되어 있기 때문에, 시큐어 모듈 내의 은닉해야 할 정보는 부정 소프트웨어에 의해 용이하게 판독되어 버린다.
따라서, 부정 소프트웨어는 거짓 통신 내용을 정규의 암호 키를 이용하여 암호화한 후에, 또는 거짓 통신 내용에 사용자 정보를 포함시킨 후에, 외부의 장치로 송신할 수 있다. 따라서, 외부의 장치에서는 거짓 통신 내용인지 여부를 판별할 수 없어, 통신의 안전성을 담보할 수 없다는 문제가 있었다.
본 발명은 이러한 문제점을 감안하여 부정 소프트웨어의 개발을 방지하는 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 제공하는 것을 목적으로 한다.
전술한 과제를 해결하고 목적을 달성하기 위해, 본 발명의 일 측면에 따르면, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하고, 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조로서, 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 프로그램군과는 다른 기억 영역에 기록하는 시큐어 모듈을 가지며, 어느 하나의 프로그램의 실행 요구를 검출하고, 어느 하나의 프로그램의 실행 요구가 검출된 경우, 시큐어 모듈에 의해 암호화된 어느 하나의 프로그램을 복호하여 기억 영역에 기록하고, 복호된 어느 하나의 프로그램을 실행하는 정보 처리 장치, 정보 처리 방법 및 정보 처리 프로그램이 제안된다.
제1 기억 영역과 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서, 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 제1 기억 영역에 기록하고, 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 어느 하나의 프로그램을 복호하여 제1 기억 영역에 기록하는 시큐어 모듈.
제1 기억 영역과 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이, 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 제1 기억 영역에 기록하고, 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 어느 하나의 프로그램을 복호하여 제1 기억 영역에 기록하는 정보 처리 방법 및 정보 처리 프로그램.
제1 기억 영역과 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서, 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 제1 기억 영역에 기록하고, 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 어느 하나의 프로그램을 복호하는 키를 정보 처리 장치로 송신하는 시큐어 모듈.
제1 기억 영역과 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이, 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 제1 기억 영역에 기록하고, 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 어느 하나의 프로그램을 복호하는 키를 정보 처리 장치로 송신하는 정보 처리 방법 및 정보 처리 프로그램.
본 발명의 일 측면에 따르면, 부정 소프트웨어의 개발의 방지를 도모할 수 있다는 효과를 갖는다.
도 1은 정보 처리 장치에 의한 프로그램의 위조 방지의 내용을 도시한 설명도이다.
도 2는 실시형태에 따른 정보 처리 장치(101)의 하드웨어 구성예 1을 도시한 블록도이다.
도 3은 도 2의 시큐어 모듈(102)의 하드웨어 구성예를 도시한 블록도이다.
도 4는 실시형태에 따른 정보 처리 장치(101)의 하드웨어 구성예 2를 도시한 블록도이다.
도 5는 도 4의 시큐어 모듈(102)의 하드웨어 구성예를 도시한 블록도이다.
도 6은 정보 처리 장치(101)의 기능적 구성예 1을 도시한 블록도이다.
도 7은 정보 처리 장치(101)의 기능적 구성예 2를 도시한 블록도이다.
도 8은 정보 처리 장치(101)의 동작 개요 예를 도시한 설명도이다.
도 9는 서브루틴(SR)의 가공의 개요를 도시한 설명도이다.
도 10은 가공 프로그램(PP)에 의한 서브루틴(SR)의 가공예를 도시한 제1 설명도이다.
도 11은 가공 프로그램(PP)에 의한 서브루틴(SR)의 가공예를 도시한 제2 설명도이다.
도 12는 가공 프로그램(PP)에 의한 서브루틴(SR)의 가공예를 도시한 제3 설명도이다.
도 13은 가공 프로그램(PP)에 의한 서브루틴(SR)의 가공예를 도시한 제4 설명도이다.
도 14는 서브루틴(SR) 가공 처리의 처리 순서 예를 도시한 흐름도이다.
도 15는 도 14에 도시한 셔플링 처리(단계 S1412)의 상세한 처리 순서 예를 도시한 흐름도이다.
도 16은 서브루틴(SR)의 가공예를 도시한 설명도이다.
도 17은 스크램블 처리의 세부사항을 도시한 흐름도이다.
도 18은 도 8에 도시한 암호화 서브루틴(S-SR)의 구체예 1을 도시한 설명도이다.
도 19는 도 8에 도시한 암호화 서브루틴(S-SR)의 구체예 2를 도시한 설명도이다.
도 20은 디스크램블 처리의 세부사항을 도시한 흐름도이다.
도 21은 디스크램블 처리를 실행하는 프로그램 예를 도시한 설명도이다.
도 22는 서브루틴(SR)의 인증 개요를 도시한 설명도이다.
도 23은 시큐어 모듈(102)에 의한 인증 처리의 세부사항을 도시한 흐름도이다.
도 24는 시큐어 모듈(102)에 의한 암호화 허가 처리의 세부사항을 도시한 흐름도이다.
이하 첨부 도면을 참조하여 본 발명에 따른 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램의 실시형태를 상세하게 설명한다. 암호화되지 않은 프로그램이 안전성이 담보되지 않은 메모리 상에 존재하는 기간을 가능한 한 짧게 하기 위해, 본 실시형태에서 정보 처리 장치는 안전성이 담보되지 않은 메인 메모리에 기록되는 프로그램을 신뢰성이 담보된 시큐어 모듈로 암호화하고 나서 메인 메모리에 기록해 둔다. 이에 따라, 실행전에는 메인 메모리 상에서 암호화되어 있기 때문에, 메인 메모리에서의 프로그램의 안전성이 담보되어 크래커에 의한 프로그램의 해석 및 위조를 방지할 수 있다.
또한, 정보 처리 장치는 메인 메모리 상에 기록된 암호화된 프로그램을 상기 프로그램의 실행시에만 복호하여, 프로그램의 실행 종료시에 삭제한다. 이에 따라, 정보 처리 장치는 암호화되지 않은 상태의 프로그램이 메인 메모리에 존재하는 시간을 적게 하여, 크래커에 의한 프로그램의 해석 및 위조를 방지한다.
(정보 처리 장치에 의한 프로그램의 위조 방지의 내용)
도 1은 정보 처리 장치에 의한 프로그램의 위조 방지의 내용을 도시한 설명도이다. 도 1에 있어서, 정보 처리 장치(101)는, 시큐어 모듈(102)과, 메인 메모리(103)와, HDD(Hard Disk Drive)(104)를 갖는다.
HDD(104)는 정보 처리 장치(101)에 의해 실행되는 프로그램군이 유지되는 기억 장치이다. 도 1에서는, HDD(104)에는 서브루틴(SR)(도 1에서는 예로서 2개의 서브루틴(SR1, SR2))을 암호 강도가 높은 암호화 방식에 의해 암호화하여 생성된 암호화 서브 루틴(C-SR)이 유지되어 있다. 또한, 암호 강도가 높은 암호화 방식이란, 예컨대, 암호 규격인 AES(Advanced Encryption Standard)나 NESSIE(New European Schemes for Signature, Integrity, and Encryption)로서 규격화된 암호 방식이다.
메인 메모리(103)는 정보 처리 장치(101)가 프로그램을 실행할 때의 작업 영역이 되는 기억 장치로서, 도 1에서는 서브루틴(SR)을 호출하여 실행하는 메인 프로그램(MP)이 기록되어져 있다. 단, 메인 메모리(103)는 크래커(105)라 하더라도 데이터를 판독하는 것이 가능한 기억 장치로서, 신뢰성은 담보되어 있지 않다.
시큐어 모듈(102)은 TRM(Tamper Resistant Module) 구조 등 내부에 저장된 정보를 외부에서 참조할 수 없는 구조를 갖는 LSI(Large Scale Integration)이다. 이에 따라, 시큐어 모듈(102)은 외부로부터의 엿보기를 방지하고 내부의 데이터의 위조를 방지한다.
시큐어 모듈(102)은 암호화 회로를 갖는다. 암호화 회로는 HDD(104) 내의 암호화 서브루틴(C-SR)의 암호화에 사용되고 있는 암호 강도가 높은 암호화 방식에 의한 복호가 가능하다. 또한, 암호화 회로는 암호화 및 복호의 속도가 빠른 암호화 방식에 의한 암호화 및 복호가 가능하다. 암호화 및 복호의 속도가 빠른 암호화 방식이란, 예컨대, 암호화되는 데이터와 암호 키가 되는 데이터의 배타적 논리합(XOR: eXclusive OR)에 의해 암호화(스크램블)하는 방식(이하, "XOR 암호"라고 함)이다.
여기서, 메인 프로그램(MP)이 시동된 경우를 예로 들어 정보 처리 장치(101)가 크래커(105)에 의한 서브루틴(SR)의 해석 및 위조를 방지하면서, 메인 프로그램(MP)에 호출된 서브루틴(SR)을 실행하는 경우에 대해 설명한다.
예컨대, 도 1의 (A)에 도시한 바와 같이, 먼저, 정보 처리 장치(101)는, 메인 프로그램(MP)에 호출되는 서브루틴(SR)을 작업 영역이 될 메인 메모리(103)에 기록한다. 여기서, 메인 메모리(103)는 신뢰성이 담보되어 있지 않기 때문에, 암호화되지 않은 상태로 서브루틴(SR)이 기록된 경우, 서브루틴(SR)이 크래커(105)에 의해 해석될 우려가 있다.
(1) 따라서, 정보 처리 장치(101)는, 서브루틴(SR)을 암호화한 상태로 메인 메모리(103)에 기록하고, 서브루틴(SR)의 실행시에 복호하여 실행한다. 이 때, 서브루틴(SR)의 복호를 고속화하기 위해, 신뢰성이 담보된 시큐어 모듈(102)이 암호화 서브루틴(C-SR)을 일단 복호하고, 복호한 서브루틴(SR)을 XOR 암호에 의해 스크램블한 암호화 서브루틴(S-SR)으로 하여 기록하여 놓는다.
도 1의 (A)에 도시한 바와 같이, 메인 메모리(103)에 기록된 서브루틴(SR)은 암호화 서브루틴(S-SR)의 상태이기 때문에, 크래커(105)에 의한 해석을 방지할 수 있다. 또한, 서브루틴(SR)의 암호화 및 복호가 신뢰성이 담보된 시큐어 모듈(102) 내에서 수행되기 때문에, 크래커(105)는 복호된 상태의 서브루틴(SR)을 엿볼 수 없다. 마찬가지로, 크래커(105)는 서브루틴(SR)에 사용되고 있는 암호화 방식 및 암호 키를 엿볼 수도 없다.
여기서, 메인 프로그램(MP)이 실행 시작되고, 메인 프로그램(MP)으로부터 서브루틴(SR1)의 실행 요구가 발생한 경우를 가정한다.
서브루틴(SR1)의 실행 요구가 있으면, 도 1의 (B)에 도시한 바와 같이, (2) 신뢰성이 담보된 시큐어 모듈(102)이 암호화 서브루틴(S-SR1)으로부터 서브루틴(SR1)을 복호(디스크램블)한다.
(3) 그리고, 정보 처리 장치(101)는 디스크램블된 서브루틴(SR1)을 실행하여, (4) 서브루틴(SR1)의 실행의 종료시에 서브루틴(SR1)을 삭제한다.
또한, 서브루틴(SR2)의 실행 요구가 있었던 경우에도, 정보 처리 장치(101)는 (2) 내지 (4)와 동일한 방법으로 서브루틴(SR2)을 실행하고 삭제한다.
도 1의 (B)에 도시한 바와 같이, 실행을 위해 복호된 서브루틴(SR)이 메인 메모리(103)에 존재하는 시간은 서브루틴(SR)의 실행 개시시의 복호로부터 서브루틴(SR)의 실행 종료시의 삭제까지의 시간뿐이다. 따라서, 크래커(105)가 서브루틴(SR)을 해석할 수 있는 시간은 서브루틴(SR)의 복호로부터 삭제까지의 짧은 시간밖에 없어 크래커(105)는 서브루틴(SR)을 해석할 수 없다.
이상과 같이 정보 처리 장치(101)는 서브루틴(SR)의 크래커(105)에 의한 위조 및 해석을 방지하여 부정 소프트웨어의 개발을 방지할 수 있다. 또한, 정보 처리 장치(101)는 XOR 암호를 사용함으로써 실행 직전까지 서브루틴(SR)을 암호화해 두어도, 서브루틴(SR)의 복호에 의해 메인 프로그램(MP)의 실행이 지연되지 않도록 할 수 있다. 또한, XOR 암호에서는 암호화 및 복호가 동일한 처리에 의해 구현되기 때문에, XOR 암호를 채용한 경우에는 시큐어 모듈(102)을 간소화할 수 있어 저렴하게 작성할 수 있게 된다.
또한, 결과적으로 시큐어 모듈(102) 내의 은닉해야 할 정보(암호 키나 사용자 식별 정보)가 부정 소프트웨어에 이용되지 않게 되어 정보 처리 장치(101)의 사용자의 부정 소프트웨어로 인한 피해를 없앨 수 있다. 예컨대, 통신 판매의 상품 구입용 소프트웨어가 해석 및 위조되어 사용자가 입력한 주문 내용을 재기록해 버리는 부정 소프트웨어가 개발되는 것을 방지할 수 있다. 그리고, 부정 소프트웨어에 의해 시큐어 모듈(102) 내의 암호 키나 사용자 식별 정보가 이용되어, 거짓 주문 내용이 송신되어 버리는 피해를 없앨 수 있다.
(정보 처리 장치(101)의 하드웨어 구성)
다음, 정보 처리 장치(101)의 하드웨어 구성에 대해 설명한다. 도 1에 도시한 바와 같이, 정보 처리 장치(101)는, 시큐어 모듈(102)을 가지고 있는데, 시큐어 모듈(102)은 하나의 칩으로 작성되어 있을 수도 있고, 복수개의 칩으로 작성되어 있을 수도 있다. 먼저, 도 2 및 도 3을 이용하여, 시큐어 모듈(102)이 하나의 칩으로 작성되어 있는 경우의 정보 처리 장치(101)의 하드웨어 구성예에 대해 설명한다.
(정보 처리 장치(101)의 하드웨어 구성예 1)
도 2는 실시형태에 따른 정보 처리 장치(101)의 하드웨어 구성예 1을 도시한 블록도이다. 도 2에 있어서, 정보 처리 장치(101)는, 프로세서(201)와, ROM(Read­Only Memory)(202)과, 시큐어 모듈(102)과, 메인 메모리(103)와, HDD(104)를 구비한다. 또한, 정보 처리 장치(101)는 I/F(Interface)(203)와 디스플레이(204)를 구비한다. 또한, 각 구성부는 버스(200)에 의해 각각 접속되어 있다.
여기서, 프로세서(201)는 정보 처리 장치(101)의 전체의 제어를 담당한다. ROM(202)은 부팅 프로그램 등의 프로그램을 기억하고 있다. 메인 메모리(103)는 프로세서(201)의 워크 영역으로서 사용된다. HDD(104)는 프로세서(201)의 제어에 따라 내장하는 하드디스크에 대한 데이터의 읽기/쓰기를 제어하는 구동 장치이다.
인터페이스(이하, "I/F"라고 약칭함)(203)는, 통신 회선을 통해 LAN(Local Area Network), WAN(Wide Area Network), 인터넷 등의 네트워크(210)에 접속되고, 이 네트워크(210)를 통해 다른 장치에 접속된다. 그리고, I/F(203)는 네트워크(210)와 내부의 인터페이스를 담당하여 외부 장치로부터의 데이터의 입출력을 제어한다. I/F(203)에는, 예컨대 모뎀이나 LAN 어댑터 등을 채용할 수 있다.
디스플레이(204)는, 커서, 아이콘 혹은 툴 박스를 비롯하여 문서, 화상, 기능 정보 등의 데이터를 표시한다. 이 디스플레이(204)는, 예컨대, CRT, TFT 액정 디스플레이, 플라즈마 디스플레이 등을 채용할 수 있다.
시큐어 모듈(102)은, HDD(104)로부터 암호화 서브루틴(C-SR)을 판독하는 기능을 구비한다. 또한, 시큐어 모듈(102)은 서브루틴(SR)을 메인 메모리(103)에 기록하는 기능, 암호화 기능, 복호 기능, 난수 생성 기능 등을 구비한다. 시큐어 모듈(102)은 암호화 서브루틴(C-SR)을 복호하는 암호 키와, XOR 암호의 암호 키를 시큐어하게 유지하고 있다.
단, 시큐어 모듈(102)은 암호 키만을 유지하며, 암호화 기능, 복호 기능, 난수 생성 기능 등은 정보 처리 장치(101)가 구비하도록 할 수도 있다. 이 경우, 시큐어 모듈(102)은 정보 처리 장치(101)의 요구에 따라 암호 키를 출력한다. 시큐어 모듈(102)은 정보 처리 장치(101)에 내장되어 있을 수도 있고, 외부에 장착할 수도 있다.
(시큐어 모듈(102)의 하드웨어 구성예 1)
도 3은 도 2의 시큐어 모듈(102)의 하드웨어 구성예를 도시한 블록도이다. 시큐어 모듈(102)은, 프로세서(301)와, I/F(302)와, 암호화 회로(303)와, RAM(304)과, ROM(305)과, 플래시 메모리(306)와, 난수 생성 회로(307)를 구비한다. 또한, 각 구성부는 버스(300)에 의해 각각 접속되어 있다.
프로세서(301)는 시큐어 모듈(102) 내의 제어나 연산 처리를 수행한다. I/F(302)는 버스(200)를 통해 정보 처리 장치(101) 내의 각 구성부와 접속되어 통신을 수행한다. 암호화 회로(303)는 데이터나 프로그램을 암호화하거나 암호화된 데이터나 프로그램을 복호한다. 암호화 및 복호를 소프트웨어적으로 실행하는 경우에는, 암호화 회로(303)에 해당하는 프로그램을 ROM(305)에 기억시켜 놓음으로써, 암호화 회로(303)는 불필요해진다.
RAM(304)은 프로세서(301)의 워크 영역으로서 사용되는 메인 메모리이다. ROM(305)은 프로그램이나 데이터가 저장되는 비휘발성 메모리이다. ROM(305)에는 암호화 서브루틴(C-SR)을 복호하는 암호 키와 XOR 암호의 암호 키가 저장되어 있다. 플래시 메모리(306)는 저장한 데이터나 프로그램을 재기록할 수 있는 비휘발성 메모리이다. 난수 생성 회로(307)는 난수를 생성한다.
시큐어 모듈(102)은 외부로부터의 엿보기나 위조를 할 수 없는 것을 전제로 하기 때문에, 가능한 한 도 3의 구성과 같이 하나의 칩의 LSI로 하여 실장해야 한다. 예컨대, 시큐어 모듈(102)은 TRM 구조이다. TRM 구조는 반도체 칩(이 경우, 시큐어 모듈(102))의 내부 해석이나 위조를 물리적 및 논리적으로 방위하기 위한 구조를 말한다. 구체적으로는, 시큐어 모듈(102)에서는, 내부에 강고하고 점착력이 높은 코팅이 실시되고, 그 표면이 벗겨지면 내부의 회로가 완전히 파괴되거나 더미의 배선이 배열되어 있다.
(정보 처리 장치(101)의 하드웨어 구성예 2)
다음, 도 4 및 도 5를 이용하여 시큐어 모듈(102)이 복수 개의 칩으로 작성되어 있는 경우의 정보 처리 장치(101)의 하드웨어 구성에 대해 설명한다.
도 4는 실시형태에 따른 정보 처리 장치(101)의 하드웨어 구성예 2를 도시한 블록도이다. 도 4에 있어서, 정보 처리 장치(101)는, 프로세서(201)와, ROM(202)과, 메인 메모리(103)와, HDD(104)와, I/F(203)와, 디스플레이(204)와, 시큐어 모듈(102)을 구비한다. 도 4에 있어서, 도 2와 동일한 구성부에는 동일한 부호를 붙이고 그 설명을 생략한다.
도 4에서, 시큐어 모듈(102)은, 암호화 기능, 복호 기능, 난수 생성 기능 등을 구비하는 LSI(401)와, 암호화 서브루틴(C-SR)을 복호하는 암호 키를 시큐어하게 유지하는 기존의 SIM 카드(402)를 접합하여 작성된다. 그리고, LSI(401)는 필요에 따라 암호 키를 SIM 카드(402)로부터 판독하여 암호화 기능, 복호 기능을 사용한다.
(시큐어 모듈(102)의 하드웨어 구성예 2)
도 5는 도 4의 시큐어 모듈(102)의 하드웨어 구성예를 도시한 블록도이다. 도 5에 있어서, 시큐어 모듈(102)은, LSI(401)와 SIM 카드(402)로 구성된다. LSI(401)는 프로세서(301)와, I/F(302)와, 암호화 회로(303)와, RAM(304)과, ROM(305)과, 플래시 메모리(306)와, 난수 생성 회로(307)를 구비한다. SIM 카드(402)는 암호 키를 시큐어하게 유지하고 있다. 시큐어 모듈(102) 내에서, LSI(401)와 SIM 카드(402)는 I/F(302)에 의해 접속되어 통신한다. 도 5에 있어서, 도 3과 동일한 구성부에는 동일한 부호를 붙이고 그 설명을 생략한다.
시큐어 모듈(102)은 외부로부터의 엿보기나 위조를 할 수 없는 것을 전제로 하기 때문에, 도 5의 구성과 같이 복수 칩으로 구현한 경우에는, 전체를 하나의 모듈로 하고, 전체를 수지로 굳혀 제3자가 엿보거나 위조하기 어렵도록 실장해야 한다.
(정보 처리 장치(101)의 기능적 구성예 1)
다음으로, 정보 처리 장치(101)의 기능적 구성예 1에 대해 설명한다. 도 6은 정보 처리 장치(101)의 기능적 구성예 1을 도시한 블록도이다. 정보 처리 장치(101)는 제1 검출부(601)와, 암호화부(602)와, 제2 검출부(603)와, 복호부(604)와, 실행부(605)와, 삽입부(606)와, 판정부(607)와, 출력부(608)와, 설정부(609)와, 삭제부(610)와, 기억부(611)와, 가공부(612)와, 송신부(613)를 포함하는 구성이다.
이 제어부가 되는 기능(제1 검출부(601) 내지 삭제부(610))는, 구체적으로는, 예컨대, 도 2에 도시한 ROM(202), 메인 메모리(103), HDD(104) 등의 기억 장치에 기억된 프로그램을 프로세서(201)로 하여금 실행시키도록 함으로써, 또는 I/F(203)에 의해 그 기능을 구현한다. 또는, 이 제어부가 되는 기능(제1 검출부(601) 내지 삭제부(610))은, 구체적으로는, 예컨대, 도 3에 도시한 ROM(305), RAM(304), 플래시 메모리(306) 등의 기억 장치에 기억된 프로그램을 프로세서(301)로 하여금 실행시키도록 함으로써, 또는 I/F(302)에 의해 그 기능을 구현한다.
제1 검출부(601)는 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하는 기능을 갖는다. 여기서, 어느 하나의 프로그램이란, 다른 프로그램으로부터 호출되는 프로그램이며, 예컨대, OS(Operating System)에 호출되는 메인 프로그램(MP) 또는 메인 프로그램(MP)에 호출되는 서브루틴(SR)을 들 수 있다. 실행 대기 상태란, 프로그램을 호출하는 다른 프로그램이 실행되었을 때, 다른 프로그램부터의 호출을 대기하고 있는 상태이다.
구체적으로는, 예컨대, 제1 검출부(601)는, 메인 프로그램(MP)이 시동되고, 메인 프로그램(MP)에 의해 서브루틴(SR)이 호출되는 상태가 된 것을 검출한다. 이에 따라, 다른 프로그램에 호출되는 프로그램을 작업 영역이 될 메인 메모리(103)에 기록하는 트리거를 검출할 수 있다.
암호화부(602)는 시큐어 모듈(102) 내에 구비되며, 제1 검출부(601)에 의해 실행 대기 상태가 검출된 경우, 어느 하나의 프로그램을 암호화하여 프로그램군과는 다른 기억 영역에 기록하는 기능을 갖는다. 여기서, 프로그램군과는 다른 기억 영역이란 프로그램의 작업 영역으로서, 예컨대, 전술한 메인 메모리(103)이다.
구체적으로는, 예컨대, 암호화부(602)는 서브루틴(SR)을 암호화하여 메인 메모리(103)에 기록한다. 이에 따라, 누구나 참조 가능하고 안전성이 담보되지 않은 메인 메모리(103)에 기록되는 프로그램을 암호화함으로써 안전성을 담보한다. 또한, 신뢰성이 담보된 시큐어 모듈(102)로 암호화를 수행하기 때문에, 암호화에 사용한 암호화 방식이나 암호화 전의 프로그램은 은닉되어 프로그램의 안전성을 담보할 수 있다.
또한, 구체적으로는, 예컨대, 암호화부(602)는 암호화를 수행할 때마다 서로 다른 암호화 방법을 사용한다. 다른 암호화 방법이란, 예컨대, 암호화마다 서로 다른 데이터를 암호 키에 이용하는 암호화 방식이다. 여기서, 서로 다른 데이터란, 예컨대, 난수 생성 회로(307)에 의해 생성된 난수열이다. 단, 이 경우, 암호화 시에 암호화 대상의 프로그램과 암호 키를 대응시켜 테이블에 기억해 두었다가, 복호 시에 테이블을 참조하여 복호에 사용하는 암호 키를 특정한다. 이에 따라, 암호화를 수행할 때마다 암호 키가 변경되어, 크래커에 의한 프로그램의 해석을 어렵게 할 수 있다.
또한, 구체적으로는, 예컨대, 암호화부(602)는 암호 키가 될 데이터와 암호화되는 프로그램의 배타적 논리합에 의해 암호화하는 암호화 방식을 사용한다. 즉, 전술한 XOR 암호에 의해 암호화한다. XOR 암호는 암호화 및 복호에 따른 처리량이 적고 소요 시간이 짧은 암호이므로, 암호화된 프로그램의 실행시에 암호화된 프로그램의 복호에 소요되는 시간을 짧게 할 수 있다. 또한, XOR 암호에서는 암호화 및 복호가 동일한 처리에 의해 구현되기 때문에, XOR 암호를 채용한 경우에는 시큐어 모듈(102)을 간소화하여 저렴하게 작성할 수 있게 된다.
또한, 암호화부(602)는 프로그램군을 호출하는 프로그램이 시동된 경우, 제1 암호화 프로그램군을 복호하는 기능을 갖는다. 그리고, 암호화부(602)는 암호화 프로그램군의 암호화에 사용되고 있는 제1 암호화 방법과 다른 제2 암호화 방법에 의해 복호된 프로그램군을 암호화하여 기억 영역에 기록하는 기능을 갖는다.
여기서, 프로그램군을 호출하는 프로그램이란, 예컨대, 메인 프로그램(MP)이다. 암호화 프로그램군이란, 예컨대, HDD(104)에 유지된 암호화 서브루틴(C-SR)이다. 제1 암호화 방법이란 암호 강도가 높은 암호화 방식이다. 제2 암호화 방법이란, XOR 암호 중에서 암호 강도가 높은 암호화 방식이며, 예컨대, 암호 키의 데이터 길이가 긴 XOR 암호이다.
구체적으로는, 예컨대, 암호화부(602)는 HDD(104)에 유지된 암호화 서브루틴(C-SR)을 일단 암호 강도가 높은 XOR 암호에 의해 암호화하여 메인 메모리(103)에 기록하여 둔다. 이에 따라, 메인 메모리(103)에 기록된 프로그램이 장시간 실행되지 않는 경우라도 프로그램의 안전성을 담보할 수 있다. 장시간 실행되지 않는 경우란, 예컨대, 메인 프로그램(MP)이 시동되어 있지만, 정보 처리 장치(101)의 사용자로부터 실행의 지시가 입력되지 않은 상태가 계속되고 있는 경우를 말한다.
제2 검출부(603)는, 프로그램군 중 어느 하나의 프로그램의 실행 요구를 검출하는 기능을 갖는다. 구체적으로는, 예컨대, 제2 검출부(603)는, 메인 프로그램(MP)에 의해 서브루틴(SR)의 실행이 요구된 것을 검출한다. 이에 따라, 제2 검출부(603)는 암호화 서브루틴(S-SR)의 복호의 트리거를 검출할 수 있다.
복호부(604)는 제2 검출부(603)에 의해 어느 하나의 프로그램의 실행 요구가 검출된 경우, 시큐어 모듈(102)에 의해 암호화된 어느 하나의 프로그램을 복호하여 기억 영역에 기록하는 기능을 갖는다.
구체적으로는, 예컨대, 복호부(604)는 시큐어 모듈(102) 밖에 존재하며, 시큐어 모듈(102)로부터 제공되는 시큐어 모듈(102)이 어느 하나의 프로그램의 암호화에 사용한 암호 키를 이용하여, 어느 하나의 프로그램을 복호한다. 시큐어 모듈(102)로부터 제공되는 암호 키는 후술하는 송신부(613)에 의해 송신된다.
보다 구체적으로는, 예컨대, 복호부(604)는 시큐어 모듈(102)로부터 제공되는 XOR 암호의 암호 키를 이용하여, 암호화 서브루틴(S-SR)을 복호한다. 이에 따라, 서브루틴(SR)을 실행 가능한 상태로 하여 메인 메모리(103)에 기록할 수 있다.
또한, 복호시간까지 암호 키를 시큐어 모듈(102)이 은닉해 두기 때문에, 크래커(105)에 의한 프로그램의 해석을 방지할 수 있다. 또한, 시큐어 모듈(102)이 암호화마다 서로 다른 암호 키를 사용하는 경우, 다음번 이후의 암호화에는 동일한 암호 키는 사용하지 않는다. 따라서, 정보 처리 장치(101)에 제공함으로써 암호 키가 크래커(105)에 알려져도, 다음번 이후에 생성된 암호화 서브루틴(S-SR)의 복호에 크래커(105)가 이번 암호 키를 유용할 수 없기 때문에, 안전성을 담보할 수 있다.
나아가, 복호부(604)는 시큐어 모듈에 내장하는 것도 가능하지만, 시큐어 모듈(102) 밖에 존재하도록 하여, 시큐어 모듈(102)의 기능을 생략하여 시큐어 모듈(102)을 저렴하게 작성할 수 있다.
실행부(605)는 복호부(604)에 의해 복호된 어느 하나의 프로그램을 실행하는 기능을 갖는다. 구체적으로는, 예컨대, 실행부(605)는 서브루틴(SR)을 실행한다. 이에 따라, 메인 프로그램(MP)의 처리를 정상적으로 수행할 수 있다.
삽입부(606)는 시큐어 모듈(102) 내에 구비되며, 암호화에 앞서 정해진 연산을 수행하여 연산 결과를 기억 영역의 특정 영역에 기록하는 연산 프로그램을 어느 하나의 프로그램에 삽입하는 기능을 갖는다. 여기서, 연산 프로그램이란, 정해진 연산을 수행하여 연산 결과를 메인 메모리(103)의 정해진 영역에 저장하는 프로그램이며, 후술하는 인증 서브프로그램이다. 구체적으로는, 예컨대, 삽입부(606)는 후술하는 가공 프로그램을 실행하여 서브루틴(SR)에 인증 서브프로그램을 삽입한다.
판정부(607)는 시큐어 모듈(102) 내에 구비되며, 실행부(605)에 의한 어느 하나의 프로그램의 실행에 따라, 연산 프로그램에 의해 기록되는 연산 결과를 취득하는 기능을 갖는다. 그리고, 판정부(607)는 취득된 연산 결과와 시큐어 모듈(102)로 정해진 연산을 수행하여 얻어진 연산 결과가 일치하지 않는 경우, 어느 하나의 프로그램에 위조가 있다고 판정하는 기능을 갖는다.
구체적으로는, 예컨대, 판정부(607)는 서브루틴(SR)의 실행에 따라 실행되는 인증 서브프로그램에 의해 메인 메모리(103)에 기록된 연산 결과를 취득한다. 다음, 시큐어 모듈(102)로 인증 서브프로그램과 동일한 연산을 수행하여 정규의 연산 결과를 산출하고, 인증 서브프로그램이 기록된 연산 결과가 정규의 연산 결과가 아니면 프로그램은 위조되어 있다고 판정한다.
그리고, 삽입되는 인증 서브프로그램이 수행하는 정해진 연산을, 매회 서로 다른 연산으로 함으로써, 크래커(105)에 의한 정규의 인증 서브프로그램을 삽입한 부정 프로그램의 개발을 어렵게 할 수 있다.
출력부(608)는 시큐어 모듈(102) 내에 구비되며, 판정부(607)에 의해 위조가 있다고 판정된 경우, 판정 결과를 출력하는 기능을 갖는다. 구체적으로는, 예컨대, 출력부(608)는 위조가 있는 경우에는, 디스플레이(204)에 출력하여, 정보 처리 장치(101)의 사용자에게 부정 프로그램이 실행될 우려가 있음을 통지한다. 이에 따라, 부정 프로그램에 의한 피해를 방지한다.
설정부(609)는 판정부(607)에 의해 위조가 있다고 판정된 경우, 복호부(604)를 복호 불가능한 상태로 설정하는 기능을 갖는다. 구체적으로는, 예컨대, 설정부(609)는 판정부(607)에 의해 프로그램의 위조가 있다고 판정된 경우, 복호부(604), 암호화부(602) 또는 모든 기능을 사용 불가능하게 설정한다. 이에 따라, 설정부(609)는 시큐어 모듈(102)을 위조가 검출된 프로그램으로부터의 복호 의뢰에 대응하지 않도록 할 수 있다. 또는, 설정부(609)는 부정 프로그램의 속행을 불가능하게 할 수 있다.
삭제부(610)는, 실행부(605)에 의한 실행이 종료한 어느 하나의 프로그램을 기억 영역으로부터 삭제하는 기능을 갖는다. 구체적으로는, 예컨대, 삭제부(610)는 메인 메모리(103)에 기록된 서브루틴(SR)을 삭제한다. 이에 따라, 암호화되지 않은 상태의 프로그램이 안전성이 담보되지 않은 메인 메모리(103)에 존재하는 시간을 짧게 하여, 크래커(105)에 의해 프로그램이 해석 및 위조되는 것을 방지할 수 있다.
기억부(611)는 프로그램군을 암호화한 제1 암호화 프로그램군을 유지하는 기능을 갖는다. 구체적으로는, 예컨대, 기억부(611)는 HDD(104)로서, 암호화 서브루틴(C-SR)을 유지한다. 이에 따라, 프로그램을 시큐어하게 유지한다.
가공부(612)는 프로그램을 기술 내용은 다르지만 기능은 동일한 프로그램 코드로 가공하는 기능을 갖는다. 구체적으로는, 예컨대, 가공부(612)는 서브루틴(SR)을 후술하는 "난독화", "암호화", "셔플링"에 의해 가공한다. 이에 따라, 크래커(105)가 서브루틴(SR)을 해독하는 것을 어렵게 하여, 서브루틴(SR)이 해석되어 위조되는 것을 방지할 수 있다.
송신부(613)는 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 어느 하나의 프로그램을 복호하는 키를 정보 처리 장치에 송신하는 기능을 갖는다. 구체적으로는, 예컨대, 송신부(613)는 RAM(304)에 유지되어 있는 XOR 암호의 암호 키를 정보 처리 장치(101)에 송신한다.
또한, 시큐어 모듈(102)이 암호화마다 서로 다른 암호 키를 사용하고 있는 경우에는, 송신부(613)는 암호 키와 암호화 서브루틴(S-SR)을 대응시켜 기억하는 테이블을 참조하여 실행 요구되어 있는 암호화 서브루틴(S-SR)에 대응하는 암호 키를 특정한다. 그리고, 송신부(613)는 특정된 암호 키를 정보 처리 장치(101)에 송신한다.
이에 따라, 정보 처리 장치(101)는 복호부(604)에 의해 암호화 서브루틴(S-SR)을 복호할 때 사용하는 암호 키를 얻을 수 있게 된다.
(정보 처리 장치(101)의 기능적 구성예 2)
또한, 도 7에 도시한 바와 같이, 복호부(604)는 시큐어 모듈(102)에 구비되어 있을 수도 있다. 도 7은 정보 처리 장치(101)의 기능적 구성예 2를 도시한 블록도이다.
구체적으로는, 예컨대, 복호부(604)는 시큐어 모듈(102)에 구비되고, 암호화 서브루틴(S-SR)을 복호하여 메인 메모리(103)에 기록한다. 이에 따라, 서브루틴(SR)을 실행 가능한 상태로 하여, 메인 메모리(103)에 기록할 수 있다. 또한, 신뢰성이 담보된 시큐어 모듈(102)이 복호부(604)를 구비하기 때문에, 암호화 방법이나 암호 키를 은닉할 수 있어 크래커(105)에 의한 프로그램의 해석을 방지하기가 쉬워진다.
(정보 처리 장치(101)에서의 동작 개요 예)
다음, 도 8을 이용하여 정보 처리 장치(101)의 동작 개요 예에 대해 설명한다.
도 8은 정보 처리 장치(101)의 동작 개요 예를 도시한 설명도이다. (1) 먼저, 정보 처리 장치(101)는, 암호화 메인 프로그램(C-MP)과 암호화 서브루틴(C-SR) 군을 포함하는 암호화 소프트웨어를 실행하기 위해, HDD(104)의 암호화 소프트웨어를 시큐어 모듈(102)에 입력한다.
(2) 시큐어 모듈(102)은 입력된 암호화 소프트웨어의 암호화 메인 프로그램(C-MP)을 복호하여 메인 메모리(103)에 기록한. 또한, 시큐어 모듈(102)은 입력된 암호화 소프트웨어의 암호화 서브루틴(C-SR) 군을 복호한다.
(3) 다음으로, 시큐어 모듈(102)은 복호한 서브루틴(SR) 군의 각 서브루틴(SR)을 가공 프로그램(PP)을 이용하여 가공한다. 가공 프로그램(PP)의 내용으로는, "인증 서브프로그램이나 명령의 삽입"이나 "서브루틴(SR)의 난독화, 암호화 또는 셔플링"을 들 수 있다. 이에 따라, 시큐어 모듈(102)은 서브루틴(SR) 군의 각 서브루틴(SR)을 크래커(105)에 의한 해석 및 위조가 어렵도록 가공한다.
(4) 그리고, 시큐어 모듈(102)은 가공 완료된 서브루틴(P-SR) 군의 각 가공 완료된 서브루틴(P-SR)을 XOR 암호에 의해 스크램블하여, 암호화 서브루틴(S-SR) 군을 생성한다. 다음, 시큐어 모듈(102)은 생성된 암호화 서브루틴(S-SR) 군을 메인 메모리(103)에 기록한다.
(5) 여기서, 정보 처리 장치(101)는 메인 프로그램(MP)을 실행한다. 실행된 메인 프로그램(MP)은 서브루틴(SR) 군 중 어느 하나의 서브루틴(SR)의 실행 요구를 발생시킨다.
(6) 정보 처리 장치(101)는, 서브루틴(SR)의 실행 요구의 발생을 검출하면, 검출된 실행 요구에 기초하여, 암호화 서브루틴(S-SR) 군 중 어느 하나의 암호화 서브루틴(S-SR)을 디스크램블하여 실행 요구가 이루어진 서브루틴(SR)을 얻는다.
디스크램블은, 예컨대, (3)에 있어서 서브루틴(SR)에 (4)에 의한 암호화가 대상으로 하지 않는 명령으로서 "자신을 디스크램블하는 의뢰를 시큐어 모듈(102)에 출력하는 명령"을 삽입해 둠으로써 구현할 수 있다. 또한, 복호에 의해 복호 전의 암호화 서브루틴(S-SR)은 메인 메모리(103)로부터 없어진다.
구체적으로, 정보 처리 장치(101)는 시큐어 모듈(102)에 암호화 서브루틴(S-SR)의 디스크램블을 의뢰한다. 또는, 정보 처리 장치(101)는 시큐어 모듈(102)에 암호화 서브루틴(S-SR)의 디스크램블에 사용하는 암호 키의 제공을 의뢰하여, 시큐어 모듈(102)로부터 제공된 암호 키에 의해 암호화 서브루틴(S-SR)을 디스크램블한다.
(7) 그리고, 정보 처리 장치(101)는 디스크램블된 서브루틴(SR)을 실행한다. 여기서, 서브루틴(SR)이 실행되면, 서브루틴(SR)에 삽입된 인증 서브프로그램도 함께 실행된다. 실행된 인증 서브프로그램은 정해진 연산을 수행하여 연산 결과를 메인 메모리(103)의 정해진 영역에 저장한다.
한편, 시큐어 모듈(102)은 인증 프로그램을 실행하고 있다. 실행된 인증 프로그램은 인증 서브프로그램과 동일 내용의 정해진 연산을 수행하여 정규의 연산 결과를 산출한다. 그리고, 실행된 인증 프로그램은 인증 서브프로그램이 저장한 연산 결과를 취득하여, 정규의 연산 결과와 일치 판정을 수행하여 서브루틴(SR)에 위조가 있는지 여부를 판정한다.
이에 따라, 서브루틴(SR) 내의 인증 서브프로그램이 크래커(105)에 의한 위조의 영향을 받고 있는 경우에는, 일치 판정에 의해 연산 결과가 일치하지 않는다고 판정되게 되고, 시큐어 모듈(102)은 위조가 있다고 판정할 수 있다.
그리고, 위조가 있는 경우, 위조를 정보 처리 장치(101)의 사용자에게 출력하거나 실행중인 서브루틴(SR)을 중단시키거나, 시큐어 모듈(102)의 복호 기능을 불가능하게 설정함으로써, 크래커(105)에 의한 위조의 피해를 방지할 수 있다.
(8) 그리고, 정보 처리 장치(101)는 서브루틴(SR)의 실행이 종료되면, 서브루틴(SR)을 삭제한다. 예컨대, 서브루틴(SR)의 삭제는, (3)에 있어서, 서브루틴(SR)에 "자신을 삭제하는 명령"을 삽입해 둠으로서 구현할 수 있다.
이에 따라, 암호화되지 않은 상태의 서브루틴(SR)이 메인 메모리(103)에 존재하는 시간은 전술한 (6) 내지 (8)의 동안뿐이어서, 크래커(105)가 서브루틴(SR)을 해석 및 위조하는 시간을 없앨 수 있다. 따라서, 크래커(105)에 의한 부정 소프트웨어의 개발을 방지할 수 있다.
또한, 정보 처리 장치(101)는 삭제된 서브루틴(SR)이 메인 프로그램(MP)에 의해 복수 회 실행되는 서브루틴(SR)인 경우에 대응하기 위해, 새로 암호화 서브루틴(S-SR)을 생성하여 메인 메모리(103)에 기록하여 둔다. 이에 따라, 메인 프로그램(MP)에 의해 2번째 이후에 서브루틴(SR)이 호출될 때, 호출되어야 할 서브루틴(SR)이 이미 삭제되어 메인 메모리(103)에 존재하지 않는 상태가 되어 버리는 것을 방지할 수 있다.
이하에서는, 도 9 내지 도 24를 이용하여 도 8에 도시한 정보 처리 장치(101)의 각 동작의 내용에 대해 상세하게 설명한다. 먼저, 도 9 내지 도 16을 이용하여 도 8의 (3)에 도시한 서브루틴(SR)의 가공에 대해 구체적으로 설명한다.
또한, 도 9 내지 도 13에서는, 간단화를 위해 메인 메모리(103) 및 HDD(104)에서의 서브루틴(SR)을 암호화되지 않은 상태로 나타내고 있는데, 실제로는 메인 메모리(103) 및 HDD(104)에서는 서브루틴(SR)은 암호화된 상태이다.
(서브루틴(SR)의 가공)
도 9는 서브루틴(SR)의 가공의 개요를 도시한 설명도이다. 서브루틴(SR)은 시큐어 모듈(102)의 프로세서(301)가 실행하는 가공 프로그램(PP)에 의해 가공된다.
서브루틴(SR)(프로그램)은 어드레스 단위의 명령의 집합체이다. 여기서는, 이해 용이성을 고려하여 서브루틴(SR)이 5개의 어드레스 단위의 명령으로 성립되어 있다고 하자. 구체적으로는, 분할 프로그램(P1 내지 P5)으로 구성되어 있으며, 어드레스(adr1 내지 adr5)의 순으로 분할 프로그램(P1 내지 P5)이 실행되는 것으로 한다. 따라서, HDD(104)에서는 논리 어드레스로서, 실행 순서가 되는 어드레스(adr1 내지 adr5)의 배열로 기억되어 있다.
서브루틴(SR)(분할 프로그램(P1 내지 P5))은 가공 프로그램(PP)에 의해 배치순으로, 즉 어드레스가 교체된다. 도 9에서는 어드레스(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)은 가공시에 생성된다.
도 10 내지 도 13은 가공 프로그램(PP)에 의한 서브루틴(SR)의 가공예를 도시한 설명도이다. 먼저, 도 10에서는 HDD(104) 내의 서브루틴(SR)의 어드레스(3 내지 5)의 명령군을 어드레스(7 내지 9)로 이동시켰다. 또한, 서브루틴(SR)의 어드레스(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)은 서브루틴(SR)을 메인 메모리(103)에 기록하기 전에, 프로그램 조각을 시큐어 모듈(102)에의 Read 명령으로 재기록한다. 이에 따라, 메인 메모리(103)에 실장된 가공 후의 서브루틴(SR)이 실행되는 경우, 어드레스(3)의 READ 명령에 의해, 시큐어 모듈(102) 내의 테이블을 참조하여 어드레스(3)에 대응하는 프로그램 조각 "Goto7"을 특정한다. 시큐어 모듈(102)은 프로세서(201)에 대해 "Goto7"을 통지함으로써 프로세서(201)는 가공 후의 서브루틴(SR)의 어드레스(7)의 명령을 실행하게 된다.
이와 같이 서브루틴(SR)을 구성하는 명령군을 대응 관계를 유지해 두면서 셔플링한다. 따라서, 서브루틴(SR)을 해독하기 어려운 상태로 함으로써, 시큐리티의 향상을 도모할 수 있다.
도 11은 도 10보다 가공을 복잡화하게 한 예이다. 구체적으로, 도 10에서는 프로그램 조각을 단순한 점프 명령으로 했지만, 도 11에서는 단순한 점프 명령이 아니라 프로그램 조각에 서브루틴(SR)을 구성하는 명령도 삽입했다.
먼저, 도 11에서는, HDD(104) 내의 서브루틴(SR)의 어드레스(4, 5)의 명령군을 어드레스(8, 9)로 이동시켰다. 또한, 서브루틴(SR)의 어드레스(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"과의 조합을 유지한다. 이와 같이 프로그램 조각을 단순한 점프 명령이 아니라 복잡하게 함으로써, 시큐러티의 향상을 도모할 수 있다.
도 12는 서브루틴(SR)을 구성하는 명령군을 암호화하는 예이다. 도 12에서는, 시큐어 모듈(102)은 서브루틴(SR)(가공전)의 어드레스(4 내지 7)의 명령군을 암호 키(K1 내지 K4)로 암호화한다. 다음, 암호화된 명령 앞에 시큐어 모듈(102)에의 READ 명령과 복호 명령을 삽입한다. 이에 따라, 삽입된 명령분만큼 어드레스가 뒤로 밀린다.
예컨대, 어드레스(4)의 명령 "Y=Y+1"을 암호 키(K1)로 암호화하여 어드레스(6)에 기입한다. 그리고, 비어 있는 어드레스(4)에 시큐어 모듈(102)에의 READ 명령을 삽입하여, 어드레스(5)에 복호 명령을 삽입한다.
이 후, 시큐어 모듈(102)에서는, 서브루틴(SR)(가공후)에서의 암호화 명령을 암호화한 키와 그 암호화 명령을 위해 삽입된 READ 명령의 어드레스의 조합을 테이블에 유지한다. 예컨대, 어드레스(6)에 기입된 암호화 명령(E1(Y=Y+1))을 암호화한 암호 키(K1)와 암호화 명령(E1(Y=Y+1))의 생성에 의해 삽입된 READ 명령의 어드레스(4)와의 조합을 테이블에 유지한다.
이 후, 시큐어 모듈(102)은 테이블을 RAM(304) 또는 플래시 메모리(306)에 유지해 두었다가, 가공한 서브루틴(SR)을 메인 메모리(103)에 기입한다. 서브루틴(SR)(가공후)을 실행할 때에는 삽입된 READ 명령에 의해 암호 키를 판독하여, 다음 복호 명령으로 암호화 명령을 복호한다. 이에 따라, 복호된 명령을 실행하는 것이 가능해진다. 예컨대, 어드레스(4)의 READ 명령이 있으면, 시큐어 모듈(102)은 테이블을 참조하여 암호 키(K1)를 프로세서(201)에 전달한다.
프로세서(201)는 암호 키(K1)와 어드레스(5)의 복호 명령에 의해, 암호화 명령(E1(Y=Y+1))을 복호하여 어드레스(6)에 명령 "Y=Y+1"을 기입한다. 그리고, 어드레스(6)로, 명령 "Y=Y+1"을 실행하게 된다. 이와 같이 서브루틴(SR)이 일부 암호화되어 있어도, 복호 키를 시큐어 모듈(102)로부터 취득함으로써 처리의 속행이 가능해진다.
도 13은 서브루틴(SR)을 구성하는 명령군을 암호화하는 예이다. 도 13에서는 시큐어 모듈(102)은 서브루틴(SR)(가공전)의 어드레스(4 내지 7)의 명령군을 시큐어 모듈(102)에의 READ 명령으로 치환한다. 예컨대, 어드레스(4)의 명령 "Y=Y+1"을 READ 명령으로 치환한다. 그리고, 다음 어드레스(5)에, "어드레스(4)에서 시큐어 모듈(102)로부터 판독한 명령 "Y=Y+1"을 기입하는" 명령을 삽입한다.
이 후, 시큐어 모듈(102)은 치환 대상의 명령과 그 어드레스와의 조합을 테이블에 유지한다. 예컨대, 시큐어 모듈(102)은 치환 대상이 된 어드레스(4)와 그 명령 "Y=Y+1"의 조합을 테이블에 유지한다.
이 후, 시큐어 모듈(102)은 테이블을 RAM(304) 또는 플래시 메모리(306)에 유지해 두었다가, 가공한 서브루틴(SR)을 메인 메모리(103)에 기입한다. 서브루틴(SR)(가공후)을 실행할 때에는, 프로세서(201)는 치환된 READ 명령에 의해 치환원(substitution source)의 명령을 판독하여 실행한다. 예컨대, 프로세서(201)는 어드레스(4)의 READ 명령으로 시큐어 모듈(102)로부터 명령 "Y=Y+1"을 판독하여 실행하게 된다.
(서브루틴(SR) 가공 처리)
도 14는 서브루틴(SR) 가공 처리의 처리 순서 예를 도시한 흐름도이다. 먼저, 시큐어 모듈(102)이 암호화 서브루틴(C-SR)을 HDD(104)로부터 판독하고(단계 S1401), 암호화 서브루틴(C-SR)을 복호한다(단계 S1402).
여기서, 시큐어 모듈(102)은 서브루틴(SR)에 인증 서브프로그램이나 명령을 삽입해 둔다(단계 S1403). 명령의 내용에 대해서는, 도 18 및 도 19를 이용하여 후술한다. 인증 서브프로그램의 내용에 대해서는 도 22를 이용하여 후술한다.
다음, 시큐어 모듈(102)은 서브루틴(SR)의 가공 방법을 랜덤하게 결정한다(단계 S1404). 구체적으로는, 시큐어 모듈(102)은 "난독화", "암호화"(도 12, 도 13 참조), "셔플링"(도 11, 도 12, 도 13 참조), "아무것도 하지 않음" 중에서 결정한다.
그리고, 시큐어 모듈(102)은 가공 방법이 "난독화"인지 여부를 판단한다(단계 S1405). 가공 방법이 "난독화"인 경우(단계 S1405: Yes), 시큐어 모듈(102)은 서브루틴(SR)으로부터 난독화의 대상 범위를 지정하고(단계 S1406), 대상 범위의 명령을 난독화한다(단계 S1407). 그리고, 단계 S1404로 돌아간다.
또한, 단계 S1405에 있어서, 가공 방법이 "난독화"가 아닌 경우(단계 S1405: No), 시큐어 모듈(102)은 가공 방법이 "암호화"인지 여부를 판단한다(단계 S1408). 가공 방법이 "암호화"인 경우(단계 S1408: Yes), 시큐어 모듈(102)은 서브루틴(SR)으로부터 암호화의 대상 범위를 지정하고(단계 S1409), 대상 범위의 명령을 암호화한다(단계 S1410). 이 때, 도 12에 도시한 바와 같이, 시큐어 모듈(102)은 암호화 대상의 어드레스와 그 어드레스의 암호화 명령을 복호하는 복호 키의 조합을 테이블에 저장한다. 그리고, 단계 S1404로 돌아간다.
또한, 단계 S1408에 있어서, 가공 방법이 "암호화"가 아닌 경우(단계 S1408: No), 시큐어 모듈(102)은 가공 방법이 "셔플링"인지 여부를 판단한다(단계 S1411). 가공 방법이 "셔플링"인 경우(단계 S1411: Yes), 시큐어 모듈(102)은 셔플링 처리(도 15)를 실행한다(단계 S1412). 그리고, 셔플링 처리 후, 단계 S1404로 돌아간다.
또한, 단계 S1411에 있어서, 가공 방법이 "셔플링"이 아닌 경우(단계 S1411: No), 시큐어 모듈(102)은 가공 종료인지 여부를 판단한다(단계 S1413). 구체적으로는, 예컨대, 본 케이스에서는 가공 방법이 "아무것도 하지 않음"으로 랜덤하게 결정되어 있기 때문에, 한 번도 가공하지 않은 경우에는, 가공을 종료하지 않는다(단계 S1413: No). 이 경우에는 단계 S1404로 돌아간다.
적어도 한 번 또는 미리 설정해 둔 정해진 횟수의 가공이 수행된 경우, 랜덤하게 가공을 종료한다(단계 S1413: Yes). 이에 따라, 가공 처리를 종료한다.
도 15는 도 14에 도시한 셔플링 처리(단계 S1412)의 상세한 처리 순서 예를 도시한 흐름도이다. 여기서는, 예로서 도 10에 도시한 바와 같은 셔플링을 하는 경우를 예로 든다. 먼저, 시큐어 모듈(102)은 시큐어 모듈(102) 내에서 가공처의 영역을 확보하고(단계 S1501), 서브루틴(SR)을 복수 개의 명령군으로 분할한다(단계 S1502).
다음, 시큐어 모듈(102)은 선두의 명령군을 대상 명령군으로 설정한다(단계 S1503). 그리고, 시큐어 모듈(102)은 대상 명령군의 후속 명령군이 있는지 여부를 판단한다(단계 S1504). 후속 명령군이 있는 경우(단계 S1504: Yes), 시큐어 모듈(102)은 프로그램 조각(예컨대, Goto문)을 랜덤하게 생성한다(단계 S1505). 구체적으로는, 시큐어 모듈(102)은 랜덤하게 그리고 대상 명령군이 들어가는 영역이 확보될 수 있도록 생성한다.
이 후, 시큐어 모듈(102)은 생성된 프로그램 조각의 어드레스를 대상 명령군의 말미 어드레스의 다음 어드레스로 설정한다(단계 S1506). 그리고, 시큐어 모듈(102)은 프로그램 조각과 그 기입처 어드레스의 조합을 테이블에 추가한다(단계 S1507).
그리고, 시큐어 모듈(102)은 서브루틴(SR)의 프로그램 조각에 할당된 어드레스에, 프로그램 조각의 Read 명령을 기입한다(단계 S1508). 이 후, 시큐어 모듈(102)은 프로그램 조각으로 지정된 어드레스(프로그램 조각이 "Goto8"이면 "8")에, 후속 명령군을 대상 명령군으로서 설정하여(단계 S1509), 단계 S1504로 돌아간다.
단계 S1504에 있어서, 대상 명령군의 후속 명령군이 없는 경우(단계 S1504: No), 셔플링 처리를 종료하여 단계 S1404로 돌아간다.
이와 같이 서브루틴(SR)을 가공함으로써 서브루틴(SR)의 크래킹에 대해 시큐러티 강도를 높일 수 있다. 또한, 전술한 가공 처리는 암호화 서브루틴(SR)을 판독할 때마다 실행되기 때문에, 그 때마다, 서브루틴(SR)의 가공 방법이 변경되게 된다. 따라서, 크래커 입장에서 보면 서브루틴(SR)의 해석을 더 어렵게 할 수 있다.
도 16은 서브루틴(SR)의 가공예를 도시한 설명도이다. (A)에서는, 서브루틴(SR)의 어드레스(1 내지 4)의 명령이 난독화되고, 어드레스(5 내지 7)에 NOP를 추가한 예이다. (B)에서는 어드레스(1 내지 4)의 명령은 그대로이고, 어드레스(5 내지 7)에 명령이 추가되어 있지만, 결과는 동일해지는 예이다. (C)에서는 어드레스(1 내지 4)의 명령은 그대로이고, 어드레스(5 내지 7)에 무의미한 명령이 추가되어 있기 때문에 결과는 동일해지는 예이다.
이와 같이, 도 16의 좌측의 서브루틴(SR)을 도 16의 우측과 같이 가공한다. 이에 따라, 서브루틴(SR)의 크래킹에 대해 시큐러티 강도를 높일 수 있다.
(스크램블 처리의 내용)
다음, 도 17을 이용하여, 암호화 대상의 프로그램을 스크램블하는 스크램블 처리의 내용에 대해 설명한다. 구체적으로는, 도 8의 (4)에 도시한 가공 완료된 서브루틴(P-SR)(도 9 내지 도 16에 도시한 가공 프로그램(PP)에 의해 가공된 가공 완료된 서브루틴(P-SR))을 스크램블하는 스크램블 처리이다.
도 17은 스크램블 처리의 세부사항을 도시한 흐름도이다. 먼저, 프로세서(301)는 스크램블 의뢰를 정보 처리 장치(101)로부터 수신했는지 여부를 판정한다(단계 S1701). 여기서, 스크램블 의뢰를 수신하지 않은 경우(단계 S1701: No), 프로세서(301)는 단계 S1701로 돌아가 스크램블 의뢰의 수신을 대기한다.
한편, 스크램블 의뢰를 수신한 경우(단계 S1701: Yes), 프로세서(301)는 암호 키를 랜덤하게 생성하고(단계 S1702), 생성된 암호 키를 이용하여 암호화 대상의 프로그램에 스크램블을 가한다(단계 S1703).
그리고, 프로세서(201)는 스크램블된 프로그램을 메인 메모리(103)에 기록하고(단계 S1704), 스크램블 처리를 종료한다. 이에 따라, 스크램블마다 서로 다른 암호 키에 의해 스크램블하여, 크래커(105)에 의한 프로그램의 해석을 어렵게 하여 부정 프로그램의 개발을 방지한다.
(암호화 서브루틴(S-SR)의 내용)
다음, 도 18 및 도 19를 이용하여 도 8에 도시한 암호화 서브루틴(S-SR)의 내용에 대해 설명한다. 도 8에 도시한 암호화 서브루틴(S-SR)이란, 즉, 도 17의 스크램블 처리에 의해 스크램블된 암호화 서브루틴(S-SR)이다.
여기서, 도 18에서는 시큐어 모듈(102)이 암호화 서브루틴(S-SR)을 복호하는 경우의 암호화 서브루틴(S-SR)의 내용에 대해 설명한다. 한편, 도 19에서는, 시큐어 모듈(102)로부터 복호에 사용하는 암호 키를 제공받은 정보 처리 장치(101)가 암호화 서브루틴(S-SR)을 복호하는 경우의 암호화 서브루틴(S-SR)의 내용에 대해 설명한다.
도 18은 도 8에 도시한 암호화 서브루틴(S-SR)의 구체예 1을 도시한 설명도이다.
암호화 서브루틴(S-SR)의 선두에는, 스크램블되지 않은 영역이 존재하고, 자신의 디스크램블을 시큐어 모듈(102)에 의뢰하는 명령인 "디스크램블 의뢰"가 포함되어 있다. "디스크램블 의뢰"는 시큐어 모듈(102)이 가공 프로그램(PP)에 의해 삽입한 명령이다.
시큐어 모듈(102)이 암호화마다 서로 다른 암호 키를 사용하는 경우, 가공 프로그램(PP)에 의해 삽입되는 "디스크램블 의뢰"에는, 암호화에 사용한 암호 키에 대응하는 식별 정보를 포함해 둘 수도 있다. 그리고, 시큐어 모듈(102)은 식별 정보를 참조하여 암호 키를 특정하고 디스크램블한다.
암호화 서브루틴(S-SR)에는, "디스크램블 의뢰" 다음에, 스크램블된 영역이 존재하고, 암호화 소프트웨어의 통상 처리를 수행하는 명령인 "통상 처리"가 포함되어 있다. 또한, "통상 처리"와 "통상 처리" 사이에는 시큐어 모듈(102)이 가공 프로그램(PP)에 의해 삽입한 "인증 서브프로그램"이 포함되어 있다.
"통상 처리" 다음에, 자신의 실행 종료시에 자신을 삭제하도록 정보 처리 장치(101)에 의뢰하는 명령인 "삭제 처리"가 포함되어 있다. "삭제 처리"는 시큐어 모듈(102)이 가공 프로그램(PP)에 의해 삽입한 명령이다.
또한, 암호화 서브루틴(S-SR)에는, "삭제 처리" 다음에, 스크램블되지 않은 영역이 존재한다. 이 스크램블되지 않은 영역에는, 삭제된 자신 대신 새로 암호화 서브루틴(S-SR)을 생성하도록 정보 처리 장치(101)에 의뢰하는 명령인 "새 루틴 치환"이 포함되어 있다. "새 루틴 치환"은 시큐어 모듈(102)이 가공 프로그램(PP)에 의해 삽입한 명령이다.
또한, "새 루틴 치환" 다음에, 메인 프로그램으로 복귀하는 명령인 "메인 프로그램 복귀"가 포함되어 있다. 단, 전술한 시큐어 모듈(102)에 의해 삽입된 각 명령은 서브루틴(SR)에 처음부터(서브루틴(SR)의 개발 시점에서) 포함되어 있을 수도 있다.
도 19는 도 8에 도시한 암호화 서브루틴(S-SR)의 구체적인 예 2를 도시한 설명도이다.
또한, "통상 처리", "인증 서브프로그램", "삭제 처리", "새 루틴 치환", "메인 프로그램 복귀"의 내용은 도 18에서 설명한 내용과 동일하기 때문에 여기서는 설명을 생략한다.
도 19에서는, 도 18에 도시한 "디스크램블 의뢰" 대신 "디스크램블용 암호 키의 출력 의뢰"와 "디스크램블"이 선두의 스크램블되지 않은 영역에 포함되어 있다. "디스크램블용 암호 키의 출력 의뢰"와 "디스크램블"은 시큐어 모듈(102)이 가공 프로그램(PP)에 의해 삽입한 명령이다.
"디스크램블용 암호 키의 출력 의뢰"는 시큐어 모듈(102)에 암호 키의 제공을 의뢰하는 명령이다. 시큐어 모듈(102)이 암호화마다 서로 다른 암호 키를 사용하는 경우, 가공 프로그램(PP)에 의해 삽입되는 "디스크램블용 암호 키의 출력 의뢰"에는 암호화에 사용한 암호 키에 대응하는 식별 정보를 포함해 둘 수도 있다. 그리고, 시큐어 모듈(102)에 식별 정보를 통지하여 암호 키의 제공을 의뢰한다.
"디스크램블"은 제공된 암호 키를 사용하여 암호화 서브루틴(S-SR)의 디스크램블을 정보 처리 장치(101)로 하여금 수행하도록 하는 명령이다. 단, 전술한 시큐어 모듈(102)에 의해 삽입된 각 명령은, 서브루틴(SR)에 처음부터(서브루틴(SR)의 개발 시점에서) 포함되어 있을 수도 있다.
(디스크램블 처리의 내용)
여기서, 도 20을 이용하여, 도 8의 (6)에 도시한 암호화 서브루틴(S-SR)을 디스크램블하는 디스크램블 처리의 내용에 대해 설명한다. 구체적으로는, 디스크램블 처리는 도 18에 도시한 "디스크램블 의뢰"의 명령에 의해 정보 처리 장치(101)로부터 송신된 디스크램블 의뢰를 수신한 시큐어 모듈(102)에 의해 수행된다. 또는, 도 19에 도시한 "디스크램블"의 명령을 실행하는 정보 처리 장치(101)에 의해 수행된다.
여기서는, 도 19에 도시한 바와 같이, 디스크램블 처리를 정보 처리 장치(101)가 수행하는 경우의 처리에 대해 설명한다.
도 20은 디스크램블 처리의 세부사항을 도시한 흐름도이다. 먼저, 프로세서(201)는 암호 키를 판독한다(단계 S2001). 암호 키는, 예컨대, 시큐어 모듈(102)로부터 제공되어, 메인 메모리(103)에 기억되어 있다.
다음, 프로세서(201)는 메인 메모리(103)에 있는 복호 대상이 될 암호화된 프로그램에 포함되는 암호화된 모든 명령을 복호했는지 여부를 판정한다(단계 S2002).
여기서, 모든 명령을 복호하지 않은 경우(단계 S2002: No), 프로세서(201)는 아직 복호되지 않은 명령이 저장된 메인 메모리(103)의 번지를 지정한다(단계 S2003). 그리고, 프로세서(201)는 지정된 번지에 저장된 암호화된 명령과 암호 키와의 XOR 연산을 수행하여 암호화된 명령을 복호된 명령으로 재기록한다(단계 S2004). 그 후, 프로세서(201)는 단계 S2002로 돌아간다.
한편, 모든 명령을 복호한 경우(단계 S2002: Yes), 프로세서(201)는 복호된 명령군을 실행하여(단계 S2005), 디스크램블 처리를 종료한다. 이에 따라, 암호화된 프로그램을 실행 가능한 상태로 한다.
(디스크램블 처리를 실행하는 프로그램 예)
다음, 도 20에 도시한 디스크램블 처리를 실행하는 프로그램의 일례에 대해 설명한다.
도 21은 디스크램블 처리를 실행하는 프로그램 예를 도시한 설명도이다. 서브루틴(SR)(프로그램)은, 어드레스 단위의 명령의 집합체이다. 여기서는, 메인 메모리(103)의 x5번지 내지 x100번지에 암호화 서브루틴(S-SR)의 스크램블된 부분이 존재한다고 가정한다.
여기서, 디스크램블을 시큐어 모듈(102)이 수행하는 경우, 디스크램블의 프로그램은 시큐어 모듈(102)의 RAM(304)에 존재한다. 디스크램블을 정보 처리 장치(101)가 수행하는 경우, 디스크램블의 프로그램은 메인 메모리(103)에 존재한다.
도 21에서는 정보 처리 장치(101)가 시큐어 모듈(102)로부터 제공받은 암호 키를 사용하여 디스크램블을 수행하는 경우를 예로 들며, 디스크램블의 프로그램은 메인 메모리(103)의 1번지 내지 8번지에 존재한다고 가정한다.
또한, 이하에서는, xx번지는, 복호의 작업 영역이다. xx번지에는, 먼저, 암호화된 명령이 저장된다. 그리고, xx번지의 명령은 디스크램블되고, 복호된 명령으로 변환된다. yy번지에는, 작업 대상으로 되어 있는 번지의 번지 번호가 저장된다. zz번지에는, 시큐어 모듈(102)로부터 제공된 암호 키가 저장된다.
구체적으로는, 1번지의 명령은, 정보 처리 장치(101)로 하여금 시큐어 모듈(102)로부터 제공받은 암호 키가 저장되어 있는 zz번지로부터, 암호 키를 판독하도록 하는 명령이다. 그리고, 2번지의 명령은, 정보 처리 장치(101)로 하여금 yy번지에 번지 번호 "x4"를 저장하도록 하는 명령이다. 1번지 및 2번지의 명령은, 도 20의 단계 S2001에 대응해 있다.
그리고, 3번지의 명령은, 정보 처리 장치(101)로 하여금 yy번지에 저장된 번지 번호에 1을 가산하도록 하는 명령이다. 여기서, 4번지의 명령은 정보 처리 장치(101)로 하여금, yy번지의 번지 번호가 "x100"을 넘었다면, x5번지로 점프하여 x5번지의 명령을 실행하도록 하는 명령이다. 즉, x100번지까지의 복호가 종료했다면, x5번지로 점프하여 x5번지 내지 x100번지까지의 복호된 명령을 실행한다. 3번지 및 4번지의 명령은, 도 20의 단계 S2002의 분기에 대응해 있다.
또한, 5번지의 명령은 정보 처리 장치(101)로 하여금 암호화된 명령이 저장되어 있는 yy번지의 명령을 xx번지에 저장하도록 하는 명령이다. 5번지의 명령은 도 20의 단계 S2003에 대응해 있다.
그리고, 6번지의 명령은, 정보 처리 장치(101)로 하여금 xx번지에 저장된 암호화된 명령에, zz번지에 저장된 암호 키를 이용하여 XOR 연산을 실시하고, xx번지에 저장된 암호화된 명령을 복호된 명령으로 변환하도록 하는 명령이다.
또한, 7번지의 명령은, 정보 처리 장치(101)로 하여금 yy번지의 번지 번호가 나타내는 번지에 저장되어 있는 암호화된 명령에, xx번지에 저장된 복호된 명령을 덮어쓰도록 하는 명령이다. 6번지 및 7번지의 명령은, 도 20의 단계 S2005에 대응해 있다.
그리고, 8번지의 명령은, 정보 처리 장치(101)로 하여금 실행할 번지를 3번지로 되돌리고, x100번지의 복호가 종료할 때까지, 3번지 내지 8번지의 명령을 반복 실행하도록 하는 명령이다. 이상에 나타낸 프로그램이 도 20에 도시한 디스크램블 처리를 실행하는 프로그램의 일례이다.
(서브루틴(SR)의 인증)
다음으로, 도 22 내지 도 24를 이용하여 도 8의 (7)에 도시한 서브루틴(SR)의 인증에 대해 설명한다. 먼저, 도 22를 이용하여 서브루틴(SR)의 인증의 개요에 대해 설명한다.
(서브루틴(SR)의 인증의 개요)
도 22는 서브루틴(SR)의 인증의 개요를 도시한 설명도이다. 인증 서브프로그램은 서브루틴(SR)에 삽입되고, 정해진 연산에 의한 연산 결과를 산출하는 프로그램이다. 또한, 시큐어 모듈(102)은, 인증 서브프로그램과 동일한 정해진 연산을 수행하여 정규의 연산 결과를 산출하는 인증 프로그램을 가지며, 인증 서브프로그램의 연산 결과가 정규의 연산 결과인지 여부에 따라 서브루틴(SR)의 정당성을 판단한다.
예컨대, 인증 서브프로그램은 1번지의 값에 제1 비밀번호 "yyy"를 곱한 값을 2번지에 저장하고, 2번지의 값에 제2 비밀번호 "zzz"를 곱한 값을 3번지에 저장하는 프로그램이라고 가정한다.
여기서, 시큐어 모듈(102)은, 랜덤하게 생성한 값 "X"를 1번지에 저장한다. 다음, 시큐어 모듈(102)은 인증 프로그램을 실행하여 "X"로부터 인증 서브프로그램에 의해 산출되어야 하는 정규의 값 "Xans"를 산출해 둔다.
한편, 서브루틴(SR)은 1번지의 "X"를 판독하고, "X"에 제1 비밀번호 "yyy"를 곱한 값 "Y"를 2번지에 저장하고, 2번지의 값 "Y"에 제2 비밀번호 "zzz"를 곱한 값 "Xcul"을 3번지에 저장한다.
시큐어 모듈(102)은, 정기적으로 3번지의 값을 참조하여 3번지의 값 "Xcul"을 판독하고, 정규의 값 "Xans"와 비교한다. 시큐어 모듈(102)은 1번지에 "X"를 저장하고 나서 정해진 시간 이내에 "Xcul"과 "Xans"가 일치한 경우에는 서브루틴(SR)이 정규 프로그램이라고 판단한다. 시큐어 모듈(102)은 정해진 시간 이내에 "Xcul"과 "Xans"가 일치하지 않은 경우에는 서브루틴(SR)이 부정 프로그램이라고 판단한다.
이에 따라, 서브루틴(SR)이 크래커(105)에 의해 위조된 부정 프로그램인지 여부를 판단할 수 있다. 그리고, 부정 프로그램인 경우에는, 시큐어 모듈(102)은 부정 프로그램의 실행을 중단시키거나 시큐어 모듈(102)의 암호화 기능이나 복호 기능을 불가능으로 설정함으로써, 부정 프로그램의 피해를 방지할 수 있다.
(시큐어 모듈(102)에 의한 인증 처리)
다음, 도 23을 이용하여, 도 22에 도시한 시큐어 모듈(102)이 인증 프로그램을 이용하여 수행하는 인증 처리에 대해 설명한다.
도 23은 시큐어 모듈(102)에 의한 인증 처리의 세부사항을 도시한 흐름도이다. 먼저, 시큐어 모듈(102)은 시간 계측을 시작한다(단계 S2301). 다음, 시큐어 모듈(102)은 랜덤하게 생성한 값 "X"를 정해진 제1 메모리 번지에 저장한다(단계 S2302). 그리고, 시큐어 모듈(102)은 "X"로부터 인증 서브프로그램에 의해 산출되어야 하는 정규의 값 "Xans"를 산출한다(단계 S2303).
다음으로, 시큐어 모듈(102)은, 정해진 제2 메모리 번지를 판독한다(단계 S2304). 시큐어 모듈(102)은 판독된 값이 "Xans"와 일치하는지 판정한다(단계 S2305). "Xans"와 일치하는 경우(단계 S2305: Yes), 시큐어 모듈(102)은 서브루틴(SR)을 정규 프로그램으로 판단하여(단계 S2306), 인증 처리를 종료한다.
한편, "Xans"와 일치하지 않는 경우(단계 S2305: No), 시큐어 모듈(102)은 단계 S2301의 시간 계측의 시작으로부터 일정 시간이 경과했는지 판정한다(단계 S2307). 일정 시간이 경과하지 않은 경우(단계 S2307: No), 단계 S2304로 돌아간다.
한편, 일정 시간이 경과한 경우(단계 S2307: Yes), 시큐어 모듈(102)은 서브루틴(SR)을 부정 프로그램으로 판단하여(단계 S2308), 인증 처리를 종료한다. 또한, 이 인증 처리(인증 서브프로그램)의 내용은, 매회 다른 내용이 되도록 가공할 수도 있다. 이 가공 처리를 암호화 서브루틴(SR)을 판독할 때마다 실행하면, 그 때마다 서브루틴(SR) 내의 인증 서브프로그램이 변경되게 된다. 따라서, 크래커 입장에서 보면 인증 처리(인증 서브프로그램)의 해석과 위장을 어렵게 할 수 있다.
(시큐어 모듈(102)의 암호화 허가 처리)
다음, 도 24를 이용하여, 도 23에 도시한 인증 처리에 있어서, 서브루틴(SR)이 부정 프로그램으로 판단된 경우에 부정 프로그램의 피해를 방지하기 위해 시큐어 모듈(102)의 기능을 불가능으로 설정하는 처리의 일례에 대해 설명한다.
도 24는 시큐어 모듈(102)에 의한 암호화 허가 처리의 세부사항을 도시한 흐름도이다. 먼저, 시큐어 모듈(102)은 서브루틴(SR)이 위조되어 있는지 여부를 판단한다(단계 S2401).
위조되지 않은 경우(단계 S2401: No), 시큐어 모듈(102)은 서브루틴(SR)으로부터 처리 요구를 수신했는지 여부를 판단한다(단계 S2402).
처리 요구를 수신한 경우(단계 S2402: Yes), 시큐어 모듈(102)은 서브루틴(SR)으로부터의 처리 요구에 따라 처리를 수행하고(단계 S2403), 단계 S2401로 돌아간다. 또한, 처리 요구를 수신하지 않은 경우(단계 S2402: No), 단계 S2401로 돌아간다.
한편, 위조된 경우(단계 S2401: Yes), 시큐어 모듈(102)은 "에러 모드"로 이행하여(단계 S2404), 암호화 허가 처리를 종료한다. "에러 모드"에서, 시큐어 모듈(102)은 서브루틴(SR)을 재실행하지 않는 한, 서브루틴(SR)으로부터의 조작(암호화 의뢰나 복호 의뢰 등)을 접수하지 않는 상태가 된다.
이에 따라, 부정 프로그램이 시큐어 모듈(102) 내의 은닉 정보(암호 키)를 요구하거나 시큐어 모듈(102)의 기능을 이용하는 것을 방지한다. 따라서, 부정 프로그램에 의한 정보 처리 장치(101)의 사용자에의 피해를 방지할 수 있다.
이상 설명한 바와 같이, 정보 처리 장치(101)는, 안전성이 담보되지 않은 메인 메모리(103)에 기록되는 프로그램을 신뢰성이 담보된 시큐어 모듈(102)로 암호화하고 나서, 메인 메모리(103)에 기록한다. 그리고, 정보 처리 장치(101)는 암호화된 프로그램을, 프로그램의 실행시에 복호하여 실행한다. 이에 따라, 정보 처리 장치(101)는 암호화되지 않은 상태의 프로그램이 메인 메모리(103)에 존재하는 시간을 적게 하여, 크래커(105)에 의한 프로그램의 해석 및 위조를 방지한다.
또한, 정보 처리 장치(101)는 암호화를 수행할 때마다 서로 다른 암호화 방법을 사용함으로써, 크래커(105)에 의한 프로그램의 해석을 어렵게 하여 부정 프로그램의 개발을 방지할 수 있다.
또한, 정보 처리 장치(101)는 암호 키가 될 데이터와 암호화되는 프로그램과의 배타적 논리합에 의해 암호화한다. 이에 따라, 암호화된 프로그램의 실행시에, 암호화된 프로그램의 복호에 소요되는 시간을 짧게 할 수 있다. 따라서, 복호에 의한 프로그램의 실행의 지연을 적게 할 수 있다.
또한, 정보 처리 장치(101)는, 암호화 시에, 프로그램에 인증 서브프로그램을 삽입해 둔다. 이에 따라, 인증 서브프로그램의 연산 결과의 정당성으로부터, 프로그램의 위조를 검출할 수 있다.
그리고, 정보 처리 장치(101)는, 위조가 있었던 경우에, 암호화된 프로그램의 복호가 불가능한 상태로 시큐어 모듈(102)을 설정하거나, 정보 처리 장치(101)의 사용자에게 판정 결과를 통지한다. 이에 따라, 부정 프로그램에 의한 피해를 방지할 수 있다.
또한, 복호 수단을 시큐어 모듈(102)이 구비하도록 하면, 암호 키나 암호화 방법이 은닉되어 프로그램의 안전성을 높일 수 있다. 한편, 시큐어 모듈(102)이 암호 키를 시큐어하게 관리하고, 복호 수단을 정보 처리 장치(101)가 구비하도록 하면, 시큐어 모듈(102)의 기능을 삭감시킬 수 있어 시큐어 모듈(102)이 저렴하게 작성할 수 있게 된다.
또한, 정보 처리 장치(101)는 프로그램이 실행 대기 상태가 될 때까지는 HDD(104)에 암호 강도가 높은 암호화 방식에 의해 암호화하여 유지해 두기 때문에 프로그램의 안전성을 담보할 수 있다.
또한, 정보 처리 장치(101)는 프로그램을 전술한 "난독화", "암호화", "셔플링"에 의해 가공함으로써, 크래커(105)에 의한 프로그램의 해석을 어렵게 하여 부정 프로그램의 개발을 방지할 수 있다.
전술한 실시형태에 관해 이하의 부기를 더 개시한다.
(부기 1) 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치로서, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하는 제1 검출 수단과, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조로서, 상기 제1 검출 수단에 의해 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 프로그램군과는 다른 기억 영역에 기록하는 시큐어 모듈과, 상기 어느 하나의 프로그램의 실행 요구를 검출하는 제2 검출 수단과, 상기 제2 검출 수단에 의해 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 상기 시큐어 모듈에 의해 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 기억 영역에 기록하는 복호 수단과, 상기 복호 수단에 의해 복호된 상기 어느 하나의 프로그램을 실행하는 실행 수단을 구비하는 것을 특징으로 하는 정보 처리 장치.
(부기 2) 상기 시큐어 모듈은, 암호화를 수행할 때마다 서로 다른 암호화 방법을 사용하는 것을 특징으로 하는 부기 1에 기재된 정보 처리 장치.
(부기 3) 상기 시큐어 모듈은, 암호화를 수행할 때마다 서로 다른 데이터를 암호 키로 이용하여 암호화하는 것을 특징으로 하는 부기 2에 기재된 정보 처리 장치.
(부기 4) 상기 시큐어 모듈이 사용하는 암호화 방법은, 암호 키가 될 데이터와 암호화되는 프로그램의 배타적 논리합에 의해 암호화하는 방법인 것을 특징으로 하는 부기 1 내지 3 중 어느 하나에 기재된 정보 처리 장치.
(부기 5) 상기 시큐어 모듈은, 암호화에 앞서, 정해진 연산을 수행하여 연산 결과를 상기 기억 영역의 특정 영역에 기록하는 연산 프로그램을 상기 어느 하나의 프로그램에 삽입하는 삽입 수단과, 상기 실행 수단에 의한 상기 어느 하나의 프로그램의 실행에 따라 상기 연산 프로그램에 의해 기록되는 연산 결과와 상기 시큐어 모듈로 상기 정해진 연산을 수행하여 얻어진 연산 결과가 일치하지 않는 경우, 상기 어느 하나의 프로그램에 위조가 있다고 판정하는 판정 수단과, 상기 판정 수단에 의해 위조가 있다고 판정된 경우, 판정 결과를 출력하는 출력 수단을 구비하는 것을 특징으로 하는 부기 1 내지 4 중 어느 하나에 기재된 정보 처리 장치.
(부기 6) 상기 판정 수단에 의해 위조가 있다고 판정된 경우, 상기 복호 수단을 복호 불가능한 상태로 설정하는 설정 수단을 구비하는 것을 특징으로 하는 부기 5에 기재된 정보 처리 장치.
(부기 7) 상기 실행 수단에 의한 실행이 종료한 상기 어느 하나의 프로그램을 상기 기억 영역으로부터 삭제하는 삭제 수단을 구비하는 것을 특징으로 하는 부기 1 내지 6 중 어느 하나에 기재된 정보 처리 장치.
(부기 8) 상기 복호 수단은, 상기 시큐어 모듈 밖에 존재하며, 상기 시큐어 모듈로부터 제공되며, 상기 시큐어 모듈이 상기 어느 하나의 프로그램의 암호화에 사용한 암호 키를 이용하여 상기 어느 하나의 프로그램을 복호하는 것을 특징으로 하는 부기 1 내지 7 중 어느 하나에 기재된 정보 처리 장치.
(부기 9) 상기 복호 수단은, 상기 시큐어 모듈 내에 존재하는 것을 특징으로 하는 부기 1 내지 7 중 어느 하나에 기재된 정보 처리 장치.
(부기 10) 상기 프로그램군을 암호화한 암호화 프로그램군을 유지하는 기억 수단을 구비하며, 상기 시큐어 모듈은, 상기 프로그램군을 호출하는 프로그램이 시동된 경우, 상기 암호화 프로그램군을 복호하고 상기 암호화 프로그램군의 암호화에 사용되고 있는 제1 암호화 방법과는 다른 제2 암호화 방법에 의해 복호된 상기 프로그램군을 암호화하여 상기 기억 영역에 기록하는 것을 특징으로 하는 부기 1 내지 9 중 어느 하나에 기재된 정보 처리 장치.
(부기 11) 상기 시큐어 모듈은, 암호화에 앞서, 상기 어느 하나의 프로그램의 명령을 난독화하는 것을 특징으로 하는 부기 1 내지 10 중 어느 하나에 기재된 정보 처리 장치.
(부기 12) 상기 시큐어 모듈은, 암호화에 앞서, 상기 어느 하나의 프로그램의 명령군을 셔플링하여 점프처 명령의 어드레스를 지정하는 점프 명령과 상기 점프 명령의 어드레스의 조합을 특정하는 테이블을 기억하며, 셔플링 후의 상기 프로그램군의 프로그램에서의 상기 점프 명령의 내용을 상기 테이블의 리드 명령으로 변경하는 것을 특징으로 하는 부기 1 내지 10 중 어느 하나에 기재된 정보 처리 장치.
(부기 13) 상기 시큐어 모듈은, 암호화에 앞서, 상기 어느 하나의 프로그램의 명령군을 셔플링하여 점프처 명령의 어드레스를 지정하는 점프 명령 및 점프원 명령과 상기 점프원 명령의 어드레스의 조합을 특정하는 테이블을 기억하고, 셔플링 후의 상기 프로그램군의 프로그램에서의 상기 점프원 명령의 내용을 상기 테이블의 리드 명령으로 변경하는 것을 특징으로 하는 부기 1 내지 10 중 어느 하나에 기재된 정보 처리 장치.
(부기 14) 상기 시큐어 모듈은, 암호화에 앞서, 상기 어느 하나의 프로그램의 임의의 명령을, 상기 명령을 암호화한 암호화 명령과, 상기 시큐어 모듈에 대한 리드 명령과, 상기 암호화 명령을 복호하는 복호 명령으로 치환하고, 상기 리드 명령의 어드레스와 상기 암호화 명령을 복호하는 복호 키의 조합을 특정하는 테이블을 기억하는 것을 특징으로 하는 부기 1 내지 10 중 어느 하나에 기재된 정보 처리 장치.
(부기 15) 상기 시큐어 모듈은, 암호화에 앞서, 상기 어느 하나의 프로그램의 임의의 명령을 상기 시큐어 모듈에 대한 리드 명령으로 치환하고, 상기 리드 명령의 어드레스와 치환원의 명령의 조합을 특정하는 테이블을 기억하는 것을 특징으로 하는 부기 1 내지 10 중 어느 하나에 기재된 정보 처리 장치.
(부기 16) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하는 암호화 수단과, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 복호 수단을 구비하는 것을 특징으로 하는 시큐어 모듈.
(부기 17) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하는 암호화 수단과, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하는 키를 상기 정보 처리 장치로 송신하는 송신 수단을 구비하는 것을 특징으로 하는 시큐어 모듈.
(부기 18) 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈을 구비하며, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치가, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하고, 실행 대기 상태가 검출된 경우, 상기 시큐어 모듈에 의해 상기 어느 하나의 프로그램을 암호화하여 상기 프로그램군과는 다른 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구를 검출하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 상기 시큐어 모듈에 의해 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 기억 영역에 기록하고, 복호된 상기 어느 하나의 프로그램을 실행하는 것을 특징으로 하는 정보 처리 방법.
(부기 19) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 것을 특징으로 하는 정보 처리 방법.
(부기 20) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하는 키를 상기 정보 처리 장치에 송신하는 것을 특징으로 하는 정보 처리 방법.
(부기 21) 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈을 구비하며, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치로 하여금, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하고, 실행 대기 상태가 검출된 경우, 상기 시큐어 모듈에 의해 상기 어느 하나의 프로그램을 암호화하여 상기 프로그램군과는 다른 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구를 검출하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 상기 시큐어 모듈에 의해 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 기억 영역에 기록하고, 복호된 상기 어느 하나의 프로그램을 실행하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램.
(부기 22) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈 내의 프로세서로 하여금, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램.
(부기 23) 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈 내의 프로세서로 하여금, 상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 상기 어느 하나의 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고, 상기 어느 하나의 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 어느 하나의 프로그램을 복호하는 키를 상기 정보 처리 장치에 송신하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램.
101…정보 처리 장치 102…시큐어 모듈,
103…메인 메모리 104…HDD,
MP…메인 프로그램 SR…서브루틴
C-SR, S-SR…암호화 서브루틴 PP…가공 프로그램

Claims (18)

  1. 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치로서,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하는 제1 검출 수단과,
    내부에 저장된 정보를 외부에서 참조할 수 없는 구조로서, 상기 제1 검출 수단에 의해 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 프로그램군이 기억된 제2 기억 영역과는 다른 제1 기억 영역에 기록하는 시큐어 모듈과,
    암호화된 상기 프로그램의 실행 요구를 검출하는 제2 검출 수단과,
    상기 제2 검출 수단에 의해 상기 프로그램의 실행 요구가 검출된 경우,
    암호화된 상기 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 복호 수단과,
    상기 제1 기억 영역에 기록된 상기 프로그램을 실행하는 실행 수단
    을 구비하는 것을 특징으로 하는 정보 처리 장치.
  2. 제1항에 있어서, 상기 시큐어 모듈은,
    암호화를 수행할 때마다 서로 다른 암호화 방법을 사용하는 것을 특징으로 하는 정보 처리 장치.
  3. 제2항에 있어서, 상기 시큐어 모듈은,
    암호화를 수행할 때마다 서로 다른 데이터를 암호 키로 이용하여 암호화하는 것을 특징으로 하는 정보 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 시큐어 모듈이 사용하는 암호화 방법은, 암호 키가 될 데이터와, 암호화되는 프로그램의 배타적 논리합에 의해 암호화하는 방법인 것을 특징으로 하는 정보 처리 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 시큐어 모듈은,
    암호화에 앞서, 정해진 연산을 수행하여 연산 결과를 상기 제1 기억 영역의 특정 영역에 기록하는 연산 프로그램을 상기 프로그램에 삽입하는 삽입 수단과,
    상기 실행 수단에 의한 상기 프로그램의 실행에 따라, 상기 연산 프로그램에 의해 기록되는 연산 결과와 상기 시큐어 모듈로 상기 정해진 연산을 수행하여 얻어진 연산 결과가 일치하지 않는 경우, 상기 프로그램에 위조가 있다고 판정하는 판정 수단과,
    상기 판정 수단에 의해 위조가 있다고 판정된 경우, 판정 결과를 출력하는 출력 수단
    을 구비하는 것을 특징으로 하는 정보 처리 장치.
  6. 제5항에 있어서, 상기 판정 수단에 의해 위조가 있다고 판정된 경우, 상기 복호 수단을 복호 불가능한 상태로 설정하는 설정 수단을 구비하는 것을 특징으로 하는 정보 처리 장치.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 실행 수단에 의한 실행이 종료된 상기 프로그램을 상기 제1 기억 영역으로부터 삭제하는 삭제 수단을 구비하는 것을 특징으로 하는 정보 처리 장치.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 복호 수단은, 상기 시큐어 모듈 밖에 존재하며, 상기 시큐어 모듈로부터 제공되며, 상기 시큐어 모듈이 상기 프로그램의 암호화에 사용한 암호 키를 이용하여, 상기 프로그램을 복호하는 것을 특징으로 하는 정보 처리 장치.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 복호 수단은 상기 시큐어 모듈 내에 존재하는 것을 특징으로 하는 정보 처리 장치.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 프로그램군을 암호화한 암호화 프로그램군을 유지하는 기억 수단을 구비하며,
    상기 시큐어 모듈은,
    상기 프로그램군을 호출하는 프로그램이 시동된 경우, 상기 암호화 프로그램군을 복호하고, 상기 암호화 프로그램군의 암호화에 사용되고 있는 제1 암호화 방법과는 다른 제2 암호화 방법에 의해, 복호된 상기 프로그램군을 암호화하여 상기 제1 기억 영역에 기록하는 것을 특징으로 하는 정보 처리 장치.
  11. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하는 암호화 수단과,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 복호 수단
    을 구비하는 것을 특징으로 하는 시큐어 모듈.
  12. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈로서,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하는 암호화 수단과,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하는 키를 상기 정보 처리 장치에 송신하는 송신 수단
    을 구비하는 것을 특징으로 하는 시큐어 모듈.
  13. 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈을 구비하며, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치가,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하고,
    실행 대기 상태가 검출된 경우, 상기 시큐어 모듈에 의해, 검출된 상기 프로그램을 암호화하여 상기 프로그램군이 기억된 제2 기억 영역과는 다른 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구를 검출하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하여 상기 기억 영역에 기록하고,
    상기 제1 기억 영역에 기록된 상기 프로그램을 실행하는 것을 특징으로 하는 정보 처리 방법.
  14. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 것을 특징으로 하는 정보 처리 방법.
  15. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈이,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하는 키를 상기 정보 처리 장치에 송신하는 것을 특징으로 하는 정보 처리 방법.
  16. 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈을 구비하며, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 정보 처리 장치로 하여금,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태를 검출하고,
    실행 대기 상태가 검출된 경우, 상기 시큐어 모듈에 의해, 검출된 상기 프로그램을 암호화하여 상기 프로그램군이 기억된 제2 기억 영역과는 다른 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구를 검출하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하여 상기 제1 기억 영역에 기록하고,
    상기 제1 기억 영역에 기록된 상기 프로그램을 실행하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
  17. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 프로그램을 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈 내의 프로세서로 하여금,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하여 상기 제1 기억 영역에 기록하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
  18. 제1 기억 영역과, 하나 또는 복수 개의 프로그램을 포함하는 프로그램군을 시큐어하게 기억하는 제2 기억 영역을 가지며, 상기 제1 기억 영역 내의 암호화된 프로그램을 복호한 후에 실행하는 정보 처리 장치 내에 설치되고, 내부에 저장된 정보를 외부에서 참조할 수 없는 구조의 시큐어 모듈 내의 프로세서로 하여금,
    상기 프로그램군 중 어느 하나의 프로그램의 실행 대기 상태가 검출된 경우, 검출된 상기 프로그램을 암호화하여 상기 제1 기억 영역에 기록하고,
    암호화된 상기 프로그램의 실행 요구가 검출된 경우, 암호화된 상기 프로그램을 복호하는 키를 상기 정보 처리 장치에 송신하는 처리를 실행시키도록 하는 것을 특징으로 하는 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
KR1020120020369A 2011-04-28 2012-02-28 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 KR101333377B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2011-102491 2011-04-28
JP2011102491A JP5775738B2 (ja) 2011-04-28 2011-04-28 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム

Publications (2)

Publication Number Publication Date
KR20120123640A KR20120123640A (ko) 2012-11-09
KR101333377B1 true KR101333377B1 (ko) 2013-12-26

Family

ID=45976730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120020369A KR101333377B1 (ko) 2011-04-28 2012-02-28 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체

Country Status (5)

Country Link
US (1) US8984272B2 (ko)
EP (1) EP2518658B1 (ko)
JP (1) JP5775738B2 (ko)
KR (1) KR101333377B1 (ko)
CN (1) CN102760103B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014049830A1 (ja) * 2012-09-28 2014-04-03 富士通株式会社 情報処理装置および半導体装置
JP6017287B2 (ja) * 2012-12-06 2016-10-26 富士通株式会社 制御方法および情報処理装置
JP2014235326A (ja) 2013-06-03 2014-12-15 富士通セミコンダクター株式会社 システム、情報処理装置、セキュアモジュール、および検証方法
US9225739B2 (en) * 2013-06-26 2015-12-29 Microsoft Technology Licensing, Llc Providing user-specific malware assessment based on social interactions
JP6083348B2 (ja) * 2013-07-31 2017-02-22 株式会社ソシオネクスト プログラム実行方法および復号装置
US20150100494A1 (en) * 2013-10-08 2015-04-09 A-Men Technology Corporation Point transaction system and method for mobile communication device
US20150293862A1 (en) * 2014-04-10 2015-10-15 Andes Technology Corporation Hardware configuration apparatus
US9928102B2 (en) * 2014-12-16 2018-03-27 Kyndi, Inc. Method and apparatus for randomizing computer instruction sets, memory registers and pointers
US10310870B2 (en) * 2015-08-20 2019-06-04 Appdome Ltd. Method for creating a revised application by adding code functionality to an existing application executable
WO2019079504A1 (en) 2017-10-17 2019-04-25 Appdome Ltd. AUTOMATED INTEGRATION OF MOBILE APPLICATIONS
JP7101500B2 (ja) * 2018-03-12 2022-07-15 岸本 珠子 暗号化装置、暗号化システム、及び暗号化方法
CN108900869B (zh) * 2018-05-04 2021-02-02 烽火通信科技股份有限公司 一种通信组信息加解密方法及系统
US11362824B2 (en) * 2018-05-25 2022-06-14 Intertrust Technologies Corporation Content management systems and methods using proxy reencryption
US11831631B2 (en) 2018-11-08 2023-11-28 Appdome Ltd. Single sign-on for mobile applications using direct brokering for identity authentication
GB2593093B (en) 2018-11-08 2022-11-23 Appdome Ltd Artificial intelligence mobile integration
CN110851888A (zh) * 2019-10-12 2020-02-28 天津光电聚能专用通信设备有限公司 一种具有双路异构功能的高性能安全加密系统
CN110889110A (zh) * 2019-11-11 2020-03-17 北京长城华冠汽车科技股份有限公司 车辆的程序控制方法、装置、车辆及存储介质
JP7010543B1 (ja) * 2020-11-19 2022-01-26 Necプラットフォームズ株式会社 コンピュータシステム、ソフトウェア改竄検証方法、及び、プログラム
CN112965666A (zh) * 2021-03-11 2021-06-15 北京新能源汽车技术创新中心有限公司 一种存储方法、系统、非易失性存储器、计算机以及车辆
JP7205793B2 (ja) * 2021-03-27 2023-01-17 セーラ・ネットワークス株式会社 情報提供システム、情報提供方法及び情報提供プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000155819A (ja) 1998-11-20 2000-06-06 Dainippon Printing Co Ltd Icカード
JP2004129227A (ja) 2002-07-30 2004-04-22 Fujitsu Ltd 情報再生装置、セキュアモジュールおよび情報再生方法
JP2005018725A (ja) 2002-08-01 2005-01-20 Matsushita Electric Ind Co Ltd 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US5058162A (en) * 1990-08-09 1991-10-15 Hewlett-Packard Company Method of distributing computer data files
JP3627384B2 (ja) * 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
JP4128348B2 (ja) * 2001-10-25 2008-07-30 富士通株式会社 データ管理システム
JP4408601B2 (ja) * 2001-12-27 2010-02-03 富士通株式会社 情報再生装置およびセキュアモジュール
JP4582682B2 (ja) * 2002-07-08 2010-11-17 株式会社日立製作所 セキュリティウォールシステム
EP1795991A1 (en) * 2002-07-30 2007-06-13 Fujitsu Limited Method and apparatus for reproducing information using a security module
JP2004206269A (ja) * 2002-12-24 2004-07-22 Sony Corp 情報処理装置および方法
JP4502359B2 (ja) * 2003-08-22 2010-07-14 株式会社ハイパーテック 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
EP3043232A1 (en) 2003-08-26 2016-07-13 Panasonic Intellectual Property Corporation of America Program execution device
JP2005135265A (ja) * 2003-10-31 2005-05-26 Fujitsu Ltd 情報処理装置
KR101037006B1 (ko) * 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
JP2007233426A (ja) * 2004-04-05 2007-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
KR20080007446A (ko) * 2005-05-09 2008-01-21 마쯔시다덴기산교 가부시키가이샤 메모리 카드, 어플리케이션 프로그램 유지 방법, 및 유지프로그램
JP4923925B2 (ja) * 2006-09-29 2012-04-25 富士通株式会社 チェックプログラム、監視装置および監視方法
US8176486B2 (en) * 2007-02-15 2012-05-08 Clearcube Technology, Inc. Maintaining a pool of free virtual machines on a server computer
JP2009032191A (ja) * 2007-07-30 2009-02-12 Panasonic Corp 情報処理装置
JP5374751B2 (ja) * 2008-07-31 2013-12-25 株式会社ハイパーテック メモリ管理方法
JP2010039891A (ja) * 2008-08-07 2010-02-18 Nec Corp 情報処理装置、プログラム実行方法、プログラムおよび情報処理システム
US8291430B2 (en) * 2009-07-10 2012-10-16 International Business Machines Corporation Optimizing system performance using spare cores in a virtualized environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000155819A (ja) 1998-11-20 2000-06-06 Dainippon Printing Co Ltd Icカード
JP2004129227A (ja) 2002-07-30 2004-04-22 Fujitsu Ltd 情報再生装置、セキュアモジュールおよび情報再生方法
JP2005018725A (ja) 2002-08-01 2005-01-20 Matsushita Electric Ind Co Ltd 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法

Also Published As

Publication number Publication date
CN102760103B (zh) 2016-08-10
CN102760103A (zh) 2012-10-31
JP2012234362A (ja) 2012-11-29
US8984272B2 (en) 2015-03-17
EP2518658A3 (en) 2014-05-14
KR20120123640A (ko) 2012-11-09
JP5775738B2 (ja) 2015-09-09
EP2518658A2 (en) 2012-10-31
EP2518658B1 (en) 2015-11-18
US20120278608A1 (en) 2012-11-01

Similar Documents

Publication Publication Date Title
KR101333377B1 (ko) 정보 처리 장치, 시큐어 모듈, 정보 처리 방법 및 정보 처리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
US8826037B2 (en) Method for decrypting an encrypted instruction and system thereof
KR101054318B1 (ko) 정보 처리 시스템 및 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체
US9152773B2 (en) Communication apparatus and secure module including function for disabling encrypted communication
CN103955528B (zh) 写入文件数据的方法、读取文件数据的方法以及装置
EP2780855B1 (en) Method and storage device for protecting content
CN107563213B (zh) 一种防存储设备数据提取的安全保密控制装置
CN105453094A (zh) 使用安全操作系统的受保护媒体解码
CN104579689A (zh) 一种软密钥系统及实现方法
US9842214B2 (en) System and method to secure on-board bus transactions
KR20120023505A (ko) 보안 모듈 및 정보 처리 장치
CN104239820A (zh) 一种安全存储设备
US9734346B2 (en) Device and method for providing security in remote digital forensic environment
CN109766731A (zh) 基于固态硬盘的加密数据处理方法、装置和计算机设备
US10387653B2 (en) Secure provisioning of semiconductor chips in untrusted manufacturing factories
CN108632040A (zh) 信息管理终端装置
KR101630462B1 (ko) 키보드 보안 장치 및 방법
CN107967432B (zh) 一种安全存储装置、系统及方法
KR101711024B1 (ko) 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치
CN110008724A (zh) 固态硬盘控制器安全加载方法、装置及存储介质
CN110020533A (zh) 一种vr资源的安全保护方法及终端
KR102610052B1 (ko) 의사난수 및 양자난수를 활용한 즉석 복권 발행 방법, 시스템 및 프로그램
CN116070219B (zh) 用于写补丁的方法及系统、电子设备、存储介质
KR102326100B1 (ko) 안전한 안드로이드 앱 생성 및 안드로이드 플랫폼에서의 앱 설치/실행을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 6