KR20170085066A - 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법 - Google Patents

다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법 Download PDF

Info

Publication number
KR20170085066A
KR20170085066A KR1020177015545A KR20177015545A KR20170085066A KR 20170085066 A KR20170085066 A KR 20170085066A KR 1020177015545 A KR1020177015545 A KR 1020177015545A KR 20177015545 A KR20177015545 A KR 20177015545A KR 20170085066 A KR20170085066 A KR 20170085066A
Authority
KR
South Korea
Prior art keywords
processing unit
branches
branch
unit time
random number
Prior art date
Application number
KR1020177015545A
Other languages
English (en)
Other versions
KR101889243B1 (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 KR20170085066A publication Critical patent/KR20170085066A/ko
Application granted granted Critical
Publication of KR101889243B1 publication Critical patent/KR101889243B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기(SB1, SB2)를 사용하여 민감한 계산을 처리 유닛에 의해 실행하는 방법에 관한 것으로, 이 방법은, 민감한 계산의 각각의 실행에서: - 적어도 분기의 수만큼의 수의 식별자를 생성하는 단계, - 각각의 식별자를 고유한 분기에 관련시키는 단계, - 식별자들의 랜덤 순열을 생성하는(S1, S2) 단계 - 상기 순열 내의 각각의 식별자의 발생 횟수는 상기 분기들 중 최단 분기에서의 중앙 처리 유닛 시간 단위의 수와 적어도 동일함 -, - 상기 랜덤 순열 내의 각각의 식별자를 처리하는(S3) 것에 의해, 해당 식별자 값에 따라 각각의 연속적인 중앙 처리 유닛 시간 단위들에 의해 실행할 분기를 연속적으로 결정하는 단계, - 상기 랜덤 순열의 각각의 식별자에 대해, 해당 식별자 값에 따라 결정된 분기에 대해 중앙 처리 유닛 시간 단위를 실행하는(S11, S21) 단계를 포함하는 것을 특징으로 한다.

Description

다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법{METHOD TO EXECUTE A SENSITIVE COMPUTATION USING MULTIPLE DIFFERENT AND INDEPENDENT BRANCHES}
본 발명은 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법에 관한 것이다.
민감한 계산에서 다수의 독립적 분기를 사용하는 것은 사이드 채널 분석 및 오류 공격에 대한 대응책을 구현하는 임베디드 장치에서 일반적인 실시이다. 그것은 물리적 누설이나 약점을 마스터해야 하는 소프트웨어 또는 하드웨어 디자인에 존재할 수 있다. 본 발명은 대응책 자체가 누설되지 않도록 보장함으로써 대응책을 강화하는 것을 가능하게 한다.
본 발명은 특히 현재 구현에서 일반적인 상황인 2개의 분기가 사용되는 경우에 적용된다.
본 발명은 또한 상기 방법의 구현을 위한 장치에 관한 것이다.
민감한 계산, 예를 들어, 암호화 계산 동안의 사이드 채널 분석 및 오류 공격은 장치로부터 비밀을 추출하는 것으로 잘 알려져 있다. 이러한 공격은 타이밍 측정, 전력 소비 측정, 전자기 방사 측정, 오류 주입 등을 사용할 수 있다.
특히 메모리 풋프린트 및 실행 시간 면에서 최소한의 영향을 미치는 물리적 공격에 대해 효율적인 방법을 찾는 것이 항상 바람직하다.
이러한 공격에 대응하기 위해, 보안 장치에 임베디드 소프트웨어 대응책이 구현된다. 이러한 소프트웨어 대응책은 주로 다음 중 하나 또는 몇몇에 기초한다:
- 민감한 데이터를 랜덤 넘버로 마스킹하여 민감한 값들로부터의 신호들의 상관 관계를 없애는 것,
- 민감한 처리를 마스킹하여 소프트웨어 코드의 어떤 분기가 취해졌는지를 알 수 있는 가능성을 없애는 것,
- 실행의 정확성을 보장하는 일부 추가 코드를 추가하는 것, 전형적으로 일관성의 제어로 민감한 연산들 또는 추가 일관성 있는 코드를 재실행하는 것 등,
- 공격의 상황에 대응하는 실행의 루프의 경우 실행의 동기화를 해제하는 추가 코드를 추가하는 것,
- 계산을 배가하는 것,
- 역 연산을 행하는 것,
- 일부 가짜 연산을 추가하는 것.
일반적으로 그러한 대응책의 구현은 RAM/ROM 풋프린트 및 실행 시간 면에서 비용이 많이 든다.
본 발명과 관련된 민감한 계산의 경우, 계산은 2개의 상이하고 독립적인 분기로 구성된다. 일반적으로, 민감한 분기들 중 하나의 분기가 먼저 실행되고 그 후 두 번째 분기가 실행된다.
사이드 채널 공격을 피하기 위해 그리고 예를 들어 DES의 보수(보수 M, 보수 K)와 같은 DES(M, K) 계산의 경우에, 수행된 계산의 부울 또는 산술 특성에 따라 중간 결과의 일관성을 크로스-체크할 수 있도록 그러한 민감한 계산의 처리를 마스킹할 필요가 실제로 존재한다.
따라서, 추가의 대안적이고 유리한 해결책이 있다면 본 기술분야에서 바람직할 것이다.
본 발명은 전술한 악의적인 공격을 회피하거나, 적어도 더 어렵게 하는 것을 목적으로 한다.
본 발명은, 그의 가장 넓은 의미에서, 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 처리 유닛에 의해 실행하는 방법으로서 정의되며, 이 방법은 민감한 계산의 각각의 실행에서, 다음의 단계들을 포함하는 것을 특징으로 한다:
- 적어도 분기의 수만큼의 수의 식별자를 생성하는 단계,
- 각각의 식별자를 고유한 분기에 관련시키는 단계,
- 식별자들의 랜덤 순열을 생성하는 단계 - 상기 순열 내의 각각의 식별자의 발생 횟수는 상기 분기들 중 최단 분기에서의 중앙 처리 유닛 시간 단위의 수와 적어도 동일함 -,
- 상기 랜덤 순열 내의 각각의 식별자를 처리하는 것에 의해, 해당 식별자 값에 따라 각각의 연속적인 중앙 처리 유닛 시간 단위들에 의해 실행할 분기를 연속적으로 결정하는 단계,
- 상기 랜덤 순열의 각각의 식별자에 대해, 해당 식별자 값에 따라 결정된 분기에 대해 중앙 처리 유닛 시간 단위를 실행하는 단계.
따라서, 본 발명에 따른 방법은 악의적인 공격의 위험을 감소시키는 것을 가능하게 한다. 적어도, 공격은 악의적인 공격자에 대해 수행하기가 더 복잡하다. 민감한 계산의 각각의 실행에서 식별자들에 대한 랜덤 순서의 생성은 중앙 처리 유닛의 처리 시간 단위들, 전형적으로 처리 사이클들의 시퀀스가 항상 분기들의 상이한 시퀀스에 전용되게 하는 것을 가능하게 한다. 메모리들은 각각의 시간 단위의 끝에서 그리고 분기들 각각에 대해 루프의 중간 결과를 저장하는 데 사용된다. 각각의 분기의 리버스 엔지니어링은 더 어려워지는데 그 이유는 그의 실현이 다른 분기 단위들과 혼합되기 때문이다.
RAM 풋프린트 면에서, 본 발명의 실현은 각각의 분기의 직접적인 실행보다 약간 더 비용이 들겠지만 보안 구현과 상당히 유사하다. ROM 풋프린트 면에서, 본 발명의 실현은 간단하고 유리한데, 그 이유는 일부 변수(예를 들어, 임시 레지스터, 루프 인덱스)가 분기들에 의해 공유될 수 있기 때문이다.
또한, 본 발명은 최적의 코드 풋프린트로 구성하기 쉽다는 점에 유의해야 한다: 실제로 전체적으로 분기 단위들의 코드는 본 발명에 의해 변경되지 않고, 변하는 것은 그것이 호출되고 분할되는 방식이다. 각각의 분기와 그 단위를 한정하는 인덱스들을 포함하는 버퍼로부터 분기 단위들의 연속을 구성하는 소수의 명령어로 정확성을 보장하면서 그것을 활용하는 것은 쉽다. 본 발명은 각각의 실행에서 상이하고 예측 불가능한 분기들의 랜덤 순서 실행을 얻는 것을 가능하게 한다. 본 발명은 식별자의 값에 의존하는 분기를 선택함으로써 그리고 유리하게는 각각의 분기가 완전하게 실행된 것을 제어함으로써 각각의 분기의 식별자들의 존재를 구성에 의해 보장하는 랜덤 시드로부터 평형된 마스터 랜덤 넘버를 구축함으로써 소수의 추가 코드로 이 목표에 도달한다.
본 발명은 독립적이고 상이한 분기들의 실행을 고효율로 완전히 혼합할 수 있는 가능성을 열어준다. 대응책의 품질은 풋프린트 및 성능 면에서 더 높다.
유리한 실시예에 따르면, 식별자들을 생성하는 단계는 식별자들이 값 및 그의 보수 값을 포함하도록 하는 것이고, 랜덤 순열을 생성하는 단계는 먼저 식별자들로서의 값들의 시퀀스가 생성되도록 하는 것이고, 이 시퀀스는 그 후 시퀀스의 보수 값들에 의해 완성된다.
랜덤 순열의 이 특정 구성은 생성될 랜덤 시퀀스의 크기를 감소시키는 것을 가능하게 한다. 그것은 또한 구성에 의해, 동일한 수의 사이클이 분기들 각각에 전용되도록 보장하는 것도 가능하게 한다.
이 실시예의 제1 구현에서, 시퀀스는 보수 값들을 이전에 생성된 시퀀스에 인터레이스함으로써 완성된다.
전형적으로 보수 값들은 여기서 2개의 값 중 하나가 삽입된다. 그것은 본 발명의 목표에 도달하도록 적응된 간단한 방식으로 최종 순열을 구성하는 것을 가능하게 한다.
이 실시예의 제2 구현에서, 시퀀스는 값들의 시퀀스의 끝에서 보수 값들의 시퀀스의 부가에 의해 완성된다.
이러한 구현은 먼저, 값들에 대응하는 분기들의 제1 세트의, 그리고 다음으로, 보수 값들에 대응하는 분기들의 제2 세트의 실행을 야기한다.
유리한 응용에서, 민감한 계산은 암호화 알고리즘의 상이하고 독립적인 분기들을 포함한다.
본 발명은 특히 민감한 데이터를 조작하고 성능 면에서 최적화될 필요가 있는 그러한 알고리즘을 보호하도록 적응된다.
특히 흥미있는 응용에서, 민감한 계산은 다수의 분기 중 적어도 하나의 분기의 실행의 정확성을 보장하기 위해 추가 코드를 재실행하거나 구현하는 대응책이다.
이러한 대응책들은 종종 암호화 알고리즘에서 사용된다. 그러나, 현재 구현에서는, 이들은 일반적으로 공격의 경우 누설된다. 몇몇 독립적이고 상이한 분기들을 사용하는 그러한 대응책들에 본 발명을 적용하면 그러한 누설을 피하는 것이 가능하다.
분기들 중 하나가 상이한 길이의 분기인 유리한 특징에 따르면, 상기 방법은 평형을 이루기 위해 추가의 처리 유닛 사이클로 최단 분기들을 완성하는 예비 단계를 포함한다.
이러한 예비 단계는 모든 분기에서 루프들의 전체 세트에 대해 본 발명의 적용을 허용하는 CPU 사이클 면에서 각각의 분기에 대해 동일한 길이를 갖는 것을 가능하게 한다.
특정 특징에 따르면, 본 발명의 방법은 실행된 처리 유닛 시간 단위의 수를 카운팅하는 단계를 추가로 포함한다.
이러한 특징은 분기들 각각에서의 시간 단위의 수의 합에 대응하는 다수의 시간 단위에 도달한 것을 민감한 계산의 끝에서 체크하는 것을 가능하게 한다.
본 발명의 또 다른 특정 특징에 따르면, 본 방법은 분기들 각각에 대해, 실행된 처리 유닛 시간 단위의 수를 독립적으로 카운팅하는 단계를 추가로 포함한다.
이 특징은 각각의 분기를 독립적으로 추적하는 것을 가능하게 한다. 코드의 일부를 점프하는 것을 가능하게 하는 오류 공격을 탐지하는 것이 유용할 수 있다. 그것은, 예를 들어, 분기가 실행될 때마다 일부 상이한 트레이서들을 증가시키는 것에 의해 수행될 수 있다. 따라서 실행의 끝에 모든 분기가 정확한 횟수 취해진 것을 탐지하는 것은 쉽다. 코드의 일부를 점프하는 데 성공하는 임의의 오류 공격이 탐지될 것이다.
바람직한 실시예에 따르면, 상기 민감한 계산은 각각이 주어진 수의 처리 유닛 사이클이 실행될 것을 필요로 하는 2개의 상이하고 독립적인 분기를 사용하고, 상기 방법은 민감한 계산의 각각의 실행에서 다음의 단계를 포함하는 것을 특징으로 한다:
- 비트들의 연속으로서 랜덤 넘버를 생성하는 단계 - 상기 랜덤 넘버 내의 비트의 수는 상기 분기들 중 최단 분기에서의 처리 유닛 사이클의 수와 적어도 동일함 -,
- 상기 생성된 랜덤 넘버의 보수 비트들을 사용하여 상기 랜덤 넘버의 길이를 배가하여 마스터 랜덤 넘버를 구성하는 단계;
- 상기 마스터 랜덤 넘버를 한 비트씩 차례차례 처리하는 것에 의해, 상기 마스터 랜덤 넘버의 각각의 비트의 0 또는 1 값 - 각각의 값은 상기 2개의 분기 중 하나에 관련됨 - 에 따라 각각의 연속적인 처리 유닛 사이클들에 의해 상기 분기들 중 어느 분기를 실행할지를 연속적으로 결정하는 단계 -,
- 상기 마스터 랜덤 넘버의 각각의 비트에 대해, 비트 값에 따라 결정된 분기에 대한 처리 유닛 사이클을 실행하는 단계.
이 실시예는 민감한 계산에서 2개의 분기만이 사용되는 일반적인 상황에 대응한다. 순열로서 사용된 마스터 랜덤의 구성은 독창적이고 매우 유리한데, 그 이유는 그것이 최단 분기에서 시간 단위의 수의 크기의 단지 절반의 랜덤의 생성을 필요로 하면서 필요한 시간 단위들의 전체 세트가 둘 다의 분기에 대해 처리되는 것을 보장하기 때문이다.
유리한 실시예에서, 둘 다의 분기가 동일한 수의 처리 유닛 사이클을 필요로 하고, 생성된 랜덤 넘버 내의 비트의 수는 하나의 분기에서의 처리 유닛 사이클의 수와 동일하다.
이 실시예는 분기들이 동일한 크기인 경우에 대응한다.
유리한 특징에 따르면, 상기 방법은 상기 마스터 랜덤 넘버 내의 스캐닝된 비트의 수를 카운팅하는 단계를 추가로 포함한다.
이 특징은 전체 민감한 계산의 실행을 추적하는 매우 간단한 방법이다.
본 발명은 또한 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 처리 유닛을 포함하는 장치에 관한 것으로, 상기 장치는 적어도 분기의 수만큼의 수의 식별자를 생성하는 식별자 발생기를 추가로 포함하고, 각각의 식별자는 고유한 분기와 관련되고, 상기 처리 유닛은 식별자들의 랜덤 순열을 계산할 수 있고, 상기 순열 내의 각각의 식별자의 발생 횟수는 상기 분기들 중 최단 분기에서의 중앙 처리 유닛 시간 단위의 수와 적어도 동일하고,
상기 처리 유닛은 상기 랜덤 순열 내의 각각의 식별자를 처리하여, 해당 식별자 값에 따라 각각의 연속적인 중앙 처리 유닛 시간 단위들에 의해 실행할 분기를 연속적으로 결정하고, 상기 랜덤 순열의 각각의 식별자에 대해, 해당 식별자 값에 따라 결정된 분기에 대해 중앙 처리 유닛 시간 단위를 실행한다.
본 발명을 구현할 수 있는 이러한 장치는 공격에 대한 큰 보호를 제공하는데, 그 이유는 동일한 민감한 계산의 몇몇 실행들 사이에 어떤 상관 관계도 공격자에 의해 수행될 수 없기 때문이다. 실행된 코드의 리버스 엔지니어링도 고전적인 접근 방식보다 어려워진다. 또한, 코드가 판독을 위해 액세스 가능할지라도, 그것은 최종 실행이 무엇일지를 드러내지 않는다.
바람직한 실시예에서, 상기 장치는 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 2개의 상이한 분기를 사용하여 민감한 계산을 실행하는 처리 유닛을 포함하고, 상기 장치는 비트들의 연속으로서 랜덤 넘버를 생성하는 랜덤 넘버 발생기를 추가로 포함하거나 이에 연결되고, 상기 랜덤 넘버 내의 비트의 수는 상기 분기들 중 최단 분기에서의 처리 유닛 시간 단위의 수와 적어도 동일하고,
상기 처리 유닛은 주어진 랜덤 넘버의 보수를 계산할 수 있고,
상기 처리 유닛은 상기 랜덤 넘버의 연속적인 비트들 및 상기 생성된 랜덤 넘버의 연속적인 보수 비트들 - 이 비트들 및 보수 비트들의 연속은 마스터 랜덤 넘버를 형성함 - 을 한 비트씩 차례차례 처리하여, 각각의 스캐닝된 비트의 0 또는 1 값에 따라 각각의 연속적인 처리 유닛 시간 단위들에 의해 상기 분기들 중 어느 분기를 실행할지를 연속적으로 결정하고, 상기 마스터 랜덤 넘버의 각각의 비트에 대해, 해당 비트 값에 따라 결정된 분기에 대해 처리 유닛 시간 단위를 실행한다.
이 실시예는 2개의 독립적이고 상이한 분기가 알고리즘에서 사용되는 일반적인 경우에 대응한다.
전술한 목적 및 관련 목적의 달성을 위해, 하나 이상의 실시예는 이하에서 충분히 설명되고 특히 청구항들에서 지적된 특징들을 포함한다.
다음의 설명 및 첨부된 도면은 특정 예시적인 양태들을 상세하게 제시하고 실시예들의 원리가 사용될 수 있는 다양한 방식들 중 소수만을 나타낸다. 도면들에서:
도 1은 본 발명의 방법을 나타내는 흐름도이다.
도 2는 본 발명의 장치를 개략적으로 나타낸다.
본 발명의 더 완전한 이해를 위해, 본 발명은 이제 첨부된 도면을 참조하여 상세하게 설명될 것이다. 상세한 설명은 본 발명이 실시될 수 있는 본 발명의 바람직한 실시예로 간주되는 것, 즉 민감한 계산이 2개의 독립적이고 상이한 분기를 포함하는 상황을 예시하고 설명할 것이다. 이 실시예는 관련 기술분야의 통상의 기술자가 본 발명을 실시할 수 있도록 충분히 상세하게 설명된다. 물론, 본 발명의 범위를 벗어나지 않으면서 형태 또는 세부 사항의 다양한 수정 및 변경이 용이하게 이루어질 수 있음을 이해해야 한다. 특히, 청구항들 내의 임의의 참조 부호는 첨부된 청구항들에 정의된 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. "포함하는"이라는 표현은 다른 요소 또는 단계를 배제하지 않는다. "a" 또는 "an"이라는 표현은 복수를 배제한다. 명료성을 위해, 본 발명의 이해에 유용한 요소들 및 단계들만이 도면들에 도시되었고 설명될 것이다.
도 1은 2개의 상이하고 독립적인 분기(SB1 및 SB2)를 사용하여 민감한 계산을 실행하는 본 발명의 방법을 개략적으로 도시한다. 도 1에 도시된 예에서, 분기들은 주어진 주어진 수 L의 처리 유닛 사이클을 필요로 한다. 2개의 분기가 동일한 수의 사이클을 필요로 하지 않으면, 최단 분기는 유리하게는 동일한 수의 사이클에 도달하기 위해 불특정의 연산들로 완성된다. 그렇지 않으면 도 1에서 L은 최단 분기가 필요로 하는 사이클의 수일 것이다. 그 후 최장 분기의 나머지가 본 발명의 실행 방법 후에 수행될 것이다.
이러한 민감한 계산은 예를 들어 암호화 알고리즘일 수 있으며, 그 구조는 2개의 상이하고 독립적인 분기로 구성된다(전형적으로 RIPEMD160 해시 알고리즘 등). 그것은 또한 실행의 정확성을 보장하기 위해 동등한 추가 코드를 재실행하거나 구현하는 대응책일 수 있다(전형적으로, DES/~DES 알고리즘, AES 암호화/암호 해독의 혼합, 마스킹된 데이터의 키스케줄링, 그 후 마스크 등). 분기들은 동일한 데이터에 대해 작용하지 않으므로 상이할 것이다. 그것들은 하나의 분기에 대한 어떤 계산도 또 다른 분기에 사용되지 않으므로 독립적이다.
여기서 분기들의 독립성이 필요하다는 점에 유의해야 하는데, 그 이유는 그렇지 않을 경우, 2개의 분기 간에 종속성이 존재할 것이고, 본 발명에 의해 요청된 바와 같은, 실행의 전체 순열이 불가능할 것이기 때문이다. 실제로, 본 발명으로, 두 번째 분기가 실행되기 전에 분기들 중 하나를 완전히 실행하는 것이 가능해야 한다. 따라서 분기들의 임의의 종속성이 배제된다.
제1 단계 S1에서, 길이 L의 랜덤 넘버(R)가 생성된다. 제2 단계 S2에서, 이 랜덤 넘버(R(L))는 도면에서 COMPL(R(L))로 표시된 그 보수 비트로 완성된다. 따라서, 2L의 길이를 갖는 마스터 랜덤 넘버(M_R)가 획득된다.
그 후 마스터 랜덤 넘버(M_R)의 각각의 연속적인 비트 i가 도 1에 개략적으로 도시된 바와 같이 연속적으로 처리된다. 비트 1로 시작하여 비트 2L까지, 단계 S3에서, 현재 비트 M_R(2L)i가 0과 동일한지 여부가 체크된다.
"예"인 경우(케이스 Y), 처리 유닛 사이클 루프는 단계 S11에서 제1 분기(SB1)의 연산들을 수행하기 위해 사용된다. 그 후 단계 S12에서 마스터 랜덤 넘버의 비트에 대한 인덱스가 증가된다.
"아니오"인 경우(케이스 N), 처리 유닛 사이클 루프는 단계 S21에서 제2 분기(SB2)의 연산들을 수행하기 위해 사용된다. 그 후 단계 S22에서 마스터 랜덤 넘버의 비트에 대한 인덱스가 증가된다.
마스터 랜덤 넘버(M_R)의 구조는 동일한 수의 루프가 2개의 분기에 전용되는 것을 보장하는 것을 가능하게 하는데, 그 이유는 구성에 의해, 그것은 1만큼의 수의 0을 포함하기 때문이다.
단계 S4에서, i의 값이 2L 값에 도달했는지가 테스트된다. 예인 경우(케이스 Y), 민감한 계산의 실행이 종료된다. 아니오인 경우(케이스 N),
이 방법은 단계 S3에서 루핑되어 i 번째 비트의 값이 체크된다.
도 2는 본 발명의 장치(D)를 개략적으로 도시한다. 그것은 처리 유닛(PU)을 포함한다. 이 처리 유닛(PU)은 중앙 처리 유닛(CPU) 또는 하드웨어 코프로세서일 수 있으며, 전형적으로 암호 프로세서 유형 중 하나이다.
본 발명이 적용되기 위해, 처리 유닛(1)은 각각이 주어진 수의 처리 유닛 사이클이 실행될 것을 필요로 하는 2개의 상이한 분기를 사용하여 민감한 계산을 실행하도록 의도된다.
장치(D)는 랜덤 넘버 발생기(RNG)를 추가로 포함한다. 본 발명의 또 다른 변형에서, 장치(D)는 발생기(RNG) 그 자체를 포함하지 않지만 필요할 때 랜덤 넘버를 검색하기 위해 그러한 발생기(RNG)에 연결된다. 그것이 이 엔티티가 파선으로 나타내어지는 이유이다.
민감한 계산의 실행이 트리거되면, 처리 유닛(PU)은 랜덤 넘버 발생기(RNG)에 요청(REQ)을 전송한다. 랜덤 넘버 발생기(RNG)는 비트들의 연속으로서 랜덤 넘버(R(L))를 생성하는 데 사용되며, 랜덤 넘버(R(L)) 내의 비트의 수는 분기들 중 최단 분기에서의 처리 유닛 사이클의 수(L)와 적어도 동일하다. 그 후 랜덤 넘버(R(L))는 처리 유닛(PU)으로 전송된다.
처리 유닛(PU)은 랜덤 넘버(R(L))의 그 비트들을 COMP(R(L))로 표시된 L개 비트의 연속으로 보완함으로써 주어진 랜덤 넘버의 2의 보수를 계산할 수 있다. 이 비트들 및 그 보수들의 연속은 마스터 랜덤 넘버(M_R(2L))를 형성한다.
그 후, 처리 유닛(PU)은 마스터 랜덤 넘버(M_R(2L))의 연속적인 비트들을 한 비트씩 차례차례 처리하여, 전술한 방법의 원리에 따라, 각각의 스캐닝된 비트의 0 또는 1 값에 따라 각각의 연속적인 처리 유닛 사이클에 의해 분기들(SP1 또는 SP2) 중 어느 분기를 실행할지를 연속적으로 결정한다. 마스터 랜덤 넘버(M_R(2L))의 각각의 비트에 대해, 비트 값에 따라 결정된 분기에 대한 처리 유닛 사이클을 실행한다.
각각이 16 개의 루프로 구성된 2개의 분기를 갖는 민감한 계산의 경우에, 대응책의 의사 코드의 예가 아래에 제시된다:
Figure pct00001
민감한 계산의 각각의 실행에서 MasterRNG에 대한 랜덤 값을 선택함으로써, 민감한 제1 분기와 민감한 제2 분기의 실행 순서는 추측될 수 없다. 마스터 랜덤의 구성에 의해, 전체 민감한 계산이 실행될 것이다. 동일한 수의 CPU 사이클을 필요로 하기 위해 분기들이 평형될 수 있다면, 효과적으로 취해진 분기는 몰래 염탐될 수 없다. 각각의 민감한 분기에서 실행의 상이한 카운터를 증가시킴으로써, 정확성을 보장하기 위한 다수의 테스트가 쉽게 구현될 수 있다. 이러한 테스트들은 마스터 랜덤의 모든 비트가 처리되는 체크, 글로벌 루프 인덱스가 분기들 각각에 대해 필요한 CPU 사이클들의 합이어야 하는 체크, 각각의 분기 카운터가 필요한 CPU 사이클의 수이어야 하는 체크 등을 포함한다.
그러면, 몇몇 분기에 대한 일반화의 예를 아래에 설명한다. 본 발명의 방법에 따르면, 적어도 분기의 수만큼의 수의 식별자가 생성된다. 그것들은 각각 분기들 중 하나에 관련된다.
바람직하게는, 가능한 한, 식별자들이 값들 및 보수 값들로서 구성된다. 홀수 개의 분기의 경우에, 완성되지 않은 식별자가 생성되거나 분기에 가짜 계산이 추가된다.
예를 들어 4개의 분기의 경우, 식별자들은 00, 01, 10 및 11이다. 분기들은 다음과 같이 관련된다: A => 00, B => 01, C => 10, D => 11.
그 후 본 발명의 방법은 최단 분기에서 중앙 처리 유닛 시간 단위가 있는 만큼의 수의 각각의 식별자의 발생을 갖는 처음 2개의 식별자 00 및 01의 시퀀스를 랜덤으로 결정하는 단계를 포함한다. 그 후 보수 시퀀스가 계산된다. 이 보수 시퀀스는 첫 번째 시퀀스의 끝에 추가되거나 첫 번째 시퀀스와 인터레이스된다. 동등한 수행 방법들은 최단 분기에서의 시간 단위들만큼의 수의 발생으로 모든 식별자를 함께 패킹하는 것을 포함한다. 유리하게는, 분기들은 모두 동일한 길이의 분기가 되도록 이전에 완성된다. 예를 들어, 모든 분기에서 3 개의 CPU 시간 단위가 있는 경우: 00 00 00 01 01 01 10 10 10 11 11 11. 그 후 랜덤 순열, 예를 들어 4, 0, 10, 6, 5, 8, 11, 2, 3, 7, 1, 9가 생성되고 식별자들의 팩에 적용된다. 그것은 (00 00 00 01 01 01 10 10 10 11 11 11)에 적용되어, 본 발명에 따른 마스터 랜덤인 (01 00 11 10 01 10 11 00 01 10 00 11)을 제공한다.
그 후 식별자들은 마스터 랜덤으로부터 판독된다. 처리 유닛은 대응하는 분기에 대한 CPU 시간 단위를 실행한다. 따라서 마스터 랜덤 (01 00 11 10 01 10 11 00 01 10 00 11)은 다음과 같은 분기들의 시퀀스를 제공한다: B A D C B C D A B C A D.
여기서, 2개의 분기가 사용되는 바람직한 실시예에서, 생성된 식별자들은 가장 간단한 것들, 즉 0 및 1이다.
결론으로서, 본 발명은 예측 가능하지 않은 방식으로 민감한 처리의 적어도 2개의 분기의 정확하고 완전한 실행을 보장하는 소프트웨어 대응책으로 구성된다.
실제로, 이 대응책의 구성에 의해, 선험적으로 어느 분기가 취해질지를 추측할 수 있는 가능성이 없고, 예를 들어 사이드 채널 이용을 통해 장치를 몰래 염탐함으로써 어느 분기가 효과적으로 취해졌는지를 알 수 있는 가능성이 없으며, 이 대응책은 전체 민감한 처리들, 즉 모든 분기들이 효과적으로 실행된 것을 보장하고, 이 대응책은 몇몇 민감한 분기들의 실행을 완전히 혼합할 수 있는 가능성을 열어준다.
개시된 실시예 내의 개개의 요소들의 위치 또는 배열은 본 발명의 범위를 벗어나지 않고 수정될 수 있음을 이해해야 한다. 그러므로, 상기 상세한 설명은 제한적인 의미로 해석되어서는 안 되며, 본 발명의 범위는 청구항들의 자격이 부여되는 등가물들의 전체 범위와 함께, 적절하게 해석되는, 첨부된 청구항들에 의해서만 정의된다.

Claims (14)

  1. 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기들(SB1, SB2)을 사용하여 민감한 계산을 처리 유닛에 의해 실행하는 방법으로서, 이 방법은 민감한 계산의 각각의 실행에서:
    - 적어도 분기의 수만큼의 수의 식별자를 생성하는 단계,
    - 각각의 식별자를 고유한 분기에 관련시키는 단계,
    - 식별자들의 랜덤 순열을 생성하는(S1, S2) 단계 - 상기 순열 내의 각각의 식별자의 발생 횟수는 상기 분기들 중 최단 분기에서의 중앙 처리 유닛 시간 단위의 수와 적어도 동일함 -,
    - 상기 랜덤 순열 내의 각각의 식별자를 처리하는(S3) 것에 의해, 해당 식별자 값에 따라 각각의 연속적인 중앙 처리 유닛 시간 단위들에 의해 실행할 분기를 연속적으로 결정하는 단계,
    - 상기 랜덤 순열의 각각의 식별자에 대해, 해당 식별자 값에 따라 결정된 분기에 대해 중앙 처리 유닛 시간 단위를 실행하는(S11, S21) 단계
    를 포함하는 것을 특징으로 하는, 민감한 계산을 실행하는 방법.
  2. 제1항에 있어서,
    식별자들을 생성하는 단계는 식별자들이 값 및 그의 보수 값을 포함하도록 하는 것이고;
    랜덤 순열을 생성하는 단계는 먼저 식별자들로서의 값들의 시퀀스가 생성되도록(S1) 하는 것이고, 이 시퀀스는 그 후 상기 시퀀스의 보수 값들에 의해 완성되는(S2), 민감한 계산을 실행하는 방법.
  3. 제2항에 있어서,
    상기 시퀀스는 상기 보수 값들을 2개의 값 중 하나를 이전에 생성된 시퀀스에 삽입함으로써 완성되는, 민감한 계산을 실행하는 방법.
  4. 제2항에 있어서,
    상기 시퀀스는 값들의 시퀀스의 끝에서 보수 값들의 시퀀스의 부가에 의해 완성되는, 민감한 계산을 실행하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 민감한 계산은 암호화 알고리즘의 상이하고 독립적인 분기들을 포함하는, 민감한 계산을 실행하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 민감한 계산은 상기 다수의 분기 중 적어도 하나의 분기의 실행의 정확성을 보장하기 위해 추가 코드를 재실행하거나 구현하는 대응책인, 민감한 계산을 실행하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 분기들 중 하나가 상이한 길이의 분기이고, 상기 방법은 평형을 이루기 위해 추가의 처리 유닛 시간 단위들로 최단 분기들을 완성하는 예비 단계를 포함하는, 민감한 계산을 실행하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    실행된 처리 유닛 시간 단위의 수를 카운팅하는 단계를 추가로 포함하는, 민감한 계산을 실행하는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 분기들 각각에 대해, 실행된 처리 유닛 시간 단위의 수를 독립적으로 카운팅하는 단계를 추가로 포함하는, 민감한 계산을 실행하는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 민감한 계산은 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 2개의 상이하고 독립적인 분기(SB1, SB2)를 사용하고, 상기 방법은:
    - 비트들의 연속으로서 랜덤 넘버(R(L))를 생성하는(S1) 단계 - 상기 랜덤 넘버(R(L)) 내의 비트의 수는 상기 분기들 중 최단 분기에서의 처리 유닛 시간 단위의 수와 적어도 동일함 -,
    - 상기 생성된 랜덤 넘버(R(L))의 보수 비트들(COMP(R(L)))을 사용하여 상기 랜덤 넘버(R(L))의 길이를 배가하여(S2) 마스터 랜덤 넘버(M_R(2L))를 구성하는 단계,
    - 상기 마스터 랜덤 넘버(M_R(2L))를 한 비트씩 차례차례 처리하는(S3) 것에 의해, 상기 마스터 랜덤 넘버(M_R(2L))의 각각의 비트의 0 또는 1 값 - 각각의 값은 상기 2개의 분기 중 하나에 관련됨 - 에 따라 각각의 연속적인 처리 유닛 시간 단위들에 의해 상기 분기들(SB1, SB2) 중 어느 분기를 실행할지를 연속적으로 결정하는 단계,
    - 상기 마스터 랜덤 넘버의 각각의 비트에 대해, 해당 비트 값에 따라 결정된 분기(SB1, SB2)에 대해 처리 유닛 시간 단위를 실행하는(S11, S21) 단계를 포함하는 것을 특징으로 하는, 민감한 계산을 실행하는 방법.
  11. 제8항에 있어서,
    둘 다의 분기가 동일한 수의 처리 유닛 시간 단위를 필요로 하고, 상기 생성된 랜덤 넘버(M_R(2L))의 비트의 수는 하나의 분기에서의 처리 유닛 시간 단위의 수와 동일한, 민감한 계산을 실행하는 방법.
  12. 제8항 또는 제9항에 있어서,
    상기 마스터 랜덤 넘버(M_R(2L)) 내의 스캐닝된 비트의 수를 카운팅하는 단계를 추가로 포함하는, 민감한 계산을 실행하는 방법.
  13. 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 처리 유닛(PU)을 포함하는 장치(D)로서, 상기 장치(D)는 적어도 분기의 수만큼의 수의 식별자를 생성하는 식별자 발생기를 추가로 포함하고, 각각의 식별자는 고유한 분기와 관련되고, 상기 처리 유닛(PU)은 식별자들의 랜덤 순열을 계산할 수 있고, 상기 순열 내의 각각의 식별자의 발생 횟수는 상기 분기들 중 최단 분기에서의 중앙 처리 유닛 시간 단위의 수와 적어도 동일하고,
    상기 처리 유닛(PU)은 상기 랜덤 순열 내의 각각의 식별자를 처리하여, 해당 식별자 값에 따라 각각의 연속적인 중앙 처리 유닛 시간 단위들에 의해 실행할 분기를 연속적으로 결정하고, 상기 랜덤 순열의 각각의 식별자에 대해, 해당 식별자 값에 따라 결정된 분기에 대해 중앙 처리 유닛 시간 단위를 실행하는, 장치(D).
  14. 제13항에 있어서,
    상기 장치(D)는 각각이 주어진 수의 처리 유닛 시간 단위가 실행될 것을 필요로 하는 2개의 상이한 분기(SB1, SB2)를 사용하여 민감한 계산을 실행하는 처리 유닛(PU)을 포함하고, 상기 장치는 비트들의 연속으로서 랜덤 넘버(R(L))를 생성하는 랜덤 넘버 발생기(RNG)를 추가로 포함하거나 이에 연결되고, 상기 랜덤 넘버(R(L)) 내의 비트의 수는 상기 분기들 중 최단 분기에서의 처리 유닛 시간 단위의 수와 적어도 동일하고,
    상기 처리 유닛(PU)은 주어진 랜덤 넘버(R(L))의 보수를 계산할 수 있고,
    상기 처리 유닛(PU)은 상기 랜덤 넘버(R(L))의 연속적인 비트들 및 상기 생성된 랜덤 넘버(R(L))의 연속적인 보수 비트들(COMP(R(L))) - 이 비트들 및 보수 비트들의 연속은 마스터 랜덤 넘버를 형성함(M_R(2L)) - 을 한 비트씩 차례차례 처리하여, 각각의 스캐닝된 비트의 0 또는 1 값에 따라 각각의 연속적인 처리 유닛 시간 단위들에 의해 상기 분기들(SB1, SB2) 중 어느 분기를 실행할지를 연속적으로 결정하고, 상기 마스터 랜덤 넘버(M_R(2L))의 각각의 비트에 대해, 해당 비트 값에 따라 결정된 분기에 대해 처리 유닛 시간 단위를 실행하는, 장치(D).
KR1020177015545A 2014-12-10 2015-11-24 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법 KR101889243B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14306987.0 2014-12-10
EP14306987.0A EP3032416A1 (en) 2014-12-10 2014-12-10 Method to execute a sensitive computation using multiple different and independent branches
PCT/EP2015/077552 WO2016091581A1 (en) 2014-12-10 2015-11-24 Method to execute a sensitive computation using multiple different and independent branches

Publications (2)

Publication Number Publication Date
KR20170085066A true KR20170085066A (ko) 2017-07-21
KR101889243B1 KR101889243B1 (ko) 2018-09-20

Family

ID=52396370

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177015545A KR101889243B1 (ko) 2014-12-10 2015-11-24 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법

Country Status (6)

Country Link
US (1) US10545759B2 (ko)
EP (2) EP3032416A1 (ko)
JP (1) JP6339295B2 (ko)
KR (1) KR101889243B1 (ko)
CN (1) CN107003903B (ko)
WO (1) WO2016091581A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268329B (zh) * 2021-05-31 2023-09-01 北京奇艺世纪科技有限公司 一种请求调度方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100265674B1 (ko) * 1995-06-07 2000-09-15 데니스 피셸 인코드된 데이타 스트림에 대한 에러 검출 및 정정시스템
US6327661B1 (en) * 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
JP2002261753A (ja) * 2001-03-06 2002-09-13 Hitachi Ltd 耐タンパー暗号処理方法
US6725374B1 (en) * 1998-08-20 2004-04-20 Orga Kartensysteme Gmbh Method for the execution of an encryption program for the encryption of data in a microprocessor-based portable data carrier
KR20080063500A (ko) * 2001-04-06 2008-07-04 인터디지탈 테크날러지 코포레이션 의사랜덤 시퀀스의 생성을 위한 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US9104477B2 (en) * 2011-05-05 2015-08-11 Alcatel Lucent Scheduling in MapReduce-like systems for fast completion time
US8918768B2 (en) * 2012-12-06 2014-12-23 Apple Inc. Methods and apparatus for correlation protected processing of data operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100265674B1 (ko) * 1995-06-07 2000-09-15 데니스 피셸 인코드된 데이타 스트림에 대한 에러 검출 및 정정시스템
US6327661B1 (en) * 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
US6725374B1 (en) * 1998-08-20 2004-04-20 Orga Kartensysteme Gmbh Method for the execution of an encryption program for the encryption of data in a microprocessor-based portable data carrier
JP2002261753A (ja) * 2001-03-06 2002-09-13 Hitachi Ltd 耐タンパー暗号処理方法
KR20080063500A (ko) * 2001-04-06 2008-07-04 인터디지탈 테크날러지 코포레이션 의사랜덤 시퀀스의 생성을 위한 시스템

Also Published As

Publication number Publication date
EP3230859A1 (en) 2017-10-18
KR101889243B1 (ko) 2018-09-20
JP2017537401A (ja) 2017-12-14
EP3230859B1 (en) 2019-07-17
CN107003903B (zh) 2021-02-26
EP3032416A1 (en) 2016-06-15
US10545759B2 (en) 2020-01-28
CN107003903A (zh) 2017-08-01
JP6339295B2 (ja) 2018-06-06
US20170344376A1 (en) 2017-11-30
WO2016091581A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
Wichelmann et al. Microwalk: A framework for finding side channels in binaries
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
US9400636B2 (en) Apparatus and method for calculating a result in a scalar multiplication
US20100262840A1 (en) Method and devices for protecting a microcircuit from attacks for obtaining secret data
Yao et al. Fault-assisted side-channel analysis of masked implementations
Jiang et al. A novel cache bank timing attack
Jiang et al. Exploiting bank conflict-based side-channel timing leakage of gpus
EP3078154B1 (en) A computing device for iterative application of table networks
US11476872B2 (en) Protection against side-channel attacks
CN106462701B (zh) 以抵抗外部监视攻击的方式执行密码编译数据处理操作
CN107798248B (zh) 防止差分故障分析的软件保护
KR101889243B1 (ko) 다수의 상이하고 독립적인 분기를 사용하여 민감한 계산을 실행하는 방법
CN103636159A (zh) 用于产生随机的输出位序列的方法
JP2004310752A (ja) データ処理装置における誤り検出
Henricksen et al. Side-channel analysis of the K2 stream cipher
Nishinaga et al. Implementation of µNaCl on 32-bit ARM Cortex-M0
Böhl et al. A collision resistant deterministic random bit generator with fault attack detection possibilities
Patrick Software Protection Against Fault and Side Channel Attacks
US20150220307A1 (en) Operation based on two operands
Tunstall Secure cryptographic algorithm implementation on embedded platforms
Feng et al. Do multiple infections lead to better security? A new study on CHES 2014 infective countermeasure
Agosta et al. Automated instantiation of side-channel attacks countermeasures for software cipher implementations
Atıcı Methods for finding the sources of leakage in cache-timing attacks and removing the profiling phase
CN114514724A (zh) 对计算设备中的操作的混淆
Sochůrková Programové prostředky obrany proti diferenciální odběrové analýze

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