Study 26

OPTEE pc레지스터 & secure storage(수정중)

현재 구조에서 ta에서 main 문에 해당하는 부분에 system call 호출 코드를 넣고 컴파일 했을때 elf파일을 보면 이런식으로 찍힌다. 해당 system call의 number같은 것들을 넣어주는것들이 있거나 호출할때 system call number로 호출하는줄 알았는데 그렇지 않고 그냥 이름으로 호출을 한다. 따라서 미리 systemcall number를 넣는 명령어 같은것을 안넣어줘도 되지 않을까 예상함 (AArch32와 달리 PC(프로그램 카운터)와 SP(스택 포인터)는 인덱싱되지 않은 레지스터입니다. 액세스할 수 있는 방법에 제한을 받습니다. 또한 x31 레지스터가 없다는 점에 유의해야 합니다. 인코딩은 특수한 용도로 사용됩니다.) 근데 core/arch/arm/include/arm64..

Study 2021.07.26

OPTEE Systemcall Hash연산

Systemcall 내에서 들어온 인자에 대해서 Hash값을 구하여 저장하고자 한다. SystemCall Handler는 /core/tee/tee_svc.c에 있다. 이미 구현된 코드들이 있을것이기에 해당 헤더파일을 본다. tee_cryp_utl.h가 암호화 관련 함수들이 있을것으로 보인다. 사용예제를 보기 위해 tee_cryp_utl.c에 있는 함수중 handler에서 쓰는것을 찾아보니 하나가 나온다. 이 함수내의 tee_hash_create ~ 관련 함수들은 core 내의 crypto.h와 libcrpy 폴더내의 소스들을 이용한다. 함수를 보면 prop에게 고유한 uuid를 생성해주기 위한 함수인것 같다. data 에 optee라는 고정된 문자를 넣고 sha256 해쉬함수를 거쳐서 나온것에대해 dig..

Study 2021.07.25

ELF파일

제일 처음 .c 파일을 작성하여 생성한다. 이 소스파일이 컴파일되는 과정을 살펴보자 .c파일은 .i 파일로 가는 전처리기 과정을 거친다. 이 과정은 헤더파일 삽입과 매크로 치환 및 적용 과정을 거친다. 두 번째로는 C 컴파일러 과정을 거쳐서 .i 파일이 .asm파일로 간다. 여기서는 중간언어를 생성하는 것인데 이유는 언어 종속적인 부분과 기계 종속적인 부분을 분리하여 컴파일러를 모듈화 하고 최적화하기 위해서이다. 세 번째로는 어셈블러를 이용하여 .asm파일이 .o 파일로 바뀐다. .o파일은 .s의 기계어와 데이터가 들어있는 ELF바이너리 포맷의 구조를 가진다. 여기서 ELF(Executable and linking format)이란 실행 및 링크가 가능한 포맷이다. ( exe파일과 비슷) ELF이 필요한..

Study 2021.07.25

OPTEE system call 실습

optee 내에서 client가 api를 호출하는 경우 TEEC operation을 사용한다. 이는 optee_client에 있다. 호출이 되는 순서는 다음을 따른다. 이는 user 영역에서 kernel -> smc를 거쳐 -> tee의 함수를 실행시킨다. User application: TEEC_InvokeCommand() https://github.com/OP-TEE/optee_client/blob/master/libteec/src/tee_client_api.c#L555 Here ioctl() invocation occurs (it's right in TEEC_InvokeCommand implementation) https://github.com/OP-TEE/optee_client/blob/maste..

Study 2021.07.24

ARM TrustZone 메커니즘

컴퓨터 보안에 대한 필요성이 강조되고 있다. 하지만 완벽한 보안을 제공하는 시스템은 존재하지 않는다. 여러 공격 위협에 대응하기 위해, 학계와 산업계에서는 신뢰할 수 있는 실행환경, 즉 TEE를 제공하려는 노력을 계속하고 있다. 예를 들면 Intel은 SGX이라는 기능을 탑재한 프로세서를 제공하고 있고 AMD는 SME/SEV를 제공한다. ARM은 Trustzone이라는 하드웨어 아키텍처를 제공한다. Trustzone은 하나의 물리적 CPU에서 Normal world와 Secure world라는 두 개념의 World를 제공한다. CPU가 어느 world에 있는지는 간단하게도 SCR(=Secure Configuration Register)라는 레지스터에 NS-Bit에 따라 결정된다. NS = 1이면 Norm..

Study 2021.07.22

ARMv8

Cortex-A 프로세서 : Cortex-A는 Armv7-A, Armv8-A 아키텍처를 사용해 만든 프로세서. 고성능을 필요로 하는 애플리케이션용으로 개발된 프로세서이며 주로 스마트폰에 사용 Cortex-R 프로세서 : Cortex-R는 Armv7-R, Armv8-R 아키텍처를 사용. 실시간성을 필요로 하는 응용분야를 위해 개발된 프로세서. 자동차의 브레이크 시스템, 항공시스템, 공장자동화에 사용되는 PLC(Programmale Logic Coontroller)와 같은 실시간 응답이 아주 중요한 분야에 사용된다. Cortex-M 프로세서 : Cortex-M는 Armv7-M, Armv8-M 아키텍처를 사용해 만든 프로세서. 저비용,저전력 , 저성능 용으로 개발된 프로세서이다. 저전력을 필요로 하기 때문에 ..

Study 2021.07.22