2006년 7월 13일 목요일

프로그래머블 로직 디바이스, FPGA 디자인 보안

프로그래머블 로직 디바이스

by 글: 지 펭(Jie Feng), 알테라 코퍼레이션
-
http://www.ecnkoreamag.com/article.asp?id=5351

오늘날 디자인의 복잡성이 증가함에 따라서 FPGA 디자인 보안의 중요성이 갈수록 높아지고 있다. 밀도, 기능성, 성능이 높아지고 있는 FPGA는 낮은 개발 위험성, 신속한 출시시간, 개발 유연성에 대한 시장 요구사항에 따라, 주요 시스템에서 점차 ASIC을 대체하고 있다. 첨단 기술을 제공하는 FPGA가 다양한 제품에 탑재되고 있는 가운데, IP(지적재산) 도용은 기업들에게 중요한 문제가 되었다.

어느 정도의 진전은 이루어지고 있으나 전세계적으로 적용할 수 있는 IP 법규는 없다. 그러므로 설계 엔지니어들이 FPGA로 구현된 디자인을 보호함으로써 IP, 수익성, 경쟁 이점을 적극적으로 보호해야 한다. 군사 분야에서는 각국이 군사 시스템을 개발하고 이전하기 위해 동맹국 간에 협력을 장려하고 있다. 해외로 판매되는 군사 시스템의 수가 증가함에 따라 군사 기술 및 정보를 보호해야 할 필요성도 높아지고 있다.

FPGA 디자인 보안 기법

FPGA는 크게 휘발성과 비휘발성의 두 가지 유형이 있다. 휘발성 FPGA가 비휘발성 FPGA에 비해 밀도와 기능성이 높고 가격이 낮다. 하지만 휘발성 FPGA는 SRAM 기반으로서 전원이 꺼졌을 때 데이터를 잃는다. 데이터를 저장하기 위해서는 외부 메모리가 필요한데 이것이 보안 위험성을 야기한다. 비휘발성 FPGA는 전원이 꺼졌을 때 프로그래밍 데이터를 유지하므로 외부 메모리 디바이스가 필요하지 않다.

현재 휘발성 FPGA의 디자인을 보호하기 위해서 컨피규레이션 비트스트림 암호화 및 핸드세이킹 토큰의 두 가지 기법이 이용되고 있다. 한편, 비휘발성 FPGA는 보안 비트를 이용해서 디자인을 보호한다.

휘발성 FPGA에 컨피규레이션 비트스트림 암호화 이용

최근의 일부 휘발성 FPGA는 컨피규레이션 비트스트림 암호화를 위해 빌트인 암호해독 엔진과 주요 스토리지를 포함한다. 그림 1은 3단계로 이루어지는 보안 컨피규레이션 흐름을 보여준다.

1. FPGA로 보안 키를 로드한다.
2. 이 키로 컨피규레이션 파일을 암호화하고 컨피규레이션 메모리 또는 플래시 메모리 등의 외부 메모리에 저장한다.
3. 시스템 파워업 때 외부 메모리가 암호화된 컨피규레이션 파일을 FPGA로 전송하면 FPGA가 저장된 키를 이용해 실시간으로 컨피규레이션 파일을 해독하고 스스로를 컨피규레이션한다.

컨피규레이션 데이터를 암호화하고 해독하기 위해서는 AES(Advanced Encryption Standard) 등의 산업표준 암호화 알고리즘이 이용된다. 보안 키 저장은 FPGA에 따라 휘발성 또는 비휘발성으로 나뉜다. 휘발성 키 저장의 경우에는 파워다운 때 외부 백업 배터리가 필요하다. 배터리는 사용시간이 제한적이고 동작 환경의 영향을 받으므로 유지관리 비용이 증가한다. 또한 배터리의 화학적 성분 때문에 특정 애플리케이션에는 적합하지 않다. 비휘발성 키 저장이 디바이스를 보드에 탑재 또는 탑재하지 않고 제조 공정의 어느 단계에서나 FPGA로 키를 프로그램할 수 있으므로 훨씬 더 믿을 수 있고 유연하다.

컨피규레이션 비트스트림 암호화를 이용하면 암호화된 컨피규레이션 파일만 시스템에 설치되고 키는 FPGA에 저장된다. 그러므로 컨피규레이션 비트스트림이 포착되더라도 키가 없으면 해독할 수 없다. FPGA 안의 보안 키를 은폐하기 위해 여러 가지 방법이 이용된다. 한 가지 방법이 금속층 아래에 분산적으로 배치하는 것이다. 알테라를 포함한 일부 업체에서는 추가적인 보안 기법을 이용해서 키를 더 찾기 어렵게 만든다.

