blog/content/posts/hardware-security.md

9.0 KiB

+++ date = 2021-08-06T10:31:09Z description = "" draft = false slug = "hardware-security" title = "Hardware Security"

+++

Hardware Security

신뢰성과 관련된 기술

1. RoT (Root of Trust)

Root of Trust, 신뢰점이란, 전자기기 안에서 별도로 존재하는 프로세싱 유닛으로, 메인 프로세서의 보조로서 다양한 암호화 기법이나 솔루션을 제공하거나 이를 제어하기 위한 보안 기능들을 의미한다. RoT가 궁극적으로 달성하고자 하는 것은 TC(Trusted Computing)으로, 신뢰할 수 있는 컴퓨팅, 즉 믿을 만 하고 무결성이 보장되는 계산 및 기능을 이야기한다. 이를 달성하기 위한, RoT에 포함되는 여러가지 기술들이나 알고리즘이 있고, 각 단계들을 순차적으로 달성되어 신뢰할 수 있는 보안적인 프로세스가 진행된다. RoT의 대표적인 기법이나 기기는 TPF, TEE등 신뢰할 수 있는 플랫폼 모듈이나 신뢰할 수 있는 실행 환경이 있다.

2. TPF

TPF, Trusted Platform Module이란, 신뢰할 수 있는 플랫폼 모듈을 의미한다. 어떤 어플리케이션이나 프로세스가 신뢰성 있도록 실행되기 위해 별도의 플랫폼 모듈을 설치한다. 이 플랫폼은 다양한 암호화 기법을 제공한다. TPF는 외부에서 접근이 불가하도록 설계된 암호화 키와 저장공간 및 연산장치를 별도로 제공함으로써 외부에서는 암호화 키나 암호화 과정 및 알고리즘, 그 설계를 알 수 없도록 만들어져 소프트웨어적으로 취약할 수 밖에 없는 키 유출을 해결한 장치/기술이다. TPF는 내부 키(서명)이 존재하고, 이를 바탕으로 다양한 암호화 프로세스를 제공한다. RSA암호화나 ECC암호화 및 서명 및 검증을 제공하며, Hashing이나 HMAC, 어플리케이션이 응용할 수 있는 암호화된 저장공간을 제공하기도 한다.

TPF는 외부에서는 절대 접근할 수 없게 만들어져 있다. 하드웨어적으로 메인 프로세스와 분리되어 있어 해킹 당하거나 키가 탈취당할 확률이 적으며, 별도의 메모리를 사용한다. 하지만, TPF도 물리적인 해킹에는 취약할 수 밖에 없으며, 직접 칩을 탈취하여 역공학이나 부채널 공격을 시행하면 키가 탈취당할 위험이 있다.

3. TEE

TEE, Trusted Execution Environment란 신뢰할 수 있는 실행 환경을 의미한다. TPF를 따로 설치할 수 없는 환경이거나 TPF를 설치한 환경이라도 더욱 보안을 강화하기 위해 메인 프로세서를 보안 영역과 일반 사용자 영역으로 나누어 사용하는 것을 의미한다. 보안 영역에서는 TPF에서와 마찬가지로 보안 정보의 저장과 처리를 수행하고, 암호화 프로세스를 실행한다. 일반 사용자 영역에서는 보안 프로세스가 필요하면, 이를 보안 영역에서 실행함으로써 이를 신뢰 가능한 별도의 환경에서 실행하도록 하는 기술이다. 결제 및 인증 과정이나 DRM 과정이 TEE에서 주로 실행된다. 보안영역은 일반영역과 물리적으로 분리되어 있어, TPF와 마찬가지로 일반영역에서 TEE에 접근할 수 있는 방법은 TEE가 제공하는 방법밖에 없다. TEE는 TPF와는 다르게 일반 영역에 있던 잡다한 프로세스도 실행하고 처리할 수 있다. TPF에서는 비밀번호 입력 등의 온전히 메인 프로세스의 일인 것들을 처리할 수 없었지만, TEE는 메인 프로세서에 포함되어 있으므로 이러한 사소한 것들까지 모두 담당할 수 있어 보안을 더욱 향상시켜 준다. 완전히 신뢰 가능한 환경을 조성하기 위해서는 TEE와 TPF를 혼용하여 TPF는 TEE에게만 통신하고, TEE는 기타 사소한 것들까지 처리한다면 최고수준의 보안을 유지할 수 있다.

대표적으로는 삼성전자에서 자사 휴대폰에 기본적으로 탑재하는 보안 솔루션 Knox가 있다. Knox는 휴대폰의 CPU를 보안 영역과 일반 영역으로 나누어 TEE를 제공한다.

Side-Channel Attack 대책

1. Side-Channel Attack

Side-Channel Attack, 부채널 공격이란, 암호화 과정이나 보안 프로세스가 진행중일 때 프로세서에서 부가적으로 얻을 수 있는 다양한 정보들을 이용하여 구조를 파악하거나 키를 탈취하는 방법이다. 부가적으로 얻을 수 있는 정보는 칩에서 나오는 열이나 전자기파, 연산이 수행되는 시간, 전력 소비량, 에러 처리(Fault)등이 있다.

2. 방어 기술

Side-Channel Attack의 방어에는 Hiding과 Masking기법이 가장 많이 사용된다. 마스킹이란, 연산의 중간에 사용되는 값을 랜덤하게 결함으로써 원래의 연산에서 사용되는 값들의 입력값과 연산값과의 관계를 불명확하게 하여 특성키 공격이나 알려진 평문 공격에 대비할 수 있도록 하며, 전력 사용량의 규칙성을 모호하게 만든다. 마스킹의 어떤 과정에서 랜덤한 값을 사용하는지에 따라 다양한 마스킹 기법이 존재한다. 하지만, 랜덤 알고리즘이 밝혀지거나 역공학을 통해 알아낸다면, 혹은 또 다른 공격에서는 이 방법은 효과적이지 않을 수 있다. 랜덤 알고리즘이 밝혀졌을 때의 문제점은 거의 모든 암호화 알고리즘에서의 문제이다.

SABL, WDDL, t-private Logic등이 있다.

EM(Electro-Magnetic) SCA의 대비하는 방법으로는 랜덤한 전자기파를 방출하는 방법이 있다. 암호화 퍼리 과정에서 더미 연산과 불필요한 값들을 중간중간에 넣어줌으로써 더미 전가지파를 만들어 낼 수 있다. 하지만, 결국 주요한 연산의 전자기파는 모두 누출되는 것이기에 칩을 설계할 시에 이를 대비할 방법을 모색하여 전자파를 최대한 약하게 방출하도록 하거나 차폐 솔루션을 도입하는 등의 과정이 필요하다.

Fault Injection SCA의 경우에는 예측 불가능한 다양한 상황에 대해서 많은 가능성을 두고 Fault처리를 할 수밖에 없다. 하지만, 이는 많은 연산 성능 하락을 유발하며, 알고리즘을 매우 무겁게 할 수 있다.

Timing SCA의 경우에는 각각의 입력에 대해 연산시간이 모두 동일하게 처리되도록 설계하거나, 각각의 연산에 더미 타임을 넣는 방법이 있다.

Reversing 대책

1. 역공학

역공학(Reversing)이란, 소프트웨어에서는 특정한 프로세스가 처리되는 과정에서 데이터 흐름이나 역어셈블, CPU처리 분석을 통해 원래의 알고리즘을 알아내거나 원리를 알아내어 크래킹하는 과정을 의미한다. 한편, 하드웨어의 경우에는 다양한 칩을 뜯어내어 그 구조를 확인하거나 전류 흐름을 측정하는 등의 물리적인 분석을 통해 반도체의 구조를 알아내거나 연산 중 어떤 데이터가 어떤 흐름을 통해 이동하는지에 대해 알아내는 것을 의미한다. 반도체 칩의 사진을 찍어 현미경을 통해 분석하는 과정등을 통해 데이터의 이동 버스(BUS)를 알아내는 과정이 포함된다.

칩의 리버싱은 디캡슐레이션, 디레이어링, 게이트 레벨 넷리스트 추출등의 과정이 있다. 먼저 패키지에선 다이를 제거하고, IC를 디캡슐레이션하여 반도체 칩에 직접 접근할 수 있도록 한다. 후에, 디레이어링을 통해 각각을 싱글 레이어로 분리하여 분석하는데, 이때에는 SEM촬영을 통하여 얻은 사진 설계도를 얻어내는 과정이 있고, 후에 이 사진을 이용하여 이를 회로도로 변환하는 과정이 있다.

데이터 BUS를 알아내게 된다면, 연산 중간중간에 사용되는 값들을 알 수 있으며, 입력과 출력값을 비교하여 어떤 부위가 어떤 연산을 처리하는지 알 수 있고, 이를 통해 전자기파 주입 공격을 하거나, 키를 알아낼 수 있다. 또한, 같은 역할을 하는 칩을 제작하여 이를 공격하는데 사용될 수 있다.

2. 메모리 추출 방지

메모리가 유출되는 경우를 방어하기 위한 방법으로는 PUF가 있다. PUF는 Physically Unclonable Function으로, 물리적으로 복제가 불가능한 함수를 의미한다. PUF는 칩이 각각의 고유한 값을 가지도록 하며, 이를 예측 불가능하도록 하여 칩에 직접 접근해도 이를 알 수 없도록 한다.

3. 역공학 대책

Reversing에 대비하는 방안에는 메모리 유출 방지에서 사용했던 방법을 사용한다. PUF를 이용함으로써 각각의 칩에 따라 연산값이 달라지게 되고, 따라서 칩의 구조를 알아내거나 Bus를 분석할 수 있어도 PUF에서의 값은 Bus를 지나가지 않으므로 키를 알 수 없다.

UART? PSA?

출처> Wikipedia, [ 하드웨어 칩 기반 보안시스템 밒 해킹 동향, 한양대학교 ]