산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 사물 인터넷 기술

IoT 장치에서 UART 통신을 보호하는 방법

MCU에 통합된 암호화 블록으로 개발자가 이를 가능하게 되었습니다. 자체적으로 보안을 제공하지 않는 UART와 같은 인터페이스를 포함하여 모든 통신 채널을 보호합니다.

사물 인터넷(IoT) 시스템에서 세간의 이목을 끄는 데이터 및 개인 정보 침해가 증가함에 따라 기업과 소비자는 연결된 제품을 구매할 때 보안의 필요성에 대한 인식이 높아졌습니다. 동급 최고의 제품이나 서비스를 제공하는 것만으로는 더 이상 충분하지 않습니다. 적절한 보안을 제공하지 못하는 장치는 종단 간 보안을 제공하는 장치와 경쟁할 수 없습니다.

많은 프로토콜이 표준 내에서 보안을 구현하고 모든 컨트롤러에 내장되어 있습니다. 그러나 UART(Universal Asynchronous Receiver-Transmitter)를 통해 연결하는 임베디드 장치는 보호되지 않습니다. UART는 장치 간의 가장 간단한 디지털 통신 인터페이스 중 하나입니다. 전송 속도를 알면 모든 장치에서 읽을 수 있는 no ACK 통신 프로토콜입니다.

데이터를 읽거나 시스템에 주입하는 것을 방지하려면 데이터를 주고받는 시스템에서 통신 채널을 보호해야 합니다. 따라서 침입자가 올바른 전송 속도로 통신 채널에 액세스하더라도 해당 채널은 보호됩니다.

대칭 및 비대칭 보안

통신 채널은 종종 암호화 알고리즘을 사용하여 보호됩니다. 일반적으로 암호화 알고리즘은 대칭 및 비대칭으로 분류할 수 있습니다. 대칭 키 알고리즘을 사용하면 발신자와 수신자가 단일 비밀 키를 공유합니다. 발신자는 키를 사용하여 메시지를 암호화하고 암호화된 메시지를 수신자와 공유합니다. 그런 다음 수신자는 동일한 키를 사용하여 메시지를 해독합니다.

대칭 키 알고리즘의 주요 보안 문제는 보낸 사람과 받는 사람 간에 비밀 키를 안전하게 교환하는 방법입니다. 키 교환 중에 다른 엔터티가 키를 캡처한 경우 해당 엔터티는 보낸 사람이 보낸 메시지를 해독할 수도 있습니다. 따라서 대칭 키 알고리즘에서 발신자와 수신자만 키를 안전하게 공유하는 것이 중요합니다.

안전한 대칭 키 교환을 가능하게 하기 위해 비대칭 키 알고리즘이 사용됩니다. 비대칭 알고리즘은 암호화 및 암호 해독 프로세스에 서로 다른 키를 사용합니다. 이러한 키는 다르지만 수학적으로 관련되어 있습니다. 대칭 키는 비대칭 키로 암호화하고 수신자가 관련 비대칭 키로 복호화하여 안전하게 교환할 수 있습니다. 비대칭 알고리즘의 단점은 복잡한 수학적 계산을 포함하고 계산 집약적인 경향이 있다는 것입니다.

최고 수준의 보안을 위해 비대칭 키 알고리즘으로 RSA 암호화가 사용됩니다. RSA를 사용하면 통신 엔터티에는 공개 키와 개인 키가 있습니다. 공개 키는 이름에서 알 수 있듯이 공개적으로 공유되며 누구나 사용할 수 있습니다. 대조적으로 개인 키는 통신 엔터티만 보유합니다. 엔터티에 메시지를 보내기 위해 보낸 사람은 엔터티의 공개 키를 사용하여 메시지를 암호화합니다. 이 암호화된 메시지는 개인 키로만 해독할 수 있습니다. 개인 키는 의도한 수신자만 사용할 수 있으므로 수신자만 메시지를 해독할 수 있습니다.

공개 및 개인 키 암호화

RSA는 지수 계산과 매우 큰 수의 소인수 분해를 사용하므로 보안이 매우 높지만 계산 집약적입니다. 또한 통신 지연을 피하기 위해 실시간으로 RSA를 구현하면 고성능 처리 엔진이 필요하여 시스템 비용이 증가합니다. 많은 임베디드 시스템에는 이 수준의 보안이 필요하지 않습니다. 그 대신 AES(Advanced Encryption Standard)와 같은 더 간단한 암호화 알고리즘을 사용할 수 있습니다. 이 알고리즘은 처리 리소스가 더 적게 필요하기 때문에 더 실용적이고 비용 효율적입니다.

AES는 대칭 암호화 알고리즘으로, 통신 채널의 양쪽이 공통 비밀 키를 공유함을 의미합니다. 위에서 언급한 AES의 한계는 외부 엔터티에 노출하지 않고 UART 발신자와 수신자 간에 키를 안전하게 공유하는 데 있습니다. 이 문제를 해결하기 위해 RSA를 사용하여 AES 키를 암호화하고 안전하게 교환할 수 있습니다. 공통 키는 한 번만 공유하면 되므로 통신 채널은 RSA의 복잡성과 대기 시간을 견딜 수 있습니다. 즉, RSA 알고리즘 처리 지연은 모든 메시지가 아니라 초기 키 교환에만 영향을 줍니다.

보안 키 교환은 여러 단계로 이루어집니다(그림 1). 먼저 UART 수신기는 RSA 키 쌍을 생성하고 해당 공개 키를 발신자와 공유합니다. UART 수신기를 위한 메시지를 암호화하는 데만 사용되기 때문에 다른 엔터티가 공개 키를 볼 수 있는지 여부는 중요하지 않습니다. 그런 다음 발신자는 AES 키를 무작위로 생성하고 수신자의 공개 키를 사용하여 암호화합니다. 수신자는 RSA 개인 키를 사용하여 AES 키를 해독합니다.


그림 1:RSA 공개 및 개인 키를 사용한 AES 비밀 키의 안전한 교환. (출처:인피니언)

수신자만 RSA 개인 키에 액세스할 수 있으므로 암호화된 AES 키는 수신자만 해독할 수 있습니다. 이렇게 하면 AES 키가 보낸 사람과 받는 사람만 알 수 있고 통신 채널에 액세스할 수 있는 침입자가 키를 얻을 수 없습니다. 또한 발신자와 수신자 간의 모든 후속 메시지는 AES 키로 암호화되어 수신을 의도하지 않은 다른 당사자가 이러한 메시지에 액세스할 수 없도록 합니다. 이것은 또한 메시지가 전송된 후 수신되기 전에 수정을 포함하는 메시지 가로채기(MIM) 공격의 위협을 제거합니다.

펌웨어 대 하드웨어

펌웨어를 사용하여 임베디드 장치에 보안 알고리즘을 구현하면 많은 설계 문제가 발생합니다. 암호화 알고리즘은 본질적으로 계산 집약적인 경향이 있습니다. 또한 메모리 공간을 늘리고 처리 지연을 추가하며 시스템을 상당히 복잡하게 만듭니다. 결과적으로 펌웨어에서 보안을 구현하면 상당한 CPU 주기와 MCU 리소스가 소모됩니다. 또한 실시간 애플리케이션 요구 사항을 충족하려면 더 높은 성능의 MCU가 필요하므로 시스템 비용이 증가합니다.

MCU 리소스가 많이 사용되는 이유 중 하나는 MCU가 범용 처리 장치이기 때문입니다. 이러한 이유로 많은 MCU는 암호화 알고리즘을 위해 특별히 설계된 하드웨어를 통합합니다. MCU는 통합 암호화 엔진을 통해 하드웨어 기반 암호화 처리 기능이 없는 MCU에 비해 ​​훨씬 더 작은 공간과 저렴한 비용으로 데이터의 실시간 암호화 및 암호 해독을 제공할 수 있습니다.

Infineon의 PSoC 6 MCU가 그 예입니다. 암호화 기능의 하드웨어 가속을 제공하는 전용 암호화 블록이 있습니다. 암호화 블록은 유연하며 데이터 보호를 보장하기 위해 다양한 암호화 알고리즘을 지원하는 데 사용할 수 있습니다. 이를 통해 개발자는 AES, DES, TDES 및 RSA와 같은 암호화 표준과 보안 해시 알고리즘 ( SHA) 및 순환 중복 검사(CRC). 이러한 방식으로 MCU에서 암호화 기능을 오프로드하면 보다 강력한 프로세서를 사용하지 않고도 거의 모든 임베디드 애플리케이션에 비용 효율적으로 보안을 도입할 수 있습니다.

실제 난수

그러나 임베디드 시스템을 보호하려면 통신을 암호화하는 것 이상이 필요합니다. 특히 시스템에서 생성하는 AES 키는 임의적이어야 합니다. 그러나 MCU는 결정론적이므로 생성된 키도 결정론적이므로 해커가 "무차별 대입"을 사용하여 가능한 다른 임의 시드를 순환하고 잠재적으로 AES 키를 파생할 수 있습니다. 따라서 펌웨어는 AES 키의 임의성을 보장하기 위해 실제 난수를 생성하는 방법이 필요하므로 무차별 대입이 불가능합니다.

이렇게 하려면 암호화 블록에 TRNG(True Random Number Generator)가 포함되어야 합니다. 예를 들어 PSoC 6 암호화 블록에서 TRNG에는 물리적 노이즈 소스를 제공하는 6개의 링 발진기가 있습니다. 링 발진기에는 링 발진기의 신호에 지터를 도입하는 온도에 민감한 인버터가 포함되어 있습니다. 이 신호는 MCU가 생성하는 AES 키의 임의성을 보장하기 위해 실제 난수 소스에 액세스할 수 있도록 합니다.

