본문 바로가기
일상/개발자의 일상

[보안/기술]삼성 KNOX (삼성녹스) 란? -- 삼성 KNOX 원리 -1-

by Dev zeroday0619 2019.02.25

[보안/기술]삼성 KNOX (삼성녹스) 란? -- 삼성 KNOX 원리 -1-

Screenshot 2019-02-25 at 13.42.42

안녕하세요. 학생개발자입니다. 

삼성전자는 자사 스마트폰에 삼성 KNOX {(삼성 녹스)삼성 녹스(Samsung Knox, Samsung KNOX)}를 탑제합니다.
삼성KNOX를 필자는 KNOX라고 표기하겠습니다.
KNOX는 삼성전자(이하 삼성)가 개발, 판매하는 하드웨어 기반 개인, 기업용 모바일 보안 솔루션입니다.

KNOX 원리

Knox는 안드로이드 시스템 및 타이젠을 탑제한 
모든 삼성전자의 모바일 및 IOT기기 에 탑제되는 하드웨어 기반 보안 솔루션 입니다.
 
Knox는 외부의 위협을 다중 계층 보안이라는 기술을 사용해 디바이스의 해킹과 
허가하지 않은 접근을 원천 차단합니다.
 
Knox의 다중 계층 보안의 구성은 4단계로 이루어져 있습니다.
Screenshot 2019-02-25 at 12.47.32

 

먼저 하드웨어 기반인 보안 시스템인 SECURE/TRUSTED BOOT 및 하드웨어 루트 오브 트러스트 입니다.
 
보안 수단의 우회 또는 손상을 방지하기 위해 Knox는 하드웨어 루트 오브 트러스트에 의해 
지원되는 부트타임 보호로 부팅 프로세스가 진행되는 동안 디바이스의 무결성을 확인합니다.
 

루트 오브 트러스트(ROOT OF TRUST)

*리눅스 / 유닉스계열에서는 ROOT는 시스템 권한을 가진 파워 유저라는 의미로 사용됩니다.

Knox는 하드웨어 난수 생성기를 사용하여 디바이스 제조 단계에서 생성된 DUHK (장치 고유 하드웨어 키: 
삼성은 장치 초기 제조시 장치 하드웨어에 장치 고유의 대칭 키인 DUHK를 통합합니다.
 
DUHK는 데이터 (예 : 장치 상태 증명 데이터)를 특정 장치에 바인딩하며 
하드웨어 암호화 모듈에서만 액세스 할 수 있으며 장치 소프트웨어에 직접 노출되지 않습니다.
 
그러나 소프트웨어는 DUHK가 데이터를 암호화하고 해독하도록 요청할 수 있습니다. 
이 DUHK 암호화 데이터는 장치에 바인딩되어 있으며 다른 장치에서 해독 할 수 없습니다.)는 
Device Root Key (DRK)와 Samsung Attestation Key(SAK). 
DRK 및 SAK에는 수신자가 제공된 장치의 IMEI 및 일련 번호를 확인할 수있게하는 인증 코드가 들어 있습니다. 
 
기존 구매 시스템은 장치의 IMEI 및 일련 번호를 사용하여 DRK 식별자가 아닌 장치를 추적하므로 
사용자는 구입 한 장치와 상호 작용한다는 증거를 얻을 수 있습니다. 
DUHK는 TrustZone 운영 체제에서만 사용할 수 있습니다. 
 
TrustZone OS는 DUHK를 사용하여 각 신뢰할 수있는 응용 프로그램에 고유 한 후속 키를 만듭니다. 
신뢰할 수있는 응용 프로그램은 이러한 키를 사용하여 안전하게 데이터를 저장합니다. 
DRK 및 SAK는 신뢰할 수있는 응용 프로그램이 
자신의 ID 및 실행중인 장치의 ID를 증명할 수있게 해주는 개인 키입니다. 
이러한 신뢰할 수있는 응용 프로그램은 하드웨어와 깊이 통합되어 하드웨어 지원 보안을 제공합니다.  
 
장치를 시작할 때 삼성은 SSBK ( Samsung Secure Boot Key )를 사용하여 모든 소프트웨어 구성 요소를 검사합니다. 
구성 요소 중 하나는 보안 코드 및 데이터를 위해 예약 된 칩 분할 영역 인 TrustZone Secure World입니다. 
TrustZone Secure 영역 내에서 실행되는 특별히 권한이 부여 된 소프트웨어 모듈 만이 
이러한 키에 액세스 할 수 있습니다.
*Samsung Secure Boot Key (SSBK) 란?
SSBK는 삼성에서 승인 한 부트 실행 파일에 서명하는 데 사용되는 비대칭 키 쌍입니다.
SSBK의 퍼스널키 부분은 삼성이 보조 및 앱 부트 로더에 서명하는 데 사용됩니다.
 
SSBK의 퍼블릭키 부분은 삼성 공장 제조시 하드웨어의 일회용 실시간 재프로그래밍 퓨즈(efuse)에 저장됩니다. 
보안 부팅 프로세스는이 공개 키를 사용하여로드되는 각 부팅 구성 요소의 승인 여부를 확인합니다.

 

*efuse란?
efuse는 허가되지 않는 접근이 발생하면 스스로 회로를 끊어버려서 특정한 상태를 나타냅니다.
삼성 디바이스가 루팅된 경우 knox 워렌티가 0x0(정상)에서 0x1(보증 만료)로 변경되며 efuse는
한번 상태가 변경되면 초기화가 불가능하여 강력한 보안 기능을 제공합니다.
efuse
Samsung Knox 장치는 e-fuse를 사용하여 "신뢰할 수없는"(Samsung 이외의) 부팅 경로가 실행되었는지 여부를 나타냅니다. 
장치가 Samsung 이외의 부트 로더, 커널, 커널 ��기화 스크립트 또는 데이터로 부팅되는 경우 e-fuse가 설정됩니다. 
따라서 장치를 켜고 비 삼성 안드로이드 버전을 설치하면 e-fuse가 설정됩니다. 
e-fuse가 설정되면 장치는 더 이상 Knox Workspace 컨테이너를 만들거나 
기존 Knox 작업 영역에 저장된 데이터에 액세스 할 수 없습니다.
 
 
 

루트 오브 트러스트는 실행을 허용하기 전에 각 Knox 플랫폼 기능에 대한 점검을 수행합니다. 

이러한 일련의 보안 검사는 최초의 하드웨어 검사로 시작되므로 각 기능은 하드웨어 루트 신뢰로 보호됩니다. 

공격자가 목표로하는 체인의 링크에 관계없이 보안 검사 중 하나가 이를 탐지합니다.

 

보안 하드웨어

ARM TrustZone Secure World 는 매우 민감한 소프트웨어가 실행되는 환경입니다. 

ARM TrustZone 하드웨어는 메모리를 보장하며 보안 영역 (예 : 지문 판독기)에는 

Secure World에서만 액세스 할 수 있습니다. 

 

커널, 미들웨어 및 앱을 포함한 대부분의 시스템은 일반 세계에서 실행됩니다. 

반면 Secure World 소프트웨어는 더 많은 권한을 가지며 보안 및 일반 세계 자원에 모두 액세스 할 수 있습니다.

 

부트 로더 ROM - PBL (Primary Bootloader)은 부트 프로세스 중에 실행되는 첫 번째 코드입니다. 

PBL은 부팅 체인을 측정하고 확인하기 위해 신뢰됩니다. 

변조를 방지하기 위해 PBL은 보안 하드웨어의 ROM에 보관됩니다. 

장치 하드웨어는 부팅시 ROM에서 PBL을로드하고 실행하며 PBL은 보안 및 신뢰할 수있는 부팅 프로세스를 시작합니다.

 

하드웨어 키

장치 고유 하드웨어 키 (DUHK) - 삼성은 장치 초기 제조시 장치 하드웨어에 장치 고유의 대칭 키인 DUHK를 통합합니다. 

DUHK는 데이터 (예 : 장치 상태 증명 데이터)를 특정 장치에 바인딩하며 

하드웨어 암호화 모듈에서만 액세스 할 수 있으며 장치 소프트웨어에 직접 노출되지 않습니다. 

그러나 소프트웨어는 DUHK가 데이터를 암호화하고 해독하도록 요청할 수 있습니다. 

이 DUHK 암호화 데이터는 장치에 바인딩되어 있으며 다른 장치에서 해독 할 수 없습니다.

 

장치 루트 키 (DRK) - DRK는 X.509 인증서를 통해 삼성의 루트 키로 서명 된 장치 고유의 비대칭 RSA 키 쌍입니다. 

이 인증서는 삼성이 DRK를 제작했음을 증명합니다. 

DRK는 삼성 공장에서 제조시 생성되며 DUHK에 의해 암호화 된 장치에 저장되어 장치에 바인딩됩니다. 

DRK는 TrustZone Secure World 내에서만 액세스 할 수 있으며 DUHK의 보호를받습니다. 

DRK는 다른 서명 키를 파생하므로 Trust of Root의 중요한 부분입니다. 

DRK는 장치마다 고유하므로 암호화 서명을 통해 장치에 데이터를 연결할 수 있습니다. 

서명 키는 DRK에서 파생되고 데이터에 서명하는 데 사용됩니다.

 

Samsung Secure Boot Key (SSBK) - SSBK는 삼성에서 승인 한 부트 실행 파일에 서명하는 데 사용되는 비대칭 키 쌍입니다.

SSBK의 개인 부분은 삼성이 보조 및 앱 부트 로더에 서명하는 데 사용됩니다.

SSBK의 공용 부분은 삼성 공장 제조시 하드웨어의 일회용 프로그래머블 퓨즈에 저장됩니다. 

보안 부팅 프로세스는이 공개 키를 사용하여로드되는 각 부팅 구성 요소의 승인 여부를 확인합니다.

 

SAK (Samsung Attestation Key) - SAK는 삼성의 루트 키로 서명 된 장치 고유의 비대칭 키 쌍입니다. 

이 서명 된 키 쌍은 SAK가 삼성에서 생산되었음을 증명합니다. 

SAK는 장치가 신뢰 상태에 있는지를 나타내는 증명 blob 에 서명하는 데 사용됩니다.

 

서명은 Attestation 데이터가 TrustZone Secure World에서 가져온 것임을 증명합니다. 

DRK와는 달리 SAK는 ECDSA 키 세트입니다. 

ECDSA는 RSA와 비슷하지만 더 작고 더 빠른 동일한 강도의 새로운 비대칭 알고리즘입니다.

 

하드웨어 퓨즈

RP (Rollback Prevention) 퓨즈 - RP 퓨즈는 삼성에서 승인 한 부트 로더의 최소 허용 버전을 인코딩합니다. 

이전 소프트웨어에는 악용 될 수있는 알려진 취약점이있을 수 있습니다. 

롤백 방지는 승인되었지만 만료 된 부트 로더가로드되는 것을 제외합니다. 

RP 퓨즈 버전 번호는 시스템 소프트웨어가 처음 설치 될 때 및 특정 업데이트가 발생할 때 설정됩니다. 

RP 퓨즈 버전 번호가 설정되면 기존 소프트웨어 버전으로 되돌릴 수 없습니다.

 

보증 퓨즈 

Knox 플랫폼은 장치가 승인되지 않은 상태로 부팅되었는지 여부를 나타내는 

일회용 프로그래머블 퓨즈를 사용합니다. 

 

신뢰할 수있는 부팅 프로세스가 감지 하거나 승인되지 않은 구성 요소를 사용, 

또는 SELinux가 같은 특정 중요 보안 기능을 사용할 경우, 퓨즈를 설정합니다. 

퓨즈가 설정되면 다음과 같은 보안 조치가 취해집니다.

 

장치 상태 증명 확인이 실패합니다.

Knox Keystore는 민감한 데이터 보호 가 데이터 암호화 및 암호 해독에 사용하는 키를 제거하여 

중요한 데이터에 대한 액세스를 차단합니다.

녹스 작업 공간은 더 이상 보안 기업 애플리케이션 및 내의 데이터에 대한 액세스를 방지 작동하지 않습니다.

 

2편에서는 KNOX의 커널 기반 보안의 원리를 포스팅합니다.

학생개발자의 IT Story에 방문해주셔서 감사합니다.

 

아래 공감[하트]버튼을 눌러주시면 필자에게 힘이 됩니다.
댓글과 공감은 로그인 없이 참여할수 있씁니다.
학생개발자의 IT Story의 발전을 위하여 아래 링크를 통해 후원을 하실 수 있습니다.
[ 트위치 계정 필요합니다. Powered by Twip ]
 [  후원  
본 포스팅의 내용을 무단 전재하거나 복제 하지 마십시오.
학생개발자의 IT Story 의 컨텐츠의 저작권은 학생개발자에게 있습니다.
 
 
copyright(c)학생개발자 2019

-본문 이미지 출처-

삼성 Knox 웹 사이트 : https://www.samsungknox.com

XDA포럼 : https://www.xda-developers.com

댓글3

  • 동건참치 2019.02.25 15:08 신고

    신기하네요. 학생개발자님 어느새 인기 블로거가 되시고, 스킨도 좋고, 플로그인 쓰시는 것도 현명하게 쓰시고 정말 사람들의 눈길을 끌게 하고 잘한다고 말할 수 밖에 없는 블로거가 되셨내요. 앞으로 블로그가 더 성장해서 완전 인기 많은 블로거가 도시길 바랍니다. 하지만 제 말을 너무 달게 받아들이시지는 않았으면 좋겠습니다. 힘내고, 정보 감사합니다. ^^
    답글

    • Dev zeroday0619 2019.02.25 15:16 신고

      네 감사합니다 ㅎㅎ
      전 아직 부족합니다. 더욱 노력해야죠...
      다행히 저는 고등학교때도 시간은 많을 겁니다.. IT특기자 전형으로 대입 준비할 예정이라 아마 고등학교 입학 하면서부터는 개발 관련 하루 포스팅양이 IT NEWS 하루 포스팅 양과 비슷해지거나 많아질 듯 하네요;; 동건참치님 말씀 명심하겠습니다.
      방문해주셔서 감사합니다.
      제가 고등학교 입학일이 거의 안남아서 소통을 자주 못 하는 것 같네요. 죄송합니다.;;

  • 동건참치 2019.02.25 15:40 신고

    네. 저도 3월 4일에 초등학교 6학년이 돼서 소통 할 시간이 많지는 않을 것 같내요.
    힘내세요. ^^
    답글