EPNC(월간 전자부품 뉴스) UPDATED. 2018.8.16 목 14:37

상단여백
HOME 포커스 리포트 뉴스레터
IoT 통신 보안을 위한 임베디드 암호화 기법
양대규 기자 | 승인 2018.05.28 10:39

[EPNC=양대규 기자] 사물인터넷(IoT)의 인지도는 전자산업계에서는 거의 정점에 도달했으며, 일반 소비자들 사이에서도 얼리어답터들을 중심으로 점점 더 확산되고 있다. 이제는 IoT가 무엇이고 이를 이용해 무엇을 할 수 있는지에서부터, IoT가 다양한 플랫폼에서 매끄럽게 작동하려면 어떻게 해야 하는지, 나아가 보안 걱정 없이 IoT를 활용하려면 어떻게 해야 하는지로 관심의 초점이 옮겨가고 있다.

SSL(Secure Socket Layer)

인터넷 통신을 위한 보안 기술은 IT 업계에서 오래 전부터 사용해 왔다. 인터넷 브라우저는 기밀이 요구되는 사용자 정보를 보호하기 위해 SSL(Secure Socket Layer) 같은 암호화 기법을 사용한다. 이와 유사하게 무선 인터넷 라우터를 구성할 필요가 있었던 사용자라면 AES(Advanced Encryption Security)를 알고 있을 것이다. AES는 기존의 무선 통신 프로토콜이 제공하던 보호 기능을 더욱 강화해주는 기술이다.

사람들은 인터넷이 안전하듯이 IoT 역시 안전할 거라고 생각하지만, 그렇지 않으며 적어도 꼭 그런 것은 아니다.

첫째, IoT는 기존의 인터넷에 연결되는 컴퓨팅 기기의 영역을 넘어 확장된다는 점을 이해할 필요가 있다. 특히 우리가 IoT에 연결하고자 하는 많은 ‘사물’들은 전송 속도가 비교적 느린 무선 기술을 이용해 로컬 허브와 통신하는 저전력, 배터리 구동 기기들이다. 이런 기기들은 와이파이에서 일반적으로 전력 소모가 많은 오버헤드를 제공할 여유가 없기 때문에 대안적인 무선 기술을 사용할 필요가 있는데, 이런 기술 또한 안전하게 보호할 수 있어야 한다. 

둘째, 구축된 인터넷 통신조차 액세스 지점이나 데이터가 하나의 네트워크에서 다른 네트워크로 전달되는 중간 지점에서는 보안에 취약할 수 있다. 여기에서 과제는 허가 받지 않은 접근은 차단하는 한 편, 인증된 사용자는 원하는 정보에 쉽게 접근할 수 있도록 보장하는 것이다. 여기에서 가장 이상적인 것은, 정보가 무단으로 조작되지 않았는지 확인할 수 있는 기법을 사용해 통신 무결성을 보장하고 나아가 보안성을 더욱 강화하는 것이다. 이에 못지않게 이런 정보가 진짜이고, 정보의 출처 역시 믿을 수 있다는 것 역시 중요하므로, 송신자를 인증하는 기법 또한 IoT 보호에 중요한 역할을 한다.

IoT를 안전하게 보호할 수 있는 도구로 암호화, 무결성, 인증을 앞에서 언급했다. 시스템 설계에서 이런 기술들이 구체적으로 어떻게 구현되는지 알아보기 전에, 이들 용어가 무엇을 의미하며 어떻게 작동하는지 기본적인 사항부터 먼저 살펴보기로 한다.

암호화
암호화는 간단히 말하면 암호화 알고리즘을 구현하는 것이다. 오늘날에는 고도로 복잡해지고 많은 수학적 개념을 포함하지만, 기본적인 원리는 비교적 이해하기 쉽다. 

초창기 암호화 프로세스들은 공식이나 룩업 테이블(Look-Up Table)에 기반한 대체 코드를 사용했다. 공식을 이용하는 방법은, 예를 들면 특정 알파벳 문자를 순서상 뒤에 있는 문자로 대체하는 것이다. 일례로 적용되는 공식이 ‘3번째 뒷자리 문자’ 라고 한다면, ‘A’는 ‘D’가, ‘M’은 ‘P’가 돼야 한다. 만약 해당 문자가 알파벳 순서상 맨 끝인 ‘Z’일 경우라면, 다시 앞으로 돌아가 ‘C’가 되는 것이다. 안타깝게도 이런 암호화는 너무 단순해서 시행착오에 의해서나 모음의 더 높은 사용 빈도 또는 ‘and’와 ‘the’ 같은 공통된 단어처럼 쉽게 파악할 수 있는 패턴을 통해 비교적 쉽게 크랙할 수 있다.

