KR102117838B1 - 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법 - Google Patents

캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법 Download PDF

Info

Publication number
KR102117838B1
KR102117838B1 KR1020177031498A KR20177031498A KR102117838B1 KR 102117838 B1 KR102117838 B1 KR 102117838B1 KR 1020177031498 A KR1020177031498 A KR 1020177031498A KR 20177031498 A KR20177031498 A KR 20177031498A KR 102117838 B1 KR102117838 B1 KR 102117838B1
Authority
KR
South Korea
Prior art keywords
cache
address
memory
related data
security
Prior art date
Application number
KR1020177031498A
Other languages
English (en)
Other versions
KR20170132300A (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 KR20170132300A publication Critical patent/KR20170132300A/ko
Application granted granted Critical
Publication of KR102117838B1 publication Critical patent/KR102117838B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • 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
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • 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/16Obfuscation or hiding, e.g. involving white box

Abstract

본 발명은, 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200)에 관한 것이며, 일반 메모리로부터 이 보안-관련 데이터의 복사본이 캐시 메모리에 저장되며, 방법(200)은, 난독화 매개변수들을 규정하는 단계(210), 보안-관련 데이터가 저장되는 일반 메모리의 메모리 어드레스로부터 제1 캐시 세트 어드레스를 결정하는 단계(220), 난독화 매개변수들 및 제1 캐시 세트 어드레스를 사용하여 생성 함수로 제1 캐시 세트에 대한 제1 수정 캐시 세트 어드레스를 생성하는 단계(230), 및 제1 수정 캐시 세트 어드레스를 사용하여 보안-관련 데이터의 복사본을 제1 캐시 세트의 제1 캐시 라인(131)에 저장하는 단계(240)를 갖는다.

Description

캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법
컴퓨터 시스템(computer system)들에서 사용되는 최신 마이크로프로세서(microprocessor)들에서는, 메모리 액세스(memory access)를 가속시키기 위하여, 작업 메모리의 빈번히 사용되는 어드레스(address) 구역들로부터의 데이터(data)를 버퍼링하는데(buffer) 캐시(cache) 메모리들이 사용된다. 작업 메모리로부터의 데이터에 대한 액세스 시간보다 캐시 메모리에 대한 프로세서(processor)의 액세스 시간이 상당히 더 빠르기 때문에, 메모리 액세스의 이런 가속이 달성된다. 그러나, 방금 실행된 프로세스(process)에 관한 정보는, 작업 메모리의 어느 부분들이 캐시에 특정하게 로딩되는지(loaded)에 관한 정보로부터 획득될 수 있다. 이들은 예컨대 테이블(table)의 빈번히 사용되는 엔트리(entry)들이다.
특히, 암호 애플리케이션(application)들에서, 이것은, 예컨대 적절한 평가가 이루어진다면 공격자에게로 비밀 키(key)들의 손실로 이어질 수 있는 중요한 사이드 채널(side channel)이다. 공격들은, 프로세서 캐시 내의 포지션(position)으로의 작업 메모리 내의 어드레스들의 할당이 단지 낮은 가변성을 가지며, 그에 따라 통계적으로 평가될 수 있다는 사실로부터 이익을 얻는다. 일반적으로, 분석될 프로세스, 예컨대 암호알고리즘(cryptoalgorithm)을 통해 캐시 콘텐츠(content)의 변동에 관한 정보를 획득하기 위한 시도가 이루어진다.
공통적인 전략은 만료-및-조사(evict-and-probe) 방법이다. 분석 프로세스는 처음에 캐시를 자체 데이터로 채우고, 그 다음 메모리 액세스 시간들을 측정한다. 그렇게 해서, 예컨대, 캐시 히트(hit)들 또는 캐시 미스(miss)가 측정될 수 있다. 이 분석이 더 긴 시간 기간에 걸쳐 수행되면, 암호법(cryptomethod)의 보안-관련 데이터, 예컨대 AES 방법의 경우 암호 키들에 관한 결론들이 도출될 수 있으며, 공격자가 예컨대 이 보안-관련 데이터를 재구성하는 것이 가능하다.
본 발명의 목적은, 캐시 메모리의 보안-관련 데이터를 보호하는 것이다.
이 목적은, 독립 청구항들에서 설명된 조치(measure)들에 의해 해결된다. 본 발명의 유리한 추가 발전들은 종속 청구항들에서 제시된다.
제1 양상에 따라, 본 발명은 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법에 관한 것이며, 일반 메모리로부터 보안-관련 데이터의 복사본(copy)이 캐시 메모리에 저장된다. 방법에 따라, 난독화 매개변수들이 규정된다. 보안-관련 데이터가 저장되는 일반 메모리의 메모리 어드레스로부터 제1 캐시 세트(set) 어드레스가 결정된다. 난독화 매개변수들 및 제1 캐시 세트 어드레스를 사용하여 생성 함수로 제1 캐시 세트에 대한 제1 수정 캐시 세트 어드레스가 생성된다. 제1 수정 캐시 세트 어드레스를 사용하여, 보안-관련 데이터의 복사본이 제1 캐시 세트의 제1 캐시 라인(line)에 저장된다.
수정 캐시 세트 어드레스의 사용은, 보안-관련 데이터에 관한 정보, 이를테면, 예컨대, 사용되는 암호알고리즘 및 암호알고리즘의 암호 데이터를 획득하기 위하여 캐시 데이터를 분석하는 것을 어렵게 만든다. 이 수단으로, 암호 데이터는 허가되지 않은 사람들에 의한 액세스로부터 효과적으로 보호될 수 있다. 본 발명에 따른 방법을 통해, 캐시 메모리의 데이터는 세그먼팅되며(segmented), 복수의 캐시 세트들에 걸쳐 캐시 메모리에 산재된다.
방법의 제1 실시예에서, 메모리 어드레스로부터 블록(block) 어드레스가 결정되며, 이 블록 어드레스로부터 제1 식별자가 형성되며, 생성 함수는 추가적으로, 블록 어드레스 또는 제1 식별자를 사용하여 제1 수정 캐시 세트 어드레스를 생성한다.
제1 수정 캐시 세트 어드레스를 생성할 때의 제1 식별자 또는 블록 어드레스의 추가 사용은, 방법의 보안을 더욱 추가로 증가시킨다.
방법의 추가 실시예들에서, 캐시 메모리의 보안-관련 데이터는 제1 식별자, 제1 캐시 세트 어드레스 및 생성 함수에 의하여 액세스되며(accessed), 생성 함수는 난독화 매개변수, 제1 캐시 세트 어드레스 및 제1 식별자를 사용하여 제1 수정 캐시 세트 어드레스를 생성한다.
예컨대, 캐시 데이터에 액세스(access)하기 위하여, 예컨대 제1 캐시 세트 어드레스로의 제1 수정 캐시 세트 어드레스의 할당이 수행될 수 있다는 것이 필요하다. 이는 예컨대, 보안-관련 데이터를 저장할 때 이 할당을 위한 필요 정보를 포함하는 테이블(table)이 사용됨으로써 달성될 수 있다. 보안-관련 데이터의 저장 동안 수정 캐시 세트 어드레스, 예컨대 제1 수정 캐시 세트 어드레스가 생성되면, 수정 캐시 세트 어드레스 및 (미수정) 캐시 세트 어드레스는 캐시 메모리의 테이블에 저장된다. 한편으로 이 테이블이 보안 위험들을 수반할 수 있고, 추가적으로 캐시 메모리의 메모리 공간을 점유하기 때문에, 한편으로 액세스 동안 수정 캐시 세트의 직접 계산은 보안을 증가시키며, 다른 한편으로 방법은 메모리 공간 절약적이다.
방법의 추가 실시예들에서, 난독화 매개변수들의 수정은 미리 정의된 규칙들에 따라 달성되며, 캐시 메모리의 재조직은 난독화 매개변수들의 수정에 의해 수행된다.
난독화 매개변수들의 수정 및 캐시 메모리의 재조직에 의해, 공격자들이 캐시 메모리를 분석하는 것이 훨씬 더 어려우며, 그러므로 그것은 방법의 보안을 추가로 증가시킨다.
방법의 추가 실시예들에서, 재조직 동안, 제1 캐시 세트의 제1 캐시 라인의 데이터는 제2 캐시 세트의 제2 캐시 라인에 매핑되며(mapped), 제1 캐시 세트의 추가 캐시 라인들의 추가 데이터는 추가 캐시 세트들의 다른 캐시 라인들에 완전히 또는 부분적으로 매핑된다.
제2 캐시 세트로의 제1 캐시 세트의 하나의 캐시 라인의 매핑(mapping), 및 완전히 또는 부분적으로 추가 캐시 세트들의 다른 캐시 라인들로의 제1 캐시 세트의 추가 캐시 라인들의 매핑에 기인하여, 캐시 메모리의 재조직 이후에, 공격자들 또는 허가되지 않은 제3자들에 의한 분석은 훨씬 더 어려워진다. 결과적으로, 보안-관련 데이터의 추가 보호가 이로써 달성된다.
방법의 추가 실시예들에서, 생성 함수는, 난독화 매개변수들 및 제1 식별자를 사용하여 제1 캐시 세트 어드레스의 변환에 의해 제1 수정 캐시 세트 어드레스를 생성하는 함수를 포함한다.
캐시 메모리의 데이터에 대한 액세스는 이상적으로는, 가능한 한 빨리 이루어져야 한다. 난독화 매개변수들 및 제1 식별자를 사용하여 제1 캐시 세트 어드레스에 대해 비트 단위로(bitwise) 달성되는 변환 연산들, 이를테면, 예컨대, 배타적 논리합(exclusive-or) 연산은 간단하고 매우 효율적인 방식으로 계산될 수 있다. 이는, 캐시 메모리 또는 캐시 관리 디바이스(device)에 어떤 복잡한 또는 추가적인 하드웨어(hardware)도 통합될 필요가 없다는 장점을 갖는다.
방법의 추가 실시예들에서, 난독화 매개변수들은 캐시 메모리에 대한 미리 정의된 횟수의 성공적인 액세스들 이후에 수정된다.
캐시 메모리에 대한 성공적인 액세스들의 횟수는 매우 쉽게 계산될 수 있으며, 그 결과, 캐시 메모리 또는 캐시 관리 디바이스에 어떤 복잡한 또는 추가적인 하드웨어도 통합될 필요가 없다.
방법의 추가 실시예들에서, 난독화 매개변수들은 인터럽트(interrupt) 요청에 의해 수정된다.
높은 보안 시스템들에서 사용되는 운영체제(operating system)들은, 공격자들에 의한 보안-관련 데이터에 대한 액세스를 방지하기 위하여, 많은 개수의 보안 기능들을 제공한다. 공격을 식별하자마자, 그러한 운영체제는 높은 보안 시스템을 안전한 상태로 두기 위하여 많은 개수의 조치들을 수행할 수 있다. 이는 또한, 난독화 매개변수의 수정 또는 재조직이 인터럽트 요청에 의하여 운영체제로부터 능동적으로 유발될 수 있다는 사실을 포함한다. 이 경우, 운영체제는 새로운 난독화 매개변수들 자체를 규정하거나, 또는 새로운 난독화 매개변수들을 규정하기 위하여 난독화 매개변수들에 대한 생성 디바이스를 사용한다.
방법의 추가 실시예들에서, 난독화 매개변수는 미리 결정된 시간 간격 내에 수정된다.
미리 결정된 시간 간격들 내에 난독화 매개변수를 수정함으로써, 공격자가 단지 캐시 메모리의 분석을 위해 약간의 시간만을 갖는다는 것이 보장된다. 그 결과, 공격자가 보안-관련 데이터에 관한 정보를 획득하기 위하여 분석 동안 정보를 충분히 획득하는 것은 매우 어렵다.
방법의 추가 실시예들에서, 난독화 매개변수는 시스템 재시작의 경우에 바람직하게는 재형성되는 난수를 포함한다.
난수의 사용은 공격자들이 난독화 매개변수를 추측하는 것을 어렵게 만든다. 그 결과, 보안-관련 데이터의 증가된 보호가 달성된다.
방법의 추가 실시예들에서, 난독화 매개변수는 고유 하드웨어 식별자를 포함한다.
난독화 매개변수로서 추가 데이터와 함께 하드웨어 식별자의 사용은, 디바이스에 고정적으로 할당될 수 있는 난독화 매개변수가 사용되도록 허용한다. 이는, 난독화 매개변수의 일부가 이전 하드웨어 식별자에 대응하지 않기 때문에, 디바이스가 언제 교환되었는지를 보안 시스템들이 식별한다는 장점을 갖는다.
추가 양상에 따라, 본 발명은 캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템에 관한 것이며, 일반 메모리로부터 보안-관련 데이터의 복사본이 캐시 메모리에 저장된다. 시스템은 제1 결정 디바이스, 규정 디바이스, 제1 생성 디바이스, 및 메모리 디바이스를 포함한다. 규정 디바이스는 난독화 매개변수들을 규정하도록 구성된다. 제1 결정 디바이스는, 보안-관련 데이터가 저장되는 일반 메모리의 메모리 어드레스로부터 제1 캐시 세트 어드레스를 결정하도록 구성된다. 제1 생성 디바이스는, 난독화 매개변수들 및 제1 캐시 세트 어드레스를 사용하여 생성 디바이스로 제1 캐시 세트에 대한 제1 수정 캐시 세트 어드레스를 생성하도록 구성된다. 메모리 디바이스는, 제1 수정 캐시 세트 어드레스를 사용하여, 보안-관련 데이터의 복사본을 제1 캐시 세트의 제1 캐시 라인에 저장하도록 구성된다.
수정 캐시 세트 어드레스의 사용은, 보안-관련 데이터에 관한 정보, 이를테면, 예컨대, 사용되는 암호알고리즘 및 암호알고리즘의 암호 데이터를 획득하기 위하여 캐시 데이터를 분석하는 것을 어렵게 만든다. 이 수단으로, 암호 데이터는 허가되지 않은 사람들에 의한 액세스로부터 효과적으로 보호될 수 있다.
제1 실시예에서, 시스템은, 메모리 어드레스로부터 블록 어드레스를 결정하도록 구성되는 제2 결정 디바이스를 포함하며, 이 블록 어드레스로부터 제1 식별자가 형성되며, 생성 디바이스는 추가적으로, 블록 어드레스 또는 제1 식별자를 사용하여 제1 수정 캐시 세트 어드레스를 생성한다.
제1 수정 캐시 세트 어드레스를 생성할 때의 제1 식별자 또는 블록 어드레스의 추가 사용은, 방법의 보안을 더욱 추가로 증가시킨다.
추가 실시예들에서, 시스템은, 제1 식별자, 제1 캐시 세트 어드레스 및 생성 디바이스에 의하여 캐시 메모리의 보안-관련 데이터에 액세스하도록 구성되는 액세스 디바이스를 가지며, 생성 디바이스는 난독화 매개변수, 제1 캐시 세트 어드레스 및 제1 식별자를 사용하여 캐시 메모리에서의 액세스를 위한 제1 수정 캐시 세트 어드레스를 생성한다.
예컨대, 캐시 데이터에 액세스하기 위하여, 예컨대 제1 캐시 세트 어드레스로의 제1 수정 캐시 세트 어드레스의 할당이 수행될 수 있다는 것이 액세스 디바이스에 필요하다. 이는 예컨대, 메모리 디바이스에 의해 데이터를 저장할 때 이 할당을 위한 필요 정보를 포함하는 테이블이 사용됨으로써 달성될 수 있다. 데이터의 저장 동안 수정 캐시 세트 어드레스, 예컨대 제1 캐시 세트 어드레스가 생성되면, 수정 캐시 세트 어드레스 및 (미수정) 캐시 세트 어드레스가 캐시 메모리의 테이블에 저장된다. 한편으로 이 테이블이 보안 위험들을 수반할 수 있고, 추가적으로 캐시 메모리의 메모리 공간을 점유하기 때문에, 한편으로 액세스 동안 수정 캐시 세트의 직접 계산은 보안을 증가시키며, 다른 한편으로 방법은 메모리 공간 절약적이다.
시스템의 추가 실시예들에서, 수정 디바이스는 미리 정의된 규칙들에 따라 난독화 매개변수들을 수정하도록 구성되며, 캐시 메모리의 재조직은 난독화 매개변수들의 수정에 의해 수행된다.
수정 디바이스에 의한 난독화 매개변수들의 수정 및 캐시 메모리의 재조직에 의해, 공격자들이 캐시 메모리를 분석하는 것이 훨씬 더 어려우며, 이는 그러므로 방법의 보안을 추가로 증가시킨다.
시스템의 추가 실시예들에서, 생성 디바이스는, 난독화 매개변수들 및 제1 식별자를 사용하여 제1 캐시 세트 어드레스의 변환에 의해 제1 수정 캐시 세트 어드레스를 생성하는 변환 디바이스를 포함한다.
캐시 메모리의 데이터에 대한 액세스는 이상적으로는, 가능한 한 빨리 이루어져야 한다. 변환 디바이스에 의해 제공되는 것과 같은 변환 연산들은 예컨대 배타적 논리합 연산이다. 이는, 난독화 매개변수들 및 제1 식별자를 사용하여 제1 캐시 세트 어드레스에 비트 단위로 적용될 수 있으며, 간단하고 매우 효율적인 방식으로 계산될 수 있다. 이는, 캐시 메모리 또는 캐시 관리 디바이스에 어떤 복잡한 또는 추가적인 하드웨어도 통합될 필요가 없다는 장점을 갖는다.
시스템의 추가 실시예들에서, 제1 결정 디바이스 및 제2 결정 디바이스는 일체형 결정 디바이스로서 구성된다.
위에서 설명된 본 발명의 특성들, 특징들 및 장점들, 뿐만 아니라 이들이 달성되는 방식은, 예시적 실시예들의 다음의 설명과 관련하여 이해하는 것이 더 명확하고 더 쉬워질 것이며, 예시적 실시예들은 도면들과 관련하여 더욱 상세히 설명될 것이다. 도면들에서:
도 1은 캐시 메모리로의 데이터의 저장을 위한 통상적인 시스템의 개략적인 다이어그램(diagram)을 도시한다.
도 2는 캐시 메모리의 보안-관련 데이터의 보호를 위한 본 발명에 따른 방법의 흐름 다이어그램을 도시한다.
도 3은 본 발명에 따른 난독화 모듈(module)의 개략적인 다이어그램을 도시한다.
도 4는 캐시 메모리로의 데이터의 저장을 위한 본 발명에 따른 시스템의 개략적인 다이어그램을 도시한다.
도면들에서, 달리 특정되지 않는 한, 동일한 기능을 갖는 엘리먼트(element)들에는 동일한 참조 번호들이 제공된다.
도 1은 캐시 메모리에 데이터를 저장하는 통상적인 시스템의 단순화된 개략적인 다이어그램을 도시한다. 캐시 또는 캐시 메모리는, 느린 메모리에 대한 반복되는 액세스들 또는 데이터의 재계산을 방지하는 것을 돕는 빠른 버퍼(buffer) 메모리이다. 이를 위해, 한 번 로딩된(loaded) 또는 생성된 데이터는, 후속 액세스 동안 이 데이터가 더 빠르게 검색될 수 있도록 캐시 메모리에 버퍼링된다(buffered). 게다가, 높은 확률로 곧 액세스될 데이터를 캐시 메모리에 사전에 로딩하는(load) 것이 가능하다.
도 1은 오늘날의 시스템들에 대한 캐시 메모리의 통상적인 조직을 도시하며, 여기서 k는 캐시 세트마다의 캐시 라인들의 개수이다(k >= 1). 캐시 세트들의 개수(n)는 다음으로부터 획득된다: n = 캐시 사이즈(size)/(k * 캐시 라인의 길이).
데이터가 캐시 메모리에 통상적인 방식으로 어떻게 저장되는지에 대한 근본적인 시퀀스(sequence)가 다음의 섹션(section)에서 설명될 것이다. 게다가, 이 통상적인 방법이 보안-관련 데이터에 관해서는 문제적이라는 것이 또한 논의된다.
먼저, 컴퓨터 시스템의 데이터는 데이터 블록들(133, 143, 153, 137, 147, 157)의 형태로 메모리에 매핑되며(mapped), 이 메모리는 어드레스 공간(160)의 메모리 어드레스들(110)을 통해 어드레싱가능(addressable)하다. 실제로, 가상 및 물리적 어드레스 공간이 있으며, 여기서 이 정보는 방법을 예시하는데 요구되지 않으며, 그러므로 더 상세히 고려되지 않는다.
이 예에서, 바이트(byte)가 각각의 경우 메모리 어드레스로 어드레싱가능하다. 데이터 블록이 저장되면, 이 데이터 블록은 적어도 하나의 바이트를 점유하며, 메모리 어드레스를 통해 액세스될 수 있다. 메모리 어드레스들은 각각, 예컨대, 시작 어드레스로 불리는 메모리 어드레스를 갖는 어드레스 구역을 통해, 몇몇 바이트들을 점유하는 데이터 블록들을 어드레싱하기(address) 위하여, 상이한 어드레스 구역들에 할당될 수 있다.
결과적으로, 어드레스 공간(160)은, 예컨대 제1 데이터 블록(133), 제2 데이터 블록(143), 제3 데이터 블록(153), m1-번째 데이터 블록(137), m2-번째 데이터 블록(147), 및 m3-번째 데이터 블록(157)이 저장되는 복수의 어드레스 구역들로 분할된다. 도 1에서, 제1 데이터 블록(133)은 제1 어드레스 구역(161)에 저장되며, m1-번째 데이터 블록은 제2 어드레스 구역에 저장된다.
캐시 메모리는 보통, 어드레스 공간(160)으로부터 데이터 블록의 복사본을 수신하기 위하여 복수의 캐시 세트들(130, 140, 150)을 포함한다. 도 1은 제1 캐시 세트(130), 제2 캐시 세트(140), 및 n-번째 캐시 세트(150)를 도시한다. 상세하게는, 캐시 세트는, 데이터 블록들(133, 143, 153, 137, 147, 157) 중 하나를 하나의 캐시 라인에 저장하기 위하여, 많은 개수의 캐시 라인들(캐시 라인 1 내지 캐시 라인 k)을 포함한다.
매핑된 제1 캐시 세트(130)는 캐시 메모리의 제1 캐시 세트 어드레스(112)에 저장되며, 여기서 제1 캐시 세트(130)는 데이터 블록들(133 및 137)의 복사본이 저장될 복수의 캐시 라인들을 포함한다. 상세하게는, 제1 캐시 라인(131) 및 k-번째 캐시 라인(135)이 도 1의 제1 캐시 세트(130)에 대해 도시되며, 여기서 k-번째 캐시 라인(135)은 제1 캐시 세트(130)의 마지막 캐시 라인에 대응한다.
제1 데이터 블록(133)의 복사본이 캐시 메모리 안에 로딩되면, 데이터 블록(133)의 메모리 어드레스(110)로부터 블록 어드레스(111) 및 제1 캐시 세트 어드레스(112)가 형성된다. 이 목적을 위해, 예컨대, 64 비트(bit) 시스템에서는, 메모리 어드레스(110)의 비트 13 내지 비트 64가 블록 어드레스(111)에 대해 선택되고, 비트 7 내지 12가 제1 캐시 세트 어드레스(112)에 대해 선택된다. 블록 어드레스(111) 및 제1 캐시 세트 어드레스(112)를 형성하기 위해 사용되지 않은 비트들은 무관한 비트들(113)이며, 이 무관한 비트들(113)은 어떤 추가 계산에도 사용되지 않는다.
그 다음, 블록 어드레스(111)는 제1 식별자(132)로서 사용된다. 데이터 블록(133)이 아직 캐시 메모리에 있지 않으면, 캐시 라인(131), 예컨대, 가장 덜 빈번히 사용된 캐시 라인 또는 가장 먼 과거의 마지막 액세스를 갖는 캐시 라인이 선택되어 캐시 세트(130)에서 삭제된다. 이는 현재 데이터 블록(133)으로 교체된다. 제1 식별자(132)는 또한, 후속하여 캐시 액세스 동안의 명백한 할당을 가능하게 하기 위하여 저장된다. 도 1에서, 제1 캐시 세트(130)의 제1 캐시 세트 어드레스(112)가 처음에 결정되며, 그 다음 제1 식별자(132)를 갖는 제1 데이터 블록(133)이 제1 캐시 라인(131)에 저장된다.
동일한 방식으로, 제2 메모리 구역(162)의 m1-번째 데이터 블록(137)이 m1-번째 데이터 블록(137)의 m1-번째 메모리 어드레스에 의하여 제1 캐시 세트(130)의 k-번째 캐시 라인(135)에 저장된다. 이를 위해, 블록 어드레스가 다시 결정되며, 이 블록 어드레스로부터 m1-번째 식별자(136)가 형성된다. 제1 캐시 세트 어드레스(112)는 또한, m1-번째 메모리 어드레스에 의하여 결정된다.
어느 데이터 블록이 어느 캐시 세트에 저장되는지에 대한 할당은 데이터 블록의 메모리 어드레스에 따라 좌우된다. 데이터 블록의 길이의 배수만큼 상이한 메모리 어드레스들을 갖는 어드레스 구역들은 보통, 동일한 캐시 세트의 캐시 라인에 매핑된다. 이는, 캐시 라인마다 바이트들의 개수의 배수만큼 상이한 메모리 어드레스들을 의미한다. 이는 캐시 세트 어드레스를 결정하는, 메모리 어드레스(110)의 개별 비트들이 동일하다는 효과를 갖는다. 위에서 설명된 예를 참조하면, 이는 동일한 비트들(7-12)을 갖는 메모리 어드레스들에 관련될 것이다. 그러므로, 도 1에서, 제1 어드레스 구역(161) 및 제2 어드레스 구역(162)은 그들의 최대 데이터 블록 사이즈의 배수만큼만 상이하다.
위에서 설명된 것과 동일한 방법에 의하여, 제2 데이터 블록(143)은 이 제2 데이터 블록(143)의 제2 메모리 어드레스에 의하여 제2 캐시 세트(140)에 매핑된다. 여기서, 제2 메모리 어드레스로부터 블록 어드레스, 제2 식별자(142), 및 제2 캐시 세트(140)에 대한 제2 캐시 세트 어드레스가 또한 결정된다.
m2-번째 데이터 블록(147)의 m2-번째 메모리 어드레스의 비트들(7-12)과 제2 메모리 어드레스가 동일하기 때문에, m2-번째 데이터 블록(147)은 제2 캐시 세트(140)의 k-번째 캐시 라인(146)에 매핑되고, m2-번째 데이터 블록(147)의 m2-번째 메모리 어드레스의 블록 어드레스에 대응하는 m2-번째 식별자(146)와 함께, 제2 캐시 세트(140)에 저장된다.
제3 데이터 블록(153) 및 m3-번째 데이터 블록(157)이 동일한 방법에 의해 n-번째 캐시 세트(150)의 캐시 라인들에 매핑된다.
그러나, 캐시의 이 조직은 타이밍(timing) 공격들 형태의 캐시 사이드 채널(side channel) 공격들에 민감하며, 따라서 보안-관련 데이터에 대한 보안 위험을 수반한다. 이 문제는 예컨대 Daniel J. Bernstein에 의한 "Cache-timing attacks on AES"(2005년)의 공보에서 상세히 설명되었다. 일반적으로, 분석될 프로세스, 예컨대 암호알고리즘(cryptoalgorithm)을 통해 캐시 콘텐츠의 변동에 관한 정보를 획득하기 위한 시도가 이루어진다. 공통적인 전략은 만료-및-조사(evict-and-probe) 방법이다. 분석 프로세스는 처음에 캐시를 자체 데이터로 채우고, 그 다음 캐시 액세스 시간들을 측정한다. 그렇게 해서, 예컨대, 캐시 히트(hit)들 또는 캐시 미스(miss)가 측정될 수 있다. 이 분석이 더 긴 시간 기간에 걸쳐 수행되면, 암호법(cryptomethod)의 보안-관련 데이터, 예컨대 AES 방법의 경우 암호 키들에 관한 결론들이 도출될 수 있으며, 가장 불리한 경우에, 공격자가 이 보안-관련 데이터를 재구성하는 것이 가능하다.
도 2는 캐시 메모리의 보안-관련 데이터의 보호를 위한 본 발명에 따른 방법(200)의 흐름 다이어그램을 도시한다.
방법(200)은, 캐시 메모리의 재조직 이후에, 최대 데이터 블록 길이의 배수만큼만 상이한 메모리 어드레스들을 갖는 어드레스 구역들을 더 이상 동일한 캐시 세트의 캐시 라인에 매핑할 수 없다.
사이드 채널 공격들로부터 보안-관련 데이터를 포함하는 데이터 블록의 복사본을 보호하기 위하여, 캐시 메모리로의 데이터의 저장 동안, 이것이 이미 수행된 것이 아직 아니라면, 프로세스 단계(210)에서, 난독화 매개변수가 규정된다. 이 예시적 실시예에서, 난독화 매개변수는 난수들의 세트이다.
예컨대 암호 방법의 경우 키 정보 형태의 보안-관련 데이터를 포함하는 데이터 블록이 캐시 메모리에 버퍼링되어야 하거나 또는 데이터의 복사본이 저장되어야 하면, 프로세스 단계(220)에서, 데이터 블록의 메모리 어드레스로부터 캐시 세트 어드레스가 처음에 결정된다.
데이터 블록의 복사본을 캐시 메모리에 저장하기 위하여, 메모리 어드레스로부터 다른 블록 어드레스가 결정되며, 이 다른 블록 어드레스로부터 제1 식별자가 형성된다. 제1 캐시 세트 어드레스에 의하여, 컴퓨터 시스템이 데이터 블록의 복사본을 캐시 메모리에 저장하고, 데이터 블록의 복사본에 액세스하는 것이 가능해야 한다.
프로세스 단계(230)에서, 생성 함수, 난독화 매개변수 및 제1 식별자에 의하여, 제1 캐시 세트 어드레스로부터 제1 수정 캐시 세트 어드레스가 생성된다. 이 예시적 실시예에서, 생성 함수는, 난독화 매개변수 및 제1 식별자와 함께 제1 캐시 세트 어드레스에 비트 단위로 적용되는 배타적 논리합 함수이다.
예컨대, 52 비트의 길이를 갖는 제1 식별자의 경우, 이 제1 식별자는 2 개의 선행하는 0 비트 내지 54 비트로 확장된다. 그 다음, 이들 54 개의 비트들은 9 개의 6-비트 워드(word)들(w1 내지 w9)로 분할된다. 게다가, 메모리 어드레스의 비트들(7-12)로 구성되는 미수정 6-비트 캐시 세트 어드레스(s) 및 6-비트 난독화 매개변수(o)가 결정된다. 그 다음, 다음의 계산에 의하여, 수정 캐시 세트 어드레스가 생성된다
Figure 112017107466668-pct00001
여기서, "
Figure 112017107466668-pct00002
"은 XOR 또는 배타적 논리합 함수를 나타내며, A는 수정 캐시 세트 어드레스이다. 여기서, 개별 6-비트 워드들, 6-비트 난독화 매개변수, 및 미수정 6-비트 캐시 세트 어드레스(s)는 각각, 배타적 논리합 함수에 의하여 서로에게 비트 단위로 적용된다.
제1 수정 캐시 세트 어드레스에 의하여, 제1 캐시 세트가 캐시 메모리 내에서 어디에 있는지가 규정된다. 그 다음, 프로세스 단계(240)에서, 제1 데이터 블록의 복사본 및 제1 식별자가 제1 캐시 세트의 제1 캐시 라인에 저장된다.
제1 캐시 세트 어드레스로의 제1 수정 캐시 세트 어드레스의 할당은 테이블을 통해 이루어질 수 있다. 제1 수정 캐시 세트 어드레스가 생성 함수에 의해 생성된 이후에, 이 제1 수정 캐시 세트 어드레스는 이 테이블에 입력된다. 대안적으로, 테이블은 또한, 완전히 사전에 계산될 수 있다.
이제, 캐시 메모리의 제1 데이터 블록에 액세스해야 하면, 테이블을 통해 제1 수정 캐시 세트 어드레스를 결정하기 위해, 제1 캐시 세트 어드레스가 사용된다. 그 다음, 제1 수정 캐시 세트 어드레스 및 제1 식별자에 의하여, 캐시 메모리의 데이터 블록은, 이 데이터 블록이 캐시 메모리에 이미 저장되었다면 액세스된다.
사이드 채널 공격들로부터 데이터를 보호하기 위하여, 난독화 매개변수는, 예컨대 500 회의 고정된 또는 랜덤하게(randomly) 선택된 횟수의 캐시 히트들 이후에 수정되며, 새로운 난수들로 교체된다. 이 수정의 결과로서, 캐시 메모리가 처음에 재조직되어야 하는데, 그 이유는 수정 캐시 세트 어드레스, 예컨대 제1 수정 캐시 세트 어드레스 및 관련된 캐시 세트 어드레스들, 예컨대 제1 캐시 세트 어드레스의 할당이 더 이상 정확하지 않기 때문이다.
난독화 매개변수의 수정은, 캐시 메모리의 재조직 동안, 제1 캐시 세트의 제1 캐시 라인에 복사본들로서 이전에 버퍼링된 데이터가 복사본의 갱신된 저장 동안 제2 캐시 세트의 제2 캐시 라인에 매핑된다는 결과를 갖는다. 게다가, 이 경우, 제1 캐시 세트의 추가 캐시 라인들에 버퍼링된 추가 데이터의 복사본들은 이제, 새로운 복사본들로서, 추가 캐시 세트들의 다른 캐시 라인들에 완전히 또는 부분적으로 매핑된다.
다시 말해서, 예컨대 500 회의 캐시 히트들 이후에, 캐시 메모리의 재조직이 강제된다. 캐시 메모리의 이 재조직 이후에, 데이터 또는 데이터 세트들의 복사본들은 캐시 메모리에서 더 이상 액세스가능(accessible)하지 않으며, 이는 캐시 미스를 야기한다. 이제, 본 발명에 따른 방법을 사용하여, 어드레스 공간의 어드레스 구역들에 있는 데이터의 복사본들이 캐시 메모리에 다시 기록되며, 결과적으로 캐시 메모리는 재형성된다.
장점은, 캐시 라인의 길이의 배수만큼만 상이한 메모리 어드레스들을 갖는 어드레스 구역들이 더 이상 동일한 캐시 세트의 캐시 라인에 매핑되지 않는다는 것이다.
캐시 메모리가 몇 번이고 재조직되기 때문에, 캐시 메모리를 모니터링(monitoring)함으로써, 프로세스에서 사용되는 보안-관련 데이터에 관한 결론들을 도출하는 것이 더 이상 가능하지 않다.
도 3은 본 발명에 따른 난독화 모듈(300)의 개략적인 다이어그램이다. 난독화 모듈(300)은 시스템에 관한 특허 청구항들의 가능한 실시예이다.
난독화 모듈(300)은 데이터 버스(bus)를 통해 서로 연결되는 제1 결정 디바이스(310), 제2 결정 디바이스(320), 규정 디바이스(330), 제1 생성 디바이스(340), 및 메모리 디바이스(350)를 포함한다.
데이터 블록의 복사본이 캐시 메모리에 저장되어야 한다면, 제1 결정 디바이스(330)는 처음에, 데이터 블록의 메모리 어드레스로부터 제1 캐시 세트 어드레스를 결정한다. 이 경우, 데이터 블록은 가장 다양한 데이터를 포함할 수 있다. 이는 예컨대 공개적으로 액세스가능한 데이터일 수 있다. 그러나, 그것은 또한, 예컨대 개인적인 데이터, 예컨대 클라이언트(client) 데이터, 그리고 액세스가 허가된 사람들에 의해서만 사용될 수 있는 보안-관련 데이터, 예컨대 암호 데이터일 수 있다.
제2 결정 디바이스(320)는, 메모리 어드레스로부터 블록 어드레스를 결정하고 이 블록 어드레스로부터 제1 식별자를 형성하기 위해 사용된다. 그러나, 블록 어드레스가 제1 식별자로서 직접적으로 사용되는 것이 가능하다.
어떤 난독화 매개변수들도 지금까지 규정되지 않았다면, 규정 디바이스(330)에 의하여 난독화 매개변수들이 규정된다. 그 다음, 생성 디바이스(340)는, 난독화 매개변수들, 제1 캐시 세트 어드레스 및 제1 식별자를 사용하여 생성 디바이스로 제1 캐시 세트에 대한 제1 수정 캐시 세트 어드레스를 생성한다. 그 다음, 메모리 디바이스(350)는, 제1 수정 캐시 세트 어드레스를 사용하여, 제1 식별자와 함께 보안-관련 데이터를 제1 캐시 세트의 제1 캐시 라인에 저장한다.
도 4는 캐시 메모리로의 데이터의 저장을 위한 본 발명에 따른 시스템(400)의 개략적인 다이어그램을 도시한다. 본 발명에 따른 시스템(400)은 도 3에서 설명된 본 발명에 따른 난독화 모듈(300)을 사용한다.
예시적 실시예는 캐시 메모리의 조직을 도시하며, 여기서 k는 캐시 세트마다의 캐시 라인들의 개수이다(k >= 1). 캐시 세트들의 개수(n)는 다음으로부터 획득된다: n = 캐시 사이즈/(k * 캐시 라인의 길이).
처음에, 컴퓨터 시스템의 데이터는 데이터 블록들의 형태로 메모리에 매핑되며, 이 메모리는 메모리 어드레스들(110)을 통해 어드레싱가능하다.
이 예시적 실시예에서, 각각의 경우 하나의 바이트는 메모리 어드레스로 어드레싱가능하다. 데이터 블록이 저장되면, 이 데이터 블록은 적어도 하나의 바이트를 점유하며, 메모리 어드레스를 통해 액세스가능하다. 메모리 어드레스들은 예컨대, 시작 어드레스로 또한 불리는 메모리 어드레스를 갖는 어드레스 구역을 통해, 몇몇 바이트들을 점유하는 데이터 블록들을 어드레싱하기 위하여, 각각의 경우 상이한 어드레스 구역들에 할당될 수 있다.
결과적으로, 어드레스 공간은, 예컨대 제1 데이터 블록(133), 제2 데이터 블록(143), 제3 데이터 블록(153), m1-번째 데이터 블록(137), m2-번째 데이터 블록(147), 및 m3-번째 데이터 블록(157)이 저장되는 복수의 어드레스 구역들로 분할된다.
캐시 메모리는 보통, 어드레스 공간으로부터 데이터 블록의 복사본을 수신할 수 있는 복수의 캐시 세트들을 포함한다. 도 4는 제1 수정 캐시 세트 어드레스(431)를 갖는 제1 캐시 세트(430), 제2 수정 캐시 세트 어드레스(441)를 갖는 제2 캐시 세트(440), 및 n-번째 수정 캐시 세트 어드레스(451)를 갖는 n-번째 캐시 세트(450)를 도시한다. 상세하게는, 캐시 세트는, 데이터 블록들(133, 143, 153, 137, 147, 157) 중 하나를 캐시 라인에 저장하기 위하여, 복수의 캐시 라인들(캐시 라인 1 내지 캐시 라인 k)을 포함한다.
매핑된 제1 캐시 세트(430)는 캐시 메모리의 제1 수정 캐시 세트 어드레스(431)에 저장되며, 여기서 제1 캐시 세트(430)는 데이터 블록들(133 및 147)의 복사본이 저장될 복수의 캐시 라인들을 포함한다. 상세하게는, 도 4는, 제1 캐시 세트(430)에 대한 제1 캐시 라인(131) 및 k-번째 캐시 라인(135)을 도시하며, 여기서 k-번째 캐시 라인(135)은 제1 캐시 세트(430)의 마지막 캐시 라인에 대응한다.
제1 데이터 블록(133)(도 1 참조)의 복사본이 캐시 메모리에 로딩되면, 데이터 블록(133)의 메모리 어드레스(110)로부터 블록 어드레스(111) 및 제1 캐시 세트 어드레스(112)가 형성된다. 이를 위해, 예컨대, 64 비트 시스템에서는, 메모리 어드레스(110)의 비트 13 내지 비트 64가 블록 어드레스(111)에 대해 선택되고, 비트 7 내지 12가 제1 캐시 세트 어드레스(112)에 대해 선택된다. 블록 어드레스(111) 및 제1 캐시 세트 어드레스(112)를 형성하기 위해 사용되지 않은 비트들은 무관한 비트들(113)이며, 이 무관한 비트들(113)은 어떤 추가 계산에도 사용되지 않는다.
그 다음, 블록 어드레스(111)는 제1 식별자(132)로서 사용된다. 캐시 메모리에서 제1 캐시 세트(430)를 어드레싱하고 데이터 블록(133)의 복사본을 저장하기 위해 사용되는 제1 수정 캐시 세트 어드레스(431)는 다음과 같이 결정된다:
먼저, 난독화 매개변수가 아직 규정되지 않았다면, 난독화 모듈(300)의 규정 디바이스(330)에 의해 난독화 매개변수가 규정된다. 그 다음, 난독화 모듈(300)의 제1 생성 디바이스(340)에 의하여, 생성 함수, 난독화 매개변수 및 제1 식별자(132)를 사용하여, 제1 캐시 세트 어드레스(112)로부터 제1 수정 캐시 세트 어드레스(431)가 생성된다.
데이터 블록(133)의 복사본이 아직 캐시 메모리에 있지 않으면, 캐시 라인(131), 예컨대, 가장 덜 빈번히 사용된 캐시 라인 또는 가장 먼 과거의 마지막 액세스를 갖는 캐시 라인이 선택되어 캐시 세트(430)에서 삭제된다. 이는 현재 데이터 블록(133)으로 교체된다. 제1 식별자(132)는 또한, 후속하여 캐시 액세스 동안의 명백한 할당을 가능하게 하기 위하여 저장된다.
동일한 방식으로, m2-번째 데이터 블록(147)이 m2-번째 데이터 블록(147)의 m2-번째 메모리 어드레스에 의하여 제1 캐시 세트(130)의 k-번째 캐시 라인(135)에 저장된다. 이를 위해, 블록 어드레스가 다시 결정되며, 이 블록 어드레스로부터 m2-번째 식별자(146)가 형성된다.
위에서 설명된 것과 동일한 방법에 의하여, 제2 데이터 블록(143)은 이 제2 데이터 블록(143)의 제2 메모리 어드레스에 의하여 제2 캐시 세트(440)에 매핑된다. 여기서, 제2 메모리 어드레스로부터 블록 어드레스, 제2 식별자(142), 및 제2 캐시 세트(440)에 대한 제2 수정 캐시 세트 어드레스가 마찬가지로 결정된다.
동일한 방법을 사용하여, 제3 데이터 블록(153) 및 m3-번째 데이터 블록(157)은 n-번째 캐시 세트(150)의 캐시 라인들에 매핑된다.
그러므로, 제1 수정 캐시 세트 어드레스(431)에 의하여, 제1 캐시 세트(430)가 캐시 메모리 내에서 어디에 있는지가 규정된다. 제1 캐시 세트 어드레스(112)로의 제1 수정 캐시 세트 어드레스(431)의 할당은 테이블을 통해 이루어질 수 있다. 제1 수정 캐시 세트 어드레스(431)가 생성 함수에 의해 생성된 이후에, 이 제1 수정 캐시 세트 어드레스(431)는 이 테이블에 입력된다.
이제, 캐시 메모리의 제1 데이터 블록(133)에 액세스해야 한다면, 테이블을 통해 제1 수정 캐시 세트 어드레스(431)를 결정하기 위해, 제1 캐시 세트 어드레스(112)가 사용된다. 그 다음, 제1 수정 캐시 세트 어드레스(431) 및 제1 식별자(132)에 의하여, 캐시 메모리의 데이터 블록(133)은, 이 데이터 블록(133)이 캐시 메모리에 이미 저장되었다면 액세스된다.
사이드 채널 공격들로부터 데이터를 보호하기 위하여, 난독화 매개변수는, 예컨대 500 회의 캐시 히트들 이후에 수정되며, 새로운 난수들로 교체된다. 이 수정의 결과로서, 캐시 메모리가 먼저 재조직되어야 하는데, 그 이유는 수정 캐시 세트 어드레스, 예컨대 제1 수정 캐시 세트 어드레스 및 관련된 캐시 세트 어드레스들, 예컨대 제1 캐시 세트 어드레스의 할당이 더 이상 정확하지 않기 때문이다.
난독화 매개변수의 수정은, 캐시 메모리의 재조직 동안, 제1 캐시 세트의 제1 캐시 라인에 복사본들로서 이전에 버퍼링된 데이터가 복사본의 갱신된 저장 동안 제2 캐시 세트의 제2 캐시 라인에 매핑된다는 결과를 갖는다. 게다가, 이 경우, 제1 캐시 세트의 추가 캐시 라인들에 버퍼링된 추가 데이터의 복사본들은 이제, 새로운 복사본들로서, 추가 캐시 세트들의 다른 캐시 라인들에 완전히 또는 부분적으로 매핑된다.
다시 말해서, 예컨대 500 회의 캐시 히트들 이후에, 캐시 메모리의 재조직이 강제된다. 캐시 메모리의 이 재조직 이후에, 데이터 또는 데이터 세트들의 복사본들은 캐시 메모리에서 더 이상 액세스가능(accessible)하지 않으며, 이는 캐시 미스를 야기한다. 이제, 본 발명에 따른 방법을 사용하여, 데이터의 복사본들이 캐시 메모리에 다시 기록되며, 결과적으로 캐시 메모리는 재형성된다.
장점은, 캐시 라인의 길이의 배수만큼만 상이한 메모리 어드레스들을 갖는 어드레스 구역들이 더 이상 동일한 캐시 세트의 캐시 라인에 매핑되지 않는다는 것이다.
캐시 메모리가 몇 번이고 재조직되기 때문에, 캐시 메모리를 모니터링함으로써, 프로세스에서 사용되는 보안-관련 데이터에 관한 결론들을 도출하는 것이 더 이상 가능하지 않다.
상기 예시적 실시예들에서, 캐시 메모리에 버퍼링되는 데이터의 경우, 이 데이터가 보안-관련 데이터를 포함하는지 또는 중요하지 않은 데이터를 포함하는지의 여부에 관한 어떤 구분도 이루어지지 않는다. 근본적으로, 데이터 전부가 보안-관련 데이터를 포함한다고 가정된다.
상기 예시적 실시예들의 일 변형에서, 캐시 메모리의 데이터 블록에 대한 액세스를 위해, 생성 함수, 제1 식별자 및 난독화 매개변수에 의하여, 제1 캐시 세트 어드레스로부터 직접적으로, 액세스를 위한 제1 수정 캐시 어드레스가 또한 형성될 수 있다. 여기서, 예컨대 프로세서 상의 메모리 공간을 절약하기 위하여, 테이블은 생략된다.
상기 예시적 실시예들의 다른 변형에서, 난독화 매개변수들은 캐시 메모리에 대한 미리 정의된 횟수의 성공적인 액세스들 이후에 수정된다. 이는, 상이한 보안 요건들을 고려하기 위하여, 관리자에 의해 시스템 인터페이스(interface)를 통해 구성될 수 있는 간단한 카운터(counter)에 의하여 달성될 수 있다. 그러나, 그러한 구성은 또한, 예컨대 프로그램 업데이트(program update)를 통해, 예컨대 펌웨어(firmware) 업데이트로서 실행될 수 있다.
상기 예시적 실시예들의 다른 변형에서, 난독화 매개변수들은 인터럽트(interrupt) 요청에 의해 수정된다. 공격을 식별할 때, 운영체제는 그 자신을 안전한 상태로 두기 위해 복수의 조치들을 수행할 수 있다. 이는 또한, 난독화 매개변수의 수정 또는 재조직이 인터럽트 요청에 의하여, 운영체제에 의해 능동적으로 유발될 수 있다는 사실을 포함한다.
상기 예시적 실시예들의 다른 변형에서, 난독화 매개변수들은 미리 결정된 시간 간격 내에서 수정된다. 이는 예컨대, 간단한 내부 클록(clock)에 의하여 달성될 수 있다. 다른 변형에서, 클록은, 상이한 보안 요건들을 고려하기 위하여, 관리자에 의해 시스템 인터페이스를 통해 구성될 수 있다. 그러나, 그러한 구성은 또한, 예컨대 프로그램 업데이트를 통해, 예컨대 펌웨어 업데이트로서 실행될 수 있다.
본 발명이 예시적 실시예들에 의해 상세히 예시 및 설명되었지만, 본 발명은 개시된 예들에 의해 제한되지 않으며, 본 발명의 보호 범위로부터 벗어나지 않고, 이로부터 당업자에 의해 다른 변형들이 추론될 수 있다.

