KR102219029B1 - 보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩 - Google Patents

보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩 Download PDF

Info

Publication number
KR102219029B1
KR102219029B1 KR1020197002856A KR20197002856A KR102219029B1 KR 102219029 B1 KR102219029 B1 KR 102219029B1 KR 1020197002856 A KR1020197002856 A KR 1020197002856A KR 20197002856 A KR20197002856 A KR 20197002856A KR 102219029 B1 KR102219029 B1 KR 102219029B1
Authority
KR
South Korea
Prior art keywords
register
hardware
sensitive data
hardware registers
registers
Prior art date
Application number
KR1020197002856A
Other languages
English (en)
Other versions
KR20190024985A (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 KR20190024985A publication Critical patent/KR20190024985A/ko
Application granted granted Critical
Publication of KR102219029B1 publication Critical patent/KR102219029B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은, 하드웨어 암호화 작업을 지원하는 칩(CH) 상의 민감한 데이터(K)로 민감한 데이터 하드웨어 레지스터(KR)의 세트에 안전하게 로딩하기 위한 방법과 관련되고, 상기 방법은 소프트웨어의 각각의 실행에서, 소프트웨어 명령어에 의해 모니터링된 다음 단계를 포함하는데, 칩 아키텍쳐내에서, 민감한 데이터를 다루지 않고, 로딩될 때, 칩 기능을 중단시키지 않는, 사용되지 않은 하드웨어 레지스터 및 다른 관련된 하드웨어 레지스터를 나열하는 미리정의된 리스트 내에 나열된 사용가능한 하드웨어 레지스터(AR)의 세트(ARs)를 선택하는 단계(P1)와, 사용가능한 하드웨어 레지스터의 세트(ARs) 내의 민감한 데이터 하드웨어 레지스터(KR) 및 하드웨어 레지스터의 어드레스의 인덱스가능한 레지스터 리스트(RL)를 구축하는 단계(P2)와, 루프에서, 민감한 데이터(K)의 부분이 라이트되는 민감한 데이터 하드웨어 레지스터(KR)의 각각에서 마지막 라이팅을 제외한 랜덤 데이터, 랜덤 횟수(number of times), 랜덤 순서로, 레지스터 리스트(RL) 내의 각각의 하드웨어 레지스터에 라이트(P3)하는 단계를 포함한다.

Description

보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩
본 발명은 하드웨어 암호화 작업을 지원하는 칩 상의 하드웨어 레지스터에 민감한 데이터의 세트를 안전하게 로딩하기 위한 방법에 관한 것이다.
또한, 본 발명은 상기 방법을 실행하는 칩 및 본 발명의 방법을 실행하기 위한 명령어를 가진 컴퓨터 프로그램 제품과 관련된다.
하드웨어 암호화 작업을 지원하는 칩은, 하드웨어 레지스터에 로딩될 중요한 데이터 보안을 요한다. 예를 들어, AES 암호화는 하드웨어 레지스터로 키와 데이터의 로딩을 요구할 것이다.
하드웨어 자체가 컴퓨터 조작을 방어하지만, 키의 로딩은 사이드 채널 공격(side channel attack)에 취약하기 때문에, 하드웨어 레지스터로의 키의 로딩은 중요하다. 사이드 채널 공격은 칩에 의해 누설된 사이드 정보에 기초하여 시작된 임의의 공격이다. 사이드 채널 공격은, 알고리즘 내의 브루트 포스(brute force)나 이론적 약점보다는, 암호시스템의 물리적 실행으로부터 얻은 정보에 기초한 임의의 공격이다. 예를 들어, 타이밍 정보, 전력 소비, 전자기 누설 또는 소리도 정보의 추가적인 소스를 제공할 수 있는데, 이는 시스템을 붕괴시키는데 사용될 수 있다.
유사한 공격은 자유롭게 프로그램될 수 있는 동일한 실험적 디바이스에 접근함에 의해 시작될 수 있다. 이들 공격은 템플릿 공격이라고 한다. 이러한 공격에 있어서, 공격자는 공격된 카드로부터 하나의 사이드 채널 커브가 필요할 뿐이다.
안전한 로딩을 제공하는 어떤 하드웨어 카운터 대책이 있다. 예를 들어, 클록 지터는 가능한 하드웨어 대응책 중 하나이다. 클록 지터는 가변 클록 신호를 말하는데, 여기서, 진폭은 동일하나, 주기가 원래의 신호로부터 약간 변화하여, 공격자에 의해 추정된 주기 신호의 주기로부터의 클록의 편차를 수반함에 의해, 사이드 채널 분석을 어렵게한다.
또 다른 가능한 하드웨어 솔루션은 마스크된 키 로딩을 가지는 것이다. 이는, 보안 중요 데이터가 하드웨어에 로딩되기 전에 마스크되고, 하드웨어는 컴퓨터 조작 동안에 마스크를 제거한다.
그러나, 이들 대응책은 오직, 칩 제조자에 의해 실행될 수 있고, 소프트웨어에 의해 인에이블/디스에이블된다.
그러므로, 어떤 칩에서, 키의 로딩은 안전하지 않는데, 왜냐하면, 하드웨어는 마스크된 키 로딩, 즉, 하드웨어 레지스터로 로딩되기 전에 마스크된 키 및 하드웨어 자체 내에서 제거된 마스크를 지원하지 않고, 또는, 클록 지터, 즉, 주기 신호로부터의 클록의 편차나 다른 하드웨어 대응책을 지원하지 않기 때문이다. 이는, 키가 사이드 채널 공격에 의해 불러올 수 있게 되는 보안 문제를 제기한다.
그러므로, 추가적인 대안예와 바람직한 솔루션은 기술 분야에서 바람직할 것이다.
본 발명은, 종래 기술의 해결책에서의 경우와 달리, 특수한 하드웨어 요구사항을 나타내지 않으면서, 안전하게 민감한 데이터를 로딩하는 것을 목적으로 한다.
본 발명은 가장 넓은 의미로 방법으로 정의되는데, 상기 방법은, 하드웨어 암호화 작업을 지원하는 칩 상의 민감한 데이터로 민감한 데이터 하드웨어 레지스터의 세트에 안전하게 로딩하기 위한 방법에 있어서, 상기 방법은 소프트웨어의 각각의 실행에서, 소프트웨어 명령어에 의해 모니터링된 다음 단계를 포함하는데,
칩 아키텍쳐 내에서, 민감한 데이터를 다루지 않고, 로딩될 때, 칩 기능을 중단시키지 않는, 사용되지 않은 하드웨어 레지스터 및 다른 관련된 하드웨어 레지스터를 나열하는 미리정의된 리스트 내에 나열된 사용가능한 하드웨어 레지스터의 세트를 선택하는 단계와,
사용가능한 하드웨어 레지스터의 세트 내의 민감한 데이터 하드웨어 레지스터 및 하드웨어 레지스터의 어드레스의 인덱스가능한 레지스터 리스트를 구축하는 단계와,
루프에서, 민감한 데이터의 부분이 라이트되는 민감한 데이터 하드웨어 레지스터의 각각에서 마지막 라이팅을 제외한 랜덤 데이터, 랜덤 횟수, 랜덤 순서로, 레지스터 리스트 내의 각각의 하드웨어 레지스터에 라이트하는 단계를 포함한다. 또한, 본 발명은, 민감한 레지스터에 라이트 하는 것이 둘 이상의 액션이 소요되는 하드웨어 칩에도 적용되는데, 적어도 하나의 액션은 본 발명의 원리에 따라 수행된다.
본 발명에서 제안된 해결책은 순수하게 소프트웨어이고, 하드웨어 대응책을 사용하거나 사용하지 않을 수 있다. 하드웨어 대응책으로 사용된다면, 보안성을 강화시킬 것이다.
본 발명으로, 랜덤 데이터를 가지고, 랜덤 순서로 레지스터의 로딩은 실제 키 라이트를 스크램블(scramble)한다. 더구나, 키/민감한 데이터 레지스터로의 랜덤 데이터의 라이팅은, 획득된 사이드 채널 정보를, 랜덤 시퀀스에 의한 순서와 레지스터 당 라이트의 랜덤 횟수에 의핸 구간 모두에 있어서, 상이하게 한다.
공격자는 실제 키/민감한 데이터가 실제 키 레지스터에 언제 라이트되는지 식별할 수 없고, 이는 SPA(간단한 파워 분석) & 템플레이트와 같은 사이드 채널 공격에 대해 보호할 것이다. 키 로딩의 소프트웨어 랜덤화는 이들 공격에 대해 보호한다.
본 발명이 소프트웨어 기반의 해결책이기 때문에, 스탠드 어론으로 사용될 수 있고, 하드웨어 대응책이 추가된다면, 보안성을 증가시킬 것이다.
본 발명을 실행하는 칩의 사이드 채널 분석을 통해, 사이드 채널 파워 곡선은, 키의 정상 로드에 비해, 키가 로딩될 때, 많은 레지스터 라이트를 나타낼 것이다.
본 발명에서, 랜덤 및 실제 키 데이터는 RAM으로부터 온다. 공격자가 실제 데이터의 정확한 RAM 어드레스를 알지 못하는 한, 그/그녀는 데이터가 언제 액세스되는지 알 수 없다. 또한, 현대의 칩은 추가적인 보호성을 형성하는 암호화된 어드레스 버스를 가진다.
바람직한 실시예에 따르면, 본 방법은 다른 암호화 하드웨어의 키 레지스터를 추가적으로 선택하는 단계를 더 포함한다.
이러한 다른 레지스터와 관련한 것은 순열을 증가시킨다. 그러므로, DES 키 레지스터가 선택될 수 있고, AES 키 레지스터가 라이트된 루프에 추가될 수 있다. 리스트는 고려된 기능에 의존하여 상이할 수 있다는 것을 여기서 유의해야 한다. 특히, 이러한 레지스터는, 사용가능한 레지스터의 세트 중에 AED 키 레지스터 라이팅만 선택되기 위하여, 사용가능한 레지스터 리스트에 추가될 수 있다.
바람직한 실시예에 따르면, 본 방명의 방법의 라이트 단계는,
복수의 로드 타임을 인덱스가능한 레지스터 리스트 내의 각각의 하드웨어 레지스터에 연결시키는 단계와,
레지스터 어드레스를 나열하는 레지스터 라이트 시퀀스를 관련된 로드 시간과 동일한 횟수로 구축하는 단계와,
셔플된 레지스터 라이트 시퀀스 내의 프로세싱 순서를 결정하기 위해, 레지스터 라이트 시퀀스를 셔플하는 단계와,
셔플된 레지스터 라이트 시퀀스 내의 민감한 데이터 레지스터에 대한 마지막 발생을 식별하는 단계와,
셔플된 레지스터 라이트 시퀀스 내의 전체 세트의 어드레스에 대하여, 랜덤 데이터로 각각의 하드웨어 레지스터에 라이트하는 단계를 포함한다.
본 실시예는 간단히 하면, 민감한 데이터의 부분이 라이트되는 민감한 데이터 하드웨어 레지스터의 각각에서 마지막 라이팅을 제외한 랜덤 데이터, 랜덤 횟수, 랜덤 순서로, 각각의 하드웨어 레지스터의 필요한 라이트를 실행하고 제공하는 것이다.
레지스터 라이트 시퀀스는 확대된 인덱스가능한 레지스터 리스트에 대응된다.
그러므로, 본 발명에 따른 방법은 악의적인 공격의 위험을 줄일 수 있도록 한다. 적어도, 악의적인 공격자가 수행하려는 공격이 좀 더 복잡해진다.
또한, 본 발명은 본 발명의 방법을 실행하는 칩 및 본 발명의 방법을 실행하기 위한 명령어를 가진 컴퓨터 프로그램 제품에 관한 것이다.
본 발명에서, 하드웨어 행동 및 하드웨어 레지스터에 로딩될 데이터의 프로세싱은 종래 기술의 것과 구별되고, 데이터의 원본과 특수한 취급으로 추적되고 관측될 수 있다.
상기 및 관련된 목적을 달성하기 위해, 하나 이상의 실시예는 청구항에서 특별하게 지정되고 완전히 기술된 특징을 포함한다.
이하의 설명과 첨부된 도면은 특정한 설명적인 양태를 자세히 제시하고, 실시예의 원리가 사용될 수 있는 다양한 방법 중 일부를 나타낸다. 다른 이점과 신규한 특징은, 도면과 함께 고려될 때, 이하의 상세한 설명으로부터 자명해질 것이고, 개시된 실시예는 이러한 양태와 이들의 등가예를 모두 포함하도록 의도된다.
도 1은 본 발명을 실행하는 컴퓨터 프로그램을 획득하기 위한 방법의 순서도를 개략적으로 나타낸다.
도 2는 본 발명의 방법의 순서도를 개략적으로 나타낸다.
도 3은 본 발명의 방법의 세번째 단계의 실시예를 개략적으로 나타낸다.
도 4는 본 발명의 방법의 실시예를 개략적으로 나타낸다.
도 5는 본 발명의 방법의 레지스터 라이트 시퀀스 셔플링 단계를 개략적으로 나타낸다.
본 발명의 좀 더 완벽한 이해를 위해, 이제 본 발명은 첨부 도면을 참조하여 자세히 기술될 것이다. 상세한 설명은 본 발명의 바람직한 실시예로서 간주된 것을 나타내고 기술할 것이다. 물론, 형태나 세부사항에서의 다양한 수정예와 변형예는 본 발명의 사상에서 벗어남 없이 용이하게 이루어질 수 있다. 그러므로, 본 발명은 본원에서 도시되고 기술된 정확한 형태와 세부사항으로 제한되지 않고, 이하의 청구된 바와 같이, 본원에서 기술된 본 발명의 전체보다 적은 어떠한 것으로 제한되지 않는다. 동일한 요소는 상이한 도면에서 동일한 참조번호로 지정되었다. 간결성을 위해, 본 발명을 이해하는데 유용한 요소와 단계만 도면에 도시되었고 기술될 것이다.
우선, 여기서는, 주어진 기능을 가지고, 본 발명의 방법을 실행하는 컴퓨터 프로그램의 정교함이 기술된다. 이는 도 1에 도시된다. 제1 단계(S1)에서, 민감한 데이터(K)를 저장할 레지스터는 칩(CH) 상에서 식별된다. 이는 키 레지스터(KR)라고 불릴 것이다. 이러한 단계는, 본 발명에 따라 컴퓨터 프로그램의 라이팅에서 한 번 행해진다.
또한, 칩(CH) 상의 사용가능한 하드웨어 레지스터(AR)의 리스트는 단계(S2)에서 구축되는데, 이는, 라이트되면, 원하는 기능에 영향을 주지 않는다. 이들은 사용되지 않은 레지스터라 불릴 것이다. 그것은, 칩 아키텍쳐에 따라, 프로그램의 기능의 실행을 위해 사용되지 않거나 민감하지 않게 유지되는 레지스터를 포함한다.
이러한 사용가능한 하드웨어 레지스터(AR)의 리스트는, 본 발명을 실행하는 프로그램의 라이팅에서 한 번 행해진다.
그리고 나서, 컴퓨터 프로그램(CP)은 다음 단계를 시행하기 위해, 단계(S3)에서 라이트된다.
도 2는 본 발명 그 자체에 따른 프로그램의 단계를 도시한다.
제1 단계(P1)에서, 한 세트의 사용가능한 하드웨어 레지스터(ARs)가 선택된다. 예를 들어, 6개의 사용가능한 하드웨어 레지스터(AR)가 도 3에 도시된 바와 같이, 선택된다. 제2 단계(P2)에서, 키 레지스터 및 선택된 하드웨어 레지스터는 하나의 어레이(RL)에서, 인덱스를 통해 어드레스 가능하게 배열된다. 도 3의 예시에서, 인덱스 0 및 1은 키 레지스터(KR) 덕분이지만, 사용가능한 레지스터는, 컴퓨터 프로그램의 이러한 실행 동안에 사용될 레지스터를 나열하는 레지스터 리스트(RL) 내의 2 내지 7로 인덱스된다. 이러한 예시에서, 우리는 2개의 키 레지스터 및 6개의 사용가능한 레지스터를 식별하였다. 그러므로, 레지스터의 전체 개수는 8개이다.
레지스터의 어드레스를 얻기 위해, 어레이 레지스터 리스트(RL)는 인덱스 i에 의해 액세스된다. 여기서, RL[0]는 0x40010880 (KR)를 줄 것이다. RL[1]는 0x40010884 (KR)를 줄 것이다. RL[2]는 0x40010888 (AR)를 줄 것이다. RL[3]는 0x4001088C (AR)를 줄 것이다. RL[4]는 0x40010890 (AR)를 줄 것이다. RL[5]는 0x40010894 (AR)를 줄 것이다. RL[6]는 0x40010898 (AR)를 줄 것이다. RL[7]는 0x4001089C (AR)를 줄 것이다.
상기 세트의 사용가능한 하드웨어 레지스터의 선택은, 소프트웨어의 각각의 실행에서 행해지는 것이 바람직하다.
단계(P3)는, 유효한 키의 부분이 라이트되는 키 하드웨어 레지스터의 각각에 마지막 라이팅을 제외하고, 랜덤 데이터, 랜덤 횟수, 랜덤 순서로 각각의 하드웨어 레지스터를 라이트하는 루프이다. 루프 내의 모든 반복 이후에, 로딩된 키 LD 서브-부분은 키 레지스터 내에 로딩된다.
도 3은 본 발명의 제3 단계의 실시예를 나타낸다. 단계(T1)에서, 페이크 라이트 카운터(FWC)의 어레는 레지스터 리스트(RL) 내에 나열된 각각의 레지스터를 위한 페이크 라이트의 수를 저장하기 위해 생성된다.
페이크 라이트 카운터는 레지스터에 의한 요소를 포함하고, 그것은 최대 페이크 라이트에 의해 캡이 씌워진 랜덤 수로 각각의 요소를 초기화한다. 도시된 예시에서, 최대 페이크 라이트는 2이다. 그러므로, FWC 내의 각각의 요소는 값 1 또는 2를 취할 수 있다. 여기서, 페이크 라이트 카운터(FWC)는 레지스터 리스트(RL)과 동일한 인덱스와 관련된다는 것에 유의한다.
페이크 라이트 카운터(FWC)의 각각의 요소는 RL과 동일한 인덱스를 가진다는 것이 보장되기 때문에, FWC[0] 내지 2를 초기화하는 것은, 액세싱 RL[0]이 0x40010880를 주기 때문에, 랜덤 데이터가 0x40010880 (KR)에 두 번 라이트될 것을 의미한다. 아래는, i에 의해 인덱스될 때, 어레이 FWC[i]의 설명이다.
FWC[0] = 2는 0x40010880 (KR)에 2번 라이트 랜덤 데이터를 의미한다. FWC[1] = 1은 0x40010884 (KR)에 1번 라이트 랜덤 데이터를 의미한다. FWC[2] = 1은 0x40010888 (AR)에 1번 라이트 랜덤 데이터를 의미한다. FWC[3] = 2는 0x4001088C (AR)에 2번 라이트 랜덤 데이터를 의미한다. FWC[4] = 1은 0x40010890 (AR)에 1번 라이트 랜덤 데이터를 의미한다. FWC[5] = 2는 0x40010894 (AR)에 2번 라이트 랜덤 데이터를 의미한다. FWC[6] = 2는 0x40010898 (AR)에 2번 라이트 랜덤 데이터를 의미한다. FWC[7] = 2는 0x4001089C (AR)에 2번 라이트 랜덤 데이터를 의미한다.
그리고 나서, 단계(T2)에서, 도 4에 더욱 도시되는데, 레지스터 라이트 시퀀스 어레이(RWS)는, 페이크 라이트 카운터(FWC)를 사용하여, 레지스터 리스트(RL) 내의 레지스터로의 룩업 인덱스로, RWS의 각각의 요소를 초기화함에 의해 생성된다.
어레이의 최대 크기는 페이크 라이트 더하기 1의 최대 수에 의해 곱해진 레지스터의 전체 수이다.
도 4에 도시된 예시에서, FWC[0]는 2이이고, 그래서, 레지스터 라이트 시퀀스(RWS)의 처음 3개의 요소는 0's이다. 다음 2개의 요소는 1's인데, 왜냐하면 FWC[1]이 1이기 때문이다. 추가적인 라이트는, 실제 키 레지스터(KR)로의 마지막 라이트가 실제 키(K)의 부분임을 보장하도록 요구된다. 일반적으로, 전체 키는 하나의 레지스터 내에 맞춰질 수 없다. 그러므로, 각각의 레지스터는 전체 키의 청크를 포함한다.
모든 0's의 처음 3개의 요소(0x40010880 - 키 레지스터)는 3번 라이트될 것인데, RL[0]이 실제 키 레지스터 어드레스이기 때문에, 페이크 키 2번과 실제 키 1번이다. RL[i]가 실제 키 레지스터 어드레스가 아니라면, 모든 라이트는 랜덤 데이터일 것이다.
단계(T3)에서, 레지스터 라이트 시퀀스(RWS) 내의 요소의 셔플(shuffle)이 수행되고, 셔플 레지스터 라이트 시퀀스(RWSs)가 획득된다.
그리고 나서, 단계(T4)에서, 레지스터 라이트 시퀀스(RWSs) 내의 요소는 레지스터 리스트(RL) 내의 모든 레지스터에 액세스하는데 사용되고, 페이크 키와 실제 키를 모든 레지스터에 라이트한다. 레지스터에 액세스하기 위한 의사 코드는 다음과 같은데, RWSs[]를 통해, i = 0에서 페이크 라이트 카운터(FWC[]) 내의 모든 요소의 합산까지, 루프를 실행한다. 각각의 요소 RWSs[]에 대하여, j = RWSs[i]가 불러오기 된다. 랜덤 데이터가 레지스터 RL[j]에 라이트된다. 실제 키 레지스터(KR)로의 마지막 라이트에 대하여, 실제 키가 라이트되고, 그렇지 않으면, 실제 키 레지스터에 대해서도, 모든 라이트가 랜덤 데이터 라이트이다. 단계(T4)의 루프의 종점에서, 로딩된 키(LD)가 획득된다.
상기 상세한 설명에서, 본 발명이 실시될 수 있는 구체적인 실시예를 예시로서 나타내는 첨부 도면을 참조한다. 이들 실시예는 충분히 자세히 기술되어서, 기술 분야의 통상의 기술자가 본 발명을 실시할 수 있도록 한다. 그러므로, 상기 상세한 설명은 제한적인 의미로 취할 것이 아니고, 본 발명의 범위는 첨부된 청구항에 의해서만 정의되며, 청구항이 부여한 등가예의 완전한 범위에 따라 적절히 해석된다.

Claims (5)

  1. 하드웨어 암호화 작업을 지원하는 칩(CH) 상의 민감한 데이터(K)로 민감한 데이터 하드웨어 레지스터(KR)의 세트에 안전하게 로딩하기 위한 방법에 있어서, 상기 방법은 소프트웨어의 각각의 실행에서, 소프트웨어 명령어에 의해 모니터링된 다음 단계를 포함하는데,
    칩 아키텍쳐 내에서, 사용되고 있지 않은 하드웨어 레지스터 및 민감한 데이터를 다루지 않고, 로딩될 때, 칩 기능을 중단시키지 않는 관련된 하드웨어 레지스터를 나열하는 미리정의된 리스트로 나열된 사용가능한 하드웨어 레지스터(AR)의 세트(ARs)를 선택하는 단계(P1)와,
    민감한 데이터 하드웨어 레지스터(KR)의 어드레스 및 사용가능한 하드웨어 레지스터의 세트(ARs) 내 하드웨어 레지스터의 어드레스의 인덱스 가능한 레지스터 리스트(RL)를 구축하는 단계(P2)와,
    루프에서, 민감한 데이터(K)의 부분이 라이트(write)되는 민감한 데이터 하드웨어 레지스터(KR)의 각각에서의 마지막 라이팅을 제외하고 랜덤 데이터로, 랜덤 횟수(number of times)로, 랜덤 순서로, 레지스터 리스트(RL) 내의 각각의 하드웨어 레지스터에 라이트(P3)하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 다른 암호화 하드웨어의 키 레지스터를 추가 선택하는 단계를 포함하는, 방법.
  3. 제 1 항에 있어서, 라이트 단계(P3)는,
    복수의 로드 타임(FWC)을 인덱스가능한 레지스터 리스트(RL) 내의 각각의 하드웨어 레지스터에 연결시키는 단계(T1)와,
    레지스터 어드레스를 나열하는 레지스터 라이트 시퀀스(RWS)를 관련된 로드 시간(FWC)과 동일한 횟수로 구축하는 단계(T2)와,
    셔플된 레지스터 라이트 시퀀스(RWSs) 내의 프로세싱 순서를 결정하기 위해, 레지스터 라이트 시퀀스(RWS)를 셔플하는 단계(T3)와,
    셔플된 레지스터 라이트 시퀀스(RWSs) 내의 민감한 데이터 레지스터(KR)에 대한 마지막 발생을 식별하는 단계와,
    셔플된 레지스터 라이트 시퀀스 내의 전체 세트의 어드레스에 대하여, 랜덤 데이터로 각각의 하드웨어 레지스터에 라이트하는 단계를 포함하는, 방법.
  4. 제 1 항과 제 2 항 중 어느 한 항의 방법을 실행하는 칩(CH).
  5. 제 1 항 내지 제 3 항 중 어느 한 항의 방법을 실행하기 위한 명령어를 포함하며, 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020197002856A 2016-07-04 2017-06-14 보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩 KR102219029B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16305841.5 2016-07-04
EP16305841.5A EP3267354A1 (en) 2016-07-04 2016-07-04 Secure loading of secret data to non-protected hardware registers
PCT/EP2017/064494 WO2018007113A1 (en) 2016-07-04 2017-06-14 Secure loading of secret data to non-protected hardware registers

Publications (2)

Publication Number Publication Date
KR20190024985A KR20190024985A (ko) 2019-03-08
KR102219029B1 true KR102219029B1 (ko) 2021-02-22

Family

ID=56896484

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197002856A KR102219029B1 (ko) 2016-07-04 2017-06-14 보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩

Country Status (6)

Country Link
US (1) US11157658B2 (ko)
EP (2) EP3267354A1 (ko)
JP (1) JP6704071B2 (ko)
KR (1) KR102219029B1 (ko)
ES (1) ES2843098T3 (ko)
WO (1) WO2018007113A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906015B (zh) * 2021-01-26 2023-11-28 浙江大学 一种基于硬件标签的内存敏感数据加密保护系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003081398A2 (de) * 2002-03-25 2003-10-02 Infineon Technologies Ag Vorrichtung und verfahren zum sicheren laden von nutzdaten
US20120144205A1 (en) * 2004-06-08 2012-06-07 Hrl Laboratories, Llc Cryptographic Architecture with Instruction Masking and other Techniques for Thwarting Differential Power Analysis

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11191149A (ja) * 1997-12-26 1999-07-13 Oki Electric Ind Co Ltd Icカード用lsiおよびその使用方法
JP2000165375A (ja) * 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
EP2180631A1 (en) * 2008-10-24 2010-04-28 Gemalto SA Cryptographic algorithm fault protections
GB2489405B (en) * 2011-03-22 2018-03-07 Advanced Risc Mach Ltd Encrypting and storing confidential data
US9201656B2 (en) * 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003081398A2 (de) * 2002-03-25 2003-10-02 Infineon Technologies Ag Vorrichtung und verfahren zum sicheren laden von nutzdaten
US20120144205A1 (en) * 2004-06-08 2012-06-07 Hrl Laboratories, Llc Cryptographic Architecture with Instruction Masking and other Techniques for Thwarting Differential Power Analysis

Also Published As

Publication number Publication date
WO2018007113A1 (en) 2018-01-11
JP6704071B2 (ja) 2020-06-03
KR20190024985A (ko) 2019-03-08
ES2843098T3 (es) 2021-07-15
EP3267354A1 (en) 2018-01-10
EP3479287B1 (en) 2020-11-25
EP3479287A1 (en) 2019-05-08
US20190311154A1 (en) 2019-10-10
US11157658B2 (en) 2021-10-26
JP2019519866A (ja) 2019-07-11

Similar Documents

Publication Publication Date Title
US7949883B2 (en) Cryptographic CPU architecture with random instruction masking to thwart differential power analysis
Bos et al. Differential computation analysis: Hiding your white-box designs is not enough
US9495111B2 (en) System and method for reducing information leakage from memory
US9047448B2 (en) Branch auditing in a computer program
JP5136416B2 (ja) 擬似乱数生成装置、ストリーム暗号処理装置及びプログラム
Badier et al. Transient key-based obfuscation for HLS in an untrusted cloud environment
KR102219029B1 (ko) 보호되지 않는 하드웨어 레지스터로의 비밀 데이터의 안전한 로딩
US20170061106A1 (en) Anti-reverse engineering unified process
JP2004510213A (ja) パイプライン・アーキテクチャ準拠マイクロコントローラのための機密保護対策方法
EP2674892B1 (en) A method, a device and a computer program support for execution of encrypted computer code
Kinsy et al. Sphinx: A secure architecture based on binary code diversification and execution obfuscation
US9646160B2 (en) Apparatus and method for providing resilience to attacks on reset of the apparatus
US20170134379A1 (en) Method for securing an application and data
KR101889243B1 (ko) 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법
Adiletta et al. LeapFrog: The Rowhammer Instruction Skip Attack
JP2009515449A (ja) 組み込みシステム上での暗号アルゴリズム実行中にデータを安全に処理するための方法
Wichelmann et al. Obelix: Mitigating Side-Channels through Dynamic Obfuscation
Badier et al. Protecting Behavioral IPs During Design Time: Key-Based Obfuscation Techniques for HLS in the Cloud
Sehrawat et al. Strengthening Software Diversity Through Targeted Diversification
KR20200061124A (ko) PUF Key를 이용한 데이터 난독화 기술 방법 및 장치
US20080244753A1 (en) Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection

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