휘발성 FPGA에 핸드세이킹 토큰 기법 이용

컨피규레이션 비트스트림 암호화는 대다수 저비용 FPGA에는 이용할 수 없다. 핸드세이킹 토큰 기법이 어느 FPGA 디자인에서나 컨피규레이션 비트스트림을 포착하더라도 복제를 방지할 수 있는 기법이다. 이 기법은 안전한 외부 디바이스로부터 FPGA로 핸드세이킹 토큰이 전달될 때까지 FPGA 안의 사용자 디자인의 기능을 정지시키는 것이다. 안전한 외부 디바이스가 FPGA로 연속적인 핸드세이킹 토큰을 발생시켜서 연속 동작을 가능하게 한다. 이는 그림 2의 소프트웨어 라이선스 기법과 유사하다.

이 예에서는 안전한 외부 디바이스로 CPLD를 이용했다. CPLD로부터의 핸드세이킹 토큰과 FPGA에서 생성된 데이터가 일치할 때만 FPGA 사용자 디자인이 동작한다. 그러므로 사용권이 없는 소프트웨어와 마찬가지로 FPGA 컨피규레이션 비트스트림을 훔치더라도 이것이 쓸모가 없다.

비휘발성 FPGA에 보안 비트 이용

비휘발성 FPGA는 크게 플래시, 앤티퓨즈, 온칩 컨피규레이션 메모리를 이용한 SRAM의 세 가지 유형이 있을 수 있다. 비휘발성 FPGA는 시스템 셧다운 때 자신의 컨피규레이션을 유지한다. 플래시 FPGA와 온칩 컨피규레이션 메모리를 이용한 SRAM FPGA만 재프로그래밍이 가능하다. 앤티퓨즈 FPGA는 재프로그래밍이 불가능하므로 유연성이 떨어진다.

대부분의 비휘발성 FPGA가 컨피규레이션 파일 리드백 또는 프로빙을 지원하므로 디버그 및 테스트에는 용이하지만, 잠재적인 보안 위험성에 노출되어 있다. 이를 방지하기 위해 이들 FPGA는 보통 리드백 기능을 켜거나 끌 수 있는 보안 비트를 가지고 있다. 이들 FPGA의 보안성은 이 보안 비트가 얼마나 잘 보호되느냐에 따라 좌우된다.

애플리케이션에 따라 적합한 FPGA 선택

대부분의 애플리케이션에서 신뢰성이 중요하므로 비휘발성 키를 이용한 휘발성 FPGA나 비휘발성 FPGA가 IP를 보호하는 데에는 더 유리하다. ASSP나 FPGA를 통해 제공되는 IP 등의 애플리케이션에는 비휘발성 키를 이용한 휘발성 FPGA나 비휘발성 FPGA가 외부 배터리가 필요하지 않으므로 적합한 선택이라고 볼 수 있다.

군사 애플리케이션의 경우에는 높은 수준의 보안이 요구된다. 그러므로 FPGA 디자인 보안은 전반적인 프로세스의 일부에 불과하다. 따라서 전체 군사 시스템의 보안을 위해서는 다른 보안 수단을 추가해야 한다. FPGA를 선택할 때는 디바이스 밀도, 성능, 기능, 비용 등 그 밖의 요인들을 고려해야 한다. 컨피규레이션 비트스트림 암호화 및 핸드세이킹 토큰 보안을 이용함으로써 디자이너가 고밀도 저비용 FPGA의 풍부한 기능셋을 이용해서 IP를 보호할 수 있다.

저자 소개

지 펭은 알테라의 스트라틱스 시리즈 FPGA 제품 총괄 책임자이다. 알테라에서 6년 동안 재직했으며 가전 애플리케이션, 무선 기술 마케팅, 제품 마케팅을 담당했다. 다수의 잡지 및 일간지와 다수의 컨퍼런스에서 FPGA 디자인 보안에 관한 글을 기고하거나 발표했다. 토론토대학에서 컴퓨터공학을 전공했으며 스탠포드대학에서 컴퓨터과학으로 석사학위를 취득했다. 더 자세한 사항은 www.altera.com 참조하기 바란다.

댓글 없음: