하드웨어 해킹 핸드북 [하드웨어 공격으로 임베디드 보안 무너뜨리기]
- 원서명Hardware Hacking Handbook: Breaking Embedded Security with Hardware Attacks (ISBN 9781593278748)
- 지은이콜린 오플린(Colin O’Flynn), 야스퍼 반 벨든버그(Jasper van Woudenberg)
- 옮긴이김세영, 정윤선
- ISBN : 9791161758725
- 48,000원
- 2024년 09월 30일 펴냄
- 페이퍼백 | 692쪽 | 188*235mm
- 시리즈 : 해킹과 보안
책 소개
요약
임베디드 시스템은 우리의 일상 속에서 깊이 자리 잡고 있다. 휴대폰, 자동차, 신용카드, 노트북, 의료 장비 등 수많은 장치가 작은 크기의 마이크로컴퓨터, 즉 임베디드 장치에 의해 구동된다. 이러한 임베디드 장치의 보안은 이제 더 이상 선택의 문제가 아닌 필수적인 요소가 되었으며, 이를 이해하는 것은 매우 중요하다. 이 책은 이러한 임베디드 시스템의 보안 문제를 깊이 있게 다루며, 실제 하드웨어를 통해 다양한 공격 기법을 이해하고 실습할 수 있도록 안내하는 훌륭한 길잡이다.
특히 실험실 환경에서 직접 수행할 수 있는 다양한 공격 기법을 상세히 설명하고 있어, 학생부터 전문가까지 폭넓은 독자층이 유용하게 활용할 수 있을 것이다. 각종 인터페이스, 포트 및 통신 프로토콜, 전기적 신호 분석, 펌웨어 이미지 분석 등의 기본기를 다지고, 결함 주입(fault-injection), 사이드 채널 분석(SCA), 전력 분석(SPA/DPA) 등을 통해 실제 장치에서 비밀번호나 암호화 키를 추출하는 등의 고급 기술을 배울 수 있다.
추천의 글
멀지 않은 과거에 하드웨어는 해킹에 있어 비주류로 밀려났던 때가 있었다. 대부분의 사람은 너무 어려워서 참여할 수 없고, “하드웨어는 어렵다.”고 생각했다. 물론 익숙해지기 전에는 하드웨어가 어려운 것이 당연하다.
저자가 하드웨어 해킹에 대한 열정을 가진 비행 청소년이었을 때 지식과 기술에 대한 접근이 어려웠다. 쓰레기 수거통에서 버려진 장비를 찾고 회사 차량에서 재료를 훔쳐 ASCII 아트에서 만든 도식으로 텍스트 파일에 설명된 도구를 만들곤 했다. 대학 도서관에 몰래 들어가 데이터 책을 찾고, 엔지니어링 박람회에서 무료 샘플을 요청하고 전화로 공급업체로부터 정보를 얻으려고 목소리를 낮춰 어른인 것처럼 했다. 시스템을 설계하는 대신 망가뜨리는 데 관심이 있다면 적당한 곳은 거의 없을 것이다. 해커가 존경받는 직업으로 거듭나려면 아직 멀었다.
수년에 걸쳐 하드웨어 해커가 성취할 수 있는 것에 대한 관심은 무관심에서 주요 관심사로 바뀌었다. 자원과 장비를 더 많이 사용할 수 있게 됐고 비용도 저렴해졌다. 해커 그룹 및 콘퍼런스는 만나서 배우고 서로 협력할 수 있는 방법을 제공했다. 학계 및 기업에서도 해커의 가치를 깨달았다. 마침내 하드웨어가 보안 환경의 중요한 부분으로 인식되는 새로운 시대에 들어서게 됐다.
이 책에서 저자들은 실제 제품을 망가뜨리는 경험들을 통해 우리 시대의 하드웨어 해킹 프로세스를 우아하게 전한다. 이들은 실제 공격에 대한 세부 정보를 제공한다. 이를 통해 독자가 공격을 따라할 수 있게 하며, 필요한 기술을 배우고 성공적인 해킹과 함께 마법 같은 경험을 가질 수 있게 한다. 이러한 분야에 처음이거나 해커 커뮤니티의 어딘가에 있던지 또는 현재 갖고 있는 보안 기술들을 ‘레벨 업’하려는 경우라도 문제가 되지 않는다. 여기에 모두를 위한 지식이 있다.
하드웨어 해커로서 엔지니어와 이들이 구현하는 장치에 대한 제약을 이용하는 것을 목표로 한다. 엔지니어는 스케줄 및 예산 내에서 제품이 작동하게 하는 데 중점을 둔다. 또한 정의된 사양을 따르고 엔지니어링 표준을 따라야 한다. 제품이 제조 가능하고 시스템을 프로그래밍, 테스트, 디버그, 수리 또는 유지 관리하기 위해 접근할 수 있는지를 확인해야 한다. 엔지니어는 통합한 칩 및 서브시스템의 공급업체를 신뢰하고 광고대로 작동하기를 기대한다. 그리고 보안을 구현하더라도 올바르게 구현하기가 매우 어렵다. 해커는 모든 요구 사항을 무시하고 시스템이 의도적으로 오작동하게 하고, 성공적으로 시스템을 공격할 수 있는 가장 효과적인 방법을 찾는 등의 호화로움을 누린다. 주변 인터페이스 및 버스(2장), 구성 요소에
대한 물리적 접근(3장) 또는 결함 주입(fault injection) 또는 부채널 누출(leakage)(4장)을 통해 시스템의 약점을 악용하려고 시도할 수 있다.
오늘날 하드웨어 해킹으로 달성할 수 있는 것은 과거 해커의 연구, 투쟁, 성공을 기반으로 한다. 모두 선구자의 성과와 업적을 활용하는 것이다. 엔지니어와 공급업체가 보안 인식을 점진적으로 개선하고 더 많은 보안 기능과 대응책을 장치에 통합하더라도 이러한 발전은 해커 커뮤니티의 끈기와 인내심으로 계속해서 무너질 것이다. 말 그대로 군비 경쟁 같은 이러한 경쟁은 점점 더 안전한 제품으로 이어지고 차세대 엔지니어와 해커의 기술을 연마하게 한다.
이 모든 것은 하드웨어 해킹이 계속 존재한다는 메시지를 준다. 하드웨어 해킹 핸드북은 가능한 한 많은 경로를 탐색할 수 있는 프레임워크를 제공한다. 여행의 시작은 책을 읽는 독자에게 달려있다.
이 책에서 다루는 내용
◆ 상용 인터페이스와 버스를 활용하거나, 직접 구성 요소에 접근해 시스템의 약점을 공략한다.
◆ 폴트 주입 지점을 식별, 대상 준비, 폴트 주입 구성을 구축한다.
◆ 클럭 글리치를 생성하고, 기성품이나 DIY 도구를 사용해서 전압 폴트 주입, 전자기 폴트 주입, 바디 바이어싱 폴트 주입을 수행한다.
◆ 타이밍 공격과 단순 전력 분석을 통해 비밀번호 및 암호화된 키를 추출한다.
◆ 향상된 전력 및 신호 분석, 누출 탐색, 시각화 기술을 수행한다.
이 책의 대상 독자
이 책의 독자는 좋은 일을 하기 위해 보안을 깨는 데 관심이 있는 공격자의 역할을 하고 있다고 가정할 것이다. 또한 간단한 오실로스코프(Oscilloscope) 및 납땜 장비와 같은 비교적 저렴한 하드웨어를 대부분 사용할 수 있고 파이썬이 설치된 컴퓨터가 있다고 가정한다.
레이저 장비, 입자 가속기 또는 취미 활동의 예산 한도를 넘어서는 기타 품목에 접근할 수 있다고 생각하지 않는다. 지역 대학 연구실에서 이러한 장비를 사용할 수 있는 경우 이 책을 통해 더 많은 이점을 얻을 수 있을 것이다. 임베디드 장치 대상과 관련해 독자가 해당 대상에 물리적으로 접근할 수 있고 해당 장치에 저장된 에셋(asset)에 관심이 있다고 가정한다. 그리고 가장 중요한 것은 독자가 새로운 기술을 배우는 데 관심이 있고 리버스 엔지니어링 사고방식을 갖고 있으며 깊이 탐구하려는 준비가 돼 있다고 가정한다.
이 책의 구성
1장, ‘임베디드 보안 소개’에서는 임베디드 시스템의 다양한 구현 아키텍처와 일부 위협 모델링에 초점을 두고 다양한 공격에 대해 알아본다.
2장, ‘하드웨어 주변 장치 인터페이스’에서는 신호(signaling) 및 측정(measurement)을 이해하는 데 필요한 전기 기본 사항을 포함해 다양한 포트 및 통신 프로토콜을 설명한다.
3장, ‘구성 요소 식별 및 정보 수집'에서는 대상에 대한 정보를 수집하고, 데이터 시트 및 설계도를 해석하고, PCB의 구성 요소를 식별하고, 펌웨어 이미지를 추출 및 분석하는 방법을 설명한다.
4장, ‘결함 주입 소개’에서는 결함 주입 지점을 식별하고, 대상을 준비하고, 결함 주입 설정을 생성하고, 효과적인 매개변수를 만들어내는 방법을 포함해 결함 공격의 이면에 있는 아이디어를 제시한다.
5장, ‘결함 주입 방법’에서는 클럭, 전압, 전자기, 레이저, 바디 바이어싱(Body Biasing) 결함 주입 그리고 이를 수행하기 위해 구축 또는 구매해야 하는 도구의 종류를 설명한다.
6장, ‘결함 주입 실험’에서는 집에서 수행할 수 있는 3가지 실용적인 결함 주입 연구실을 제공한다.
7장, ‘트레저 원 지갑 메모리 덤프’에서는 트레저 원(Trezor One) 지갑을 갖고 취약한 펌웨어 버전에서 결함 주입을 사용해 키를 추출하는 방법을 보여준다.
8장, ‘전력 분석 소개’에서는 타이밍 공격과 단순 전력 분석을 소개하고, 이러한 공격을 사용해 암호 및 암호화 키를 추출하는 방법을 보여준다.
9장, ‘단순 전력 분석’에서는 기본 하드웨어 설정부터 가정 실험실에서 SPA 공격을 수행하는 데 필요한 것까지 모든 방법을 안내한다.
10장, ‘차분 전력 분석’에서는 차분 전력 분석(DPA, Differential Power Analysis)을 설명하고 전력 소비의 작은 변동이 암호화 키 추출로 이어지는 방법을 보여준다.
11장, ‘고급 전력 분석’에서는 실용적인 측정 팁부터 추적 설정 필터링, 신호 분석, 처리 및 시각화에 이르는 전력 분석의 수준을 높일 다양한 기술을 설명한다.
12장, ‘실험 사례: 차분 전력 분석’에서는 특수 부트로더로 물리적 목표를 잡고 차분 전력 분석 기술을 사용해 여러 가지 비밀을 알아낸다.
13장, ‘실제 사례’에서는 실제 대상에 대해 수행된 여러 가지 게시된 결함 및 부채널 공격을 요약한다.
14장, ‘대책, 인증, 종장’에서는 이 책에서 설명하는 몇 가지 위험을 완화하는 여러 가지 대응책을 살펴보고 장치 인증 및 다음 단계에 대해 다룬다.
부록 A, ‘테스트 실험 설정’에서는 원하는 모든 도구 등을 멋지게 공개해 구미를 돋운다.
부록 B, ‘유명한 핀아웃’에서는 정기적으로 접하게 될 몇 가지 인기 있는 핀아웃(pinout)에 대한 커닝 페이퍼를 제공한다.
목차
목차
- 1장. 임베디드 보안 소개
- 하드웨어 구성 요소
- 소프트웨어 구성 요소
- 초기 부트 코드
- 부트로더
- 신뢰 실행 환경 OS 및 신뢰 애플리케이션
- 펌웨어 이미지
- 메인 운영체제 커널 및 애플리케이션
- 하드웨어 위협 모델링
- 보안이란?
- 공격 트리
- 공격자 프로파일링
- 공격 유형
- 하드웨어에 대한 소프트웨어적 공격
- PCB 수준 공격
- 논리적 공격
- 비침습적 공격
- 칩-침습적 공격
- 에셋과 보안 대상
- 이진 코드의 기밀성과 무결성
- 키의 기밀성과 무결성
- 원격 부트 증명
- 개인 식별 정보의 기밀성과 무결성
- 센서 데이터 무결성 및 기밀성
- 콘텐츠 기밀성 보호
- 안전성과 회복 탄력성
- 대응책
- 보호
- 탐지
- 반응
- 공격 트리 예제
- 식별과 악용
- 확장성
- 공격 트리 분석
- 하드웨어 공격 경로 평가
- 보안 문제 공개
- 요약
- 2장. 하드웨어 주변 장치 인터페이스
- 전기 기초
- 전압
- 전류
- 저항
- 옴의 법칙
- AC/DC
- 저항 구분
- 전력
- 전기와의 인터페이스
- 논리 레벨
- 하이 임피던스, 풀업,풀다운
- 푸시-풀와 3 상태 및 오픈 컬렉터 또는 오픈 드레인
- 비동기식과 동기식 및 내장 클럭
- 차분 신호
- 저속 직렬 인터페이스
- 범용 직렬 비동기식 수신기/송신기
- 직렬 주변 장치 인터페이스
- IC 간 인터페이스
- 보안 디지털 입력/출력 및 내장형 멀티미디어 카드
- CAN 버스
- JTAG 및 기타 디버깅 인터페이스
- 병렬 인터페이스
- 메모리 인터페이스
- 고속 직렬 인터페이스
- 범용 직렬 버스
- PCI 익스프레스
- 이더넷
- 측정
- 멀티미터: 전압
- 멀티미터: 연속성
- 디지털 오실로스코프
- 논리 분석기
- 요약
- 전기 기초
- 3장. 구성 요소 식별 및 정보 수집
- 정보 수집
- 연방 통신 위원회 기록
- 특허
- 데이터시트와 회로도
- 정보 검색 예제: USB Armory 장치
- 분해 시작
- 보드에서 IC 식별
- 소형 리드 패키지: SOIC, SOP, QFP
- 노리드 패키지: SO, QFN
- 볼 그리드 어레이
- 칩 스케일 패키징
- DIP, 스루홀, 기타
- PCB의 샘플 IC 패키지
- 보드의 기타 구성 요소 식별
- PCB 매핑
- 매핑을 위한 JTAG 경계 스캔 사용
- 펌웨어에서 정보 추출
- 펌웨어 이미지 얻기
- 펌웨어 이미지 분석
- 요약
- 정보 수집
- 4장. 결함 주입 소개
- 잘못된 보안 메커니즘
- 펌웨어 서명 확인 우회
- 잠금된 기능에 접근하기
- 암호화 키 복구
- OpenSSH 결함 주입 연습
- C 코드에 결함 주입
- 기계 코드에 결함 주입
- 결함 주입 허풍
- 대상 장치 및 폴트 목표
- 결함 주입기 도구
- 대상 준비와 제어
- 폴트 검색 방법
- 폴트 프리미티브 탐색
- 효과적인 폴트 검색
- 검색 전략
- 결과 분석
- 요약
- 잘못된 보안 메커니즘
- 5장. 결함 주입 방법
- 클럭 결함 주입
- 준안전성
- 폴트 민감도 분석
- 제한 사항
- 필수 하드웨어
- 클럭 결함 주입 매개변수
- 전압 결함 주입
- 전압 글리치 생성
- 스위칭 기반 주입기 구축
- 쇠지레 결함 주입
- 쇠지레를 이용한 라즈베리 파이 폴트 공격
- 전압 결함 주입 검색 매개변수
- 전자기 결함 주입
- 전자기 폴트 생성
- 전자기 결함 주입을 위한 아키텍처
- EMFI 펄스 모양과 폭
- 전자기 결함 주입을 위한 매개변수 검색
- 광학 결함 주입
- 칩 준비
- 전면 및 후면 공격
- 광원
- 광학 결함 주입 설정
- 광학 결함 주입 구성 가능 매개변수
- 바디 바이어싱 주입
- 바디 바이어싱 주입을 위한 매개변수
- 하드웨어 폴트 트리거
- 예측할 수 없는 대상 타이밍 작업
- 요약
- 클럭 결함 주입
- 6장. 결함 주입 실험
- 실험 1: 간단한 반복문
- 고통의 BBQ 라이터
- 실험 2: 유용한 글리치 삽입
- 환경설정 폴트를 위한 쇠지레 글리칭
- 먹스 결함 주입
- 실험 3: 차분 오류 분석
- 약간의 RSA 이론
- 대상에서 올바른 서명 얻기
- 요약
- 실험 1: 간단한 반복문
- 7장. 트레저 원 지갑 메모리 덤프
- 공격 소개
- 트레저 원 지갑 내부
- USB 읽기 요청 폴트
- 코드 분해
- 펌웨어 구축과 글리치 검증
- USB 트리거링과 타이밍
- 케이스를 통한 글리치
- 설정
- 결합 주입을 위한 코드 검토
- 코드 실행
- 덤프 확인
- EM 펄스 미세 조정
- USB 메시지를 기반으로 타이밍 조정
- 요약
- 8장. 전력 분석 소개
- 타이밍 공격
- 하드 드라이브 타이밍 공격
- 타이밍 공격을 위한 전력 측정
- 단순 전력 분석
- RSA에 SPA 적용
- RSA에 SPA 적용 다시보기
- ECDSA의 SPA
- 요약
- 타이밍 공격
- 9장. 단순 전력 분석
- 자택 실험실
- 기본 하드웨어 설정 구성
- 설정 구매
- 대상 코드 준비
- 설정 구축
- 통합: SPA 공격
- 대상 준비
- 오실로스코프 준비
- 신호 분석
- 통신 및 분석 스크립트 제작
- 공격 스크립트 제작
- 칩위스퍼러-나노 예제
- 펌웨어 구축과 로딩
- 첫 통신 살펴보기
- 트레이스 캡처
- 트레이스에서 공격으로
- 요약
- 자택 실험실
- 10장. 차분 전력 분석
- 마이크로컨트롤러 내부
- 커패시터의 전압 변경
- 전력에서 데이터로 그리고 다시 반대로
- XOR 예제
- 차분 전력 분석 공격
- 누출 가정을 사용한 전력 소비량 예측
- 파이썬의 DPA 공격
- 지피지기: 고급 암호화 표준 공격 과정
- DPA를 사용해 AES-128 공격
- 상관관계 전력 분석 공격
- 상관 계수
- CPA를 이용한 AES-128 공격
- 대상 장치와 통신
- 오실로스코프 캡처 속도
- 요약
- 마이크로컨트롤러 내부
- 11장. 고급 전력 분석
- 주요 장애물
- 더 강력한 공격
- 성공 측정
- 성공률 기반 메트릭
- 엔트로피 기반 메트릭
- 상관관계 피크 진행
- 상관관계 피크 높이
- 실제 장치에 대한 측정
- 장치 작동
- 측정 프로브
- 민감한 망 결정
- 자동화된 프로브 스캐닝
- 오실로스코프 설정
- 트레이스 세트 분석과 처리
- 분석 기술
- 처리 기술
- 컨볼루션 신경망을 사용한 딥러닝
- 요약
- 주요 장애물
- 12장. 실험 사례: 차분 전력 분석
- 부트로더 배경지식
- 부트로더 통신 프로토콜
- AES-256 CBC의 세부 사항
- AES-256 공격
- 부트로더 코드 얻기 및 빌드
- 대상 실행과 트레이스 캡처
- CRC 계산
- 부트로더와 통신
- 개요 트레이스 캡처
- 상세 트레이스 캡처
- 분석
- 라운드 14 키
- 라운드 13 키
- IV 복구
- 캡처 대상
- 첫 번째 트레이스 얻기
- 나머지 트레이스 얻기
- 분석
- 서명 공격
- 공격 이론
- 전력 트레이스
- 분석
- 4바이트 전체
- 부트로더 소스코드 엿보기
- 서명 확인 타이밍
- 요약
- 부트로더 배경지식
- 13장. 실제 사례
- 결함 주입 공격
- 플레이스테이션 3 하이퍼바이저
- 엑스박스 360
- 전력 분석 공격
- 필립스 휴 공격
- 요약
- 결함 주입 공격
- 14장. 대응책, 인증, 종장
- 대응책
- 대응책 실행
- 대응책 확인
- 산업 인증
- 일신우일신
- 요약
- 대응책
- 부록 A. 테스트 환경설정
- 연결성 및 전압 확인: 50달러에서 500달러까지
- 최적 피치 납땜: 50달러에서 1,500달러까지
- 쓰루홀 냅땜 제거: 30달러에서 500달러
- 표면 실장 장치의 납땜 및 납땜 제거: 100달러에서 500달러
- PCB 수정: 5달러에서 700달러
- 광학 현미경: 200달러에서 2,000달러
- 사진 촬영 보드: 50달러에서 2,000달러
- 대상 전원 공급: 10달러에서 1,000달러
- 아날로그 파형 보기(오실로스코프): 300달러에서 25,000달러
- 메모리 깊이
- 샘플링 속도
- 대역폭
- 기타 특징
- 논리 파형 보기: 300달러에서 8,000달러
- 직렬 버스에서 트리거링: 300달러에서 8,000달러
- 직렬 프로토콜 디코딩: 50달러에서 8,000달러
- CAN 버스 스니핑과 트리거링: 50달러에서 5,000달러
- 이더넷 스니핑: 50달러
- JTAG를 통한 상호작용: 20달러에서 10,000달러
- 일반 JTAG 및 경계 스캔
- JTAG 디버그
- PCIe 통신: 100달러에서 1,000달러
- USB 스니핑: 100달러에서 6,000달러
- USB 트리거링: 250달러에서 6,000달러
- USB 에뮬레이션: 100달러
- SPI 플래시 연결: 25달러에서 1,000달러
- 전력 분석 측정: 300달러에서 50,000달러
- 아날로그 파형 트리거링: 3,800달러 이상
- 자기장 측정: 25달러에서 10,000달러
- 클럭 결함 주입: 100달러에서 30,000달러
- 전압 결함 주입: 25달러에서 30,000달러
- 전자기 결함 주입: 100달러에서 50,000달러
- 광학 결함 주입: 1,000달러에서 250,000달러
- 포지셔닝 프로브: 100달러에서 50,000달러
- 대상 장치: 10달러에서 10,000달러
- 부록 B. 인기 핀아웃
- SPI 플래시 핀아웃
- 0.1인치 헤더
- 20핀 Arm JTAG
- 14핀 PowerPC JTAG
- 0.05인치 헤더
- Arm 코어텍스 JTAG/SWD
- 엠버 패킷 트레이스 포트 커넥터