[보안/기술]삼성 KNOX (삼성녹스) 란? -- 삼성 KNOX 원리 -1-
안녕하세요. 학생개발자입니다.
KNOX 원리
루트 오브 트러스트(ROOT OF TRUST)
*리눅스 / 유닉스계열에서는 ROOT는 시스템 권한을 가진 파워 유저라는 의미로 사용됩니다. Knox는 하드웨어 난수 생성기를 사용하여 디바이스 제조 단계에서 생성된 DUHK (장치 고유 하드웨어 키: 삼성은 장치 초기 제조시 장치 하드웨어에 장치 고유의 대칭 키인 DUHK를 통합합니다. DUHK는 데이터 (예 : 장치 상태 증명 데이터)를 특정 장치에 바인딩하며 하드웨어 암호화 모듈에서만 액세스 할 수 있으며 장치 소프트웨어에 직접 노출되지 않습니다.
*efuse란? efuse는 허가되지 않는 접근이 발생하면 스스로 회로를 끊어버려서 특정한 상태를 나타냅니다. 삼성 디바이스가 루팅된 경우 knox 워렌티가 0x0(정상)에서 0x1(보증 만료)로 변경되며 efuse는 한번 상태가 변경되면 초기화가 불가능하여 강력한 보안 기능을 제공합니다.
루트 오브 트러스트는 실행을 허용하기 전에 각 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 의 컨텐츠의 저작권은 학생개발자에게 있습니다.euiseoad03@gmail.comcschauiseo1234@naver.comcopyright(c)학생개발자 2019
-본문 이미지 출처-
삼성 Knox 웹 사이트 : https://www.samsungknox.com
XDA포럼 : https://www.xda-developers.com