룩업 테이블 방식은 표준 책의 단어를 참조하는 코드를 사용하는 것으로, 숫자를 활용해 쪽수, 줄, 그리고 해당 줄의 단어 위치를 식별한다. 이 방법은 반드시 송신자와 수신자가 동일한 책을 갖고 있어야 한다. 따라서 이 책은 코드화 된 메시지의 ‘키(Key)’가 되고, 이 키가 없다면 다른 누군가가 암호를 해독하기 어렵다. 이런 비밀 키와 훨씬 더 복잡한 암호화 기능을 함께 사용하는 것이 현대적인 암호화 기법의 기초가 된다. 목표는 가장 강력한 컴퓨터로 모든 경우의 수를 무작정 대입해 보는 ‘브루트 포스(Brute Force)’ 방법을 사용하더라도 너무 복잡하거나 너무 많은 시간이 걸려 암호를 풀지 못하는 코드를 생성하는 것이다.

동일한 키를 이용해 정보를 암호화하고 해독하려면 송신자와 수신자가 모두 동일한 키를 공유해야 하는데, 이는 다른 누군가가 이 키를 알아낼 수 있는 보안 위험이 발생할 여지가 있다. 대신, 풀기 어려운 수학 문제는 공개 키와 개인 키의 조합으로 정보를 암호화하고 해독할 수 있는 방법을 제공한다. 예를 들어 만약 매우 큰 소수 2개를 곱한 값만 알려져 있다고 해보자. 이 결과값을 만든 2개의 소수를 컴퓨터로 알아내려면 꽤 많은 시간이 필요하다. 하지만 2개의 소수 중 1개를 알고 있다면 메시지를 빠르게 해독할 수 있다. 따라서 A라는 사람은 이 곱을 그의 ‘공개’ 키로 만들고, B라는 사람은 이 곱을 이용해 암호화된 메시지를 보낼 수 있으며, 이 암호화된 메시지는 오직 A만 자신이 ‘개인’ 키로 갖고 있는 소수를 이용해 해독할 수 있다. 그런 다음 A는 B의 공개 키(A의 공개 키와 다른)를 사용해 그들의 응답을 인코딩할 수 있으며, 이 응답은 B가 갖고 있는 개인 키(공개 키의 인수)로 해독할 수 있다.

쌍으로 구성된 키를 사용하는 공개 키 암호화 기법은 비대칭이고 계산 집약적이므로 주로 초기의 안전한 데이터 채널을 생성하기 위해 작은 데이터 블록을 암호화하는 데에만 사용된다. 그 후 이 채널을 다른 비밀 키를 교환하는 데 사용할 수 있다. 다른 비밀 키는 이후에 대칭 암호화 알고리즘과 함께 사용할 수 있는데, 이 방법은 여전히 매우 견고하지만 컴퓨팅 전력을 덜 필요로 한다.

인증과 무결성 
암호화된 메시지의 송신자를 인증하고 메시지 무결성을 보장하는 기술들은 서로 공통된 요소들도 있고, 암호화와 관련해 앞서 논의한 내용들에 해당하는 부분들도 공통적으로 갖고 있다.
먼저 인증 획득은 송신자가 그들이 말하는 바로 그 사람이라는 것을 검증하는 데 매우 중요하다. 이를 위해 공개 키 암호화 기법을 활용할 수 있다. 예를 들어, A가 B로부터 어떤 메시지를 수신했다고 가정해 보자. A는 그들이 알고 있는 공개 키를 이용해 아무 수나 암호화한 다음, 이를 메시지에 포함해 B에게 돌려 보낸다. 그러면서 B에게는 A가 암호화해서 보낸 수를 B가 갖고 있는 공개 키를 가지고 암호화해서 A에게 다시 보내 달라고 요청한다. 만약 숫자가 정확히 일치한다면 서로의 신분이 인증되는 것이고 이후에 추가로 수신되는 정보들은 그들이 인증한 송신자로부터 온 것이라고 확신할 수 있다.

메시지의 무결성을 보장하는 것은 다음 두 가지 점에서 중요하다. 하나는 일부 기계나 기타 장비의 정상적인 동작을 방해하는 의도로 행해지는 악의적인 조작 가능성을 차단하는 것이고, 다른 하나는 훼손된 정보로 IoT 시스템에까지 미칠 수 있는 커다란 혼란의 발생 가능성을 방지하는 것이다. 암호화된 텍스트 메시지가 중간에 가로채여 수정된다면 읽을 수 없게 될 가능성이 크며, 조작 여부는 명확해질 것이다. 그러나 암호화된 정보가 IoT 시스템의 임베디드 마이크로컨트롤러(MCU)에 전송되는 코드 업데이트라면, 바람직하지 않은 동작이 발생하거나 전체 시스템이 장애를 일으킬 때까지 그러한 훼손을 알아차리지 못할 수도 있다. 

따라서 중간에 벌어지는 어떠한 간섭도 즉시 검출할 수 있도록 데이터 무결성을 보장할 수 있는 방법이 필요하다. 한 가지 방법은 메시지의 모든 비트나 공유된 비밀 키와 관련된 태그를 생성해, MAC(Message Authentication Code)라 불리는 이 태그를 메시지의 바디에 추가한 다음 암호화해 전송한다. 

한 가지 방법은 메시지의 모든 비트나 공유 비밀 키와 관련된 태그를 생성하고, MAC라 불리는 이 태그를 메시지 본문에 추가한 다음, 메시지와 함께 암호화해 전송하는 것이다. 이 방식은 데이터 전송 과정에서의 오류를 검출하기 위해 2진 비트열에 패리티 비트(Parity Bit)를 추가하는 것과 비슷하지만, 그보다 훨씬 더 복잡하다. 수신자는 태그를 포함하고 있는 메시지를 해독할 때 태그를 재생성할 수 있으며, 키가 일치하는 것으로 확인되면 데이터 무결성이 보장되는 것이다.

IoT 보안을 구현하는 전용 하드웨어
지금까지 암호화, 인증, 데이터 무결성의 원리를 간략하게 살펴보았다. 이는 IoT 시스템을 안전하게 보호하기 위해 사용할 수 있는 기술을 이해하는데 도움이 될 것이다.

마이크로컨트롤러는 암호화 구현을 위한 전용 하드웨어를 포함하고 있다. 가장 많이 접할 수 있는 솔루션은 앞서 언급한 AES(Advanced Encryption Standard)이다. 미국 국립 표준기술원(NIST)이 제정한 AES는 일반적으로 128, 192 또는 256비트의 블록 크기로 구현되는 대칭 암호이다. 이는 송신자와 수신자가 모두 동일한 키를 갖고 있어야 한다는 것을 의미한다. 필요한 경우, 이 키는 맨 처음에 공개 키 메시지를 교환할 때 공유할 수 있다.

AES 하드웨어 가속기를 통합한 MCU의 예로 TI의 MSP430FR5969 MCU 제품군을 들 수 있다. 이 제품은 암호화와 암호 해독 연산 과정에 필수적으로 사용되는 저장 메모리도 포함하고 있다. 연산 절차는 보안 키가 상태 메모리에 로드되면 자동으로 시작된다.

다른 하드웨어 가속기들은 메시지 인증을 구현한다. 가장 일반적인 MAC 알고리즘은 NIST가 제정한 SHA(Secure Hash Function) 표준이다. 이런 가속기들 역시 MCU에 통합된 형태로 쉽게 볼 수 있으며, 유연한 코프로세서를 통해 제공되는 경우도 많다. 예를 들어 NXP 키네티스 K6x 제품군의 하드웨어 가속 코프로세서는 AES와 SHA를 포함해 다양한 표준을 처리할 수 있다. 이런 코프로세서는 CPU와 별개로 동작하므로 CPU가 암호 기능을 처리해야 하는 작업 부담을 크게 덜어줘 시스템 효율을 높여준다.

MAC 알고리즘

IoT 보안을 구현하는 기타 방식
때로는 민감한 정보를 담고 있는 저장 위치를 보호해야 할 필요도 있다. 하드웨어 공격으로부터 안전성을 보장하기 위해서다. 예컨대 아트멜의 독창적인 보안 메모리 디바이스인 AT88SC0204CA는 데이터 암호화와 MAC 알고리즘을 사용해 메모리 콘텐츠를 보호하는 대칭 상호 인증 기술을 제공한다. 시스템 액세스는 표준 MCU 직렬 인터페이스를 통해 이루어지며, 조작 감지 회로가 추가적인 보안 기능을 제공한다. 

이 밖에 MCU와 별개로 독자적인 보안 기능을 활용하는 솔루션이 있다. 맥심(Maxim)은 SHA-256 알고리즘을 구현한 전용 디바이스 제품군을 제공한다. 예를 들어 맥심의 DS24L65는 표준 I2C 인터페이스를 안전한 1-와이어 인터페이스로 변환한다. 그런 다음 2Kb EEPROM와 온칩 SHA-256 기반 MAC 하드웨어를 통합한 맥심 DS28EL22 같은 다른 보안 1-와이어 주변장치를 지원한다. 이 디바이스는 고유의 64비트 ROM ID 코드를 활용해 호스트-슬레이브 인증을 하며, 인증되지 않은 호스트는 사용자 메모리를 수정하지 못하도록 보호하는 매우 견고한 솔루션을 제공한다.

결론
암호화와 인증 알고리즘은 민감한 데이터의 전송과 저장을 안전하게 보호하고, 이런 데이터 통신이 누군가의 불법적인 조작이나 개입 없이 오직 정해진 당사자나 기기들 사이에서만 이루어지도록 보장하는 역할을 한다. 다행인 것은 이런 모든 일들이 정확히 어떻게 작동하는지 이해하기 위해 우리 모두가 수학 전문가가 될 필요는 없다는 것이다. 다만, 관련 기법에 대한 약간의 지식을 갖춘다면 IoT가 열어 가는 흥미진진한 기회들을 계속 탐구하면서 우리가 당면하고 있는 작업들을 수행하는데 필요한 올바른 솔루션을 선택할 수 있을 것이다.

글: 루디 라모스(Rudy Ramos)

자료제공: 마우저 일렉트로닉스

#IoT 보안#마우저 일렉트로닉스#SSL#AES#룩업 테이블#브루트 포스#MCU#MAC

양대규 기자  yangdae@epnc.co.kr

<저작권자 © EP&C News, 무단 전재 및 재배포 금지>

양대규 기자의 다른기사 보기
icon인기기사
PREV NEXT

여백
여백
여백
여백
여백
Back to Top