예를 들어, 16바이트 키를 생성하려면 난수가 16번 생성되고 이전 숫자에 추가됩니다. 이것은 2^128 키의 가능성을 만듭니다. "AES" 키가 무차별 대입되거나 추측되는 것을 방지하기에 충분합니다.

일부 암호화 공격은 캡처된 통신 분석에 중점을 둡니다. 리소스가 충분하면 모든 키가 결국 손상될 수 있습니다. 이 가능성을 해결하고 통신 채널의 전체 보안을 강화하기 위해 AES 키가 재부팅할 때마다 생성됩니다. 이것은 임베디드 시스템의 보안을 강화하기 위한 간단하지만 효과적인 조치입니다. 요컨대, 침입자가 키를 식별하더라도 악용될 수 있는 시점에는 키가 더 이상 사용되지 않을 가능성이 큽니다.

확실한 보안

이 시점에서 UART 인터페이스가 안전하다고 생각하고 싶을 수 있습니다. 그러나 UART는 ACK가 없는 통신 프로토콜입니다. 이것은 프로토콜에 수신자가 수신한 메시지가 a) 완전하고 b) 손상되지 않았는지 확인하는 메커니즘이 없음을 의미합니다.

메시지의 무결성을 확인하기 위해 최종 보안 단계가 필요합니다. 이를 달성하기 위한 효과적인 방법은 SHA 알고리즘을 사용하여 메시지를 해시하는 것입니다. SHA와 같은 암호화 해시 기능을 통해 메시지를 실행하면 고정 길이의 출력인 해시가 생성됩니다. 해시 함수는 되돌릴 수 없는 단방향 함수이기 때문에 특정 해시를 생성한 메시지를 식별하는 유일한 방법은 가능한 모든 입력에 대해 무차별 대입 검색을 시도하는 것입니다.


그림 2:해시 기능은 보안 키 교환 및 메시지 전송 중에 통신 무결성을 보장합니다. (출처:인피니언)

메시지가 전송되기 전에 전체 메시지의 해시가 메시지에 추가됩니다(그림 2). 그런 다음 메시지와 해시가 AES 키를 사용하여 암호화됩니다. 이러한 방식으로 해시는 무결성 검사 역할을 할 수 있습니다. 수신자는 복호화 후 자신이 복호화한 메시지의 해시를 계산합니다. 그런 다음 수신자는 수신된 해시와 계산된 해시를 비교합니다. 동일하면 메시지가 수정되지 않은 것입니다. 그러나 해시가 일치하지 않으면 메시지 무결성이 영향을 받았음을 나타냅니다. 이는 해커가 메시지를 수정하려고 하거나 전송 중 오류가 발생했기 때문에 발생할 수 있습니다. 어쨌든 통신은 실패했습니다.

발신자의 개인 키로 메시지에 서명함으로써 통신 채널의 진정성을 더욱 강화할 수 있습니다. 서명된 메시지는 보낸 사람만 메시지를 보낼 수 있는지 확인하기 위해 보낸 사람의 공개 키를 사용하여 확인할 수 있습니다. 즉, 보낸 사람의 개인 키가 없으므로 다른 당사자가 보낸 사람을 모방할 수 없으므로 메시지의 신뢰성이 보장됩니다. 더 많은 아이디어를 보려면 다른 엔지니어의 많은 프로젝트가 포함된 커뮤니티 코드 예제를 확인하세요.

보안 구현은 임베디드 IoT 시스템 설계에서 필수 고려 사항이 되었습니다. 연결된 모든 장치가 보안을 유지하고 사용자 데이터가 손상되지 않도록 보호하는 것이 중요합니다. MCU에 통합된 암호화 블록을 통해 개발자는 자체적으로 보안을 제공하지 않는 UART와 같은 인터페이스를 포함하여 모든 통신 채널을 보호할 수 있게 되었습니다.

—Harigovind A와 Rakshith MB는 Infineon Technologies의 수석 애플리케이션 엔지니어입니다.

>> 이 기사는 원래 자매 사이트인 EDN에 게시되었습니다. .


사물 인터넷 기술

  1. 5G가 산업용 IoT를 가속화하는 방법
  2. IoT가 직장을 연결하는 방법
  3. 전 세계적으로 혜택을 제공하는 IoT
  4. IoT는 기업의 이동성을 어떻게 형성하고 있습니까?
  5. 집에서 IoT 네트워크를 안전하게 유지하기 위한 7가지 필수 팁
  6. IoT 수익 창출:수익성 있는 IoT 비즈니스 모델을 구축하는 방법
  7. 사이버 복원력을 통해 수십억 개의 IoT 장치에 안전한 미래 제공
  8. IoT에 대한 킬 체인 공격의 위협은 얼마나 위험한가요?
  9. IoT가 직장 안전을 어떻게 혁신하고 있습니까?
  10. IoT가 고객 경험을 향상시키는 방법