KR101950512B1 - 하드웨어 보안 모듈 및 그러한 모듈 내에서의 처리 방법 - Google Patents
하드웨어 보안 모듈 및 그러한 모듈 내에서의 처리 방법 Download PDFInfo
- Publication number
- KR101950512B1 KR101950512B1 KR1020110137774A KR20110137774A KR101950512B1 KR 101950512 B1 KR101950512 B1 KR 101950512B1 KR 1020110137774 A KR1020110137774 A KR 1020110137774A KR 20110137774 A KR20110137774 A KR 20110137774A KR 101950512 B1 KR101950512 B1 KR 101950512B1
- Authority
- KR
- South Korea
- Prior art keywords
- debugging
- security module
- hardware security
- program
- communication
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Human Computer Interaction (AREA)
- Telephone Function (AREA)
Abstract
본 발명은, 예를 들어 컴파일된 프로그램의 디버깅 등과 같은, 하드웨어 보안 모듈(HSM 또는 Hardware Security Module) 내에서의 프로세싱 분야에 관한 것이다.
디버깅을 위한 모듈은 마이크로프로세서(1300) 및 하나의 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행될 수 있는 컴파일된 프로그램(1220)을 포함하고, 마스터/슬레이브 모드에 따라, 상기 작업과 관련된 메시지를 외부 엔티티(2230)와 교환하도록 구성된다.
그 컴파일된 프로그램은 적어도 하나의 디버깅 명령어(ID1-ID6)를 포함하고 그 명령어를 실행하든 안 하든 상기 동작의 수행이 변경되진 않는다.
그 하드웨어 보안 모듈은 그외에, 컴파일된 프로그램의 실행시에, 그 하드웨어 보안 모듈에 의해 개시된 통신 채널(CC2) 상에서, 예를 들어 디버깅 명령어에 의해, 생성된 데이터를 그 하드웨어 보안 모듈 외부의 엔티티(2220)로 전송하도록 구성 된다.
디버깅을 위한 모듈은 마이크로프로세서(1300) 및 하나의 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행될 수 있는 컴파일된 프로그램(1220)을 포함하고, 마스터/슬레이브 모드에 따라, 상기 작업과 관련된 메시지를 외부 엔티티(2230)와 교환하도록 구성된다.
그 컴파일된 프로그램은 적어도 하나의 디버깅 명령어(ID1-ID6)를 포함하고 그 명령어를 실행하든 안 하든 상기 동작의 수행이 변경되진 않는다.
그 하드웨어 보안 모듈은 그외에, 컴파일된 프로그램의 실행시에, 그 하드웨어 보안 모듈에 의해 개시된 통신 채널(CC2) 상에서, 예를 들어 디버깅 명령어에 의해, 생성된 데이터를 그 하드웨어 보안 모듈 외부의 엔티티(2220)로 전송하도록 구성 된다.
Description
본 발명은, 데이터를 모듈의 외부 엔티티에 전송함을 목적으로 하는, 하드웨어 보안 모듈(HSM 또는 hardware security module) 내에서의 처리 분야에 관한 것이다.
본 발명은 특히 처리 프로세스 및 그러한 처리를 실시하는 하드웨어 보안 모듈에 관한 것이다. 그것은 예를 들어 하드웨어 보안 모듈 등의 폐쇄 환경 내에서 전산 프로그램 또는 애플리케이션을 디버깅(debugging)하는 유형의 처리, 또는 그 모듈에 기억된 데이터에 액세스하는 유형의 처리에 관한 것일 수 있다.
하드웨어 보안 모듈은 마이크로프로세서 카드 또는 스마트카드(예를 들어 SIM 카드 등의 보안화된 모듈을 지닌 카드), 마이크로프로세서를 갖는 보안화된 USB 키(key), 생체여권의 보안화된 모듈 등의 형태를 가질 수 있다.
전산 프로그램은 명령어들-그 명령어들을 연속적으로 실행함에 의하여 프로그래머가 원하는 동작 또는 동작들의 세트의 수행을 가능하게 하는-의 세트를 통합한다.
하드웨어 보안 모듈은 외부 엔티티에서 오는 해당 명령을 접수하면 그러한 프로그램을 실행할 수 있다. 이하, "외부"라는 개념은 고려되는 HSM 하드웨어 보안 모듈에 요소가 속하였는지 여부에 관계된다.
실제로, 하드웨어 보안 모듈들, 전형적으로 마이크로프로세서 카드들은, HSM 모듈이 실행하는 명령을 외부 엔티티가 전송하는, 마스터/슬레이브 관계(클라이언트/서버 모드와 유사)에서 기재된다. 그 실행은 그것이 포함하는 프로그램의 실행을 야기할 수 있고, 일단 실행이 종료되면 응답으로써 발생 된 데이터를 제공한다.
예시로서, 그 마스터/슬레이브 교환들은 ISO 7816 프로토콜 또는 ISO 14443 프로토콜 상에 기초할 수 있다.
그 마스터/슬레이브 교환들을 제어하는 그러한 프로토콜들은 그러나 단점이 있는데, 예를 들어 사전 명령에 응답하여 HSM 모듈에 의해 회송되는 데이터의 최대 크기를 제한한다는 점이다. 따라서, 대용량 파일이 HSM 모듈에서 해독될 때, 그것의 전송은 실행되는 프로토콜의 제한에 직면할 수 있으며 일부 삭제되고 나아가 취소될 수 있다.
그외에, 그 프로토콜을 지지하는 물리적 링크들 또한, HSM 모듈이 예를 들어 "리얼 타임(real time)" 으로 또는 신속하게 사전에 입력된 해독된 대용량 파일전체와 같은 수많은 데이터를 통신할 수 없도록, 유량의 제한을 가질 수 있다.
따라서 데이터를 외부 엔티티로 전송하는 맥락에서 하드웨어 보안 모듈에 의한 프로세싱 메커니즘을 개선해야할 필요성이 존재한다.
그러한 어려운 점은 또한 전술한 바와 같이 전산 프로그램을 디버깅하는 맥락에서도 존재한다.
그 자체로 공지된 방식으로, 전산 프로그램의 디버깅은 버그, 즉 프로그램 기능장애의 원인을 감지, 진단 및 수정하는 것으로 구성된다.
기능장애의 원인은 프로그래밍 에러에 기인할 수도 있으나, 또한 프로그램 코드와 프로그램 실행시 사용가능한 하드웨어 자원 사이의 비호환성 또는 잘못된 제어에도 기인한다.
통상적으로, 전산 프로그램 또는 소프트웨어들은 프로그래밍 언어(원시코드)로 작성되고, 원시코드로부터 디버깅된 후, 소프트웨어 개발을 위한 모든 툴(tool)을 통합하는 통합개발환경(IDE, Integrated Development Environment) 내에서 컴파일된다. 개발환경들은, 비용문제로 인하여, 대부분의 시간 동안 개인용 컴퓨터(PC, personal computer) 내에서 실행된다.
따라서, 프로그래머는 그의 원시코드로부터 한 단계씩("라인 디버깅"을 말함), 즉 매 명령어마다 실행하면서, 또는 디버깅 명령어로 불리는 추가 명령어-그 명령어를 실행하든 하지 않든 프로그램의 하나 또는 다수의 동작의 수행을 변경하게 되지 않는-를 삽입하면서 개발된 프로그램을 테스트한다.
디버깅 명령어들은 런타임 스택(runtime stack) 내에 기억된 값들과 같은, 프로그램 내의 내부 변수들의 현재 값들을, 예를 들어 인쇄, 저장 또는 단순히 디스플레이 할 수 있다.
디버깅 프로세스가 종료되었을 때, 디버깅 명령어들은 원시코드로부터 삭제되고 그 원시코드는 실행 가능한 컴파일된 프로그램, 즉 프로그램 생성 버전(version)을 얻기 위하여 컴파일된다. 그러면 그 원시코드는 그 원시코드가 실행되도록 되어있는 하드웨어 플랫폼의 메모리에 기억된다.
컴파일된 프로그램은 예를 들어 하드웨어 보안 모듈의 ROM 또는 EEPROM(Electrically Erasable Programmable Read-Only Memory)에 기억될 수 있다.
그러나, 하드웨어 보안 모듈은, 개발환경이 구현되는 개인용 컴퓨터들에 대하여, 특히 그 개인용 컴퓨터들이 미약한 자원을 로딩하고, 그것들의 내부 기능상에 최소한의 정보를 밝히도록 디자인되었다는 점에서, 하드웨어 및/또는 소프트웨어의 특수성(예를 들어 운영체제와 관련된)을 갖는다.
이와 같이, PC 상의 개발환경에서, 하드웨어 보안 모듈 에뮬레이터들의 수단을 동원하고, 가능한 최대한으로 신뢰할 수 있도록 하드웨어 보안 모듈의 실행환경을 재생성하기 위하여 그 에뮬레이터들을 실행하는 것은 통상적이다.
그러나, 예를 들어, 이전 디버깅시에 모든 상황이 테스트 되지 않았었기 때문에, 컴파일된 프로그램이 만족스럽지 못하고 새로운 디버깅을 요구하게 되는 일이 있다. 그러한 경우, 해당 원시코드를 재채택하고 개발환경에서 다시 테스트하는 일이 흔하다.
프로그램이 일단 컴파일되었을 때, 그 프로그램의 실행환경과 개발환경이 거의 유사할 때, 그러한 접근은 만족스러운 것으로 나타난다. 실제로, 그 경우, 컴파일된 프로그램의 도움으로 관찰된 기능장애들은 재발생할 가능성이 있고 따라서 수정될 수 있다.
어쨌든, 그것은 하드웨어 보안 모듈에 있어서 언제나 일어나는 경우는 아닌데, 이는 상기 명시한 불일치성(divergence) 때문이기도 하지만 그 하드웨어 보안 모듈들이 고객(예를 들어 은행)에 의해 실행된 개인화를 따르거나 그들의 개별적 특성과 연관된 예측하지 못한 에러가 나타나게 하는 하드웨어 성분을 가질 수 있기 때문이기도 하다. 그러한 경우 에뮬레이터를 조정하는 것을 고려하기는 어렵고, 나아가 각각의 HSM 모듈에 적합한 개별적 특성들이 고려의 대상이 될 때는 불가능하다.
그외에 하드웨어 보안 모듈의 폐쇄적 특성 때문에 그러한 불일치성들은 진단하기 어렵고 관측되기 어려운데, 이는 예를 들어 하드웨어 보안 모듈이 그들의 내부기능을 최소한으로 드러내기 위하여 보안용 보호장치를 구현하는데 기인한다.
따라서, 프로그램 개발을 위하여 사용되는 하드웨어 보안 모듈의 에뮬레이터들은 일반적으로 HSM 모듈의 실행환경의 불완전한 시뮬레이션에 의존한다.
그 결과 하드웨어 보안 모듈 내에서 컴파일된 프로그램이 실행될 때 관측되는 어떤 기능장애들은, 해당 원시코드가 개발환경에서 실행될 때, 그 해당 원시코드에 의해 재생성될 수 없고, 이는 에뮬레이터를 사용하여도 재생성될 수 없다.
하드웨어 보안 모듈의 경우에 존재하는 이러한 어려움은, 결과적으로 전산 프로그램을 디버깅하고 "클린(clean)" 컴파일 버젼을 제공하기 위하여, 때때로 통제되지 않는 추가 비용을 야기한다.
본 발명의 실시예에서, 본 발명은 디버깅을 목적으로 한 종래기술의 시스템과 프로세스를 개선하고자 한다.
그러나, 디버깅 수단들을 실행하는 것 또한 생성된 데이터(디버깅의)의 전송과 관련한 어려움을 가져온다. 실제로, 그 전송은 가능한 최대한 부합되는 디버깅 데이터를 얻기 위하여, 컴파일된 프로그램의 실행 환경 또는 맥락을 가능한 최대로 변화시키지 말아야 한다.
본 발명이, 내부적으로 생성된 데이터를 외부 엔티티로 전송함을 목적으로, HSM 모듈에서의 프로세싱을 개선하고자 함은 그러한 여러 맥락에서이다.
그 의도에서, 본 발명은 특히 마이크로프로세서 및 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행가능한 프로그램을 포함하는 하드웨어 보안 모듈에 관한 것으로서, 그 하드웨어 보안 모듈은 외부 마스터 엔티티와의 마스터/슬레이브 통신 모드에 따라, 적어도 각 하나의 동작 수행 명령 및 해당 응답을 접수 및 전송하도록 구성되고, 그외에 그 하드웨어 보안 모듈은,
- 명령 접수에 응답하여, 데이터를 생성하고,
- 외부엔티티에 대하여, 그 하드웨어 보안 모듈에 의해 개시된 통신 채널 상으로, 상기 생성된 데이터를 전송하는 것을 특징으로 한다.
따라서 본 발명은 하드웨어 보안 모듈의 수준에서 실현되는 프로세싱을 실질적으로 개선할 수 있게 한다. 이는 데이터의 생성이 명령을 접수함으로써 개시되는 데이터를 전송하기 위하여 HSM 모듈에 의해 개시된 통신 채널의 구현에 기인한다.
HSM 모듈에 의한 통신 채널의 개시는 HSM 모듈이 외부 마스터 엔티티의 슬레이브로서 "보여지는" 종래 기술과는 정반대임을 주지할 것이다.
본 발명에 의한 그러한 개선점을 명시하자면, 상기 거론된 암호화된 파일에 대한 액세스의 경우, 본 발명에 따른 접근은, 예를 들어 전송해야할 생성 데이터가 리얼 타임으로 또는 신속히 전송되기에는 지나치게 대용량일 때, ISO 7816 프로토콜의 제한으로부터 해방할 수 있게 한다.
디버깅의 경우, 디버깅 데이터를 전송하기 위하여 HSM 모듈에 의해 개시된 통신 채널에 의지하는 것은 마스터/슬레이브 관계를 불변할 수 있게 하고(디버깅 데이터를 수거하기 위하여 특별한 명령을 마련할 필요가 없음), 따라서 최적의 조건(정확한 생성 조건에 해당) 하에서 경우에 따른 디버깅을 실행할 수 있게 한다. 그외에 그것은 디버깅 데이터를 리얼 타임 또는 거의 리얼 타임으로 재생할 수 있게 한다.
본 발명의 실시예에서, 마스터/슬레이브 교환 및 생성된 데이터는 하드웨어 보안 모듈의 외부로 2개의 개별적 물리적 링크 상에서 전송된다. 이는 예를 들어 ISO 7816 표준에 부합되는 마이크로프로세서 카드의 물리적 인터페이스의 8개의 접촉부 중에서 2개의 개별적 전기 접촉부일 수 있다.
변형예에서, 마스터/슬레이브 교환 및 생성된 데이터는 동일한 하나의 물리적 링크상으로 전송될 수 있다. 예를 들어, 생성 데이터를 (거의) 리얼 타임으로 전송하기 위하여 그 마스터/슬레이브 교환 및 생성된 데이터의 다중화가 그 동일한 물리적 링크 상에서 구현될 수 있다: APDU 명령/응답 및 생성된 데이터(예를 들어 디버깅 데이터)의 USB 링크상에서의 다중화.
디버깅 관련한 본 발명의 실시예에 따르면,
- 그 프로그램은 적어도 하나의 디버깅 명령어를 포함하는 컴파일된 프로그램이고 그 디버깅 명령어가 실행되든 실행되지 않든 상기 동작의 수행은 변형되지 않고,
- 그 하드웨어 보안 모듈은 컴파일된 프로그램의 실행시에, 그 하드웨어 보안 모듈에 의해 개시된 상기 통신 채널 상에서 디버깅 명령어의 실행으로 기인한 생성 데이터, 통칭 디버깅 데이터를 전송하도록 구성된다.
통신 채널의 단부에 마련된 외부 엔티티는 따라서 디버깅 명령어들의 결과-디버깅 정보들이라고도 통칭-의 일부를, 기능장애를 식별하기 위하여 취할 수 있다. 통상적 방식으로, 이는 사용자가 기능 장애를 그로부터 추론할 수 있도록 사용자에게 그 결과들(예를 들어 내부 변수 값들에 해당하는)을 단순히 디스플레이하는 것일 수 있다.
그 실시예는 디버깅해야 하는 프로그램 실행의 정확한 조건 하에 리얼 타임으로 디버깅을 실현할 수 있게 한다.
실제로, 한편으로는 테스트 되는 것은 그 컴파일된 프로그램이다. 이는 디버깅 명령어들을 그 컴파일된 프로그램 자체 내에 통합시킴으로써 가능하게 된다.
다른 한편으로는, 작업과 관련된 데이터 및 디버깅 정보들을 개별적인 2개의 통신 채널(논리적인 동시에 물리적인, 한쪽은 마스터/슬레이브 교환[예를 들어 APDU(application protocol data unit) 교환]을 위한 채널, 다른 쪽은 HSM 모듈 자체에 의해 개시된 채널) 상에서 전송하는 것은 마스터/슬레이브 관계를 불변하게 보존하도록 할 수 있는데, 이는 생성의 정확한 조건에 해당한다.
특별한 특성에 따르면, 적어도 하나의 디버깅 명령어가 하드웨어 보안 모듈에 의해 생성된 UDP 소켓 상에 발생 된 디버깅 데이터의 기입 명령을, 경우에 따라 루틴(routine) 또는 서브 기능(sub-function)의 요청을 통하여 실행한다. 그 설정에 따른 디버깅 정보들의 제어는 생성 환경에 부합되는 실행 환경을 보존하기 위하여, HSM 모듈의 다른 프로그램(운영시스템 등과 같은)을 과도하게 요청하는 것을 피할 수 있게 한다.
한 실시예에서, 하드웨어 보안 모듈은 컴파일된 프로그램의 실행 시에 디버깅 명령어의 억제 또는 활성화 수단을 포함한다. 디버깅의 억제는 활성화와 반대로, 그 디버깅 명령어가 컴파일된 프로그램의 실행 시에 실행되지 않게 하는 것으로 구성된다. 억제 또는 활성화는 컴파일된 프로그램의 코드 내에서 억제 정보에 기반한 조건부 명령어의 형태로 실현될 수 있다.
그 장치는 컴파일된 프로그램의 구동 시에 그때부터 불필요한 디버깅 명령어들과 관련된 프로세싱의 시간을 피함으로써, 컴파일된 프로그램 실행의 효율성을 증가시킬 수 있게 한다.
특히, 억제 또는 활성화 수단은 외부 마스터 엔티티로부터 접수된 명령에 응답하여 변형될 수 있다.
그 장치는 디버깅이 일어나는 순간을 외부적으로 제어할 수 있게 한다. 특히, 디버깅은 필요한 경우 사전 정의된 테스트의 일환으로(즉, 컴파일된 프로그램의 실행을 개시하고 제어하게 되는 외부 테스트 스크립트를 실행함으로써) 더욱 효율적이므로, 억제 또는 활성화는 예를 들어 활성화 명령(스크립트의 초기에) 및 억제 명령(스크립트의 말기에)를 그 외부 스크립트 내에 통합함으로써, 테스트 스크립트에 밀접하게 연결될 수 있다.
특별한 특성에 따르면, 억제 또는 활성화 수단은 보안의 암호화 메커니즘에 의하여 변경되는 것으로부터 보호된다. 한편으로 하드웨어 보안 모듈은 그것의 내부 기능을 최소로 드러내도록 디자인되었고, 다른 한편으로 디버깅 명령어들은 그 내부 기능의 일부분을 드러내는 것을 목적으로 한다는 개념에서, 본 장치는 그 내부 기능의 정보를, 권한없이, 폭로하는 것을 막기 위한 보안의 적절한 수준을 보장할 수 있게 한다.
또 다른 특별한 실시예에 따르면, 상기 억제 또는 활성화 수단은 1회 프로그램 가능한 메모리 내에 디버깅 명령어의 억제가 확정적 이도록 기억된 정보를 포함한다. 따라서, 일반적으로 정보는 초기에 활성화 상태에 해당하는 값을 취하고(따라서 초기에 디버깅을 실시할 수 있도록), 그 후, 메모리의 특성에 근거한 확정적 방식으로, 디버깅 테스트가 끝나는 대로 억제에 해당하는 값을 취한다.
그 장치는, 억제시에 하드웨어 보안 모듈이 확정적으로 그것의 초기 설정 상태를 회복하는 한, 보안의 최상 수준, 즉 그것의 내부기능을 최소로 드러내는 보안 수준을 제공한다.
한편 그 정보는 디버깅 명령어를 실행할지 않을지 허가하기 위하여 사전에 호출된 조건부 명령어에서 사용될 수 있음을 주지할 것이다.
HSM 모듈 내에 기억된 데이터에 액세스하는 것과 관련된 본 발명에 따른 또다른 실시예에 따르면, 외부 마스터 엔티티로부터 접수된 명령은 상기 하드웨어 보안 모듈의 메모리에 기억된 암호화된 파일에 대한 액세스 명령이고, 하드웨어 보안 모듈에 의해 개시된 통신 채널 상에 전송되는 생성된 데이터는 상기 파일의 암호 해독된 데이터이다.
따라서, 생성된 데이터는 마스터/슬레이브 교환 내에 자리하는 응답(APDU 유형)에서 전송되지는 않는다.
상기 언급한 바와 같이, 본 장치는 스마트카드의 데이터를 외부 리더에 전송하는데 있어서, ISO 7816과 같은 프로토콜의 어떤 제한들로부터 해방될 수 있게 한다.
한 실시예에서, 하드웨어 보안 모듈은 데이터의 통신용 UDP(User Datagram Protocol) 소켓을 외부 엔티티와의 통신 링크 상에 생성하기 위하여, 그리고 상기 UDP 소켓을 통하여 생성된 데이터를 전송하도록 구성 된다.
그 구성에서, 생성된 데이터(예를 들어 디버깅 정보들)의 전송은 HSM 모듈에 의해 용이하게 개시된다. 상기하자면, UDP 모드는 비접촉 모드이다.
디버깅의 일환으로, 링크의 사전 설립 및 제어의 부재는 단 하나의 컴파일된 프로그램에서 HSM 모듈의 프로세싱에 집중할 수 있게 한다. 따라서 접촉식 모드의 소켓의 사용(그것 또한 가능할 수 있음)보다는 UDP 소켓의 사용이 추가 프로세싱에 의해 전혀 변형되지 않는, 생성 환경에 부합되는 실행 환경을 얻을 수 있게 한다.
특히, 외부 엔티티와의 통신 링크는 USB(Universal Serial bus) 유형의 물리층 프로토콜을 구현한다. 그러한 프로토콜은 마스터/슬레이브 통신 채널과 UDP 소켓 상의 통신 채널의 다중화를 용이하게 할 수 있는 장점을 갖는다.
이는 예를 들어 외부 엔티티와 동일한 물리적 링크 상에서 그 2개의 채널이 동시에 구현될 수 있게 한다.
그러나 변형예에서, 외부엔티티와의 통신 링크는 블루투스(등록 상표) 유형의, 또는 ISO 7816 또는 ISO 14443 또는 NFC 유형의 물리층 프로토콜을 실현할 수 있게 한다.
본 발명의 특성에 따르면, 하드웨어 보안 모듈은 가능한 드러나지 않고 남아 있어야 하는 보안화 된 모듈의 내부 기능에 대하여 디버깅 작업을 보안화 할 수 있도록, 그 하드웨어 보안 모듈이 개시하는 통신 채널 상에 전송된 디버깅 데이터를 암호화하도록 구성될 수 있다.
상관적으로, 본 발명은 또한 마이크로프로세서 및 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행 가능한 컴파일된 프로그램을 포함하는 하드웨어 보안 모듈에서 처리하는 프로세스에 관한 것으로서, 그 하드웨어 보안 모듈은, 외부 마스터 엔티티와의 마스터/슬레이브 통신 모드에 따라, 적어도 각 하나의 동작 실행 명령 및 해당 응답을 접수 및 전송하도록 구성되고, 그 프로세스는 하기 단계들을 포함하는 것을 특징으로 한다:
- 명령의 접수에 응답하여, 하드웨어 보안 모듈 수준에서 데이터를 생성하는 단계, 및
- 외부 엔티티에 대하여, 그리고 하드웨어 보안 모듈에 의해 개시된 통신 채널 상으로 상기 생성된 데이터를 전송하는 단계.
그 프로세싱 방법은 상기 명시한 HSM 모듈의 장점들과 유사한 장점들을 갖는다. 예를 들어, 디버깅 작업에 있어서, 그 방법은 컴파일된 프로그램 고유의 실행 환경, 통칭 "생성" 환경에서 컴파일된 프로그램의 디버깅 작업을, 불완전한 에뮬레이터를 통하지않고, 리얼 타임으로 실현할 수 있게 한다. 데이터에 대한 액세스 작업에 있어서, 그 방법은 마스터/슬레이브 통신 프로토콜에 의해 개입된 데이터의 용량에대한 경우에 따른 제한으로부터 해방될 수 있게 한다.
선택적으로, 그 방법은 HSM 모듈의 수단 및 특성들과 관계되는 단계 및 특성들을 포함할 수 있다.
그리고 특히, 마스터/슬레이브 교환들은 외부 마스터 엔티티와의 상기 동작 실행과 관계되는 것으로 마련될 수 있고, 그 프로그램은 디버깅의 실행 여부가 상기 동작의 수행을 변형하지 않는 적어도 하나의 디버깅 명령어를 포함하는 컴파일된 프로그램인 것으로 마련될 수 있고, 그 방법은 그 컴파일된 프로그램의 실행시에, 그 하드웨어 보안 모듈에 의해 개시된 상기 통신 채널 상에서 디버깅 명령어를 실행한 결과로 생성된 데이터, 통칭 디버깅 데이터를 전송하는 것을 포함하는 것으로 마련될 수 있다.
또 다른 특성에 따르면, 컴파일된 프로그램의 실행에 앞서, 외부 마스터 엔티티의 수준에서 방출된 명령에 따라 디버깅 명령어를 억제 또는 활성화하는 단계가 마련될 수 있다.
디버깅 명령어의 결과에 액세스함으로써 HSM 모듈 카드의 내부 데이터로의 액세스를 보안화 할 수 있는 특별한 특성에 따라, 외부 마스터 엔티티의 수준에서 방출된 명령에 응답하여 디버깅 명령어의 억제 또는 활성화 상태를 변형할 수 있게 하기 위한 인증 단계가 마련될 수 있다.
끝으로, 예를 들어 디버깅 작업의 말기에, 그 액세스를 확정적으로 저지하기 위하여, 하드웨어 보안 모듈의 1회 프로그램 가능한 메모리 내에, 디버깅 명령어의 억제가 확정적이 되도록, 억제 또는 활성화 상태를 메모리 하는 것이 마련된다.
특별한 특성에 따르면, 본 방법은 마스터/슬레이브 교환들을 통하여 컴파일된 프로그램의 실행을 제어하기 위하여 외부 엔티티 상에서 테스트 스크립트를 실행하는 단계를 포함한다.
본 발명의 실시에서, 외부 마스터 엔티티로부터 접수된 명령은 암호화된 파일에 대한 액세스 명령이고, 하드웨어 보안 모듈에 의해 개시된 통신 채널 상에 전송된 생성된 데이터는 상기 파일의 암호해독된 데이터이다.
본 발명의 한 실시예에서, 하드웨어 보안 모듈의 수준에서, 외부 엔티티와의 통신 링크 상에서 데이터 통신용 UDP 소켓을 생성하고 상기 UDP 소켓 상으로 생성된 데이터를 전송하는 것이 마련될 수 있다.
본 발명의 또 다른 목적은 비접촉 통신 인터페이스 및 상기 명시한 바와 같은 하드웨어 보안 모듈을 포함하고 상기 비접촉 통신 인터페이스에 연결되는 제1 전기 접촉부를 포함하는 이동 전화기에 관한 것이다.
이동 전화기에 있어서, 외부 마스터 엔티티와의 통신 채널(즉, 적어도 동작의 수행 명령 및 해당 응답을 접수 및 전송하기 위한 마스터/슬레이브 통신을 위한) 및 하드웨어 보안 모듈에 의해 개시된 다른 외부 엔티티와의 통신 채널은, 하나는 제1 전기 접촉부를 통하여 비접촉통신 표준에 부합되고, 나머지는 하드웨어 보안 모듈의 제2 전기 접촉부를 통하여 접촉시 통신 표준에 부합된다.
이하 상세한 설명에서 명시될 바와 같이, 이동 전화기가 갖춘 비접촉 통신 인터페이스는 하드웨어 모듈이 SWP 프로토콜을 통하여 그 인터페이스와 통신하는 NFC 유형일 수 있다. 접촉식 통신 표준으로서는, 마이크로프로세서 카드를 위한 모든 통상적 표준, 예를 들어 접촉식 스마트카드의 접촉부(C7)에 의거하는 ISO 7815 표준 등을 갖출 수 있다.
본 발명의 다른 특별성과 장점들은 이하 첨부된 도면을 참조한 상세한 설명에 명시될 것이다:
도 1은 통상적 ISO 7816 접속을 사용하는, "지연된" 모드의 디버깅 시스템을 도시.
도 2는 도 1의 지연된 모드에서 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 3은 본 발명의 실시예에 따른 디버깅 명령어를 포함하는 컴파일된 프로그램의 단순화된 예(원시 버젼)를 도시.
도 4는 USB 접속을 사용하는, 본 발명에 따른 "리얼 타임" 모드의 디버깅 시스템을 도시.
도 5는 도 4의 리얼 타임 모드에서, 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 6은 NFC 유형의 비접촉 통신 인터페이스를 갖춘 이동 전화기에 내장된 하드웨어 보안 모듈을 위하여 본 발명을 구현하는 구성을 도시.
도 1은 통상적 ISO 7816 접속을 사용하는, "지연된" 모드의 디버깅 시스템을 도시.
도 2는 도 1의 지연된 모드에서 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 3은 본 발명의 실시예에 따른 디버깅 명령어를 포함하는 컴파일된 프로그램의 단순화된 예(원시 버젼)를 도시.
도 4는 USB 접속을 사용하는, 본 발명에 따른 "리얼 타임" 모드의 디버깅 시스템을 도시.
도 5는 도 4의 리얼 타임 모드에서, 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 6은 NFC 유형의 비접촉 통신 인터페이스를 갖춘 이동 전화기에 내장된 하드웨어 보안 모듈을 위하여 본 발명을 구현하는 구성을 도시.
본 발명은 모든 유형의 하드웨어 보안 모듈에 적용된다. 도시를 위한 필요성에 의해서만, 마이크로프로세서 카드(또는 스마트카드)의 후속에 대하여 참조 되었다. 하드웨어 모듈은 예를 들어 보안 관련 표준에 그것이 부합될 때, 예를 들어 공통 범주 및/또는 "FIPS 140"(Federal Information Processing Standard) 표준에 부합될 때 보안 모듈이라 칭한다.
우선, 디버깅의 맥락에서 본 발명의 실시예를 명시하겠다.
마이크로프로세서 카드들은 외부 엔티티의 명령에 따라 실행될 수 있는 컴파일된 프로그램들을 포함한다. 이하 명시된 바와 같이, 본 발명의 실시예들은 마이크로프로세서 카드 단계에서, 상기 프로그램의 주된 동작 또는 기능을 실현하게 되어 있는 명령어에 더하여, 디버깅 명령어가 보존되는 그러한 컴파일된 프로그램을 구동한다.
디버깅 명령어들은 테스트 단계에서 실행된다. 이에 따라 마스터 테스트 프로그램 또는 스크립트가, 마이크로프로세서 카드에 대하여 명령을 송신함으로써, 컴파일된 프로그램의 실행을 조정하게 되도록 일반적으로 설계된 것이다. 테스트 스크립트는 그것의 어떤 파라미터들이 테스트를 정의하도록 고정되고 공지된 임시 생성 프로그램일 뿐이다.
디버깅 명령어들은 그러면 컴파일된 프로그램의 실행시에 실행되고, 디버깅 소프트웨어(테스트 스크립트를 포함하는 소프트웨어와는 다를 수 있는)에, 생성의 실행 환경에서, 여기서는 마이크로프로세서 카드의 운영시스템에서, 컴파일된 프로그램의 그러한 실행과 관련된 적절한 디버깅 정보들을 제공한다.
이와 같이 디버깅 명령어로 얻은 결과들을 예측 결과들과 비교하는 것이 가능하다.
테스트 스크립트는 예를 들어 마이크로프로세서 카드 리더를 갖춘 외부 장비에서, 마스터/슬레이브 모드에 따라, 통상적 프로토콜의 도움으로, 예를 들어 APDU 명령 및 응답을 구현하는 ISO 7816 표준에 따라 마이크로프로세서 카드와 대화할 수 있다.
컴파일된 프로그램의 표준 사용 설정("생성 조건")에서, 그러한 테스트 스크립트와 카드 사이의 교환은 디버깅 명령어들을 포함하지 않는데, 이는, 테스트 스크립트는 컴파일된 프로그램 실행의 표준 조건을 나타내고 따라서 컴파일된 프로그램의 주된 작업을, 물론 경우에 따라서는 사전 설정된 어떤 테스트 파라미터들과 함께, 실행하기 위하여만 마이크로프로세서 카드 내에서 컴파일된 프로그램에 접근하기 때문이다.
디버깅 명령어들이 컴파일된 프로그램의 용량을 증가시키게 되므로, 그 수를 제한하고 프로그램의 알고리즘 시퀀스에 따라 적절하게 위치시켜서, 마이크로프로세서 카드의 제한된 자원(예를 들어 ROM 용량)을 만족시키도록 주의할 것이다.
컴파일된 코드의 용량 증가 이외에, 그 디버깅 명령어들은 컴파일된 프로그램의 실행 시간의 증가를 가져온다.
그러므로, 어떤 작업 조건하에서는, 디버깅 명령어들은 그것을 포함하는 컴파일된 프로그램의 실행시에 실행되지 않도록 비활성화 될 수 있을 것이다. 이는 그 컴파일된 프로그램이 생성시에 사용될 때, 그 컴파일된 프로그램의 실행 시간이 단축될 수 있게 한다.
테스트 스크립트가 프로그램 실행의 표준 조건을 나타낸다는 사실을 고려할 때, 마이크로프로세서 카드와의 교환(APDU 유형)은 카드 리더(테스트하는 사용자가 접근 가능한)에, 디버깅 명령어들의 실행 결과를 제공하도록 설계되지 않는다.
그외에, ADPU 명령의 도움으로 그것들을 회수해야 했다면, 디버깅 명령어의 결과를 회수하기 위하여 APDU 명령이 각각의 디버깅 명령어에 발생 되는 것을 보장하기 위하여 다수의 복잡한 적응이 필요했을 것이다. 그런데 그러한 적응들은 고려되지 않는다.
그러면, 디버깅 명령어들의 실행 결과를 통신하기 위하여, 마이크로프로세서 카드의 개시에 따라(카드리더가 아닌) 생성되고 사용된 다른 통신 채널(APDU 명령의 마스터/슬레이브 관계와 다른)을 사용하도록 마련된다.
그 2개의 통신 채널은 상이한 성질을 가지지만(따라서 논리적으로 상이함), 나아가, 예를 들어 카드와 카드 리더 사이의 2개의 상이한 물리적 접속을 통하여 물리적으로도 상이할 수 있다. 따라서 컴파일된 프로그램이 실행되는 설정 상태가 생성 설정 상태와 가능한 최대한 부합되도록 보장한다.
이제 디버깅 시스템의 다양한 구현을 참조하여 본 발명을 도시하겠다.
도 1은 APDU 메세지 교환이 구현되는 통상적 ISO 7816 접속을 사용하는 디버깅 시스템을 도시한다.
그 접속은 한번에 하나의 통신, 즉 주어진 순간에 단 하나의 통신 채널만을 허용한다는 단점을 갖는다. 그러한 이유로, 본 도면에 해당하는 실시예는 이하 "지연된 모드"로 지칭되는데, 여기서 디버깅 명령어들(카드에 의해 개시된 채널)의 결과들은 테스트 스크립트가 컴파일된 프로그램의 실행을 위하여 카드와 교환(마스터/슬레이브 채널)함과 동시에 전송될 수 없다. 그 결과들은 따라서 ISO 7816 상으로, 제1 통신 채널의 사용 말기에(즉, 일반적으로 테스트 스크립트의 실행 말기에) 연속적으로 전송될 것이다.
그러한 이유로, 그 실시예는 엄밀히 말하여, 리얼 타임으로 디버깅 정보들을 제공하지 않는다. 그러나 여기서 본 발명의 실시에 해당하는 하기 실시예를 명시하기 위하여, 이를 유지할 것이다.
도 4는 반대로, 다수의 동시 통신을 허용하는 접속, 예를 들어 USB 접속을 사용하는 동등한 디버깅 시스템을 도시한다.
실제로 오늘날 어떤 마이크로컨트롤러 카드는 카드리더와 그 카드 사이의 다수의 병렬통신을 가능하게 하는 USB 인터페이스를 갖는다는 것이 확립되어 있다.
본 도면에 해당하는 본 발명의 실시예는 디버깅 명령어들의 결과는 그 명령어들이 실행되자마자 외부 엔티티로 직접 전송할 수 있다는 점에서 이하 "리얼 타임 모드"로 칭한다. 테스트 스크립트와의 교환(마스터/슬레이브 채널) 및 디버깅 명령어 결과의 전송(카드에 의해 개시된 채널)은 따라서 마이크로프로세서 카드 및 카드 리더 사이의 동일한 물리적 접속 USB 상에서 동시에 일어날 수 있다.
물론, 다른 설정도 예측 가능하다. 예를 들어, 만일 마이크로프로세서 카드가 2개의 통신 인터페이스를 갖춘다면(따라서 2개의 물리적 접속, 예를 들어 하나는 ISO 7816 접촉 또는 USB에 의해 테스트 스크립트를 갖는 외부 엔티티와의 접속, 다른 하나는 비접촉, 예를 들어 ISO 14443에 의해, 동일하거나 상이한, 디버깅 소프트웨어를 갖는 외부 엔티티와의 접속; 또한 예를 들어 하나는 물리적 인터페이스 ISO 7816의 어떤 전기접촉에 의한 접속 및 다른 하나는 그 동일한 물리적 인터페이스의 다른 접촉부에 의한 접속), 그 2개의 통신 채널은 2개의 해당하는 상이한 물리적 접속 상에서 동시화 될 수 있다.
마찬가지로, 도 6에 도시된 바와 같이, 마이크로프로세서 카드, 예를 들어 접촉식 SIM 카드 또는 모든 집적회로 카드는 이동 전화나 스마트폰 등의 호스트(host) 장비의 일부분이 될 수 있다. 그 호스트 장비는 NFC 유형의 비접촉 CLF(ContactLess Frontend)를 갖추고, SIM 카드의 전기 접촉부(C6)에 접속되어 있다. 그 SIM 카드는 SWP(Simple Wire Protocol) 프로토콜의 도움으로 CLF 회로와 통신하며, CLF 회로를 통하여(또는 변형예로서, 이후 명시할 컴퓨터(2000)로) 외부 엔티티와의 비접촉 통신을 허용한다.
본 설정에서는, 통신 채널들(마스터/슬레이브 채널 또는 카드에 의해 개시된 채널) 중 하나는 그 비접촉 통신 인터페이스(C6-SWP-CLF-NFC 접촉) 상에서 구현되고, 그리고 나머지 통신 채널은 접촉(C7)(I/O)에서 통상적 프로토콜 ISO 7816의 도움으로 구현될 수 있다. 바람직하게는, 비접촉 NFC 통신은 SIM 카드에 의해 개시된다.
본 도면에 도시된 서로 다른 설정들은 외부 엔티티와, 또는 마스터 컴퓨터(2000)와 통신하기 위하여 그 채널들 중 어느 하나를 사용하는지에 따라 구별되고, 또한 외부 엔티티 또는 마스터 컴퓨터(2000)를 (경우에 따라) 이동 전화기 내부 자체에서 구동하는지 또는 통상적 통신 수단을 통하여 이동 전화기가 통신하는 외부 장비에 의해 구동되는지에 따라 구별된다.
"지연된 모드"를 도시하는 도 1에서, 마이크로프로세서(1300) 카드(1000)는 또한 메모리(1200), 예를 들어 EEPROM을 포함하고, 통신 모듈 I/O(1100) 및 접속용 물리적 인터페이스(1400)가 모듈(1100)을 외부와 통신할 수 있게 한다. 카드(1000)는, 예를 들어 인증 및/또는 암호화 프로세스를 통하여, 비밀 데이터를 보호할 수 있게 하는 하드웨어 보안 모듈일 수 있다.
통신 모듈(1100)은 여기서 APDU 메세지에 의해 외부 리더와 통신할 수 있게 하는 통신 모듈 ISO 7816 (1110)으로 도시되었다. 물론, 다른 통신 프로토콜(접촉식 또는 비접촉식, USB, 등)이 여기서 명시한 "지연된 모드"내에서 고려될 수 있다. 접속 인터페이스(1400)는 고려되는 형태의 경우에 따라 접촉식 또는 비접촉식일 수 있다.
메모리(1200)는 여기서, 마이크로프로세서(1300)에 의한 실행이 다른 애플리케이션 또는 프로그램을 위하여 실행 컨텍스트(context)를 정의하는 운영 시스템(OS)(1210)을 포함한다. 그 메모리는 또한 디버깅 명령어들(ID)을 포함하는 컴파일된 프로그램(1220), 본 발명에 따른 디버깅 대상, 디버깅 명령어들의 활성화 또는 억제용 수단(1230)과 디버깅 파일(1240)을 포함한다.
테스트용 및 디버깅용 컴파일된 프로그램(1220)은 하나 또는 다수의 동작(OP)을 수행하고 생성 프로그램의 주된 기능을 정의하는 명령어들의 한 세트(I)를 포함하고, 명령어(I)들 중으로 삽입된 하나 또는 다수의 디버깅 명령어(ID)를 포함함을 주지해야한다. 디버깅 명령어들(ID)은 프로그램 기능의 실행 상에 아무런 영향도 주지 않는데, 즉, 컴파일된 프로그램의 실행 동안 그 디버깅 명령어들이 실행되든 안 되든 명령어(I)들의 실행 상에 어떤 영향도 주지 않고 따라서 결과를 요청하는 애플리케이션에 의하여 기다려지는 프로그램 결과에 아무런 영향을 주지 않는다.
한 특별한 실시예에서, 컴파일된 프로그램은 직접 운영 시스템(OS)(1210)일 수 있는데, 그 경우 이하 설명이 컴파일된 프로그램(OS)(1210)에 적용될 것이다. 실행 환경은 따라서 카드의 하드웨어 성분들과 그것들의 드라이버들(drivers)로 구성된다.
그 수단(1230)은 예를 들어 메모리에서 하나의 비트 Benable(또는 플래그)를 통하여 단순히 2개의 상태 '0' 또는 '1'을 갖는 장치의 형태를 취할 수 있다: Benable = 1은 이하 명시한 바와 같이 활성화된 디버깅 명령어들에 해당하고(통칭 "활성화" 상태), 및 Benable= 0은 비활성화된 명령어들(통칭 "억제" 상태)에 해당한다. 그 수단(1230)은 그러나 예를 들어 상태 기계(state machine)와 같은 더욱 복잡한 형태를 취할 수 있다.
중앙 버스(도시되지 않은)는 상기 명시된 카드(1000)의 여러 다른 전자공학적 성분, 및 컴파일된 프로그램의 명령어들(1220)과 OS(1210)의 명령어들이 카드(1000)에 전류가 공급될 때 마이크로프로세서(1300)에 의해 OS(1210)의 명령어들을 실행하기 위하여 로딩되는 RAM(도시되지 않은)을 연결한다.
카드 리더(3010)-여기서는 ISO 7816 표준에 따라 통신 모듈(1110)과의 대화를 허용하기 위한 ISO 유형임-는 카드(1000)를 접수하기 위하여 준비된다. 도면상에, 카드(1000)와 카드 리더(3010) 사이의 물리적 접속 링크(3000)가 도시되어 있다. 어떤 실시예에서는, 그 물리적 링크는 ISO 14443 통신에 해당 될 수 있음을 주지해야한다.
그 카드 리더(3010)는 테스트 및 디버깅 장비-여기서는 단순한 개인용 컴퓨터 PC(2000)-를 갖추었거나 링크되어 있다.
그 컴퓨터(2000)는 통상적 유형의 것이고, 본 발명의 예시를 위하여, CPU 프로세서(2100), 디스플레이용 모니터(2300) 및 하드디스크(HD) 유형의 메모리(2200)를 포함하고, 그 메모리는 테스트 및 디버깅 애플리케이션(2210)을 포함하고, 그 애플리케이션은 특히 테스트 스크립트(2230) 및 "디버깅 소프트웨어"로도 통칭 되는 디버깅 파일의 리더 프로그램(2220)을 포함한다.
그 테스트 스크립트(2230)는, 컴파일된 프로그램(1220) 및 카드(1000)의 다른 기능들(예를 들어 운영시스템 OS의 명령들)도 자동으로 실행하고 제어하게 되어 있는 하나의 ISO 7816 명령 시퀀스(APDU 명령들)로 구성될 수 있다.
리더 프로그램(2220)은 파일(1240) 등과 같은 디버깅 파일을 읽고, 모니터(2300)를 통하여, 테스트하는 사용자에게 디버깅 정보를 디스플레이하도록 구성된다. 리더 프로그램(2220)은 테스트 스크립트(2230)의 말기에, 디버깅 파일(1240)의 판독과 디스플레이를 진행하기 위하여 그 디버깅 파일을 회수하기 위하여, 자동으로 개시될 수 있다.
변형예에서는, 테스트하는 사용자의 행동이 요구될 수 있다.
한편, 테스트 스크립트(2230) 및 리더 프로그램(2220)은 2개의 독립적인 애플리케이션, 즉, 동일한 테스트 및 디버깅 애플리케이션(2210)에 속하지 않는 애플리케이션들일 수 있다.
이제 도 2를 참조하여, 테스트하는 사용자의 요청에 따르는 디버깅 프로세스를 명시하고자 한다. 본 도면에서, 화살표들은, 중계 지점 내에서 또는 전송된 메시지의 처리 중에 관여하는 요소들을 지정한다.
사용자는 애플리케이션(2210)을 개시한다. 이는 테스트 및 디버깅 애플리케이션에 관한 것이므로, 카드(1000)에서 테스트해야 하는 프로그램들은 그것들이 포함하고 있는 디버깅 명령어들(ID)을 실행해야 한다.
그러므로, 애플리케이션(2210)은 ISO 리더(3010)를 통하여, 디버깅 명령어(ID)들을 활성화하기 위하여 카드(1000)를 향하여 제1 APDU 명령(C1)을 송신하는 테스트 스크립트(2230)의 실행을 개시한다. 그 명령은 리더(3010)에 링크된 PC(2000)에 의해 개시된 제1 통신 채널로 전송된다.
변형예에서는, 그 명령(C1)은 테스트 스크립트(2230)을 개시하기 전에 테스트 애플리케이션(2210)에 의해 송신될 수 있다.
그 명령(C1)은 2개 상태형 장치(1230)를 활성화 상태: Benable=1로 가도록 하려는 목적을 갖는다. 예시로서, 그 명령(C1)은 1 값을 비트 Benable에 기입하는 간단한 요청일 수 있다.
보안상의 문제로, 그러한 명령은 카드(1000)에 대하여 테스트 사용자의(즉, 컴퓨터(2000)의) 통상적 메커니즘에 의한 사전 인증을 필요로 할 수 있다. 따라서, 카드(1000)는 그 인증이 잘 진행되어야만 명령(C1)을 실행하도록 허가받을 수 있을 것이다.
그 명령의 승인(R1) 이후에, 카드(1000)는 컴파일된 프로그램(1220)의 디버깅을 위하여 준비된다.
테스트 스크립트(2230)의 후속 단계가 실현되고 이는 경우에 따라 사전 설정된 테스트 파라미터들에 따라, 컴파일된 프로그램(1220)의 실행을 활성화하고 제어하게 되는 APDU 명령(Ci)의 사전설정된 시퀀스를 전송함을 목적으로 한다.
그 명령(Ci)은 컴파일된 프로그램(1220)의 생성 설정 상태에서 사용된 컴파일된 프로그램 실행의 가능한 작동을 재생한다. 다시 말하자면, 그 명령들은 컴파일된 프로그램(1220)이 실행한 기능 또는 주된 작업(OP)에만 연관이 있을 뿐이고 디버깅 명령어들(ID)과는 연관이 없다.
카드(1000)에 의한 접수시에, 그 명령(Ci)들은 컴파일된 프로그램(1220)에 의해 처리되고 APDU 응답(Ri)을 발생한다.
명령(C1, Ci) 및 응답(R1, Ri)은, 컴파일된 프로그램(1220)과 테스트 애플리케이션(2210) 사이에서, 그 2개의 소프트웨어 성분 사이의, PC(2000) 또는 리더(3010)에 의해 개시된 통신 채널(CC1)(마스터/슬레이브) 내에서 교환된다. 그 제1채널(CC1)은 특히 링크(3000)를 차용한다.
컴파일된 프로그램(1220)의 실행시에, 디버깅 명령어들(ID)은 수단(1230)의 활성화 상태 Benable=1로 인하여 실행된다.
디버깅 명령어들(ID)은 명령어들(I)의 실행을 변경시키지 않는 처리를 포함하는데, 예를 들어 내부 변수 값들 및/또는 진행 중인 명령어들과 값들을 기억하는 현재 실행 스택의 카피(copy)를 회수하는 것에 관한 것일 수 있다.
그 회수된 정보들, 또는 "디버깅 정보들"은 디버깅 파일(1240) 내에 복사된다. 그 디버깅 파일(1240)은 특히 카드(1000) 메모리의 디버깅 정보 용량을 제한하기 위하여, 회람 목록(circular list)의 형태로, 경우에 따라 연쇄 목록(chained list) 및/또는 제한된 길이의 엔트리를 갖는 목록의 형태로 실행될 수 있다. 그 설정은 특히 제한된 메모리 자원을 갖춘 마이크로프로세서 카드에 대하여 유리하다. 물론, 리니어 파일(linear file) 또는 테이블(table) 등과 같은 다른 실시예들도 고려될 수 있다.
복사 기능은 특히 디버깅 명령어(ID) 자체 내에 준비된다.
일단 테스트 스크립트(2230)가 완전히 실행되면, 리더 프로그램(2220)은 개시될 수 있는 한편, ISO 3000 통신 링크는 이제부터 APDU Ci/Ri 통신으로부터 해방되어 자유롭다.
이에 따라 리더 프로그램(2220)은 테스트 사용자의 명령하에 자동으로 디버깅 파일(1240)의 카피를 얻기 위하여 새로운 명령 APDU(Cz)를 송신한다. 예시로서, 그 명령(Cz)은 그 파일(1240)의 단순한 판독 요청일 수 있다.
파일(1240)은 카드(1000)의 운영시스템(OS)에 의해 메모리(1200)를 판독함으로써 얻어진다. 그 디버깅 파일(1240)은 그 결과 ISO 링크(3000)를 통하여 리더 프로그램(2220)으로 송신된다(응답 Rz).
이상에서 본 바와 같이, 본 실시예는 디버깅 파일(1240) 내에 디버깅 정보들을 임시로 저장함으로써 디버깅 정보들의 지연된 통신을 구현한다.
그 실시예에서, 통신은 카드 리더(3010) 및 컴퓨터(2000)에 카드(1000)를 링크하는 동일한 물리적 링크(3000) 상에서 연속적으로 구현된다.
보안화된 실시예에서, 디버깅 파일(1240) 및 따라서 그것이 포함하는 디버깅 정보들은 링크(3000) 상에 전송되기 위하여 카드(1000)에서 출력되기 전에 암호화될 수 있음을 주지해야 한다.
그와 같이 리더 프로그램(2220)에 의해 회수된 디버깅 정보들은 컴파일된 프로그램의 경우에 따른 기능장애 및 버그를 추론하여 수정하기 위하여 내부적으로 운용된다. 예시로서, 그 운용은 모니터(2300)를 통하여 사용자에게 디버깅 정보들(내부 변수 값 또는 실행 스택 값)을 디스플레이하는 것으로 구성될 수 있다.
리더 프로그램(2220) 또는 테스트 애플리케이션(2210)의 테스트 스크립트(2230)를 실행하는 것은 2개 상태형 장치(1230)를 억제 상태 Benable=0로 전이할 목적으로 새로운 명령(명령 C1)을 송신하는 것으로 종료될 수 있다. 따라서, 컴파일된 프로그램(1220)이 테스트 및 디버깅 이외의 사용을 위하여 새로이 요청된다면, 그것의 실행은 디버깅 명령어들(ID)로 인하여 연장되지 않을 것이다.
도 3은 디버깅 명령어들(ID)을 포함하는 컴파일된 프로그램의 단순화된 실시예(원시 버전)를 도시한다.
본 실시예는 프로그램의 주된 기능(예를 들어 제14행 및 제21항에 명시되지 않은) 및 디버깅 명령어들(ID1 내지 ID6)를 구현하기 위한 명령어들(I)을 포함하는 "inspectedFunction" 함수와 연관된다.
본 실시예에서, 디버깅 명령어들은 function _a() 함수의 성공 여부를 알고자 함을 목적으로 하고, 필요한 경우, 로컬 변수값 var_a, var_b 및 var_c를 리턴 받는 것(제29열의 ID5)을 목적으로 한다. 명령들(ID1, ID2, ID3, ID4 및 ID6)은 디버깅 정보들 내에 inspectedFunction 함수 처리의 진행 지시를 제공한다.
본 실시예에서는 디버깅 명령어들(ID)의 억제 또는 활성화가 비트 Benable을 기초로 조건부 명령어들의 도움으로 실현됨을 주지할 것이다. 실제로, 명령어(ID1-ID6)에 의해 요청된 UDEBUGF 함수의 제2열이 Benable=1의 존재하에 디버깅 처리를 좌우한다. 따라서 디버깅 명령어 활성화의 부재시에, UDEBUGF 명령어는 그것을 요청한 루틴(routine)으로, 여기서는 현재 시점의 "inspectedFunction" 함수로, 단순히 돌아간다.
파일(1240) 내에서 그 함수의 파라미터들로 전환되는 문자열의 카피가 실현되는 것은 UDEBUGF 함수(제3열) 내에서임을 주지해야 한다.
물론, 조건부 명령어의 또 다른 실시예가 고려될 수 있다.
본 발명에 따른 "리얼 타임 모드"를 도시하는 도 4에서, 카드(1000)는, 컴퓨터(2000)상에서 USB 입력/출력 인터페이스(3110)와의 USB 링크(3100)만을 갖는다면 도 1의 카드와 유사하다.
따라서, 카드(1000)는 특히 카드(1000) 내에 웹(web) 서버를 포함할 수 있는 USB 상의 Ethernet 유형의 통신 모듈(1120)(도 1의 ISO 7816 모듈(1110) 대신에)을 포함한다.
그러한 웹서버는 자바 표준, 예를 들어 Javacard 3.0의 도움으로 흔히 구현된다.
그러한 통신 모듈은 그에 따라 Ethernet 또는 IP 주소를 갖춘 별개의 엔티티와 TCP 또는 UDP 소켓을 생성하기 위하여 설정된다.
한편, 2개 상태형 수단(1230)은 1회 프로그램 가능한 메모리 (OTPM)(One Time Programmable Memory, 1200') 내에 구현된다. 그러한 이유로, 그 수단(1230)은 디폴트로 활성화 상태(Benable=1)를 갖는다. 물론, 도 4와 관련하여 명시된 수단(1230)의 그러한 구현은 도 1의 간접적 모드에서 실시될 수 있다. 역으로, 간접적 모드에서 상기 명시된 수단(1230)의 구현은 본 직접적 모드에서 실시될 수 있다.
OTPM 메모리 자체의 특성으로 인하여, 디버깅 명령어들(ID)의 억제 명령(Benable=0로 쓰이는 명령 C1)은 비트 Benable이 더 이상 상태 1로 돌아올 수 없으므로 그 명령어들을 확정적으로 비활성화시키게 된다. 그 설정은 카드의 비밀 정보들이 지금부터는 디버깅 메커니즘을 통하여 악의를 가진 사람에 의하여 더 이상 접근 가능하지 않게 되도록 보장한다는 점에서 분명한 장점을 갖는다.
따라서, 그 실시예는 테스트가 프로그램(1220)을 컴파일링 한 직후 실행되어야 할 때, 그리고 테스트가 끝나자마자 그 프로그램을 생성하는데 접근 가능하도록 예정될 때 주로 고려된다. 요청에 의한 디버깅 명령어들(ID)의 확정적 억제는 따라서 테스트의 말기에 단순 명령(C1)(경우에 따라 인증에 의하여 보안화된)의 도움으로 이루어진다.
물론 다른 실시예가 가능한데, 가령 예를 들어 그 수단(1230)을 테스트 단계 동안 디버깅 명령어들(ID)을 활성화 또는 비활성화하기 위하여 재기록가능한 ROM 메모리의 제1 비트 B1enable, 및 필요한 경우 명령어들(ID)의 확정적 비활성화를 고려하기 위하여 OTPM 메모리의 제2 비트 B2enable로 분리하는 것이다.
OTPM 메모리만을 사용하는 것은 따라서, 테스트 및 디버깅 애플리케이션(2210)이 도 1과 관련하여 상기 언급되었던 명령(C1)을 체계적으로 송신하지 않도록 요구한다. 그러한 명령만이 테스트가 확정적으로 종료되었을 때 송신(단 1회)될 것이다.
도 5는 본 발명에 따른 "리얼 타임" 모드에서의 데이터 교환을 도시한다. 본 도면에서, 화살표들은 중계 지점 내에서 또는 전송된 메시지의 처리 중에 관여하는 요소들을 지정한다.
컴퓨터(2000)에 의해 송신되는 모든 명령을 카드(1000)가 실행하도록 허가하거나 하지 않기 위한 선택적인 통상적 인증 후에, 테스트 스크립트(2230)는 마스터/슬레이브 채널(CC1) 상으로 USB 3100 연결을 통하여 명령들(C'i)의 시퀀스를 송신한다. 여기서 그 명령들은 카드(1000)를 갖춘 웹서버에 대한 http 요청내에 포함될 수 있다.
그 명령들(C'i)(도면에는 단 하나만 도시)은 컴파일된 프로그램(1220)의 실행을 개시한다.
Benable=1과 같이, 디버깅 명령어들(ID)은 컴파일된 프로그램의 실행 중에 실행된다.
그 명령어들(ID)의 실행들은 디버깅 정보들을 회수할 수 있게 하고, 통상적 메커니즘에 따라, 디버깅 소프트웨어(2220)로 USB 링크(3100)를 통하여 UDP 소켓을 생성할 수 있게 하고, 그 디버깅 정보들을 그 소켓을 통하여 디버깅 소프트웨어(2220)로 송신(1회 또는 수회)할 수 있게 한다. 그 소켓은 컴파일된 프로그램이 실행되기 이전에 카드에 전원이 공급될 때 생성될 수 있음을 주지해야 한다.
그 송신은 도면에서 리더가 아닌 카드에 의해 개시된 채널(CC2)에 해당하는 굵은 점선에 의해 도시되었다.
디버깅 소프트웨어의 Ethernet 주소(전송된 UDP 패킷내에 표시)는 카드(1000)의 메모리에 있는데, 예를 들어 테스트 애플리케이션(2210)에 의하여 그 애플리케이션 실행의 초기에 전송된 이후 기억됨을 주지해야 한다.
디버깅 소프트웨어(2220)에 의한 디버깅 정보들의 운용은 이에 따라 상기 명시한 바와 같이 지연된 모드에 대하여 가능하다. 그외에, UDP 소켓을 통한 디버깅 정보들의 전송을 위하여 디버깅 정보들의 Ethernet 포맷팅이 되면, 통신망, 예를 들어 인터넷을 통하여 컴퓨터(2000)에서 격리된 제3 장비에 대하여 그 데이터를 전달하는 것이 용이하다.
카드에 의한 각 명령(Ci)의 실행 말기에 테스트 애플리케이션(2210)으로 응답(R'i)이 송신된다.
명령어들(ID)의 실행 시에 컴파일된 프로그램(1220)의 실행이 종료되지도 않았을 때, 디버깅 정보들을 즉시 송신하는 관계로 "리얼 타임 모드"라 칭한다. 2개의 채널들(CC1, CC2)은 따라서 동일한 USB 연결 상에서 동시화될 수 있다.
추후에, 테스트 및 디버깅이 종료되었을 때, 한 명령(C1)이 디버깅 명령어들(ID)을 (경우에 따라 확정적으로) 비활성화하기 위하여 카드로 발신될 수 있다. 그것은 한편으로는 명령어들(ID)의 실행에 의하여 컴파일된 프로그램(1220)이 연장되지 않으면서 그 컴파일된 프로그램이 그것의 생성 버젼에서 얻어질 수 있도록 하고, 다른 한편으로는, 디버깅 정보들을 통하여 재증가할 수 있는 비밀 데이터에 대한 경우에 따른 금지된 접근을 막을 수 있게 한다.
그 명령(C1)은 OTPM 메모리(1200') 내에 Benable=0을 쓰도록 인도하고 승인(R1)으로 인도한다.
도면에 도시된 바와 같이, 지금부터 만일 명령(C'i)이 발송되면, 디버깅 정보들이 아닌 응답(R'i)만이 컴퓨터(2000)로 통신 될 것이다.
그 리얼 타임 모드는 또한 도 6에 도시된 하드웨어 설정에서도 실시될 수 있는데, 그 경우 2개의 통신 채널이 물리적으로 격리되어 있기 때문이다.
도 3의 실시예가 직접 모드 또는 리얼 타임 모드에 또한 적용된다. 그 경우, UDEBUGF 기능은 파일(1240) 내에 디버깅 정보들을 복사하기 위한 명령어들 대신에, UDP 소켓 단계에 디버깅 정보들을 기입하기 위한, 따라서 리더 프로그램(2220)으로 그 정보들을 전송하기 위한 명령어들을 포함한다.
상기한 실시예들은 디버깅을 목적으로 하는,그러나 그에 제한되지 않는 본 발명의 실시예들일 뿐이다.
특히, 마이크로프로세서 카드(1000)는 제1 물리적 연결(3000), 예를 들어 ISO 7816을 제1 리더(3010)와 함께, 제2 물리적 연결(3100), 예를 들어 USB를 USB 인터페이스(3110)와 함께 갖출 수 있다(2개 모두 테스트 애플리케이션(2210)을 포함하는 하나의 동일한 컴퓨터(2000)에 연결될 수 있음). 2개의 채널들(CC1, CC2)은 따라서 개별적인 2개의 물리적 연결들 중 하나에 각각 실현될 수 있다.
한편, 물리적 연결의 성질에 따라, 상기 명시한 리얼 타임 모드 또는 지연된 모드를 선택하여 실시하는 것이 가능하다. 예를 들어 USB 연결이 그 경우이다. 또한 개별적인 2개의 물리적 연결을 갖춘 마이크로프로세서 카드도 그 경우이다.
그 경우, 활성화 또는 억제 수단(1230)은 2개 이상의 상태를 가질 수 있다: 예를 들어, 상기한 바와 같이 명령어들(ID)의 비활성화에 해당하는 제1 상태 Benable=0, 간접 모드(디버깅 파일(1240)의 사용)에서 명령어들(ID)의 활성화에 해당하는 제2 상태 Benable=1, 및 리얼 타임 모드(UDP 소켓)에서 명령어들(ID)의 활성화에 해당하는 제3 상태 Benable=2이다.
제2 상태와 제3 상태 사이의 선택(2개의 활성화 상태 Benable≠0)은 사용자에 의해 제어되거나 사용가능한 연결 및 그 사용 상태에 따라, 예를 들어 2개의 모드가 가능할 때 리얼 타임을 선호하여 자동으로 결정될 수 있다.
한편, 다수의 억제 또는 활성화 수단들이 동일한 하드웨어 보안 모듈 내에 공존 가능한데, 하나의 수단은 제공된 컴파일된 프로그램에 연결되거나, 다수의 그러한 명령어 유형을 포함하는 하나 또는 다수의 컴파일된 프로그램 내의 한 디버깅 명령어 유형에 연결될 수 있다. 당업자는 다수의 억제 또는 활성화 수단들이 존재하는 경우 상기 명시한 설명을 조율하는데 아무런 어려움이 없을 것이다.
끝으로 UDP 프로토콜은 USB 물리층 프로토콜, 블루투스, ISO 7816 (물리적 특성을 정의하는 part 1) 및 ISO 14443(동일하게 part 1)을 갖는 연결 상에 구별 없이 실시될 수 있음을 주지해야 한다.
본 발명은 또한 다른 응용예들도 갖는데, 예를 들어 마이크로프로세서 카드가 기억하는 데이터에 대한 액세스, 예를 들어 암호화된 대용량 파일에 대한 액세스를 위한 응용이 있다.
그러한 응용예에서, 외부 엔티티(2000)는 암호화된 파일의 내용에 액세스하기를 원하고, 그 목적으로, 액세스(판독) 명령 APDU를 카드(1000)에 송신한다.
그 명령의 접수는 요구된 파일의 암호해독을 개시한 후 해당하는 암호해독된 데이터를 카드(1000)가 사전에 생성했던 UDP 소켓 상에 전송한다.
따라서, 그 암호해독된 데이터는 그 용량이 ISO 7816 또는 ISO 14443 표준 의해 제한될 수 있는 APDU 응답에서 통신 되지 않는다.
소켓 UDP 상으로의 전송 결정은, 임계값(예를 들어 ISO 7816 표준의 제한에 따른)에 대한 암호화된 파일(또는 암호해독된 데이터)의 크기를 결정할 목적으로, 한 응답 APDU의 도움으로 보다는 카드에서의 로컬 프로세싱에 의존할 수 있다.
변형예로서, 카드(1000)는 그 카드가 개시하는 통신 채널(UDP 소켓) 상으로 암호해독된 데이터를 체계적으로 전송하도록 구성 될 수 있다.
역시 변형예에서, 상태(상기 비트 Benable과 유사) 기계가 UDP 소켓에 의한 그 액세스 기능을 활성화 하거나 억제하기 위하여(경우에 따라 확정적으로) 마련될 수 있다.
끝으로, 디버깅에 대하여, 그리고 카드(1000)와 외부 엔티티(2000) 사이의 링크의 성질과 수량과 관련하여 상기 제공된 교시는 암호화된 파일(및 카드 메모리 내의 모든 데이터)에 대한 액세스에도 적용된다: USB, ISO 7816, ISO 14443, SWP, NFC, 블루투스, 물리적 링크, 다수의 물리적 병렬 링크, 등.
상기 실시예들은 본 발명의 실시예일 뿐, 본 발명은 그것에 국한되지 않는다.
Claims (15)
- 하드웨어 보안 모듈로서,
마이크로프로세서; 및
상기 마이크로프로세서에 의해 판독 가능한 비일시적 매체 상에 인코딩되고, 상기 마이크로프로세서에 의한 실행 시에 상기 마이크로프로세서로 하여금 동작을 수행하게 하는 프로그램
을 포함하고,
상기 하드웨어 보안 모듈은, 제1 통신 채널을 통한 외부 마스터 엔티티와의 마스터/슬레이브 통신 모드에 따라, 명령을 수신하여 상기 프로그램을 실행함으로써 상기 동작을 수행하고, 대응하는 응답을 전송하도록 구성되고,
상기 프로그램은 상기 마이크로프로세서에 의해 실행 가능한 코드를 포함하는 컴파일된 프로그램이고, 상기 코드는 적어도 하나의 디버깅 명령어를 포함하고,
상기 적어도 하나의 디버깅 명령어가 실행되는지에 관계없이, 상기 적어도 하나의 디버깅 명령어는 상기 프로그램이 실행될 때 상기 동작의 수행을 변경하지 않고, 상기 디버깅 명령어는 상기 프로그램을 형성하는 상기 코드를 디버깅하기 위해 제공되고,
상기 하드웨어 보안 모듈은,
상기 프로그램을 실행하기 위한 상기 명령의 수신에 응답하여, 상기 프로그램을 실행하여, 상기 프로그램 내에 포함된 상기 적어도 하나의 디버깅 명령어의 실행으로부터 발생하는 디버깅 데이터를 생성하고,
상기 컴파일된 프로그램의 실행 동안, 상기 생성된 디버깅 데이터를 제2 통신 채널을 통해 외부 엔티티로 전송하도록 구성되고,
상기 제2 통신 채널은 상기 하드웨어 보안 모듈에 의해 개시되는, 하드웨어 보안 모듈. - 제1항에 있어서, 상기 제1 통신 채널을 통한 통신 및 상기 제2 통신 채널을 통한 통신은 각각 상기 하드웨어 보안 모듈의 외부를 향하여 2개의 상이한 물리적 링크를 통해 이루어지는, 하드웨어 보안 모듈.
- 제1항에 있어서, 상기 제1 통신 채널을 통한 통신 및 상기 제2 통신 채널을 통한 통신은 단일 물리적 링크를 통해 이루어지는, 하드웨어 보안 모듈.
- 제1항에 있어서,
상기 적어도 하나의 디버깅 명령어는 상기 하드웨어 보안 모듈에 의해 생성된 UDP 소켓을 통해 상기 생성된 디버깅 데이터를 기입하기 위한 명령을 구현하는, 하드웨어 보안 모듈. - 제1항에 있어서, 상기 컴파일된 프로그램의 실행 동안 상기 디버깅 명령어를 억제 또는 활성화하는 수단을 더 포함하는 하드웨어 보안 모듈.
- 제5항에 있어서, 상기 억제 또는 활성화 수단은 상기 디버깅 명령어의 억제가 확정적이 되도록 1회 프로그램 가능한 메모리 내에 기억된 정보의 아이템을 포함하는, 하드웨어 보안 모듈.
- 제1항에 있어서, 상기 외부 마스터 엔티티로부터 수신된 상기 명령은 상기 하드웨어 보안 모듈의 메모리에 기억된 암호화된 파일에 대한 액세스 명령이고, 상기 제2 통신 채널을 통해 전송된 상기 생성된 데이터는 상기 파일의 암호해독된 데이터인, 하드웨어 보안 모듈.
- 제1항에 있어서, 상기 생성된 디버깅 데이터는 상기 외부 엔티티와 통신하기 위해 상기 하드웨어 보안 모듈에서 생성된 UDP 소켓을 통하여 전송되는, 하드웨어 보안 모듈.
- 제1항에 있어서, 상기 하드웨어 보안 모듈은 상기 제1 통신 채널과 다른 상기 제2 통신 채널을 통해 상기 외부 엔티티와 비접촉 모드에서 통신 소켓을 생성하도록 더 구성되는, 하드웨어 보안 모듈.
- 비접촉 통신 인터페이스 및 제1항에 따른 하드웨어 보안 모듈을 포함하는 이동 전화기로서,
상기 하드웨어 보안 모듈은 상기 비접촉 통신 인터페이스에 연결된 제1 전기 접촉부를 더 포함하고,
상기 제1 및 제2 통신 채널들 중 하나는 상기 제1 전기 접촉부를 통한 비접촉 통신 표준에 부합되고, 상기 제1 및 제2 통신 채널들 중 다른 하나는 상기 하드웨어 보안 모듈의 제2 전기 접촉부를 통한 접촉 통신 표준에 부합되는, 이동 전화기. - 마이크로프로세서; 및 상기 마이크로프로세서에 의해 판독 가능한 비일시적 매체 상에 인코딩되고, 상기 마이크로프로세서에 의한 실행 시에 상기 마이크로프로세서로 하여금 동작을 수행하게 하는 프로그램을 포함하는 하드웨어 보안 모듈에서의 처리 방법으로서,
상기 하드웨어 보안 모듈은 마스터/슬레이브 통신 모드에 따라 외부 마스터 엔티티와 통신하도록 구성되고, 상기 프로그램은 상기 마이크로프로세서에 의해 실행 가능한 코드를 포함하는 컴파일된 프로그램이고, 상기 코드는 적어도 하나의 디버깅 명령어를 포함하고,
상기 방법은,
상기 하드웨어 보안 모듈에서, 제1 통신 채널을 통해, 명령을 수신하여 상기 프로그램을 실행함으로써 상기 동작을 수행하는 단계;
상기 하드웨어 보안 모듈에서, 상기 제1 통신 채널을 통해, 상기 수신된 명령에 대응하는 응답을 전송하는 단계;
상기 하드웨어 보안 모듈에서, 상기 프로그램을 실행하기 위한 상기 명령의 수신에 응답하여, 상기 프로그램을 실행하여, 상기 프로그램 내에 포함된 상기 적어도 하나의 디버깅 명령어의 실행으로부터 발생하는 디버깅 데이터를 생성하는 단계; 및
상기 하드웨어 보안 모듈에서, 상기 컴파일된 프로그램의 실행 동안, 상기 생성된 디버깅 데이터를 제2 통신 채널을 통해 외부 엔티티로 전송하는 단계
를 포함하고,
상기 제2 통신 채널은 상기 하드웨어 보안 모듈에 의해 개시되고,
상기 적어도 하나의 디버깅 명령어가 실행되는지에 관계없이, 상기 적어도 하나의 디버깅 명령어는 상기 프로그램이 실행될 때 상기 동작의 수행을 변경하지 않고, 상기 디버깅 명령어는 상기 프로그램을 형성하는 상기 코드를 디버깅하기 위해 구성되는, 처리 방법. - 제11항에 있어서, 상기 제1 통신 채널을 통한 통신 및 상기 제2 통신 채널을 통한 통신은 각각 상기 하드웨어 보안 모듈의 외부를 향하여 2개의 상이한 물리적 링크를 통해 이루어지는, 처리 방법.
- 제11항에 있어서, 상기 제1 통신 채널을 통한 통신 및 상기 제2 통신 채널을 통한 통신은 단일 물리적 링크를 통해 이루어지는, 처리 방법.
- 제11항에 있어서,
상기 하드웨어 보안 모듈에서, 상기 외부 엔티티와의 통신 링크를 통해 통신하기 위한 UDP 소켓을 생성하는 단계를 더 포함하고, 상기 생성된 디버깅 데이터는 상기 UDP 소켓을 통해 전송되는, 처리 방법. - 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1060725 | 2010-12-17 | ||
FR1060725A FR2969335B1 (fr) | 2010-12-17 | 2010-12-17 | Module materiel de securite et procede de traitement dans un tel module |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120068745A KR20120068745A (ko) | 2012-06-27 |
KR101950512B1 true KR101950512B1 (ko) | 2019-02-20 |
Family
ID=45098975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110137774A KR101950512B1 (ko) | 2010-12-17 | 2011-12-19 | 하드웨어 보안 모듈 및 그러한 모듈 내에서의 처리 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8886997B2 (ko) |
EP (1) | EP2466470B1 (ko) |
KR (1) | KR101950512B1 (ko) |
FR (1) | FR2969335B1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2969334B1 (fr) * | 2010-12-17 | 2013-01-25 | Oberthur Technologies | Module materiel de securite et procede de debogage d'un tel module |
CN103886121B (zh) * | 2012-12-24 | 2016-12-28 | 北京中电华大电子设计有限责任公司 | 一种在sim仿真器上实现swp协议的电路 |
CN103246839B (zh) * | 2013-04-27 | 2015-10-28 | 飞天诚信科技股份有限公司 | 一种智能密钥设备的工作方法 |
CN103559523B (zh) * | 2013-11-15 | 2016-04-13 | 武汉天喻信息产业股份有限公司 | 基于swp se实现的非接触读写设备及方法 |
CN104571962B (zh) * | 2014-12-31 | 2017-11-17 | 上海动联信息技术股份有限公司 | 一种适合批量生产的usbkey设备内固件的实现方法 |
CN111818510B (zh) * | 2020-06-16 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于安全智能薄膜卡的多通道通信***及方法 |
CN112416669B (zh) * | 2020-10-28 | 2023-07-14 | 北京智芯微电子科技有限公司 | 安全芯片的掉电测试方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090082008A1 (en) * | 2007-09-21 | 2009-03-26 | Per Thorell | Mobile Phone Code Debugging Method and Apparatus |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5896536A (en) * | 1996-05-01 | 1999-04-20 | International Business Machines Corp. | Data triggered trace support for debugging object oriented programs |
US6938244B1 (en) * | 1999-05-11 | 2005-08-30 | Microsoft Corp. | Interlaced protocol for smart card application development |
US20020099953A1 (en) * | 2000-11-30 | 2002-07-25 | International Business Machines Corporation | Debugging of chipcards |
US7216257B2 (en) * | 2004-01-21 | 2007-05-08 | Sap Ag | Remote debugging |
CA2536610C (en) * | 2004-02-05 | 2013-04-30 | Research In Motion Limited | Debugging port security interface |
US7206982B1 (en) * | 2004-06-16 | 2007-04-17 | Arm Limited | Diagnostic mechanism for an integrated circuit |
US7318172B2 (en) * | 2004-08-31 | 2008-01-08 | Broadcom Corporation | Wireless remote firmware debugging for embedded wireless device |
US20090038013A1 (en) * | 2007-07-31 | 2009-02-05 | Nokia Corporation | Wireless communication security when using known link keys |
US7861119B1 (en) * | 2007-12-07 | 2010-12-28 | American Megatrends, Inc. | Updating a firmware image using a firmware debugger application |
-
2010
- 2010-12-17 FR FR1060725A patent/FR2969335B1/fr active Active
-
2011
- 2011-12-14 EP EP11193552.4A patent/EP2466470B1/fr active Active
- 2011-12-16 US US13/328,243 patent/US8886997B2/en active Active
- 2011-12-19 KR KR1020110137774A patent/KR101950512B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090082008A1 (en) * | 2007-09-21 | 2009-03-26 | Per Thorell | Mobile Phone Code Debugging Method and Apparatus |
Also Published As
Publication number | Publication date |
---|---|
EP2466470B1 (fr) | 2018-02-07 |
US20120159253A1 (en) | 2012-06-21 |
EP2466470A1 (fr) | 2012-06-20 |
FR2969335B1 (fr) | 2013-07-05 |
US8886997B2 (en) | 2014-11-11 |
KR20120068745A (ko) | 2012-06-27 |
FR2969335A1 (fr) | 2012-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102007532B1 (ko) | 선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법 | |
KR101950512B1 (ko) | 하드웨어 보안 모듈 및 그러한 모듈 내에서의 처리 방법 | |
US11126753B2 (en) | Secure processor chip and terminal device | |
JP6585072B2 (ja) | 不揮発性メモリ又はセキュア素子へのデータの読み込みを安全に行うこと | |
JP2009518759A (ja) | コマンドパススルー機構を備えたメディアカード | |
US11436367B2 (en) | Pre-operating system environment-based sanitization of storage devices | |
CN111786820A (zh) | 固件更新方法、装置及网络设备 | |
CN106657551A (zh) | 一种防止移动终端解锁的方法及*** | |
CN113127896B (zh) | 基于独立加密芯片的数据处理方法及设备 | |
US10250563B2 (en) | Secure device and proxy for secure operation of a host data processing system | |
CN115604315A (zh) | 服务器的远程处理装置及方法、电子设备 | |
JP2010191531A (ja) | ネットワーク接続ストレージ装置及びその設定方法、並びにネットワーク接続ストレージ設定システム | |
JP2016103217A (ja) | 情報処理端末および情報処理端末の制御プログラム | |
CN116048561A (zh) | 存储卡的固件升级方法、计算机设备及可读存储介质 | |
JP5466277B1 (ja) | 携帯型記憶装置 | |
US10489775B2 (en) | Integrated circuit card adapted to transfer first data from a first application for use by a second application | |
CN111125791A (zh) | 一种内存数据的加密方法、装置、cpu芯片及服务器 | |
JP7287844B2 (ja) | 情報処理装置、セキュリティ強度の切替方法、及びプログラム | |
JP7334566B2 (ja) | 電子情報記憶媒体、及びプログラム | |
JP2022131749A (ja) | 電子データ管理装置、電子データ管理システム、そのためのプログラム及び記録媒体 | |
JP5466276B1 (ja) | 携帯型記憶装置 | |
JP2012078943A (ja) | スクリプトアプリケーションの実行方法 | |
JP5466278B1 (ja) | 携帯型記憶装置 | |
KR20100137354A (ko) | 가상화 스마트 카드 시스템, 상기 가상화 스마트 카드 시스템 제공방법, 및 데이터 프로세싱 장치 | |
JP2006126994A (ja) | インサーキットエミュレータ、デバッグ装置、及びそれを用いたデバッグシステム |
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 |