KR20010074881A - 모놀리식 보안모듈의 센시티브 정보처리를 안전하게행하는 방법, 및 그와 관련된 보안모듈 - Google Patents

모놀리식 보안모듈의 센시티브 정보처리를 안전하게행하는 방법, 및 그와 관련된 보안모듈 Download PDF

Info

Publication number
KR20010074881A
KR20010074881A KR1020017002643A KR20017002643A KR20010074881A KR 20010074881 A KR20010074881 A KR 20010074881A KR 1020017002643 A KR1020017002643 A KR 1020017002643A KR 20017002643 A KR20017002643 A KR 20017002643A KR 20010074881 A KR20010074881 A KR 20010074881A
Authority
KR
South Korea
Prior art keywords
information
security module
processing
data
blocking
Prior art date
Application number
KR1020017002643A
Other languages
English (en)
Other versions
KR100710817B1 (ko
Inventor
하자드미첼
Original Assignee
미쉘 꼴롱브
뷜 쎄뻬8
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 미쉘 꼴롱브, 뷜 쎄뻬8 filed Critical 미쉘 꼴롱브
Publication of KR20010074881A publication Critical patent/KR20010074881A/ko
Application granted granted Critical
Publication of KR100710817B1 publication Critical patent/KR100710817B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • 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
    • 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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3672Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes initialising or reloading thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 모놀리식 구조 보안모듈의 센시티브 정보를 안전하게 처리하는 방법에 관한 것으로, 상기 모듈은 데이터 처리수단(9) 및 상기 처리수단에 의해 처리되는 데이터를 저장하는 수단(3,4)을 포함한다. 본 발명은 저장수단에서 센시티브 정보를 선택하는 단계; 상기 정보의 특정 보존 조건을 결정하는 단계; 정보를 스캔하여 처리수단에 전송하는 단계; 정보가 처리되는 동안, 상기 특정조건이 수행되는 것을 제어하는 단계; 상기 특정 조건이 수행되지 않는 경우에 정보처리를 차단하는 단계를 포함하는 것을 특징으로 한다. 또한 본 발명은 이와 관련된 보안모듈에 관한 것이다.

Description

모놀리식 보안모듈의 센시티브 정보처리를 안전하게 행하는 방법, 및 그와 관련된 보안모듈{METHOD FOR MAKING SECURE A SENSITIVE INFORMATION PROCESSING IN A MONOLITHIC SECURITY MODULE, AND ASSOCIATED SECURITY MODULE}
용어 모놀리식 "보안모듈"은 단일 실리콘 칩에 의해 구성되고 콘테이너(container)에 싸여진 전자회로를 포괄하며, 상기 회로는 중앙처리기, 적어도 하나의 메모리, 및 입출력 회로, 인터럽트 콘트롤러 등의 주변기기를 포함한다. 보안모듈은 집적회로의 형태 또는 예컨대 금융 분야, 이동 무선전화기, 요금지불 텔레비전 디코더, 의료, 수송 등에서 사용되는 칩카드 형의 휴대품의 형태를 취할 수 있다.
본 발명에 의한 보안모듈은 적어도 하나의 마이크로 프로세서, 프로그램을 포함하는 메모리 및 외부와 통신하는 입출력 수단을 포함한다. 상기 메모리는 회로의 제조시 ROM형의 메모리로 기입될 수 있거나 그 후에 프로그래머블(programmable) 메모리로 기입될 수 있는 적어도 하나의 애플리케이션 프로그램을 포함한다. 일반적으로, 상기 프로그램은 마이크로 프로세서에 의해 실행되는 인스트럭션들을 포함하고, 상기 인스트럭션들은 ROM 즉 비휘발성 메모리로부터 어드레스 버스와 결합된 데이터 버스를 통해 마이크로 프로세서로 전송된다. 상기 버스 경로가 지나치게 길면, 회로 제조업자들은 2진 신호가 그 전체 길이를 따라 정확하게 전달되도록 버스의 단부에 증폭회로를 위치시킨다.
증폭회로는 증폭회로가 외부 간섭에 영향 받기 쉽게 만드는 고입력 임피던스를 필요로 한다. 증폭회로는, 기본적인 파티클 방사선을 조사하면, 임의의 충분한 시간동안 포화될 수 있고, 입력되는 데이터가 무엇이든 간에, 버스를 통해 단지 0볼트 또는 + Vcc, 즉 2진수 "0" 또는 "1"을 방출한다. 알파선, X선, 또는 상기 증폭기로부터의 "0" 또는 "1"의 원하는 출력에 따라 정극성이나 부극성으로 대전된 이온에 의해 상기 방사선이 구성될 수 있다.
인증된 카드를 소유하고 있는 해커는 서비스를 오용하기 위해 보안장치를 침입하려고 시도할 수 있다: 그러면, 해커는 그 동작을 간섭하려고 보안모듈에 이와 같은 방사선을 조사할 것이다. 조사 소스는 단지 하나 또는 여러개의 인스트럭션의 실행을 간섭하기에 충분히 짧을 수 있다. 이 간섭은 프로그램의 메모리에서 독출된값을 방사선의 조사에 의해 부여되는 다른 값으로 대체할 수 있다. 이에 의해, 프로그램 플로우가 상이하고, 해커는 이를 유리하게 사용할 수 있다.
이런 종류의 공격에 대항하는 첫 번째 방법은 방사선 센서를 설치하는 것이다: 이 센서는 비정상의 방사선을 감지하자마자, 프로그램에 의해 독출될 수 있는 플래그를 설정한다. 이와 같은 해결책은 유럽 특허 2 688 274호의 미국 등가물인 미국 특허 5.465.349호에 개시되어 있다. 그러나, 해커들은 연구수단을 개선하여 지극히 섬세한 방사선의 조사기를 사용하고 있다. 상기 증폭기 또는 증폭기 군에서 방사선을 조사함으로써, 상기 센서들은 더 이상 부정수단을 검출하지 않는다. 비록 이 반격이 마이크로포인트(micropoint)에 의해 간섭을 검출할 수 없더라도, 어떤 경우에도 비정상적인 것이 검출되지 않은 것처럼 프로그램이 실행하도록 센서의 독출 시퀀스를 방해할 수 있다.
본 발명은 마이크로 프로세서를 포함하고, 보호되어야 하는 프로그램을 실행하도록 고안된 모놀리식 보안모듈의 보안성을 증가시키는 방법 및 장치에 관한 것이다. 보호되어야 하는 프로그램은 인스트럭션(instruction)의 세트이고, 상기 인스트럭션의 실행은 사용자의 권한, 바뀐 데이터의 신뢰도, 트랜잭션(transaction)의 확실성 및 타당성, 및 일반적으로 사용자의 권리와 의무가 제어되는 애플리케이션 데이터 처리 등의 기준을 충족시켜야 한다. 본 발명의 목적은 본래 공지된 종래의 제어를 회피함으로써 센시티브(sensitive) 데이터를 액세스하는 부정 외부 간섭을 검출하여 대항하는 수단을 가진 보안모듈을 제공하는 것이다.
도1은 종래 마이크로 프로세서 시스템의 도면을 나타낸다.
도2는 모토로라 6850 프로세서의 인스트럭션 세트를 나타낸다.
도3은 본 발명에 따른 마이크로 프로세서의 변형된 인스트럭션 세트를 나타낸다.
도4는 본 발명의 따른 변형된 회로의 블록도를 나타낸다.
도5는 진보된 본 발명에 따른 변형된 회로의 블록도의 일부를 나타낸다.
도6은 외부 간섭을 검출가능하게 하는 인디케이터를 업데이트하고 수정하는단계들을 구비한, 프로그램 메모리의 일부를 나타낸다.
도7은 변형된 본 발명의 변형에 따른 프로그램 메모리의 일부를 나타낸다.
본 발명의 목적은 인스트럭션들 및 메모리와 마이크로 프로세서 사이의 데이터의 전송에서의 변화를 검출하는 것이다. 본 발명이 해결하고자 하는 문제는 마이크로컨트롤러의 버스를 통해 바뀐 신호들의 값을 수정함으로써 프로그램의 플로우를 방해하고자 하는 외부 간섭의 검출이다.
상기 문제는, 정보가 상기 모듈을 통해 적절히 전달되는 지, 및 상기 프로그램이 완전히 실행되었는지를 상기 보안모듈이 검증하는 측정기를 제공함으로써 본 발명에 의해 해결될 수 있다. 그렇지 않으면, 프로그램의 정상적인 실행이 방해된다. 또한, 상기 모듈은 불법으로 사용되는 것을 검출하기 때문에, 모듈의 또 다른사용이 금지된다.
보다 명확하게, 본 발명은 모놀리식 구조를 갖는 보안모듈의 센시티브 정보의 처리를 보호하는 방법으로서, 상기 모듈은 정보 처리 수단 및 상기 처리수단에 의해 처리될 수 있는 정보를 저장하는 단계를 포함하고,
- 저장 수단에서 센시티브 정보를 선택하는 단계;
- 상기 정보의 보존을 위한 특정 조건을 결정하는 단계;
- 상기 정보를 독출하고 그 정보를 처리 수단에 전송하는 단계;
- 상기 특정 조건이 만족되는 정보의 처리동안 검증하는 단계; 및
- 상기 특정 조건이 만족되지 않으면 그 정보의 처리를 차단하는 수단을 포함하는 것을 특징으로 한다.
본 발명의 다른 특징 및 이점은 첨도 도면을 참조하여, 바람직하지만 한정되지 않는 여러 가지의 실시예에 기술될 것이다.
도1에는 마이크로 프로세서 시스템의 기입 다이어그램을 나타낸다. 상기 다이어그램은 인터에디션(InterEdition)에 의해 출판된 앤드류 타넨바움(Andrew Tanenbaum)의 컴퓨터 아키텍쳐(Architecture de l'Ordinateur)로부터 발췌한 것이다. 상기 시스템은, 본래 공지된 방법에서는, 다음 소자들: 마이크로 프로세서(31), RAM(32), 실행가능한 프로그램을 포함하는 프로그램 메모리 EEPROM(33), 및 입출력 수단(34)을 포함하고 있다. 상기 각종 소자들은 두 개의 버스, 즉 어드레스 버스(35) 및 데이터 버스(36)에 의해 접속되어 있다. 일반적으로 클록신호들, 독출 및 기입 신호들 등의 신호들의 세트를 운반하는 버스를 "컨트롤 버스"로 칭한다.
실행된 동작에 따라, 정보수신모드 또는 정보송신모드에 상기 소자들이 있을 수 있다. 마이크로 프로세서가 임의의 어드레스에서 1바이트의 인스트럭션을 독출하면, 상기 어드레스에 대응하는 바이트를 구성하는 ROM의 8개의 셀들이 데이터 버스를 통해 상기 셀들에 기입된 값을 송신하며, 상기 데이터 버스는 상기 셀들을 마이크로 프로세서에 전송하고, 수신모드에 있다. 이와 반대로, 마이크로 프로세서가 데이터를 메모리에 전송하면, 데이터 버스는 송신모드에 있다. 상기 구성의 내부 동작은 프랑스 특허 2 461 301호의 미국 등가물인 미국 특허 4.382.279호에 상세히 기재되어 있다.
각 마이크로 프로세서는 특정 인스트럭션 세트를 갖는다. 모토로라 6805 마이크로 프로세서는 8비트 데이터를 내부적으로 처리한다. 예컨대, "마이크로컴퓨터/마이크로 프로세서 사용자 매뉴얼" 문서에서 발췌한 M6805 및 M1468805 마이크로 프로세서의 인스트럭션 세트를 도2에 나타낸다. 이와 같은 형태의 마이크로 프로세서용 인스트럭션은 8비트로 부호화되기 때문에, 256가지의 상이한 코드가 있지만, 그들 모두가 마이크로 프로세서에 의해 실행가능한 것은 아니다. 어떤 코드는 구현되지 않고, 도2의 테이블에 있는 빈칸, 예컨대 코드:90H, 31H, 41H, 51H, 61H, 71H, 91H, 23H, 24H, 25H, 26H, 27H, 28H, 29H, 93H, 94H 등에 해당한다. 마이크로 프로세서가 구현되지 않는 동작코드를 독출하면, 그 실행이 보증되지 않는다. 따라서, 마이크로 프로세서는 아무 처리도 하지 않고 다음 인스트럭션으로 점프할 수 있다.
도2에 나타낸 바와 같이, 모토로라 6805 마이크로 프로세서의 인스트럭션 세트중 코드"00"는 인스트럭션 "BRSET0"에 대응하고, 코드"FF"는 인덱스트(indexed) 인스트럭션 "STX"에 대응한다. 인스트럭션 "BRSET0"는 프로그램 메모리의 3바이트를 차지하고 10 클록주기 후에 실행되며; 인스트럭션 "STX"는 1바이트를 차지하고 5 클록주기 후에 실행된다. 마이크로 프로세서는 동시에 실행되는 프로그램 메모리의 인스트럭션의 어드레스를 포함하는 서수의(ordinal) 카운터를 갖는다. 상기한 바와 같이, 해커가 버스를 통해 방사선을 보내면, 하나 또는 다른 인스트럭션이 프로그램 메모리에서 실제로 독출되는 인스트럭션 대신에 실행된다. 인스트럭션 "BRSET0"의 경우에는, 실행후에, 마이크로 프로세서의 서수의 카운터가 3단위 증가하기 때문에 프로그램 메모리의 3바이트 이전을 가리킨다. 인스트럭션 "STX"에서, 서수의 카운터는 1단위 증가된다. BRSET0의 실행에 필요한 10 클록 스트록(stroke)동안 방사선을 조사함으로써, 마이크로 프로세서는 "00"에서 3바이트를 독출하고 이를 "바이트 00의 비트 0이 1에 있는지를 테스트하여 그 경우에 점프한다"로 번역할 것이다. 상기 방사선 때문에, 어드레스 00에서의 바이트의 값 00이 독출되어, 점프가 발생하지 않고 상기 프로그램은 다음 인스트럭션을 계속한다. 따라서, 특정 수의 클록 펄스동안 상기 회로에 방사선을 조사함으로써, 해커는 연속하는 3바이트 점프시 임의로 서수의 카운터를 증가시킬 수 있고, 프로그램 메모리에 기입된 시퀀스의 실행을 막을 수 있다. 인텔사와 각종 다른 회사에 의해 제조된 8051계로부터의 마이크로 프로세서에 있어서, 2진값이 00인 동작코드는 "no 동작"을 의미하는 인스트럭션 NOP에 대응한다. 상기 인스트럭션은 단지 1바이트만을 사용한다. 이 경우, 해커는 바이트마다 서수의 카운터를 임의로 증가시킨다.
제 1 해결책은, 코드가 "00" 또는"FF"인 인스트럭션의 독출시 마이크로 프로세서의 정상적인 동작을 방해하는 것을 포함한다. 상기 모듈은 정지하게 되고: 상기 모듈의 파워다운 다음의 파워업이 마이크로 프로세서를 재개시킬 수 있다. 도3은 본 발명에 의한 변형된 인스트럭션 세트를 나타낸다. "00" 또는 "FF"에 대응하는 새로운 인스트럭션은 FRD로 단축된 "FRAUD"라고 불리운다. 도2에 나타낸 정상적인 인스트럭션과 비교하여, 상기 컬럼의 일부는 상기 코드 "00" 또는 "FF"가 더 이상 실행가능한 인스트럭션에 대응하지 않도록 반전된다. 인스트럭션 "BRSET0"을 포함한 컬럼 넘버 "0"은 컬럼 2로 전송되고; 인스트럭션 "STX"를 포함한 컬럼 넘버"F"는 컬럼 A로 전송된다. 상기 컬럼들은 상기 인스트럭션들의 동작 코드의 4개의 가장 중요한 비트를 디코드하는 소자들에서, 회로의 마스크를 변형함으로써 전송된다. 또한 동작코드의 4개의 가장 덜 중요한 비트를 디코드하는 것을 수정할 수 있지만, 이 마이크로 프로세서 모델에는 필요하지 않다.
상기 프로그램은 "FRAUD" 인스트럭션을 포함하지 않는다. 애플리케이션 프로그램을 작성하는 프로그래머는 그의 프로그램에 이와 같은 인스트럭션을 구현하지 않도록 주의한다.
도3에 나타낸 바와 같이, 상기 해결책은 마이크로 프로세서에 의해 인식될 수 있는 인스트럭션에 대응하지 않는 모든 동작 코드들로 일반화될 수 있다. 이에 의해, 새로운 "FRAUD" 인스트럭션은 사용되지 않는 모든 코드, 예컨대 01H, 02H, 03H, 04H, 05H, 06H, 0EH, 12H, 14H, 15H, 16H, 17H, 18H, 19H, 1AH 등에서 FFH까지 동일한 "FRAUD"를 실행하는 47개의 상이한 모든 동작 코드에 할당된다.
또한, 상기 인터럽션은 마이크로 프로세서로 마이크로 프로그램된 인스트럭션을 트리거한다. 이런 종류의 인스트럭션은 코드를 비휘발성 메모리에 기입하는 종류의 비가역적인 인스트럭션을 실행한다. 다음 파워업이 발생하면, 리셋 관리회로가 비휘발성 메모리의 상기 코드값을 테스트하고 마이크로 프로세서의 동작을 차단한다. 상기 마이크로 프로그램된 인스트럭션은 마이크로 프로세서의 심장부에 위치되는 이점을 갖기 때문에 그 실행을 방해하거나 버스상에서 행해지는 조사에 의해 변경할 수 없다. 따라서, 마이크로 프로그램된 차단 인스트럭션의 실행을 검출할 수 없다.
버스에 있는 데이터의 방해를 검출하는 제 2 해결책은 버스의 일단에서 타단까지 보존 검사를 구현하는 것이다. 도4는 버스 보존 콘트롤러를 갖는 기입 다이어그램을 나타낸다.
데이터버스(1)의 8개의 라인에 PARITY(2)로 표시되고, 논리 상태가 데이터 버스에 존재하는 8개의 2진 정보로부터 계산되는 패리티 값에 대응하는 9번째 라인이 부가되어 있다. 상기한 바와 같이, 프로그램의 각종 인스트럭션의 동작 코드는 ROM(3)이나 비휘발성 프로그래머블 메모리(4), 예컨대 EEPROM으로부터 독출된다. 메모리 셀로부터 출력되는 신호는, 그 값이 상기 셀에 의해 저장된 2진 데이터이고, 데이터 버스를 통해 마이크로 프로세서에 도달하기에는 너무 약하다. 이 신호들이 마이크로 프로세서에 도달하기 위해, 증폭회로(5,6)가 메모리 EEPROM과 ROM의 셀 바로 뒤와 버스 앞에 설치된다. 이 두 회로는 그 출력을 활성화시키는 콘트롤 입력 E를 갖는다. 상기 신호 E가 "1"이면, 8개의 출력은 액티브되지 않고 고임피던스 상태에 있게 된다. 상기 EEPROM은 독출 및 기입 액세스가능하고, 증폭회로(5)는 양방향이다. 데이터 전송방향은 READ/WRITE 콘트롤 라인(18)을 통해 마이크로 프로세서에 의해 제어된다.
메모리 셀에서 독출된 데이터의 보존을 검사하는 수단은 패리티 발생기(7,8,11), 비교기(12) 및 마이크로 프로세서에 접속된 "NMI(non-maskable interrupt)" 입력으로 구성된다. 패리티 발생기(7,8,11)는 8개의 입력에 있는 데이터의 패리티 값을 산출한다. 예컨대, 국립 반도체(National Semiconductor)에 의해 제조된 회로 74HC280은 집적회로의 형태로 이용가능한 패리티 발생기이다. 그 구성은 모놀리식 회로로 충분히 집적될 수 있다. 또한, 상기 패리티 발생기는 상태가 8개의 입력에 주어지는 데이터의 패리티 값을 나타내는 출력 라인 Q 및 0볼트가 인가되는 경우에 상기 출력 Q를 활성화시키는 컨트롤 라인 E를 갖는다. 이 경우, 출력 라인 Q는, +Vcc에서의 입력의 수가 짝수이면 0이고, +Vcc에서의 입력의 수가 홀수이면 +Vcc이다. +Vcc가 입력 E에 인가되면, 출력 라인 Q는 고임피던스 상태에 있게 된다. 패리티 발생기(7)는 EEPROM에서 선택된 데이터의 패리티를 계산하고, 패리티 발생기(8)는 ROM에서 선택된 데이터의 패리티를 계산하며, 패리티 발생기(11)는 마이크로 프로세서에 있는 패리티를 계산한다.
또한, 마이크로 프로세서(9)는 데이터를 통해 이동하는 신호, 어드레스 및 콘트롤 버스의 호환성을 보장하는 증폭회로(10)를 갖는다. 데이터 버스(10)에 접속된 상기 증폭회로는 양방향이고; 일단에서, 증폭회로는 마이크로 프로세서가 메모리와 주변기기에 전송하는 데이터 신호를 증폭하며; 타단에서, 증폭회로는 상기 동일한 메모리와 주변기기에 의해 수신된 신호들을 증폭하여 그 신호들이 마이크로 프로세서의 내부회로들에 의해 정확히 처리되게 한다. 대부분의 마이크로 프로세서는, 동일한 클록주기에, 인스트럭션을 실행하고 다음 인스트럭션의 동작코드의 독출을 가능하게 하는 "페치(fetch)" 장치를 갖는다.
마이크로 프로세서(9)는 어드레스 버스를 제어하고; 상기 버스에 인가된 값이 어떤 형태의 주변기기를 선택하는 지를 결정한다. 선택 라인의 수를 감소시키기 위해, 어드레스 디코더(13)는 입력의 어드레스 버스를 수신하고 분화된 라인을 통해 각종 주변기기 및 메모리를 선택한다. 즉 "EEPROM" 라인은 상기 EEPROM을 선택하고 "ROM" 라인은 상기 ROM을 선택한다. 상기 두 라인 각각은 메모리 및 대응하는 패리티 발생기에 접속된다.
EEPROM 및 ROM 라인은 0 상태에서 액티브이다. AND 게이트(14)의 출력은 양 메모리에 공통인 선택 신호를 발생시키며; 두 개의 EEPROM 및 ROM 라인중 하나가 "0"이면, 라인(15)도 "0"이다. 상기 라인(15)은, 그 결과로서, 패리티 발생기(7,8)중 하나와 동일한 시간에 액티브인 패리티 발생기(11)의 입력 E에 접속되어 있다. 메모리가 선택되지 않으면, 발생기의 출력 라인(2,16)이 고임피던스 상태에 있다. 발생기의 출력 라인(2,16)은 각각 비교기(12)의 두 개의 입력에 접속되어 있다. 비교기의 출력 Q는 마이크로 프로세서의 인터럽트 입력(도4에서 "NMI"로 표시)에 접속되어 있다.
마이크로 프로세서는 사용중 ROM의 인스트럭션을 나타내는 동작 코드를 독출한다. 마이크로 프로세서는 그 코드의 어드레스를 ROM 라인을 활성화시키는 어드레스 버스에 인가하여, 그 결과 증폭기(6) 및 패리티 발생기(8,11)에 인가된다. 증폭기는 ROM에서 독출된 데이터를 데이터 버스에 송신하고, 패리티 발생기는 상기 데이터의 패리티 값을 계산한 후, 그 값을 비교기(12)에 PARITY 라인(2)을 통해 송신한다. 마이크로 프로세서는 양방향 증폭기(10)를 통해 데이터를 독출한다. 라인(15)에 의해 활성화된 패리티 발생기(11)는 마이크로 프로세서에 의해 독출된 데이터의 패리티 값을 계산하여 라인(16)을 통해 비교기에 송신한다. 비교기(12)는 상기 두 개의 값을 비교하여: 두 값이 같으면, 출력은 "1"이고; 두 값이 다르면, 출력은 "0"이다. 후자의 경우, 방사선의 부정 조사에 의해, 데이터가 변경된다. 비교기의 출력은 라인(17)에 의해 마이크로 프로세서의 입력 "NMI"에 접속된다. "0" 레벨은 논-마스커블 인터럽트(non-maskable interrupt)를 트리거하여, 현재의 프로그램이 인터럽트 루틴으로 방향을 바꾸게 한다. 페치 상태동안 비교기가 활성화될 수 있기 때문에; 인터럽트의 발생은 마이크로 프로세서의 시퀀스 클록에서 완전히 동기된다.
마이크로 프로세서가 EEPROM의 독출을 행할 때에는 동작이 일치한다.
본 발명의 간략화된 실시예에서, 입력 "NMI"은 마이크로 프로세서의 RESET 입력과 유사하다. 입력이 다시 인액티브가 되면, 마이크로 프로세서는 인에이블되고 파워업시와 동일한 방식으로 프로그램을 시작한다. 이에 의해, 외부 간섭은 상기 방사선의 조사를 행하는 한, 차단된 마이크로 프로세서를 제어할 수 없다.
동작 코드가 정확히 독출되는 것을 검증하고자 하는 제 1 해결책과 비교하여, 상기 제 2 해결책은 동작 코드 또는 데이터 등의 어떤 데이터형도 제어하는 이점을 제공한다. 또한, 패리티 발생기는 데이터 버스에서와 동일한 방식으로 어드레스 버스에 설치될 수 있다. 상기 제 2 해결책도 어드레스 버스의 신호를 제어하는 이점을 제공한다.
또한, "NMI" 입력의 "0" 레벨은 마이크로 프로그램의 실행을 트리거한다. 과도현상을 방지하기 위해, 마이크로 프로세서의 클록의 천이동안 "NMI" 입력에 있는 신호의 레벨인식을 인식하며, 상기 천이동안 패리티 신호 비교기에 의해 분석된 데이터는 유효하다. ROM에 기입된 종래 인터럽트 처리 프로그램의 동작이 해커에 의해 방해될 수 있다. 한편, 본 발명에 의하면, 마이크로 프로그램은 마이크로 프로세서에 있고; 버스를 통해 데이터를 독출하지 않기 때문에; 버스상에서 행하는 조사에 의해 그 실행이 방해될 수 없다. 레벨 "0"의 인가에 의해 "NMI" 입력으로 트리거되는 마이크로 프로그램은 두 가지 작용을 생성한다. 그 첫 번째는 프로그래머블 비휘발성 메모리에 "DISABLED"이라는 플래그를 기입하는 것이고, 두 번째는 마이크로 프로세서를 리세트하는 것이다. DISABLED 플래그의 기입은 변경될 수 없고: 상기 플래그의 상태는 마이크로 프로세서 또는 외부 수단들에 의해 더 이상 변경될 수 없다. 상기 보안모듈이 파워업되면 활성화되는 초기화 회로는, DISABLED 플래그의 상태를 테스트하여 플래그가 기입되었으면 마이크로 프로세서를 영구적으로 RESET 상태로 설정한다. 유리하게, 상기 플래그는, 녹으면 마이크로 프로세서를 사용할 수 없게 하는 퓨즈에 의해 구현될 수 있다.
해커가 PARITY 라인을 포함한 버스의 모든 라인에 레벨 "0"을 부여하면, 비교기(12)는 어떤 에러도 검출하지 않는다. 사실상, "0"에 있는 라인의 수가 짝수이면, 패리티 신호는 반드시 "0"에 있고; PARITY 라인도 정확하게 그 레벨에 있게 된다. 이를 방지하기 위해, 제 2 해결책의 변경에 의하면, 패리티 발생기는 일반적으로 두 개의 출력, 즉 짝수 패리티를 발생시키는 출력과 홀수 패리티를 발생시키는 출력을 갖는다는 사실을 이용한다.
도5는 프로그래머블 패리티 발생기를 모놀리식 회로에 집적시키기 위해, 도4에 변경을 가한 기입 다이어그램을 나타낸다. 도4와 도5에 공통인 요소에는 동일한 참조부호를 부기한다.
패리티 발생기(7a,8a,11a)는 두 개의 출력: 짝수 패리티 신호용 출력인 Qp로표시된 출력, 및 홀수 패리티 신호용 출력인 Qi로 표시된 출력을 갖는다. "1"에 있는 입력 라인의 수가 짝수이면 Qp는 "1", Qi는 "0"에 있고, "1"에 있는 입력 라인의 수가 홀수이면 Qi는 "1", Qp는 "0"에 있다. 2개의 AND 게이트, 1개의 OR 게이트 및 1개의 인버터 게이트로 각각 구성된 회로(20,21)는 멀티플렉서를 구성한다. 상기 멀티플렉서의 2개의 입력은 각각 패리티 발생기의 두 개의 출력 Qi 및 Qp에 접속된다. 콘트롤 라인(23)은 입력을 선택한다. 라인(23)은 "0"에 있고, 게이트(20c,21c)의 출력은 "0"에 있고, 인버터 게이트(20b,20c)에 의해, 게이트(20d,21d) 뿐만 아니라 게이트(20a,21a)의 출력이 패리티 발생기(7a,11a)의 출력 Qi의 논리 레벨을 재생한다. 이 경우, 출력 Qi는 선택되고 상기 출력 Qi에 있는 데이터는 비교기(12)에 전송된다. 그리고 상기 홀수 패리티 신호가 비교된다. 라인(23)이 "1"에 있으면, 인버터 게이트(20b,20c)에 의해, 게이트(20a,21a)의 출력이 "0"에 있고, 게이트(20d,21d) 뿐만 아니라 게이트(20c,21c)의 출력이 패리티 발생기(7a,11a)의 출력 Qp의 논리 레벨을 재생한다. 후자의 경우, 출력 Qp가 선택되고 출력 Qp에 있는 데이터가 비교기(12)로 전송된다. 그리고 상기 짝수 패리티가 비교된다.
라인(23)의 신호는 랜덤 신호 발생기(22)에 의해 전송된다. 상기 발생기는 입력 라인을 통해 마이크로 프로세서의 클록을 수신하여 신호 "0" 및 "1"을 시간에 대해 무작위로 전송하는 전자회로이다. 간략하게, 랜덤 신호 발생기는 출력이 각 소정 시간간격마다 상태를 변화시키는 카운터일 수 있다. 랜덤 신호 발생기(22), 멀티플렉서(21) 및 비교기(12)는 마이크로 프로세서에 가능한 한 근접하게 위치되고, 집적되는 것이 바람직하다. 따라서, 이들은 버스를 통해 방사선을 보내는 해커에 의해 크게 방해받지 않는다. 랜덤 신호 발생기 내부에 오실레이터를 사용한 보다 복잡한 회로가 장착될 수 있다. 상기 발생기의 목적은, 상태가 매우 자주 변하는 라인을 통해 초당 100∼1000회의 정도로 논리 신호를 방출하는 것이다. 라인(23)의 신호가 변하는 정확한 순간에 "NMI"를 받아들이지 않기 위해, 마이크로 프로세서의 클록에서 라인의 상태변화를 동기시키는 것이 중요하다. 그렇지 않으면 신호의 전송에서의 차에 의해 간섭이 생성될 수 있다.
사용중, 해커는 데이터 버스에 데이터 및 패리티 비트를 "1" 또는 "0"으로 만드는 방사선을 조사한다. 상기 2진값에 따라, 방사선이 조사된 데이터 비트로부터 산출된 패리티값은 방사선이 조사된 값과 동일할 수 있다. 따라서, 그 값들이 동일하기 때문에, 에러가 검출되지 않는다. 랜덤 신호 발생기에 의해 패리티형을 빈번히 변경함으로써, 방사선의 존재를 즉시 검출할 수 있다.
랜덤 신호 발생기(22)가 "0"을 방출하면, 패리티 발생기(7a,11a)의 출력 Qi에 의해 방출된 신호가 선택되기 때문에, 홀수형의 패리티 신호가 비교된다. 랜덤 신호 발생기(22)가 "1"을 방출하면, 패리티 발생기(7a,11a)의 출력 Qp에 의해 방출된 신호가 선택되기 때문에, 짝수형의 패리티 신호가 비교된다.
우선, 버스에 데이터 및 패리티 버스(2a)를 "1"로 만드는 방사선이 조사되는 경우를 보자. 랜덤 신호 발생기(22)가 신호 "0"을 보내면, 패리티 발생기(11)의 출력 Qi가 선택되고, "0"인 그 레벨이 "1"로 된 패리티 라인(2a)과 다르게 된다. 따라서, 비교기는 상기 방사선의 형태를 용이하게 검출하고, 인터럽트를 트리거한다.데이터 및 패리티 버스(2a)의 라인을 "0"으로 만드는 방사선을 버스에 조사하는 두 번째 경우를 보자. 랜덤 신호 발생기(22)가 신호 "1"을 보내면, 패리티 발생기(11)의 출력 Qp가 선택되고, "1"인 그 레벨이 "0"으로 된 패리티 라인(2a)과 다르게 된다. 이 경우에도, 비교기는 방사선을 검출하고, 인터럽트를 통해 마이크로 프로세서에 신호를 보낸다.
상기 변경에서는, 회로의 동작을 해커가 예측불가능하게 하는 파라미터를 부가한다. 상기 파라미터는 외부로부터 버스 라인의 상태를 회로가 검출하지 않고 제어하기 어렵게 만들기 때문이다.
프로그램의 실행할 때 변경을 검출하는 제 3 해결책은, 보호되어야 하는 프로그램 내의 곳곳에 플래그 변경 루틴을 구현하여, 모든 플래그가 변경된 센시티브 데이터의 동작을 개시하기 전에 검증하는 것이다.
도6은 16진수 어드레스 0800에서 구현되는 프로그램을 포함하는 메모리의 일부를 나타낸다. 상기 메모리는 ROM 또는 EEPROM일 수 있지만 인스트럭션을 실행할 수 있는 다른 비휘발성 메모리형도 효과가 있다. 모든 플래그는 비트로 표시되고 메모리에서 인디케이터로 그룹화된다. 상기 예에서, 상기 인디케이터는 FLAG라는 RAM의 1바이트이다. 상기 바이트를 구성하는 비트의 임의의 수를, 센시티브 데이터에서 동작을 유도하는 프로그램의 임의의 단계으로의 경로(PASSAGE)를 표시하는데 사용한다.
어드레스 800에서(단계 1), FLAG 바이트를 2진값 "0000 0001"로 설정하고, "1"에서의 제 1 비트는 단계 1이 실행되었다는 것을 나타낸다. 어드레스 880H(단계2)에서, FLAG 바이트가 독출되고 그 현재의 내용과 2진값 "0000 0010" 사이의 논리합(모토로라 6805의 ORA 인스트럭션)의 실행에 의해 변경되어, OR 동작의 결과가 FLAG 바이트에 기입된다. 어드레스 8A0H(단계 3)에서, FLAG 바이트가 독출되고 그 내용과 2진값 "0000 0100" 사이의 논리합의 실행에 의해 변경되어, OR 동작의 결과가 FLAG 바이트에 기입된다. 결국, 어드레스 900H(단계 4)에서, 프로그램의 보호된 부분이 종결하고: FLAG 바이트가 독출 및 체크되어: 그 값이 2진값 "0001 0111"과 다르면, 프로그램이 잘못된 루틴으로 점프한다.
보호되어야 하는 프로그램은 사용시 어드레스 0800H에서 개시한다. 제 1 단계(단계 1)은 FLAG 바이트의 제 1 비트를 "1"로 설정함으로써 FLAG 바이트를 업데이트하는 것을 포함한다. 그 후, 상기 프로그램은 FLAG 바이트의 제 2 비트가 설정되는 제 2, 소위 변경 단계(단계 2)까지 시퀀스를 지속하여, 단계 2가 실행되었다는 것을 나타낸다. 이에 의해, 단계 1과 단계 2 사이의 프로그램의 모든 인스트럭션이 실행되었다고 가정한다. 그 후, 프로그램은 FLAG의 제 3 비트가 "1"로 설정되는 변경 단계 3까지 시퀀스를 지속한다. 마지막으로, 보호되어야 하는 프로그램은 FLAG 바이트를 테스트하는 루틴에서 종결하고(단계 4): 단계 1,2 및 3의 실행을 확인하는 것을 포함한다. 만일 그 값이 "0000 0111"과 다르면, 부정행위를 시도한 결과로서 프로그램의 트랩(trap)이 발생하여, 비정상적인 동작이 나타난다. 이 경우, 프로그램은 정상적인 동작을 방해하여 부정행위 처리루틴으로 점프한다. 해커는 FLAG 바이트를 변경하는 루틴이 구현되는 프로그램의 위치를 알지 못하기 때문에 상기 루틴이 실행되는 순간을 알지 못하므로, 데이터 버스의 값을 간섭함으로써,단계 1,2 또는 3중 적어도 하나의 실행을 제거하게 될 가능성이 크기 때문에, FLAG 바이트는 예상되는 최종값을 갖지 못할 것이다.
간략하게, 부정행위 처리루틴은 마이크로 프로세서의 리셋(RESET)에 있을 수 있다. 개선된 점은, 다른 인스트럭션을 허락하는 동안 임의의 인스트럭션이 실행되는 것을 방지함으로써 해커가 흐름을 간섭할 수 없도록 단계 4의 마이크로 프로그램된 인스트럭션을 사용하는 것이다. 상기 인스트럭션은 다음의 구조:"동작 코드, 독출될 어드레스, 비교될 값"을 갖고: 순차적으로 다음 기능을 실행한다:
1 "어드레스" 바이트를 독출
2 독출된 바이트의 값을 상기 "값"과 비교
3 동일하면, 다음 인스트럭션으로 점프
그렇지 않으면 4 DISABLED 플래그를 비휘발성 메모리에 기입
5 마이크로 프로세서의 RESET
명백하게, 플래그의 수를 증가시키고 이에 따라 인디케이터를 업데이트하는 단계의 수도 증가시킴으로써, 외부 간섭이 검출되는 순간을 증가시킨다. 따라서, FLAG 인디케이터는 수 바이트로 표시될 수 있다. 그러나, 인디케이터를 업데이트하는 단계는 프로그램의 레벨과 RAM의 레벨 모두에서 애플리케이션 프로그램에는 사용될 수 없는 메모리 공간을 차지한다. 따라서, 단계의 수를 최적화할 필요가 있다. 예컨대, 보호되어야 하는 1000 바이트 프로그램에서는, 인디케이터를 변경하는 32 단계를 설치할 것이다. 상기 32 단계와 최종 테스트 루틴은 프로그램 메모리의 162 바이트와 RAM의 4바이트를 차지한다. 점프를 포함할 수도 있고 모든 변경 단계를 수행하지 않을 수도 있는 프로그램의 복잡성 때문에, FLAG 바이트의 테스트는 한정된 비트수만을 포함할 수 있다. 보호되어야 하는 프로그램이 다른 위치에서 종결하면, FLAG 바이트의 다른 값을 포함하는 여러 개의 테스트 루틴을 프로그램에 설치할 수 있다.
상기 해결책은 소자의 하드웨어 부분을 변경하는 것을 포함하지 않기 때문에 종래 소자에서 사용하는데 용이한 이점을 갖는다.
본 발명의 개선점은 프로그램이 실행되는 동안 정상적으로 도달하지 않는 위치에 있는 FLAG 바이트를 삭제하는 프로그램 인스트럭션을 구현하는 것을 포함한다. 이에 의해, 프로그램의 실행에 부정간섭을 행하면 상기 인스트럭션들중 하나가 실행되고, FLAG 바이트를 00으로 설정함으로써, 부정행위 처리루틴이 실행된다.
도7은 상기 개선에 의한 프로그램 메모리의 외관을 나타낸다. 어드레스 0890H(단계 2a)에서, 상기 프로그램이 무조건의 점프 인스트럭션을 실행한다. 따라서, 다른 점프 인스트럭션이 다음 어드레스를 목적지로 특정화하지 않으면, 다음 어드레스의 인스트럭션은 절대 실행되지 않는다. 프로그래머는 무조건의 점프 인스트럭션 직후에 FLAG 바이트를 삭제하는 인스트럭션을 작성하고, 그것을 그의 프로그램의 목적지로서 특정화하지 않도록 주의한다. 해커가 데이터 버스를 방해하면, 무조건의 점프 인스트럭션이 실행되지 않고 상기 삭제 인스트럭션의 실행될 가능성이 있게 된다. 상기 인스트럭션은 FLAG 바이트의 모든 비트를 "0"으로 설정한다. 단계 5의 최종 테스트시, FLAG의 비트(1,2)는 "0"에 있기 때문에 독출된 값은 예상했던 것이 아니다. 따라서, 프로그램은 그 정상적인 동작을 방해하여 부정행위 처리루틴으로 점프한다.
도7에 나타낸 프로그램은 FLAG 바이트를 삭제하는 두 단계를 나타낸다. 상기 삭제 인스트럭션은, 인디케이터를 업데이트하는 단계에는 성능 보호 공간과 동등한 레벨인 4바이트인 것과 반대로, 프로그램 메모리에서는 단지 2바이트만을 차지한다. 최적 프로그램은 무조건의 점프 인스트럭션을 거의 사용하지 않는다. 따라서, 무조건의 점프후에 삭제 인스트럭션을 계획적으로 둘 수 있다.

Claims (19)

  1. 모놀리식 구조를 갖고, 정보처리수단(31) 및 상기 처리수단에 의해 처리될 수 있는 정보를 저장하는 수단(32,33)을 포함하는 보안모듈의 센시티브 정보의 처리를 보호하는 방법으로서,
    - 저장수단의 센시티브 정보를 선택하는 단계;
    - 상기 정보의 보존을 위한 특정 조건을 결정하는 단계;
    - 정보를 독출하고 그것을 처리수단에 전송하는 단계;
    - 특정 조건이 만족되는 것을 정보의 처리동안 검증하는 단계;
    - 특정 조건이 만족되지 않는 정보의 처리를 차단하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 정보는 저장수단(32,33)에서 독출된 동작코드이고, 상기 모든 동작코드는 보안모듈의 제조시 결정되는 내용을 갖는 표를 포함하며, 특정 보존 조건은 상기 정보의 값이 여러 개의 설정값들중 하나와 동일한 것인, 방법.
  3. 제2항에 있어서, 처리되는 동작코드는 데이터 비트의 형태로 부호화되고 상기 비트가 모두 동일한 2진값을 갖지는 않는, 방법.
  4. 제1항에 있어서, 상기 특정 보존 조건은 저장수단(32,33)에서 독출된 정보를사용한 보존 데이터의 계산된 부분을 검사하는 것을 포함하며, 상기 보존 데이터는, 정보의 독출시 계산되고, 수신된 정보로부터 보존 데이터의 다른 부분을 계산하고 두 개의 보존 데이터 사이의 동일성을 검사하는 처리수단에 전송되는, 방법.
  5. 제4항에 있어서, 보존 데이터는 그 값이 시간의 함수로서 변화하는 계산 데이터중 적어도 하나로부터 계산되는, 방법.
  6. 제4항에 있어서, 보존 데이터는 그 값이 무작위로 변화하는 계산 데이터중 적어도 하나로부터 계산되는, 방법.
  7. 제1항에 있어서, 정보 처리의 차단은 마이크로 프로그램된 인스트럭션에 의해 행해지는, 방법.
  8. 제7항에 있어서, 마이크로 프로그램된 인스트럭션은:
    - 차단 데이터를 저장수단(32,33)의 비휘발성 위치에 기입하는 단계;
    - 정보의 처리를 차단하는 단계를 행하는, 방법.
  9. 제8항에 있어서, 모듈의 파워업시, 저장 수단(32,33)의 비휘발성 위치는 처리수단(31)에 의해 독출되고, 상기 모듈은 이 위치에서 독출된 값이 일치하지 않으면 차단되는, 방법.
  10. 모놀리식 구조를 갖는 전자회로로 구성되고, 정보저장수단(32,33) 및 상기 저장수단으로부터 추출된 정보를 처리하기 위해, 상기 정보를 선택하는 정보처리수단(31)을 포함하는 보안회로로서, 상기 처리수단은 센시티브 정보의 특정 보존 조건을 검증하는 수단, 및 정보처리를 차단하는 수단을 포함하고, 상기 차단수단은 검증수단이 특정 조건이 만족되지 않은 것을 검출하면 활성화되는 것을 특징으로 하는 보안모듈.
  11. 제10항에 있어서, 상기 처리수단(31)은 표로부터 추출된 동작코드에 대응하는 인스트럭션을 실행하며, 상기 표는 금지된 인스트럭션 값을 포함하는 것을 특징으로 하는 보안모듈.
  12. 제11항에 있어서, 처리되는 동작코드는 데이터 비트의 형태로 부호화되며, 보안모듈은 모든 비트값을 독출하는 수단 및 상기 비트값이 모두 일치할 경우 활성화되는 차단수단을 포함하는 보안모듈.
  13. 제10항에 있어서, 처리수단(31)은 표로부터 추출된 동작코드에 대응하는 인스트럭션을 실행하며, 보안모듈은 동작코드를 독출하는 수단 및 금지된 동작코드의 독출시 활성화되는 차단수단을 포함하는 보안모듈.
  14. 제13항에 있어서, 상기 차단 수단은 저장수단(32,33)에 인디케이터를 비가역적으로 기입하는 수단, 및 모듈의 다음 파워업시 상기 인디케이터를 독출하는 수단을 포함하는 보안모듈.
  15. 제10항에 있어서, 저장수단과 함께 동작하는 패리티 발생기(7,8), 처리수단과 함께 동작하는 패리티 발생기(11), 및 상기 각각의 패리티 발생기에 접속되고 처리수단의 인터럽트를 유도할 수 있는 비교기를 포함하는 보안모듈.
  16. 제15항에 있어서, 패리티 발생기(7,8)의 동작이 시간의 함수로서 변화하는 보안모듈.
  17. 제15항에 있어서, 패리티 발생기(7,8)의 동작이 무작위로 변화하는 보안모듈.
  18. 제14항에 있어서, 마이크로 프로그램된 인스트럭션을 실행함으로써, 인디케이터를 저장수단(32,33)에 비가역적으로 기입하는 것을 특징으로 하는 보안모듈.
  19. 제10항에 있어서, 상기 보안회로는 마이크로회로 카드인 것을 특징으로 하는 보안회로.
KR1020017002643A 1999-06-30 2000-06-29 모놀리식 보안모듈의 센시티브 정보처리를 안전하게행하는 방법, 및 그와 관련된 보안모듈 KR100710817B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9908409A FR2795838B1 (fr) 1999-06-30 1999-06-30 Procede de securisation du traitement d'une information sensible dans un module de securite monolithique, et module de securite associe
FR99/08409 1999-06-30

Publications (2)

Publication Number Publication Date
KR20010074881A true KR20010074881A (ko) 2001-08-09
KR100710817B1 KR100710817B1 (ko) 2007-04-24

Family

ID=9547522

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017002643A KR100710817B1 (ko) 1999-06-30 2000-06-29 모놀리식 보안모듈의 센시티브 정보처리를 안전하게행하는 방법, 및 그와 관련된 보안모듈

Country Status (7)

Country Link
US (1) US7330979B1 (ko)
EP (1) EP1108249B1 (ko)
JP (1) JP2003504740A (ko)
KR (1) KR100710817B1 (ko)
DE (1) DE60044893D1 (ko)
FR (1) FR2795838B1 (ko)
WO (1) WO2001003084A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1603088A1 (fr) * 2004-06-03 2005-12-07 Nagracard S.A. Composant pour module de sécurité
EP1659515A1 (fr) * 2004-11-19 2006-05-24 Proton World International N.V. Protection d'un microcontrôleur
CN101292249A (zh) * 2005-10-24 2008-10-22 Nxp股份有限公司 半导体器件以及防止该半导体器件受到攻击的方法
GB0601849D0 (en) * 2006-01-30 2006-03-08 Ttp Communications Ltd Method of maintaining software integrity
DE602007002650D1 (de) * 2006-02-10 2009-11-19 St Microelectronics Sa Verifizierung der Integrität von Programmen oder der Sequenzierung einer Zustandsmaschine
CN101606162A (zh) * 2007-01-05 2009-12-16 质子世界国际公司 电子电路的临时锁定
EP2108164B1 (fr) * 2007-01-05 2015-08-26 Proton World International N.V. Limitation d'acces a une ressource d'un circuit electronique
US8566931B2 (en) * 2007-01-05 2013-10-22 Proton World International N.V. Protection of information contained in an electronic circuit
US20080208760A1 (en) * 2007-02-26 2008-08-28 14 Commerce Inc. Method and system for verifying an electronic transaction
US7783876B2 (en) * 2007-05-01 2010-08-24 Hewlett-Packard Development Company, L.P. Comparing characteristics prior to booting devices
JP2009105279A (ja) * 2007-10-24 2009-05-14 Fujitsu Microelectronics Ltd 半導体装置の製造方法及び半導体装置
FR2924262B1 (fr) 2007-11-26 2009-12-11 Sagem Securite Procede de masquage de passage en fin de vie d'un dispositif electronique et dispositif comportant un module de controle correspondant
FR2934396B1 (fr) * 2008-07-24 2010-09-17 Oberthur Technologies Procede de traitement conditionnel de donnees protege contre les attaques par generation de fautes et dispositif associe
US8719957B2 (en) * 2011-04-29 2014-05-06 Altera Corporation Systems and methods for detecting and mitigating programmable logic device tampering

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2461301A1 (fr) 1978-04-25 1981-01-30 Cii Honeywell Bull Microprocesseur autoprogrammable
US4281216A (en) * 1979-04-02 1981-07-28 Motorola Inc. Key management for encryption/decryption systems
JP2557838B2 (ja) * 1986-02-18 1996-11-27 株式会社東芝 Icカ−ド
JP2514954B2 (ja) * 1987-03-13 1996-07-10 三菱電機株式会社 Icカ−ド
JPH04141794A (ja) * 1990-10-03 1992-05-15 Mitsubishi Electric Corp Icカード
FR2668274B1 (fr) 1990-10-19 1992-12-31 Gemplus Card Int Circuit integre a securite d'acces amelioree.
US5649090A (en) * 1991-05-31 1997-07-15 Bull Hn Information Systems Inc. Fault tolerant multiprocessor computer system
GB2258063B (en) * 1991-07-26 1995-07-05 Research Machines Plc Monitoring execution of a computer program to provide profile analysis
US5313618A (en) * 1992-09-03 1994-05-17 Metalink Corp. Shared bus in-circuit emulator system and method
US5644354A (en) * 1992-10-09 1997-07-01 Prevue Interactive, Inc. Interactive video system
US5442704A (en) * 1994-01-14 1995-08-15 Bull Nh Information Systems Inc. Secure memory card with programmed controlled security access control
FR2720173B1 (fr) * 1994-05-20 1996-08-14 Sgs Thomson Microelectronics Circuit intégré comprenant des moyens pour arrêter l'exécution d'un programme d'instructions quand une combinaison de points d'arrêt est vérifiée.
JP3461234B2 (ja) * 1996-01-22 2003-10-27 株式会社東芝 データ保護回路
US5978865A (en) * 1997-02-04 1999-11-02 Advanced Micro Devices, Inc. System for performing DMA transfers where an interrupt request signal is generated based on the value of the last of a plurality of data bits transmitted
FR2764716B1 (fr) * 1997-06-13 2001-08-17 Bull Cp8 Procede de modification de sequences de code et dispositif associe
JP3815022B2 (ja) * 1998-02-09 2006-08-30 富士ゼロックス株式会社 利用資格検証装置および方法、ならびに、利用資格検証システム

Also Published As

Publication number Publication date
JP2003504740A (ja) 2003-02-04
DE60044893D1 (de) 2010-10-14
FR2795838A1 (fr) 2001-01-05
FR2795838B1 (fr) 2001-08-31
EP1108249B1 (fr) 2010-09-01
WO2001003084A1 (fr) 2001-01-11
KR100710817B1 (ko) 2007-04-24
EP1108249A1 (fr) 2001-06-20
US7330979B1 (en) 2008-02-12

Similar Documents

Publication Publication Date Title
KR100710817B1 (ko) 모놀리식 보안모듈의 센시티브 정보처리를 안전하게행하는 방법, 및 그와 관련된 보안모듈
US8117642B2 (en) Computing device with entry authentication into trusted execution environment and method therefor
Eldefrawy et al. Smart: secure and minimal architecture for (establishing dynamic) root of trust.
JP4172745B2 (ja) プロセッサによる命令シーケンスの実行を監視する方法および監視装置
US6640279B2 (en) Virtual machine with securely distributed bytecode verification
US20070016832A1 (en) System, device and method of verifying that a code is executed by a processor
EP3198399B1 (en) Detecting a change to system management mode bios code
BR112013020142B1 (pt) cartão inteligente, e, método para autenticação de segurança offline com código pin de um único uso de um cartão inteligente
JP2009288908A (ja) メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
US6711690B2 (en) Secure write blocking circuit and method for preventing unauthorized write access to nonvolatile memory
US20130055025A1 (en) Microprocessor protected against memory dump
Vanegue The weird machines in proof-carrying code
US6874069B2 (en) Microcontroller having an embedded non-volatile memory array with read protection for the array or portions thereof
RU2295756C2 (ru) Способ выполнения управляемой программы посредством портативного носителя данных
KR20080017089A (ko) 플래시 프로그램 메모리를 구비한 마이크로컨트롤러에서프로그램 브레이크 포인트를 제공하는 메커니즘
CN107392059B (zh) 保护非易失性存储器中存储的程序代码的装置
De Oliveira Nunes et al. Casu: Compromise avoidance via secure update for low-end embedded systems
Neto et al. Isc-flat: On the conflict between control flow attestation and real-time operations
EP1295200A2 (en) Data processing method and device for protected execution of instructions
CN106127054B (zh) 一种面向智能设备控制指令的系统级安全防护方法
Grisafi et al. MPI: Memory Protection for Intermittent Computing
WO2005029272A2 (en) Method and device for data protection and security in a gaming machine
US8528081B2 (en) Memory system
Jakkamsetti Root-of-trust architectures for low-end embedded systems
JP3234959B2 (ja) マイクロコンピュータおよびこれを内蔵するカード

Legal Events

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

Payment date: 20160411

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 13