이 글은 대학원에서 임베디드 관련 수업을 받은 후, 필자 스스로 임베디드에 대해 정리하기 위해 쓰여졌습니다.
임베디드 시스템 보안
1) 안전성 모델
일반적인 보안 모델
임베디드 보안 모델
2) 소프트웨어를 이용한 보안 실패 사례
예) Apple 의 Fairplay DRM 기법
3) 하드웨어를 이용한 보안 실패 사례
4) 안전한 임베디드 시스템 설계 방법
5) 외부로부터 접근 차단
6) 외부 인터페이스
7) 외부 인터페이스를 이용한 공격
8) JTAG ( Joint Test Action Group)
JTAG (IEEE 1149.1) 인터페이스 -> 테스트와 디버깅을 위한 산업 표준
JTAG 는 프로그램 개발시에는 매우 유용한 기능이지만, 제품이 출시가 된 이후에는 매우 위험한 기능이다.
No comments
임베디드 시스템 보안
1) 안전성 모델
일반적인 보안 모델
- 접근이 쉽지 않음
- 방화벽 등 추가적인 대응책 마련되어 있음
- 서버실 등 물리적인, 논리적인 접근통제 및 출입통제시스템이 되어 있어서 접근이 어려움 : 통신 중에 암호를 이용하여 통신되는 데이터 보호되어 있음
임베디드 보안 모델
- 자원이 제한적이기 때문에 추가적인 방화벽을 설치하기가 어렵고 분실이나 탈취가 용이하기 때문에 jtag로 메모리 탈취가 가능하다.
- 데이터 보호를 위해 암호 이상의 것이 필요함
사례)
임베디드 디바이스의 특성상. 장치의 접근이 용이하기 위해 정보가 유출될 수 있음
일반적으로 핸드폰 as수리를 업체에 맡긴 이후에 사진등의 개인정보가 외부로 노출된 사례가 있다. 이 때문에 임베디드 디바이스의 접근을 원천적으로 차단하고 물리적 공격에 대한 안전성을 확보하는 것이 임베디드 디바이스 에서는 매우 중요하다.
2) 소프트웨어를 이용한 보안 실패 사례
예) Apple 의 Fairplay DRM 기법
- PyMusique(파이뮤지크)라는 프로그램에 의해서 쉽게 DRM이 제거됨
- 2007년 4월, 스티브 잡스는 DRM 없는 음악파일을 판매할 것이라고 언급함
- 해커들은 항상 DRM 을 공격하기 위한 방법을 찾을 것이고, DRM 자체가 완벽하기 어려움
3) 하드웨어를 이용한 보안 실패 사례
예) Aladdin eToken에 물리적 접근
4) 안전한 임베디드 시스템 설계 방법
- 속도, 면적, 전력 외에 추가적으로 안전성을 고려한 설계 방법이 필요함
- Zero-risk 보안은 존재하지 않음
- 동기, 시간, 자원만 충분히 보장되면 공격자는 어떤 시스템이든 깰 수 있음
예) Zero-power 설계는 전세계 어디에도 존재하지 않음
- 그러나 Low-Risk 보안은 충분히 가능함 : 보호되어야 할 대상/이유/위협요소 등을 사전에 고려하여 설계함
예) Low-Power 시스템은 존재함
5) 외부로부터 접근 차단
- 어떤 제품은 간단한 도구(드라이버, 칼 등)를 이용하여 쉽게 분해가 가능함
- 접착제 사용하여 동봉
- 그러나 이 역시, 열로 접착제를 부드럽게 하고 칼로 쉽게 분해 가능함
- 이를 막기 위해 높은 융해점을 갖는 접착제를 사용함, 접착제보다 제품이 먼저 융해 되도록 함
- 또한 제품의 외피가 한 덩어리가 되도록 용접할 수도 있음, 제품을 열기 위해서는 외피를 파괴할 수 밖에 없도록 함
6) 외부 인터페이스
- 일반적으로 외부와 연결하기 위한 인터페이스가 필요함 : JTAG, RS232, USB
- 외부 연결을 위한 인터페이스는 공격자에게 매우 유용한 정보를 제공함 : 데이터, 키, PIN 등
- 평범하지 않은 인터페이스를 사용함 : OTP 인터페이스 (커넥터 위에 스티커로 동봉)
7) 외부 인터페이스를 이용한 공격
- 외피를 제거하고 계측기(멀티미터, 오실로스코프 등)를 이용하여 기능이나 동작을 확인함 : 칩에 연결된 핀들의 로직 상태로 칩의 상태를 확인할 수 있음
예 ) 핀의 High나 Low 전압인가 후 결과 확인
- 하드웨어 또는 소프트웨어 기반 프로토콜 분석기를 이용 통신 모니터링
- USB : SnoopyPro
- RS232와 병렬포트 : PortMon
- 네트워크 프로토콜 : Ethereal
- 오작동을 일으키기 위하여 비정상적인 패킷을 전송함.
- 만약 디바이스가 에러를 컨트롤하지 못한다면, 공격자에게 유용한 오동작 실행
- 필요하지 않는 인터페이스는 물리적으로 제거함 : JTAG, Programming 등
8) JTAG ( Joint Test Action Group)
JTAG (IEEE 1149.1) 인터페이스 -> 테스트와 디버깅을 위한 산업 표준
- 시스템 레벨 테스트, 바운더리 스캐닝, 하위레벨 테스트
- JTAG 인터페이스는 종종 보안 취약점을 노출함
- 스탠다드 바운더리 스캔 인터페이스는 Core State와 관계없이 디바이스의 핀에 대한 정보를 제공함
- 이 정보는 외부와 연결이 가능할 뿐만 아니라 RAM, Flash 메모리와 같은 다른 컴포넌트에 접근을 허용함
- 다른 외부의 디바이스를 이용하여 Flash 메모리를 다시 프로그래밍 할 수 있음
JTAG 는 프로그램 개발시에는 매우 유용한 기능이지만, 제품이 출시가 된 이후에는 매우 위험한 기능이다.
- 선을 자르거나 퓨즈를 끊어 JTAG를 못쓰게 하지만, 공격자는 선을 잇거나 퓨즈를 교체해 다시 사용할 수 있게 할 수 있음
- 현실적으로 기능을 제거하기가 매우 어렵다.
- 복잡한 패키지 방법을 이용하여 원천적으로 칩으로의 접근을 방지함
예) 에폭시, BGA, COB, CIB


