KR102007532B1 - 선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법 - Google Patents

선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법 Download PDF

Info

Publication number
KR102007532B1
KR102007532B1 KR1020110137737A KR20110137737A KR102007532B1 KR 102007532 B1 KR102007532 B1 KR 102007532B1 KR 1020110137737 A KR1020110137737 A KR 1020110137737A KR 20110137737 A KR20110137737 A KR 20110137737A KR 102007532 B1 KR102007532 B1 KR 102007532B1
Authority
KR
South Korea
Prior art keywords
debugging
security module
hardware security
execution
instructions
Prior art date
Application number
KR1020110137737A
Other languages
English (en)
Other versions
KR20120068744A (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 KR20120068744A publication Critical patent/KR20120068744A/ko
Application granted granted Critical
Publication of KR102007532B1 publication Critical patent/KR102007532B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

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)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)

Abstract

본 발명은 마이크로프로세서 카드 등과 같은 하드웨어 보안 모듈(1000) 내에 컴파일된 프로그램의 디버깅 분야에 관한 것이다.
본 발명에 따른 모듈은 마이크로프로세서(1300) 및 하나의 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행될 수 있는 컴파일된 프로그램(1220)을 포함한다.
그 컴파일된 프로그램은 적어도 하나의 디버깅 명령어(ID1-ID6)를 포함하고 그 명령어의 실행 여부가 상기 동작의 수행을 변경하지는 않는다.
그리고, 그 하드웨어 보안 모듈은 컴파일된 프로그램의 실행시에 디버깅 명령어를 억제 또는 활성화하는 수단(1230)을 포함한다.

Description

선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법{HARDWARE SECURITY MODULE WITH MEANS TO SELECTIVELY ACTIVATE OR INHIBIT DEBUGGING AND CORRESPONDING DEBUGGING METHOD}
본 발명은, 프로그램 또는 전산 애플리케이션을 디버깅(debugging)하는 분야에 관한 것이며, 특히 하드웨어 보안 모듈(HSM 또는 hardware security module) 등과 같이 폐쇄된 환경의 경우에 프로그램 또는 전산 애플리케이션을 디버깅(debugging)하는 분야에 관한 것이다.
본 발명은 특히 디버깅 프로세스 및 그러한 디버깅을 위하여 준비된 하드웨어 보안 모듈에 관한 것이다. 그러한 하드웨어 보안 모듈은 마이크로프로세서 카드 또는 스마트카드(예를 들어 SIM 카드 등의 보안화 된 모듈을 지닌 카드), 마이크로프로세서를 갖는 보안화된 USB 키(key), 생체 여권의 보안화된 모듈 등의 형태를 가질 수 있다.
전산 프로그램은 명령어들-그 명령어들을 연속적으로 실행함에 의하여 프로그래머가 원하는 동작 또는 동작들의 세트의 수행을 가능하게 하는-의 세트를 통합한다.
그 자체로 공지된 방식으로, 전산 프로그램의 디버깅은 버그, 즉 프로그램 기능장애의 원인을 감지, 진단 및 수정하는 것으로 구성된다.
기능장애의 원인은 프로그래밍 에러에 기인할 수도 있으나, 또한 프로그램 코드와 프로그램 실행시 사용가능한 하드웨어 자원 사이의 비호환성 또는 잘못된 제어에도 기인한다.
통상적으로, 전산 프로그램 또는 소프트웨어들은 프로그래밍 언어(원시코드)로 작성되고, 원시코드로부터 디버깅된 후, 소프트웨어 개발을 위한 모든 툴(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 하드웨어 보안 모듈에 요소가 속하였는지 여부에 관계된다.
그러한 장치는 보안화된 모듈(예를 들어 스마트카드)의 외부에서, 컴파일된 프로그램을 사용하고자 하는 "테스트/디버깅" 또는 "구동" 모드를 명령할 수 있게 한다. 따라서, 보안화된 모듈을 개인화할 때(예를 들어 공급자에 의해, 은행원에 의해, 기타 등), 경우에 따른 개인화에 기인한 기능장애의 원인을 파악하기 위하여 디버깅의 설정 상태로 돌아오는 것이 용이하다.
특별한 특성에 따르면, 상기 억제 또는 활성화 수단은 하드웨어 보안 모듈의 메모리에 기억된 상태비트를 포함한다. 그러한 장치는 구현하기에 특히 단순한 것으로 밝혀지는데, 이는 한편으로는 보안화된 모듈(일반적으로 제한된 자원을 갖는) 내에 적은 자원을 요구하기 때문이고, 다른 한편으로는 억제 또는 활성화 수단의 상태를 변경하기에 외부 엔티티로부터의 단순한 기입 명령이 충분할 수 있기 때문이다.
특히, 디버깅 명령어는 상기 상태 비트 함수 조건부 명령어를 포함한다. 다시 한번 언급하자면, 그러한 장치는 본 발명에 따라 억제 또는 활성화를 얻기 위한 복잡성이 적다.
특히, 상기 메모리는 디버깅 명령어의 억제가 확정적이도록 1회 프로그램 가능한 메모리이다.
따라서, 일반적으로 기억된 정보 또는 상태 비트는 초기에 활성화 상태에 해당하는 값을 취하고(따라서 초기에 디버깅을 실시할 수 있도록), 그 후, 메모리의 특성에 근거한 확정적 방식으로, 디버깅 테스트가 끝나는 대로 억제에 해당하는 값을 취한다.
그 장치는, 억제시에 하드웨어 보안 모듈이 확정적으로 그것의 초기 설정 상태를 회복하는 한, 보안의 최상 수준, 즉 그것의 내부기능을 최소로 드러내는 보안수준을 제공한다.
한편 그 정보는 디버깅 명령어를 실행할지 않을지 허가하기 위하여 사전에 호출된 조건부 명령어에서 사용될 수 있다.
특별한 특성에 따르면, 억제 또는 활성화 수단은 보안의 암호화 메커니즘에 의하여 변경되는 것으로부터 보호된다. 한편으로 하드웨어 보안 모듈은 그것의 내부 기능을 최소로 드러내도록 디자인되었고, 다른 한편으로 디버깅 명령어들은 그 내부 기능의 일부분을 드러내는 것을 목적으로 한다는 개념에서, 본 장치는 그 내부 기능의 정보를, 권한없이, 폭로하는 것을 막기 위한 보안의 적절한 수준을 보장할 수 있게 한다.
한 실시예에서, 적어도 하나의 디버깅 명령어가 하드웨어 보안 모듈내에 내부적으로 저장된 파일내에 디버깅 정보를 복사하도록 구성되고, 그 하드웨어 보안 모듈은 외부 엔티티의 요청에 따라, 상기 파일을 전송하도록 구성된다.
그러한 구성은 이어서 "지연된"으로 지칭되고, 특히 ISO 7816 또는 ISO 14443 유형의 리더기와의 단일 접속부를 갖춘 모듈에 대하여 적응된 구동 모드에 해당한다.
실제로, 예를 들어 교환되는 APDU 메시지(ISO 7816)의 경우, 디버깅 정보들은 그것들이 생성되면서 즉시 전송될 수 없는데 이는 APDU 명령에 대한 하나의 응답만이 제공될 수 있고, 테스트 스크립트 내에서 그 결과들을 받기 위하여 디버깅 명령어들과 싱크로된 명령들을 대비하는 것은 복잡할 것이기 때문이다. 그외에, 실행 설정 상태를 생성 설정 상태와 가능한 근접하게 유지하기 위하여, 컴파일된 프로그램을 실행하기 위한 통상적 APDU교환에서의 간섭을 피하는 것이 바람직하다.
내부 파일은 따라서 ISO 7816 링크의 "해방"-그 순간부터 파일은 통신 될 수 있음-을 기다리는 동안 설정 정보들을 임시로 기억하는데 쓰인다.
특히, 상기 내부적으로 저장된 파일은 고정된 길이의 회람목록(circular list) 유형이다. 그 설정은 HSM 모듈의 제한된 메모리 자원의 사용을 더 양호하게 제어할 수 있게 한다.
변형예에 따르면, 하드웨어 보안 모듈은, 컴파일된 프로그램의 실행시에, 하드웨어 보안 모듈에 의해 개시된 통신 채널을 통하여 디버깅 명령어 실행에 기인한 소위 디버깅 데이터를 외부 엔티티로 전송하도록 구성된다.
실제로 그 경우, 모듈에 의해 개시된 채널은 컴파일된 프로그램의 "통상적" 실행을 가능하게 하는 APDU 교환 또는 그와 동등한 것들과 병행될 수 있다. 따라서 그것은 일명 "리얼 타임" 기능 모드에 관한 것인데, 이는 (외부 엔티티 상의) 디버깅 애플리케이션이 디버깅 정보들이 생성됨에 따라 그것들을 회수할 수 있기 때문이다.
예시로서, 디버깅 명령어는 이에 따라 하드웨어 보안 모듈에 의해 생성된 UDP소켓상에 디버깅 데이터를 기입하도록 설정될 수 있다.
본 특별한 설정에서, 본 발명은 또한 비접촉 통신 인터페이스 및 그러한 하드웨어 보안 모듈을 포함하는 이동 전화기를 목적으로 하고, 그 하드웨어 보안 모듈은 상기 비접촉 통신 인터페이스에 접속된 제1 전기 접촉부를 포함하고, 외부 마스터 앤티티에 의해 컴파일된 프로그램 실행의 조정을 전담하는 통신 채널 및 하드웨어 보안 모듈에 의해 개시된 상기 외부 엔티티와의 통신 채널은, 하나는 제1 전기 접촉부를 통한 비접촉 통신 표준에 부합되고, 다른 하나는 하드웨어 보안 모듈의 제2 전기 접촉부를 통한 접촉 통신 표준에 부합된다.
본 발명의 특별한 실시예에 따르면, 억제 또는 활성화 수단은, 억제 상태 이외에, 디버깅 정보들을 내부적으로 저장하기 위한 디버깅 명령어-상기 디버깅 정보들은 상기 디버깅 명령어의 실행에 기인함-의 설정 상태 및 상기 하드웨어 보안 모듈에 의해 개시된 통신 채널을 통하여 상기 디버깅 정보들을 직접적으로 전송하기 위한 디버깅 명령어의 설정 상태에 각각 해당하는 2개의 활성화 상태를 포함할 수 있다.
따라서 HSM 모듈과 외부 엔티티 사이의 접속이 허용할 때 "리얼 타임" 디버깅과 "2단계" 디버깅 사이에서, 예를 들어 디폴트(default)로 전이되는 것이 가능하다. 그 결정은 원하는 상태로 억제/활성화 상태의 변경 명령을 전송함으로써, 하나 또는 다른 하나가 예를 들어 그들 사이의 접속의 충분 또는 불충분을 감지하는데 따라, 일률적으로 외부 엔티티(스크립트 테스트를 갖춘)의, 또는 HSM 모듈 자체의 지배를 받는다.
본 발명의 특성에 따르면, 하드웨어 보안 모듈은 가능한 드러나지 않고 남아 있어야 하는 보안화 된 모듈의 내부 기능에 대하여 디버깅 작업을 보안화 할 수 있게 하면서, 그 하드웨어 보안 모듈이 개시하는 통신 채널 상에 전송된 디버깅 데이터를 암호화하도록 구성될 수 있다.
상관적으로, 본 발명은 또한 마이크로프로세서 및 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행 가능한 컴파일된 프로그램을 포함하는 하드웨어 보안 모듈에서 디버깅하는 프로세스에 관한 것으로서, 그 컴파일된 프로그램은 적어도 하나의 디버깅 명령어를 포함하고 그 디버깅 명령어의 실행 여부는 동작의 수행을 변경하지 않으며, 그 프로세스는 컴파일된 프로그램의 실행시에 디버깅 명령어가 실행되는 활성화 상태와 컴파일된 프로그램의 실행시에 디버깅 명령어가 실행되지 않는 억제 상태 사이에 적어도 하나의 전이 단계를 포함하는 것을 특징으로 한다.
그 디버깅 프로세스는 상기 명시한 HSM 모듈의 장점들과 유사한 장점들을 갖는다. 특히 그것은 프로그램의 구동 시에 성능에 지장을 주지않고 프로그램의 디버깅을 개선할 수 있게 한다.
선택적으로, 그 프로세스는 HSM 모듈의 수단 및 특성들과 관계되는 단계 및 특성들을 포함할 수 있다.
그리고 특히, 하드웨어 보안 모듈에 의하여, 외부 엔티티에 의해 송신된 억제 상태 또는 활성화 상태의 변경 명령을 접수하는 단계가 마련될 수 있다.
다른 특성에 따르면, 그 프로세스는 예를 들어 1회 프로그램 가능한 메모리에 억제 정보를 기입함으로써, 억제 상태 내에 확정적 전이 단계를 포함할 수 있다.
또 다른 특성에 따르면, 그 프로세스는 한 상태에서 다른 상태로의 전이를 허가하기 위한 사전 인증 단계를 포함할 수 있다.
본 발명의 다른 특별성과 장점들은 이하 첨부된 도면을 참조한 상세한 설명에 명시될 것이다:
도 1은 통상적 ISO 7816 접속을 사용하는, 본 발명에 따른 "지연된" 모드의 디버깅 시스템을 도시.
도 2는 도 1의 지연된 모드에서 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 3은 본 발명의 실시예에 따른 디버깅 명령어를 포함하는 컴파일된 프로그램의 단순화된 예(원시 버젼)를 도시.
도 4는 USB 접속을 사용하는, 본 발명에 따른 "리얼 타임" 모드의 디버깅 시스템을 도시.
도 5는 도 4의 리얼 타임 모드에서, 마이크로프로세서 카드와 테스트 장비 사이의 데이터 교환을 도시.
도 6은 NFC 유형의 비접촉 통신 인터페이스를 갖춘 이동 전화기에 내장된 하드웨어 보안 모듈을 위하여 본 발명을 구현하는 구성을 도시.
본 발명은 모든 유형의 하드웨어 보안 모듈에 적용된다. 도시를 위한 필요성에 의해서만, 마이크로프로세서 카드(또는 스마트카드)의 후속에 대하여 참조 되었다. 하드웨어 모듈은 예를 들어 보안 관련 표준에 그것이 부합될 때, 예를 들어 공통 범주 및/또는 "FIPS 140"(Federal Information Processing Standard) 표준에 부합될 때 보안 모듈이라 칭한다.
마이크로프로세서 카드들은 외부 엔티티의 명령에 따라 실행될 수 있는 컴파일된 프로그램들을 포함한다. 실제로, 마이크로프로세서 카드들은, 외부 리더(reader)가 카드를 실행하라는 명령을 전송하는, 마스터/슬레이브 관계(클라이언트/서버 모드와 유사)에서 기재된다. 그 실행은 그것이 포함하는 컴파일된 프로그램의 실행을 야기하고, 일단 실행이 종료되면 리더로 응답을 제공한다.
이하 명시된 바와 같이, 본 발명의 실시예들은 마이크로프로세서 카드 단계에서, 상기 프로그램의 주된 작업 또는 기능을 실현하게 되어 있는 명령어에 더하여, 디버깅 명령어가 보존되는 그러한 컴파일된 프로그램을 구동한다.
디버깅 명령어들은 테스트 단계에서 실행된다. 이에 따라 마스터 테스트 프로그램 또는 스크립트가, 마이크로프로세서 카드에 대하여 명령을 송신함으로써, 컴파일된 프로그램의 실행을 조정하게 되도록 일반적으로 설계된 것이다. 테스트 스크립트는 그것의 어떤 파라미터들이 테스트를 정의하도록 고정되고 공지된 임시 생성 프로그램일 뿐이다.
디버깅 명령어들은 그러면 컴파일된 프로그램의 실행시에 실행되고, 디버깅 소프트웨어(테스트 스크립트를 포함하는 소프트웨어와는 다를 수 있는)에, 생성의 실행 환경에서, 여기서는 마이크로프로세서 카드의 운영시스템에서, 컴파일된 프로그램의 그러한 실행과 관련된 적절한 디버깅 정보들을 제공한다.
이와 같이 디버깅 명령어로 얻은 결과들을 예측 결과들과 비교하는 것이 가능하다.
테스트 스크립트는 예를 들어 마이크로프로세서 카드 리더를 갖춘 외부 장비에서, 마스터/슬레이브 모드에 따라, 통상적 프로토콜의 도움으로, 예를 들어 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)을 갖는 연결 상에 구별 없이 실시될 수 있음을 주지해야 한다.

