지난 20여 년 동안 FPGA(field-programmable gate array)는 프로토타이핑 툴로부터 가전 및 산업 애플리케이션의 유연한 생산 솔루션으로 활용되어 왔다. FPGA 로직 복잡성은 수천 게이트로부터 수백만 게이트로 증가했으며, 이에 따라 소자는 시스템의 더욱 많은 핵심 기능(지적 재산권)을 저장할 수 있게 되었다.
FPGA 설계의 기밀성 보호
글│Bernhard Linke, Principal Member of the Technical Staff
, Maxim Integrated Products Inc.
현재 설계자는 다양한 기술로 구성 데이터를 저장하는 FPGA를 선택할 수 있다. 이러한 기술에는 1회성 프로그래밍 가능 안티퓨즈(antifuse), 재프로그래밍 가능 플래시 기반 스토리지 셀, 재프로그래밍 가능 SRAM 기반의 구성 가능한 로직 셀 등이 있다. 안티퓨즈와 플래시 기반 솔루션은 상대적으로 안전한 솔루션을 제공한다. 두 방식 모두 구성 데이터가 FPGA 칩에 저장되어 있고, 저장된 데이터의 판독을 방지하는 메커니즘이 있어 디패킹(depacking), 마이크로프로빙(microprobing), FIB(focused ion beam)와 같은 매우 복잡한 구조를 사용하여 실리콘에 침투하여 보안 체계를 무력화시키려고 하지 않는 한 데이터가 훼손될 가능성은 거의 없다.(FPGA에 대한 간단한 배경 설명은 사이드바 ‘FPGA의 기술 옵션과 관련 문제들’을 참조한다.)
그러나 SRAM 기반 FPGA는 불법적인 복제나 도용으로부터 IP(구성 데이터)를 보호하는 안전 장치가 적다. 따라서 구성 데이터를 보호하기 위한 일정한 보안 메커니즘을 사용하지 않을 경우 데이터는 스누핑에 노출된다. SRAM 방식에서 구성 데이터는 보통 별도의 메모리 칩에 저장되어 있어 전원이 인가되면 FPGA가 구성 패턴을 로드하여 읽어 들이기 때문이다.
SRAM 기반 FPGA는 산업 애플리케이션뿐 아니라 HDTV(비디오 성능 차별화, 설계 사이클 단축), 셋톱박스(고객맞춤형설계, 데이터 변환, 고정 픽셀, 컬러, 개별 셰이딩), 자동차(파워-트레인 제어, GPS 네비게이션, 엔터테인먼트)를 포함하여 다양한 애플리케이션에 사용된다. 이러한 애플리케이션에서 필요로 하는 IP는 제품 개발자에게 시장 우위를 제공해주므로 따라서 IP의 손실은 제품의 고유성에 심각한 타격을 주고 더 나아가 이윤 손실로 이어질 수 있다. 다행히 구성 데이터의 복제(IP 도용)를 방지하고 데이터를 안전하게 지켜주는 몇 가지 간단한 방법이 있다.
SRAM 기반 FPGA의 취약점
구성 데이터 비트 스트림은 2칩(FPGA와 구성 메모리) 구성으로 인해 전원 인가 단계에서 도청에 노출된다. FPGA는 비트 스트림이 ‘진짜’인지 또는 불법적으로 생성된 복제인지 알 수가 없기 때문에 구성 데이터에 포함된 지적 재산권은 완전히 무방비 상태가 된다. 잘 알려진 이러한 문제는 보안 키와 비트 스트림 암호화와 같은 수단에 의해 부분적으로 해결되고 있지만, 이 방법은 높은 비용 때문에 소비자 애플리케이션에는 적합하지 않으므로 하이 엔드 FPGA에만 적용된다.
보안 문제
비트 스트림 암호화를 제공하지 않는 SRAM 기반 FPGA를 사용하는 애플리케이션은 특히 설계 기밀성에 취약하다. 구성 비트 스트림은 쉽게 캡처되고 구성 PROM으로 재프로그래밍되거나 간단히 재생되어 원본 설계 복제에 이용될 수 있다. 이제 복제된 제품이 정품 제품과 경쟁하여 정품 제조업체의 연구 개발 내용을 훔치고 시장 점유와 이윤을 잠식한다.
이에 반해 안티퓨즈 또는 플래시 기반 FPGA는 암호화 기능 없이도 구성 데이터가 도청에 노출되지 않기 때문에 SRAM 기반 FPGA보다 더 안전하다. 그러나 어셈블리 하우스에서 FPGA 프로그래밍까지 수행할 경우, 이들은 개발 비용을 전혀 들이지 않으면서 정식으로 허가받은 제품보다 더 많은 갯수의 소자를 프로그래밍하고 이를 자체적으로 판매할 수 있다. 이와 같이 허가받지 않은 소자는 인증받은 소자와 구별할 수 없으며 회사의 이윤에 심각한 영향을 미칠 수 있다.
SRAM 기반 FPGA의 보안을 높이는 한 가지 방법은 다중 칩 패키징을 사용하여 FPGA와 함께 패키지 내부에 NV 메모리를 탑재하는 것이다. 그러나 이 역시 누군가 패키지를 연다면 메모리와 FPGA 간의 데이터 인터페이스가 노출되고 구성 패턴이 훼손될 수 있다.
구성 비트 스트림의 구조, 즉 데이터 요소의 시퀀스에 대한 코딩과 식별은 문서를 통해 거의 알 수 없다. 비트 스트림이 갖는 그 모호성과 복잡성, 크기로 인해 리버스 엔지니어링 과정은 이론적으로 가능하지만 어렵고 많은 시간이 걸린다. 그러나 구성 스트림에 대한 리버스 엔지니어링은 성공할 경우, 부분적인 성공으로도, 셋톱박스를 해킹하여 서비스를 훔치거나 자동차의 파워 트레인 설정을 탬퍼링(tampering)할 수 있어 정품 제조업체의 책임 문제를 발생시킬 수 있다.
과제
시스템 비용을 크게 증가시키지 않으려면 설계자는 암호화 없이 SRAM 기반 FPGA를 사용해야 한다. 그러나 동시에 기밀성으로부터 지적 재산권을 보호하는 방법을 찾아야 한다. 이 밖에도 설계 소유자의 가장 큰 관심은 위탁 생산업체가 허가받은 제품의 갯수보다 더 많은 소자를 제조하지 못하도록 보장하는 데 있다. 보안 조치에 추가되는 비용은 가능한 낮아야 하고 생산 흐름에 미치는 영향은 최소화되어야 한다. 보안 관련 하드웨어는 회로 보드의 가용 공간에 탑재되어야 하지만 전체 전력 소비를 증가시켜서는 안 된다. 또 보안이 FPGA의 자원(핀 수와 로직 요소)에 미치는 영향은 가능한 낮아야 한다.
대안책
이러한 모든 요구사항을 만족하는 합리적 솔루션으로 FPGA와 보안 메모리 간에 이루어지는 질의-응답(challenge -and-response) 데이터 교환(인증)이 있다. 보안 메모리 칩은 1980대 후반 등장했다. 이 칩은 유럽에서 처음에는 공중전화 카드에 많이 이용되다가 1990대에는 은행카드에, 그리고 현재는 GSM 휴대전화의 핵심 부품(SIM 카드)으로 사용되고 있다. 보안 칩 카드와 호스트 시스템 사이에 이용되는 대표적인 통신 표준은 I2C 직렬 버스이다.
보안 메모리는 뱅킹 또는 전화 애플리케이션 등에 주문형 소자로 사용되어 왔으며 일반적인 용도로 인식되지 않았다. 이러한 상황은 2000년에 Dallas Semiconductor (현재 Maxim Integrated Products)가 SHA-1 암호화 알고리즘이 통합된 소자를 내놓으면서 크게 달라졌다. 1세대 DS2432에 이어 향상된 DS28E01이 출시되었으며 이들 소자는 통신과 전원에 모두 1-Wire 인터페이스를 사용한다. 2007년에 나온 DS28CN01은 I2C 인터페이스를 사용하며, 이 점만 제외하면 DS28E01과 유사하다.
인증의 개념
인증은 둘 이상의 엔티티 간에 신분 증명을 확립하기 위한 과정이다. 키 기반 인증은 보안 키와 입력으로 인증받아야 할 데이터(메시지)를 기초로 메시지 인증 코드(MAC)를 계산한다. 그런 다음 MAC가 메시지에 추가된다. 메시지 수신자는 동일한 계산을 수행하여 계산된 MAC와 메시지와 함께 수신된 MAC를 비교한다. 두 MAC가 일치하면 메시지는 진짜라고 간주된다.
그러나 이 기본 모델의 약점은 중간에 가로챈 메시지가 나중에 무단 사용자에 의해 재생되어 진짜로 오인받을 수 있다는 점이다. 간단한 ‘재생 공격’이 성공할 수 있는 가능성은 MAC 계산에 MAC 수신자가 선택하는 난수 질의값을 포함하면 해결된다. 그림 1은 일반적 개념을 보여준다. 질의가 길수록 잠재적 재생에 대한 가능한 모든 응답을 기록하는 것이 더 어려워진다.
그림 1. 질의-응답 데이터 흐름
MAC 송신자의 진위를 증명하기 위해 MAC 수신자는 난수를 발생시켜 송신자에게 질의로 전송한다. 그러면 MAC 송신자는 보안 키, 메시지 및 질의를 기초로 새로운 MAC를 계산하여 수신자에게 계산된 결과를 재전송한다. 송신자가 모든 질의에 대해 유효한 MAC를 발생시킬 수 있음을 증명하면 송신자가 비밀 키를 알고 있다는 것을 의미하므로 따라서 진짜 송신자로부터 온 것이라고 간주할 수 있다. 이러한 과정을 기술적 용어로 질의-응답 인증이라고 한다.
MAC의 계산에 사용되는 알고리즘은 Gost-Hash, HAS-160, HAVAL, MDC -2, MD2, MD4, MD5, RIPEMD, SHA 제품군, Tiger, WHIRLPOOL 등을 포함하여 매우 많다. 철저한 검증을 거쳐 국제적으로 공인받은 단방향 해시 알고리즘은 NIST(National Institute of Standards and Technology)에서 개발한 SHA-1이다. SHA-1은 국제 표준 ISO/IEC 10118 -3:2004로 발전했다.
SHA-1 알고리즘의 기본 수학은 NIST 웹사이트에 공개되어 있다. SH-1 알고리즘의 고유한 특징은 1)비가역성(irreversibility) - MAC에 대응하는 입력을 결정하기 위한 계산이 실질적으로 불가능해야 한다. 2)충돌 회피성(collision-resistance) - 주어진 MAC를 생성하는 하나의 이상의 입력 메시지를 찾는 것이 실질적으로 불가능해야 한다. 3)높은 쇄도 효과(avalanche effect) - 입력의 작은 변화가 MAC 결과에 중대한 변화를 일으킨다는 것이다. 알고리즘에 대한 국제적 검증뿐 아니라 이러한 이유로 SHA-1은 보안 메모리를 위한 질의-응답 인증에 대한 탁월한 선택이다.
하드웨어 구현
그림 2에서 보듯이 추가해야 할 하드웨어는 보안 메모리 칩 하나뿐이다. 이 메모리 칩은 양방향(오픈 드레인) 통신을 위해 구성되는 FPGA 핀에 연결된다. VDD에 대한 저항 연결은 1-Wire 메모리에 전원을 공급하고 오픈 드레인 통신을 위한 바이어스를 제공한다. 보안 메모리에는 SHA-1 엔진, 128바이트 사용자 메모리, 칩 내부 동작을 위해 사용할 수 있으나 외부에서는 읽을 수 없는 보안 키, 그리고 고유의 변경 불가능한 식별 번호 등이 포함된다. 이러한 기능은 DS28E01과 같은 소자에 구현되어 있다.1 메시지 인증 코드의 계산에는 보안 키, 질의 역할을 하는 난수, 고유 식별 번호, 추가 데이터(사용자 메모리, 상수) 등이 포함된다.
그림 2. 보안 1-Wire 메모리를 사용하는 FPGA 보호 기능(간략히 표시한 회로도)
DS28E01의 보안 기능을 이용하기 위해서는 FPGA는 다음을 수행할 수 있어야 한다.
·질의를 위한 난수를 발생시킨다.2
·내부 동작을 위해 사용할 수 있지만 외부에서 알아낼 수 없는 보안 키를 알고 있다.
·보안 메모리와 같이 보안 키, 난수 및 추가 데이터가 포함된 SHA-1 MAC를 계산한다.
·FPGA에 구현된 CPU의 XOR 기능을 사용하여 바이트별로 데이터를 비교한다.
SHA-1 MAC 계산에 대한 자세한 내용은 다음을 참조한다.
마이크로컨트롤러와 같은 기능은 일반적으로 주요 FPGA 벤더에서 제공하는 무료 매크로로 사용할 수 있다. Xilinx 마이크로컨트롤러 기능은 192개 로직 셀을 차지하며, 이는 Spartan-3 XC3S50 소자의 단 11%에 불과하다. Altera 소자를 위한 유사한 마이크로컨트롤러는 850개 로직 요소를 차지하며, 이는 Cyclone II 제품군 중 최소형 제품인 EP2C5의 18.5%에 해당된다.
작동 원리
전원이 인가되면 FPGA는 구성 메모리로부터 스스로 구성한다. 이제 FPGA의 마이크로컨트롤러 기능은 동작을 시작하여 IFF(identification friend or foe)라고도 부르는 질의-응답 인증을 시작한다. 인증에는 다음 단계가 포함된다.
·난수를 발생시켜 보안 메모리에 질의(Q)로 전송한다.
·보안 메모리에 보안 키, 질의, 고유 식별 번호 및 기타 고정 데이터를 기초로 SHA-1 MAC를 계산하도록 명령한다.
·보안 메모리와 FPGA의 보안 키에 의해 사용되는 동일한 입력과 상수를 기초로 SHA-1 MAC, 즉 예상된 응답(MAC1)을 계산한다.
·응답(MAC2)으로 보안 메모리(읽기 인증 MAC)에 의해 계산된 SHA-1 MAC를 예상된 응답(MAC1)과 비교한다.
MAC1과 MAC2가 일치하면 FPGA는 명백히 보안 키를 알고 있다고 판단하여 환경을 ‘아군’으로 식별한다. 이제 FPGA는 정상 동작으로 전환하여 구성 코드에 정의된 모든 기능을 동작/수행한다. 그러나 MAC가 서로 다르면 환경은 ‘적’으로 간주된다. 이 경우 FPGA는 정상 동작이 아닌 애플리케이션에 고유한 조치를 취한다.
안전한 보안책
SHA-1에서 제공하는 고유의 보안 기능 외에도 위의 IFF 인증 방식의 핵심적 보안 요소는 보안 메모리나 FPGA에서 읽을 수 없는 보안 키에 있다. 비트 스트림의 데이터는 무작위로 섞이기 때문에 FPGA가 스스로 구성할 때 구성 비트 스트림을 도청해도 보안키를 알아내는 것은 불가능하다. 비트 스트림은 그 크기로 인해 인증 단계를 제거할 목적으로 설계를 알아내기 위해 비트 스트림을 리버스 엔지니어링하는 시도는 너무 많은 시간이 소모되므로 실질적으로 실행하기 어렵다.
다른 핵심 보안 요소는 질의의 무작위성이다. 예측 가능한 질의(예컨대 상수)는 예측 가능한 응답을 생성하며, 따라서 이러한 응답은 보안 메모리를 에뮬레이트하는 마이크로컨트롤러에 의해 기록되고 이후에 재생될 수 있다. 마이크로컨트롤러는 예측 가능한 질의를 이용해 환경을 아군으로 간주하도록 FPGA를 효과적으로 속일 수 있다. 그러나 이 IFF 방식에 사용되는 질의의 무작위성은 이러한 염려를 덜어준다.
각 보안 메모리 내의 보안 키가 소자마다 고유하다면 - 마스터 보안 키에 의해 계산되는 개별 보안 키, 1-Wire SHA-1 메모리의 고유 식별 번호, 애플리케이션마다 다른 상수 등 - 보안을 더욱 향상시킬 수 있다. 개별 키가 공개되어야 하는 경우 전체 시스템의 보안이 아닌 오직 하나의 소자만 영향을 받도록 해야 한다. 개별 보안 키를 지원하려면 FPGA는 마스터 보안 키를 알아야 하고 예상된 응답을 계산하기 전에 1-Wire SHA-1 메모리 칩의 보안 키를 먼저 계산해야 한다.
공급 측면
제작하고자 하는 각각의 소자에 대해 설계 소유자(OEM)가 적절히 사전 프로그래밍된 1개의 보안 메모리를 위탁 생산업체(CM)에게 제공하면, 위탁 생산업체는 임베디드 FPGA를 이용해 제품을 생산한다. 이러한 1대1 관계는 CM이 제작할 수 있는 인증 소자의 수를 제한한다. CM이 보안 메모리를 함부로 고치지 못하도록 방지하려면, 즉 적절히 프로그래밍되어 있지 않다는 이유로 추가 메모리를 요구하지 못하게 하려면 보안 키를 쓰기 방지하는 것이 좋다.
1-Wire EEPROM 데이터 메모리는 쓰기 방지되어 있지 않은 경우에도 보안에 대해 걱정할 필요가 없다. 이 메모리 데이터는 보안 키를 알고 있는 개인만 변경할 수 있도록 설계되어 있다. 또한 이러한 특징 때문에 애플리케이션 설계자는 soft-feature 관리를 구현할 수 있으므로 FPGA는 SHA-1 보안 메모리에서 읽는 데이터에 따라 기능을 동작/정지시킬 수 있다.
OEM에서 CM에 공급하기 전에 메모리 소자를 사전 프로그래밍하는 것이 항상 실용적인 것만은 아니다. 이를 위해 보안 메모리 제조업체는 OEM을 대신해 SHA-1 보안 및 EEPROM 어레이 사전 프로그래밍 서비스를 제공할 수 있다. Maxim은 OEM 입력에 따라 보안 메모리 소자를 기록하고 구성한 다음 이를 직접 CM에 제공하는 이러한 서비스를 제공하고 있다. 이 서비스의 주요 장점에는 다음이 포함된다.
a. OEM은 CM에 보안 키를 노출할 염려가 없다.
b. OEM은 자체적인 사전 프로그래밍 시스템을 구현할 필요가 없다.
c. OEM에서 공인한 써드파티만 등록된 소자에 액세스할 수 있다.
d. OEM 감사 목적을 위해 필요한 경우 Maxim은 출하된 수량에 대한 기록을 보유한다.
개념의 증명
이 문서에 설명된 FPGA 보안 방법은 Altera 및 Xilinx의 제품을 이용해 시험되었다. 이 회사의 백서 ‘보안 메모리 소자를 사용하는 FPGA 설계 보안 솔루션’[3]에서 Altera는 다음과 같은 결론을 내리고 있다. ‘이 FPGA 설계 보안 IFF 솔루션은 구성 데이터 비트 스트림이 캡처되는 경우에도 Altera FPGA 설계가 복제되지 못하도록 보호한다. FPGA와 보안 메모리에서 모두 해시 알고리즘 계산이 일치할 때까지 사용자 설계는 동작하지 않는다. 이러한 설계 보안 솔루션은 FPGA 설계자의 IP를 보호한다.’
마찬가지로 Xilinx는 그들의 애플리케이션 노트 XAPP780에서 다음과 같이 주장하고 있다. ‘시스템 보안은 기본적으로 보안 키의 보안성과 보안 환경에서 키의 로딩을 바탕으로 이루어진다. 이러한 전체 기준 설계는 잘 알려진 Kerckhoffs의 원칙에 따라 보안 키를 제외하고 공개되고 있다. 이 애플리케이션 노트에 제공되는 프로그래밍 및 인증에 대한 간단한 인터페이스를 이용하면 이러한 복제 보호 구조를 매우 간편하게 구현할 수 있다.’(플랑드르의 언어학자 Auguste Kerck-hoffs는 군사용 암호해독에 관한 뛰어난 그의 글에서 침입이 발생하면 전체 시스템이 아닌 키만 바꾸면 되므로 보안은 모호성에 의존하는 대신 키의 강력함에 의존해야 한다고 주장했다.)
결론
지적 재산권의 기밀성을 보호하려면 단 하나의 저가 칩(DS28E01의 경우 10,000개 기준 $1.00 미만)을 추가하고 FPGA 구성 코드만 업데이트하면 된다. 1-Wire 인터페이스 덕분에 보안용으로 1개의 FPGA 핀만 사용된다.(FPGA에서 더 많은 핀을 사용할 경우 1-Wire 버전 대신 보안 메모리의 I2C 버전을 사용할 수 있다. 이 경우 FPGA 구성 패턴과 임베디드 마이크로컨트롤러를 위한 제어 소프트웨어를 변경할 필요가 있다.) 보안 메모리는 고정 또는 계산된 보안 키와 애플리케이션 고유 데이터로 사전 프로그래밍된 상태로 주문할 수 있다. 사전 프로그래밍된 부품은 OEM 또는 공인 위탁 생산업체에게만 공급되며, 이들은 공급된 사전 프로그래밍된 수량만 제작할 수 있다.
FPGA의 기술 옵션과 관련 문제들
5대 주요 FPGA 벤더인 Xilinx, Altera, Lattice Semiconductor, QuickLogic, Actel은 시장의 약 98%를 점유하고 있다. FPGA와 유사한 기능을 제공하는 소수의 전문 공급업체들이 나머지 퍼센트 포인트를 나누고 있다. 이들 소수 전문 공급업체는 모두 팹리스 기업으로 대만, 일본, 싱가포르 또는 독일 등지의 웨이퍼 파운드리 업체에 위탁하여 웨이퍼를 생산한다. 그 결과 이 회사들은 SRAM 기능을 갖는 고속 로직 또는 고밀도 부동 게이트 메모리 어레이와 같은 파운드리 업체의 기술에 대한 액세스만 갖는다. FPGA 회사들은 표준 공정 흐름을 사용하여 생산 비용을 낮게 유지할 수 있다.
|