Claims (17)

  1. 캐시 메모리(cache memory)의 보안-관련 데이터(data)를 보호하기 위한 방법(200)으로서,
    일반 메모리로부터의 상기 보안-관련 데이터의 복사본(copy)이 상기 캐시 메모리에 저장되며,
    상기 방법(200)은,
    난독화 매개변수들(obfuscation parameters)을 규정하는 단계(210);
    상기 보안-관련 데이터(133)가 저장되는 상기 일반 메모리의 메모리 어드레스(address)(110)로부터 제1 캐시 세트(set) 어드레스(112)를 결정하는 단계(220);
    상기 난독화 매개변수들 및 상기 제1 캐시 세트 어드레스(112)를 사용하여 생성 함수로 제1 캐시 세트(430)에 대한 제1 수정 캐시 세트 어드레스(431)를 생성하는 단계(230); 및
    상기 제1 수정 캐시 세트 어드레스(431)를 사용하여, 상기 보안-관련 데이터(133)의 복사본을 상기 제1 캐시 세트(430)의 제1 캐시 라인(line)(131)에 저장하는 단계(240)
    를 포함하고,
    상기 난독화 매개변수들은 인터럽트(interrupt) 요청에 의해 수정되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  2. 제1 항에 있어서,
    상기 메모리 어드레스(110)로부터 블록(block) 어드레스(111)가 결정되며, 상기 블록 어드레스(111)로부터 제1 식별자(132)가 형성되며, 상기 생성 함수는 추가적으로, 상기 블록 어드레스(111) 또는 상기 제1 식별자(132)를 사용하여 상기 제1 수정 캐시 세트 어드레스(431)를 생성하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  3. 제2 항에 있어서,
    상기 캐시 메모리의 상기 보안-관련 데이터(133)에 대한 액세스(access)는 상기 제1 식별자(132), 상기 제1 캐시 세트 어드레스(112) 및 상기 생성 함수에 의하여 이루어지며, 상기 생성 함수는 상기 난독화 매개변수, 상기 제1 캐시 세트 어드레스 및 상기 제1 식별자(132)를 사용하여 상기 제1 수정 캐시 세트 어드레스(431)를 생성하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 난독화 매개변수들의 수정은 미리 정의된 규칙들에 따라 달성되며, 상기 캐시 메모리의 재조직은 상기 난독화 매개변수들의 수정에 의해 수행되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  5. 제4 항에 있어서,
    상기 재조직 동안, 상기 제1 캐시 세트(430)의 상기 제1 캐시 라인(131)의 데이터는 제2 캐시 세트(440)의 제2 캐시 라인(141)에 매핑되며(mapped), 상기 제1 캐시 세트(430)의 추가 캐시 라인들의 추가 데이터는 추가 캐시 세트들의 다른 캐시 라인들에 완전히 또는 부분적으로 매핑되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  6. 제2 항에 있어서,
    상기 생성 함수는 상기 난독화 매개변수들 및/또는 상기 제1 식별자(132)를 사용하여 상기 제1 캐시 세트 어드레스(112)의 변환(permutation)에 의해 상기 제1 수정 캐시 세트 어드레스를 생성하는 함수를 포함하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  7. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 난독화 매개변수들은 상기 캐시 메모리에 대한 미리 정의된 횟수의 성공적인 액세스들 이후에 수정되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  8. 삭제
  9. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 난독화 매개변수들은 미리 결정된 시간 간격 내에 수정되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  10. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 난독화 매개변수는 시스템(system) 재시작의 경우에 재형성되는 난수를 포함하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  11. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 난독화 매개변수들은 고유 하드웨어(hardware) 식별자를 포함하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법(200).
  12. 캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400)으로서,
    일반 메모리로부터의 상기 보안-관련 데이터의 복사본이 상기 캐시 메모리에 저장되며,
    상기 시스템(400)은,
    난독화 매개변수들을 규정하도록 구성되는 규정 디바이스(device)(330);
    상기 보안-관련 데이터(133)가 저장되는 상기 일반 메모리의 메모리 어드레스(110)로부터 제1 캐시 세트 어드레스(112)를 결정하도록 구성되는 제1 결정 디바이스(310);
    상기 난독화 매개변수들 및 상기 제1 캐시 세트 어드레스(112)를 사용하여 생성 디바이스로 제1 캐시 세트(430)에 대한 제1 수정 캐시 세트 어드레스(431)를 생성하도록 구성되는 제1 생성 디바이스(340); 및
    상기 제1 수정 캐시 세트 어드레스(431)를 사용하여, 상기 보안-관련 데이터(133)의 복사본을 상기 제1 캐시 세트(430)의 제1 캐시 라인(131)에 저장하도록 구성되는 메모리 디바이스(350)
    를 포함하고,
    상기 난독화 매개변수들은 인터럽트 요청에 의해 수정되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
  13. 제12 항에 있어서,
    상기 시스템은, 상기 메모리 어드레스(110)로부터 블록 어드레스(111)를 결정하도록 구성되는 제2 결정 디바이스(320)를 포함하며,
    상기 블록 어드레스(111)로부터 제1 식별자(132)가 형성되며, 상기 생성 디바이스는 추가적으로, 상기 블록 어드레스(111) 또는 상기 제1 식별자(132)를 사용하여 상기 제1 수정 캐시 세트 어드레스(431)를 생성하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
  14. 제13 항에 있어서,
    상기 시스템은, 상기 제1 식별자(132), 상기 제1 캐시 세트 어드레스(112) 및 상기 생성 디바이스에 의하여 상기 캐시 메모리의 상기 보안-관련 데이터(133)에 액세스(access)하도록 구성되는 액세스 디바이스를 가지며, 상기 생성 디바이스는 상기 난독화 매개변수, 상기 제1 캐시 세트 어드레스 및 상기 제1 식별자(132)를 사용하여 상기 캐시 메모리에서의 액세스를 위한 상기 제1 수정 캐시 세트 어드레스(431)를 생성하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
  15. 제12 항 내지 제14 항 중 어느 한 항에 있어서,
    수정 디바이스가 미리 정의된 규칙들에 따라 상기 난독화 매개변수들을 수정하도록 구성되며, 상기 캐시 메모리의 재조직은 상기 난독화 매개변수들의 수정에 의해 수행되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
  16. 제13 항에 있어서,
    상기 생성 디바이스는, 상기 난독화 매개변수들 및 상기 제1 식별자(132)를 사용하여 상기 제1 캐시 세트 어드레스(112)의 변환에 의해 상기 제1 수정 캐시 세트 어드레스(431)를 생성하는 변환 디바이스를 포함하는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
  17. 제13 항에 있어서,
    상기 제1 결정 디바이스 및 상기 제2 결정 디바이스는 일체형 결정 디바이스로서 구성되는,
    캐시 메모리의 보안-관련 데이터를 보호하기 위한 시스템(400).
KR1020177031498A 2015-03-31 2016-03-22 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법 KR102117838B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102015205827.1A DE102015205827A1 (de) 2015-03-31 2015-03-31 Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
DE102015205827.1 2015-03-31
PCT/EP2016/056188 WO2016156095A1 (de) 2015-03-31 2016-03-22 Verfahren zum schutz sicherheitsrelevanter daten in einem cachespeicher

Publications (2)

Publication Number Publication Date
KR20170132300A KR20170132300A (ko) 2017-12-01
KR102117838B1 true KR102117838B1 (ko) 2020-06-02

Family

ID=55699611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177031498A KR102117838B1 (ko) 2015-03-31 2016-03-22 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법

Country Status (7)

Country Link
US (1) US11003594B2 (ko)
EP (1) EP3254227B1 (ko)
KR (1) KR102117838B1 (ko)
CN (1) CN107430671B (ko)
DE (1) DE102015205827A1 (ko)
ES (1) ES2754266T3 (ko)
WO (1) WO2016156095A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102327296B1 (ko) 2021-05-17 2021-11-16 김인영 공기질정보를 출력하는 인디케이션 시스템

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013203365A1 (de) * 2013-02-28 2014-08-28 Siemens Aktiengesellschaft Verfahren und Schaltungsanordnung für kontrollierte Zugriffe auf Slave-Einheiten in einem Ein-Chip-System
KR102438784B1 (ko) * 2018-01-05 2022-09-02 삼성전자주식회사 데이터를 난독화 및 복호화 하는 전자 장치 및 그의 제어 방법
CN109144894B (zh) * 2018-08-01 2023-04-07 浙江大学 基于数据冗余的内存访问模式保护方法
CN110266484B (zh) * 2019-06-28 2021-07-06 深圳前海微众银行股份有限公司 一种数据加密方法、装置、设备及介质
US11456855B2 (en) * 2019-10-17 2022-09-27 Arm Limited Obfuscating data at-transit
US11645428B1 (en) * 2020-02-11 2023-05-09 Wells Fargo Bank, N.A. Quantum phenomenon-based obfuscation of memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140095797A1 (en) * 2008-12-08 2014-04-03 Teleputers, Llc Cache Memory Having Enhanced Performance And Security Features

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687790B2 (en) 1994-08-03 2004-02-03 Intel Corporation Single bank associative cache
US5950222A (en) * 1996-03-14 1999-09-07 Sanyo Electric Co., Ltd. Microcomputer using a non-volatile memory
JP2002025188A (ja) * 2000-07-04 2002-01-25 Hitachi Ltd 情報記憶装置、信号処理回路
US20040078544A1 (en) 2002-10-18 2004-04-22 Silicon Integrated Systems Corporation Memory address remapping method
US8719588B2 (en) * 2008-06-30 2014-05-06 Atmel Corporation Memory address obfuscation
US8140758B2 (en) * 2009-04-24 2012-03-20 International Business Machines Corporation Data reorganization in non-uniform cache access caches
US20100287382A1 (en) * 2009-05-07 2010-11-11 John Charles Gyorffy Two-factor graphical password for text password and encryption key generation
EP2290547B1 (en) * 2009-08-26 2012-12-19 Nxp B.V. Method of obfuscating a code
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8667301B2 (en) * 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
US10277553B2 (en) 2011-04-15 2019-04-30 Unify Gmbh & Co. Kg Method for generating addresses in a computer network
US9396118B2 (en) * 2011-12-28 2016-07-19 Intel Corporation Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack
ES2546072T3 (es) * 2012-09-14 2015-09-18 Barcelona Supercomputing Center-Centro Nacional De Supercomputación Dispositivo para controlar el acceso a una estructura de memoria caché
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
CN103049397B (zh) * 2012-12-20 2015-09-16 中国科学院上海微系统与信息技术研究所 一种基于相变存储器的固态硬盘内部缓存管理方法及系统
CN103116555B (zh) 2013-03-05 2014-03-05 中国人民解放军国防科学技术大学 基于多体并行缓存结构的数据访问方法
CN103810119B (zh) * 2014-02-28 2017-01-04 北京航空航天大学 利用片上温差降低stt-mram功耗的缓存设计方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140095797A1 (en) * 2008-12-08 2014-04-03 Teleputers, Llc Cache Memory Having Enhanced Performance And Security Features

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102327296B1 (ko) 2021-05-17 2021-11-16 김인영 공기질정보를 출력하는 인디케이션 시스템