Claims (15)

  1. 마이크로프로세서 및 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행 가능하고 메모리 장치에 저장된 컴파일된 프로그램을 포함하는 하드웨어 보안 모듈로서,
    상기 컴파일된 프로그램은 적어도 하나의 디버깅 명령어를 포함하고, 상기 적어도 하나의 디버깅 명령어의 실행 여부에 관계없이 상기 동작의 결과 또는 기능이 변하지 않고,
    상기 하드웨어 보안 모듈은 상기 컴파일된 프로그램의 실행 시에 디버깅 명령어를 억제하거나 활성화하기 위해 내부에 저장된 상태 플래그를 갖는 메모리로부터 상기 상태 플래그를 읽도록 구성되고,
    상기 디버깅 명령어를 억제하거나 활성화하는 상기 상태 플래그는:
    상기 디버깅 명령어를 억제하는 억제 상태에 대응하는 제1값,
    상기 적어도 하나의 디버깅 명령어가, 상기 디버깅 명령어의 실행에 기인하는 디버깅 정보가 외부 엔티티로 직접적으로 전송되지 않고, 내부적으로 상기 메모리 장치에 저장되게 하는 제1 활성화 상태에 대응하는 제2값 - 상기 디버깅 정보는 상기 외부 엔티티의 요청에 의해 나중에 상기 외부 엔티티로 전송됨 -, 및
    상기 적어도 하나의 디버깅 명령어가, 상기 하드웨어 보안 모듈에 의해 개시된 통신 채널을 통하여 상기 디버깅 정보가 상기 외부 엔티티로 직접적으로 전송되게 하는 제2 활성화 상태에 대응하는 제3값
    중 어느 하나의 값을 가질 수 있는, 하드웨어 보안 모듈.
  2. 제1항에 있어서, 상기 억제 상태, 상기 제1 활성화 상태, 또는 상기 제2 활성화 상태는 상기 외부 엔티티로부터 접수된 명령에 응답하여 변경가능한, 하드웨어 보안 모듈.
  3. 삭제
  4. 제1항에 있어서, 상기 디버깅 명령어는 상기 상태 플래그의 함수에 따라 조건적인 조건부 명령어를 포함하는, 하드웨어 보안 모듈.
  5. 제4항에 있어서, 상기 상태 플래그를 저장하는 상기 메모리는 상기 디버깅 명령어의 억제가 확정적이도록 1회 프로그램 가능한 메모리인, 하드웨어 보안 모듈.
  6. 제1항에 있어서, 상기 하드웨어 보안 모듈은 보안용 암호 메커니즘에 의하여 변경되는 것으로부터 보호되는, 하드웨어 보안 모듈.
  7. 제1항에 있어서, 상기 적어도 하나의 디버깅 명령어는 디버깅 정보를 하드웨어 보안 모듈의 메모리 장치 내에 저장된 파일 내에 복사하도록 구성되고, 상기 하드웨어 보안 모듈은, 상기 외부 엔티티의 요청이 있을 때, 상기 파일을 상기 외부 엔티티로 전송하도록 구성되는, 하드웨어 보안 모듈.
  8. 제7항에 있어서, 상기 파일은 고정된 길이를 갖는 회람 목록(circular list)인, 하드웨어 보안 모듈.
  9. 삭제
  10. 삭제
  11. 마이크로프로세서 및 동작을 수행하기 위하여 상기 마이크로프로세서에 의해 실행 가능하고 하드웨어 보안 모듈의 메모리 장치에 저장된 컴파일된 프로그램을 갖는 하드웨어 보안 모듈에 의해 수행되는 디버깅 방법으로서,
    상기 컴파일된 프로그램은 적어도 하나의 디버깅 명령어를 포함하고, 상기 적어도 하나의 디버깅 명령어의 실행 여부에 관계없이 상기 동작의 결과 또는 기능이 변하지 않고,
    상기 방법은,
    상기 메모리 장치에서 상태 플래그를 읽는 단계 및 상기 상태 플래그의 값을 제1값, 제2값 및 제3값 각각과 비교하는 단계 중 적어도 하나의 단계를 포함하고,
    상기 상태 플래그가 상기 제1값과 동일한 경우, 상기 컴파일된 프로그램 실행 시에 상기 디버깅 명령어가 실행되지 않도록 상기 디버깅 명령어가 억제되는 억제 상태에서 동작하고,
    상기 상태 플래그가 상기 제2값과 동일한 경우, 상기 컴파일된 프로그램의 실행 시에 상기 디버깅 명령어가 실행되고, 상기 디버깅 명령어의 실행에 기인하는 디버깅 정보가 외부 엔티티로 직접적으로 전송되지 않고 내부적으로 저장되도록 하는 제1 활성화 상태에서 동작하고,
    상기 상태 플래그가 상기 제3값과 동일한 경우, 상기 컴파일된 프로그램의 실행 시에 상기 디버깅 명령어가 실행되고, 상기 적어도 하나의 디버깅 명령어의 실행에 기인하는 상기 디버깅 정보가 상기 하드웨어 보안 모듈에 의해 개시된 통신 채널을 통해 상기 외부 엔티티로 직접적으로 전송되도록 하는 제2 활성화 상태에서 동작하는, 디버깅 방법.
  12. 제11항에 있어서, 하드웨어 보안 모듈에 의하여, 상기 외부 엔티티에 의해 전송된 억제 또는 활성화 상태의 변경 명령을 접수하는 단계를 더 포함하는 디버깅 방법.
  13. 제11항에 있어서, 1회 프로그램 가능한 메모리에 억제 정보를 기입하는 것에 의하여 상기 억제 상태로 확정적으로 전이하는 단계를 더 포함하는 디버깅 방법.
  14. 제11항에 있어서, 하나의 상태에서 다른 상태로의 전이를 허용하기 위한 사전 인증 단계를 더 포함하는 디버깅 방법.
  15. 비접촉 통신 인터페이스 및 제1항에 따른 하드웨어 보안 모듈을 포함하는 이동 전화기로서,
    상기 하드웨어 보안 모듈은 상기 비접촉 통신 인터페이스에 접속된 제1 전기 접촉부를 포함하고,
    외부 마스터 엔티티에 의해 컴파일된 프로그램 실행의 조정 전용의 통신 채널 및 상기 하드웨어 보안 모듈에 의해 개시된, 상기 외부 엔티티와의 통신 채널 중 하나는 상기 제1 전기 접촉부를 통한 비접촉 통신 표준에 부합되고, 다른 하나는 상기 하드웨어 보안 모듈의 제2 전기 접촉부를 통한 접촉 통신 표준에 부합되는, 이동 전화기.
KR1020110137737A 2010-12-17 2011-12-19 선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법 KR102007532B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1060722 2010-12-17
FR1060722A FR2969334B1 (fr) 2010-12-17 2010-12-17 Module materiel de securite et procede de debogage d'un tel module

Publications (2)

Publication Number Publication Date
KR20120068744A KR20120068744A (ko) 2012-06-27
KR102007532B1 true KR102007532B1 (ko) 2019-08-05

Family

ID=44310103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110137737A KR102007532B1 (ko) 2010-12-17 2011-12-19 선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법

Country Status (4)

Country Link
US (1) US9323646B2 (ko)
EP (1) EP2466471A1 (ko)
KR (1) KR102007532B1 (ko)
FR (1) FR2969334B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI504229B (zh) * 2010-05-27 2015-10-11 Mstar Semiconductor Inc 支援電子錢包功能之行動裝置
FR2969334B1 (fr) * 2010-12-17 2013-01-25 Oberthur Technologies Module materiel de securite et procede de debogage d'un tel module
US8925077B2 (en) * 2013-03-11 2014-12-30 Bluebox Security, Inc. Mobile devices with inhibited application debugging and methods of operation
US9092562B2 (en) * 2013-05-16 2015-07-28 International Business Machines Corporation Controlling access to variables protected by an alias during a debugging session
GB2527088B (en) * 2014-06-11 2021-07-14 Advanced Risc Mach Ltd Executing debug program instructions on a target apparatus processing pipeline
FR3038129B1 (fr) * 2015-06-29 2017-07-28 Oberthur Technologies Element securise memorisant un programme de test, terminal comprenant un tel element securise, systeme et procede associes
KR102426701B1 (ko) * 2015-12-16 2022-07-29 삼성전자주식회사 전자 장치 및 그의 동작 방법
CN106776308B (zh) * 2016-12-06 2020-04-17 福州高图信息技术有限公司 一种基于Uboot的电子产品故障调试方法及系统
CN113297091B (zh) * 2021-06-18 2022-04-29 海光信息技术股份有限公司 SoC芯片的调试方法、装置及SoC芯片
CN113672555B (zh) * 2021-07-13 2024-04-19 杭州中天微系统有限公司 处理器核、处理器、片上系统和调试系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037887A1 (en) * 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4802165A (en) * 1986-10-08 1989-01-31 Enteleki, Inc. Method and apparatus of debugging computer programs
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US6567933B1 (en) * 1999-02-19 2003-05-20 Texas Instruments Incorporated Emulation suspension mode with stop mode extension
FR2793327B1 (fr) * 1999-05-07 2001-07-06 Thomson Multimedia Sa Procede de recuperation d'informations de fonctionnement ou d'erreur de modules logiciels d'un logiciel embarque dans un appareil numerique et appareil numerique associe
US6684348B1 (en) * 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US20020099953A1 (en) * 2000-11-30 2002-07-25 International Business Machines Corporation Debugging of chipcards
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
CN101088070B (zh) * 2004-12-31 2011-07-27 英特尔公司 远程记录机制的方法与系统
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
JP2006268727A (ja) * 2005-03-25 2006-10-05 Seiko Epson Corp 集積回路装置、デバッグシステム、マイクロコンピュータ及び電子機器
FR2910746B1 (fr) * 2006-12-20 2009-01-23 Smart Packaging Solutions Sps Interface de communication radiofrequence locale entre un telephone mobile et un lecteur sans contact
US20090082008A1 (en) * 2007-09-21 2009-03-26 Per Thorell Mobile Phone Code Debugging Method and Apparatus
KR101104166B1 (ko) * 2009-11-26 2012-01-12 애니포인트 미디어 그룹 컴퓨팅 장치 및 미디어 재생 장치를 이용한 사용자 애플리케이션 테스트 시스템 및 테스트 방법
FR2969335B1 (fr) * 2010-12-17 2013-07-05 Oberthur Technologies Module materiel de securite et procede de traitement dans un tel module
FR2969334B1 (fr) * 2010-12-17 2013-01-25 Oberthur Technologies Module materiel de securite et procede de debogage d'un tel module

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037887A1 (en) * 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing

Also Published As

Publication number Publication date
FR2969334B1 (fr) 2013-01-25
EP2466471A1 (fr) 2012-06-20
FR2969334A1 (fr) 2012-06-22
US9323646B2 (en) 2016-04-26
US20120159447A1 (en) 2012-06-21
KR20120068744A (ko) 2012-06-27

Similar Documents

Publication Publication Date Title
KR102007532B1 (ko) 선택적으로 디버깅을 활성화 또는 억제하기 위한 수단을 갖는 하드웨어 보안 모듈 및 해당 디버깅 방법
KR101950512B1 (ko) 하드웨어 보안 모듈 및 그러한 모듈 내에서의 처리 방법
JP6585072B2 (ja) 不揮発性メモリ又はセキュア素子へのデータの読み込みを安全に行うこと
WO2011134207A1 (zh) 软件保护方法
JP2006522387A (ja) コンピュータソフトウェアの実行を管理するためのシステムおよび方法
CN106326691B (zh) 加解密功能的实现方法、装置及服务器
CN107111728A (zh) 安全密钥导出功能
CN111786820A (zh) 固件更新方法、装置及网络设备
JP2009237930A (ja) アプリケーション移動システム、アプリケーションの移動方法およびプログラム
CN106657551A (zh) 一种防止移动终端解锁的方法及系统
CN113127896B (zh) 基于独立加密芯片的数据处理方法及设备
US10250563B2 (en) Secure device and proxy for secure operation of a host data processing system
JP5466277B1 (ja) 携帯型記憶装置
CN116048561A (zh) 存储卡的固件升级方法、计算机设备及可读存储介质
JP2006338311A (ja) 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
CN111125791A (zh) 一种内存数据的加密方法、装置、cpu芯片及服务器
JP2005165493A (ja) シェアードコンピュータ、その制御プログラム、および記録媒体
EP3244340A1 (en) Method for securely running an application
JP7287844B2 (ja) 情報処理装置、セキュリティ強度の切替方法、及びプログラム
Torr et al. Multos and multos application development
US20130103953A1 (en) Apparatus and method for encrypting hard disk
JP5466276B1 (ja) 携帯型記憶装置
CN117313124A (zh) 一种固件安全处理系统及加密、解密方法
KR20240077747A (ko) Plc 및 plc의 제어방법
JP5466278B1 (ja) 携帯型記憶装置

Legal Events

Date Code Title Description
AMND Amendment
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant