Guillermo Austin Kim

Sources

Posts

998 posts

[에세이] 조직을 이동한 개발자에게 저지르는 관리자의 만행 ①

Guillermo Austin Kim|2022년 1월 9일

2~3년 정도 개발을 하면 프로젝트를 3~4개 정도 마무리합니다. 그런데 어느 시점이 되면 이런 느낌이 들 수 있어요. "이 팀은 정말 맞지 않네!" 시간이 더 지나면 나중에 "이 팀을 꼭 떠나야 겠다" 확신이 듭니다. 개발자가 회사나 팀을 떠나고 싶어하는 이유는 뭘까요? 예를 들까요? "조직 책임자가 자신의 성과를 인정해주지 않는다." "개발자로써 연량이 전혀 늘지 않는다." "연봉이 현저히 낮다!" 연봉이 너무 낮아 불만이 심하면 이직을 시도합니다. 그런데 팀장과 사이가 좋지 않거나 역량이 늘지 않는다는 느낌을 받으면 조직을 옮길 수 있습니다. 어느 정도 규모가 있는 회사에서는 팀을 옮길 수 있는 기회를 주기도 합니다. 대기업에서는 '사내 공모'라는 통해 개발자가 조직을

[Arm프로세서][Armv8] 트러스트존(TrustZone): 시큐어 RTOS 구현 사례: QSEE(Qualcomm's Secure Execution Environment)

Guillermo Austin Kim|2022년 1월 9일

각 SoC 칩 벤더와 보안 업체들은 arm 아키텍처의 트러스트존을 활용해 독자적인 보안 RTOS(Trusted OS)를 개발했습니다. 이번에는 퀄컴에서 설계한 QSEE를 소개하면서 시큐어 RTOS는 어떤 방식으로 구현됐는지 알아보겠습니다. QSEE는 Qualcomm's Secure Execution Environment의 약자로 Arm 아키텍처의 트러스트존을 활용해 퀄컴에서 제작한 Trusted OS 아키텍처입니다. 다음은 QSEE을 구성하는 구성도입니다.(출처: 그림 11.10 QSEE의 구성도 실제 퀄컴에서 배포된 문서에서 확인된 내용인데 이번 장에서 다뤘던 개념을 이해했다면 바로 이해할만한 내용입니다. 그림의 가장 왼쪽 부분은 논 시큐어 상태, 오른쪽 부분은 시큐어 상태를 나타냅니다. 위

[Arm프로세서][트러스트존] Armv8: 시큐어 월드에서 Trusted OS는 어떻게 구동할까?

Guillermo Austin Kim|2022년 1월 9일

논 시큐어 월드에는 우리가 알고 있는 운영체제의 커널이 구동됩니다. 예를 들어 리눅스 커널이나 윈도우 커널이 논 시큐어 월드에서 실행됩니다. 그렇다면 시큐어 월드에는 어떤 소프트웨어가 구동될까요? 바로 RTOS가 실행됩니다. 여기서 기억해야 할 사실은 트러스트 존의 RTOS는 독자적으로 스케줄링하면서 시스템을 제어하는게 아니라, 논 시큐어 월드에 의존적으로 동작한다는 점입니다. 대부분의 경우 논 시큐어 월드에서 실행 중인 커널에서 smc(Secure Monitor Call) 명령어를 실행하면, 이에 반응해 시큐어 월드의 RTOS는 동작하게 됩니다. 쉽게 설명드리면 시큐어 월드의 RTOS는 마치 시스템 콜 핸들러와 유사하게 동작한다고 보면 됩니다. 시스템 콜 핸들러는 스스로 실행하지 않습니다. 유저 공간

[Arm프로세서][Armv8] 트러스트존(TrustZone)에서 구현된 익셉션 핸들러

Guillermo Austin Kim|2022년 1월 6일

Armv8 아키텍처에서 트러스트존의 기능이 제대로 동작하려면 논 시큐어 상태와 시큐어 상태별로 3개의 익셉션 벡터 핸들러가 구현돼 있어야 합니다. 다음 그림은 Armv8 아키텍처의 트러스트존에서 구현돼야 할 익셉션 벡터 테이블을 나타냅니다. 그림 11.8 Armv8 아키텍처에서의 익셉션 벡터 핸들러의 구현 먼저 그림의 가장 왼쪽 윗 부분에 있는 VBAR_EL1은 논 시큐어 상태의 EL1에서 정의된 익셉션 벡터의 베이스 주소를 나타냅니다. 만약 EL0이나 EL1에서 익셉션이 유발되면 VBAR_EL1에 지정된 익셉션 벡터로 프로그램 카운터가 브랜치됩니다. 이번에는 왼쪽 아랫 부분에 보이는 VBAR_EL3은 모니터 모드에서 처리되는 익셉션 벡터 테이블의 베이스 주소를 나타냅니다. 논 시큐어 상태의 EL

[Crash-Utility] 램덤프 로딩 시 파라미터(CONFIG_PROC_KCORE)

Guillermo Austin Kim|2022년 1월 5일

크래시 유틸리티를 실행해 램덤프를 로딩하려면 적절한 아규먼트를 지정해야 합니다. 예를 들면 다음과 같습니다. ./crash64 ramdump.bin@0x800000000 -p 4096 -m kimage_voffset=0xFFFFFFBF58000000 -m page_offset=0xFFFFFF8000000000 -m vabits_actual=39 -m phys_base=0x40000000 --no_panic --smp vmlinux kimage_voffset, page_offset, phys_base과 같은 파라미터를 제대로 설정해야 크래시 유틸리티가 실행됩니다. 그런데 kimage_voffset, page_offset 옵션을 어떻게 적용해면 될지 모를 때가 있습니다. 이럴 때는 이번 포스트에서 소개한