Also Published As

Publication number Publication date
DE102015205827A1 (de) 2016-10-06
WO2016156095A1 (de) 2016-10-06
CN107430671A (zh) 2017-12-01
EP3254227A1 (de) 2017-12-13
ES2754266T3 (es) 2020-04-16
KR20170132300A (ko) 2017-12-01
CN107430671B (zh) 2021-06-01
EP3254227B1 (de) 2019-08-14
US20180081825A1 (en) 2018-03-22
US11003594B2 (en) 2021-05-11

Similar Documents

Publication Publication Date Title
KR102117838B1 (ko) 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법
CN110945509B (zh) 用于控制对受保护存储器区域中数据的访问的设备和方法
US10733313B2 (en) Counter integrity tree for memory security
Ren et al. Design space exploration and optimization of path oblivious ram in secure processors
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
JP5700481B2 (ja) 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
US11658808B2 (en) Re-encryption following an OTP update event
US11295025B2 (en) Probabilistic memory safety using cryptography
US11775177B2 (en) Integrity tree for memory integrity checking
CN111143247B (zh) 存储装置数据完整性保护方法及其控制器、片上系统
US7480777B2 (en) Cache memory device and microprocessor
US11003593B2 (en) Method for managing a cache memory of an electronic processor
US20240080193A1 (en) Counter integrity tree
US20230113906A1 (en) An apparatus and method of controlling access to data stored in a non-trusted memory
CN115777101A (zh) 使用高速缓存的部分散列值的存储器保护

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant