Skip to content
검색  
    May 31, 2024

    IoT 디바이스용 SW 개발 확보: 보안 및 모범 사례들

    사물 인터넷(Internet of Things)은 물리적 세계와 상호 작용하며 보통은 스마트’해지며 더욱 유용해지는 기기를 가리키는 용어입니다. 전기료가 가장 낮을 때 작동하는 식기세척기나 조명을 켤 때 사용하는 스마트 스피커 등을 그 예로 들 수 있겠습니다. 그러나 이러한 기기는 다른 공급업체의 제품과 함께 작동해야 하고 리소스가 제한되는 경우도 많기 때문에 개발 과정에서 어려움을 겪습니다.

     

    기기 자체에 리소스가 많지 않을 수도 있고, 보안이 취약한 기기가 봇 네트워크*에 사용되거나 메인 네트워크의 경로로 사용되는 경우도 자주 있습니다. 그럼에도 기기 보안의 중요성을 간과할 수는 없습니다. 이에 수반되는 어려움은 다음과 같습니다.

    • 리소스 제약: 많은 IoT 기기는 처리 능력과 메모리가 제한되어 있습니다.
    • 기기 다양성: 다양한 유형으로 제공되는 IoT 기기는 저마다의 고유한 난점을 안고 있습니다.
    • 업데이트: 많은 기기는 설치된 후 작동만 된다면 방치되기 때문에 기기를 능동적으로 업데이트해야 하는 경우 문제가 됩니다.

    (*봇 네트워크: DDoS 공격과 같은 작업을 수행하기 위해 같이 작동되는 대규모 기기 집합체) 

     

    안전한 IoT 소프트웨어 개발을 위한 도구 및 모범 사례

    OS와 플랫폼 선택은 개발되는 소프트웨어의 기초를 형성합니다. 선택에 따라 사용 가능한 기능과 제한 사항이 설정되기 때문입니다. OS의 장점과 제한 사항을 고려하는 것은 중요하며, 일부 OS는 보안 기능에 큰 제한을 둘 수 있습니다.

    제품의 취약점 추적에 대한 요구 사항이 있습니다. 제품이 타사 라이브러리를 사용하는 경우가 많으므로 소프트웨어 BOM, 즉 SBOM을 보유하는 것이 중요합니다. 이는 사용되는 구성 요소뿐만 아니라 사용된 버전을 추적하는 데에도 필요합니다.

    이제 많은 표준과 규정에서 비밀번호 및 암호화에 관한 요구사항을 제시하기 시작했으며 일반적으로 이 추세가 모범 사례’가 되기를 요구하고 있습니다. 따라서 개발 프로세스 초기에 이러한 사항을 고려하는 것이 중요합니다. 특히 암호화는 하드웨어와 주변 시스템에 추가적인 요구사항을 유발할 수 있기 때문에 더욱 중요합니다. 암호화는 실수가 발생하기 쉬운 영역이므로 잘 정립된 방법과 라이브러리를 사용하는 것이 좋습니다.

    정적 또는 동적 애플리케이션 보안 테스트(SAST & DAST) 도구는 소프트웨어 개발에 큰 도움이 됩니다. SAST는 개발 중에 소스 코드를 분석하여 잠재적 보안 취약성을 탐지하는 반면, DAST 도구는 코드를 실행하고 애플리케이션에 대한 공격을 시뮬레이션합니다. 이로써 개발 프로세스 초기에 많은 취약점을 더 쉽게 찾아낼 수 있습니다.

    안전한 키 관리는 개발 프로세스 초기에 고려해야 할 중요한 요소입니다. 보안 키의 안전한 저장과 관리는 기기 보안에 중요합니다. 특정 키의 도난 혹은 조작 발생 시에 IoT 기기나 해당 데이터가 손상될 수 있습니다.

     

    IoT 보안

    제품 간 통합은 IoT 제품의 초석이라 할 수 있습니다. 그러나 이에 못지 않게 통합 달성 방안을 고려하는 것도 중요합니다. 가장 안전한 방법은 특정 요청에만 응하면서 올바르지 않은 형식의 모든 요청을 삭제하도록 맞춤화된 제한적 API를 보유하는 것입니다. 이 방법이 불가능하다면 요청을 적절하게 처리해야 합니다. 이는 부적절하게 형식화된 요청으로 인해 바람직하지 않은 응답이 발생하는 취약성이 많기 발생하기 때문입니다. 예를 들어, " BIRD에 관해 5,000자로 대답해줘”라는 요청을 받은 애플리케이션은 어떻게 응답할까요? 애플리케이션은 입력 사항에 대한 확인 없이 단순히 BIRD라고 응답한 후에 메모리에서 4996자를 추출하여 채울 수도 있습니다. 사용자 이름과 비밀번호가 담겨있을 수 있는 메모리에서 말이죠.

    일부 규정 및 표준에서는 보안 소프트웨어 및 펌웨어 업데이트를 권장하고 심지어 의무화하기도 합니다. 기기를 안전하게 제공하고 무결성을 확인하며 자동으로 업데이트하도록 시스템을 설정하면 기기의 보안이 크게 향상됩니다. IoT 기기는 설치된 후 작동하기 시작하면 그대로 방치되는 경우가 태반이기 때문입니다. 지속적인 알림이 없다면 많은 사용자는 정기적인 기기 업데이트를 모르거나 귀찮아 합니다. 여러분은 집에 있는 라우터를 언제 마지막으로 업데이트하셨나요?

    HTTPS를 올바르게 사용하면 중간자(man-in-the-middle)’와 같은 잘 알려진 공격으로부터 데이터를 보호할 수 있습니다. 강력한 프로토콜(TLS)로 모든 데이터를 암호화하고 수신자를 확인함으로써 이를 달성할 수 있습니다. 소프트웨어가 대상을 확인하고 사용된 인증서를 보호하도록 요구하는 것은 이 프로토콜의 보안에 매우 중요합니다.

    통신 처리를 위해 중앙 서버를 선택한 경우, 서버를 공격으로부터 보호하고 최신 상태로 유지하며 무단 변경이 있는지 모니터링하는 것은 매우 중요합니다.

     

    결론

    IoT 기기의 수, 복잡성, 다양성은 증가하고 있습니다. 규제 역시 이에 발맞춰 왔으며 IoT 기기의 보안은 그 어느 때보다 중요해지고 있습니다. 리소스 제약, 기기 다양성 및 보안 필요성으로 인해 발생하는 고유한 문제로 인해 개발자는 소프트웨어 개발 과정에서 보안을 더욱 고려해야 합니다. 적절한 OS와 플랫폼 선택, 세부적인 SBOM 유지, 보안 및 암호화에 대한 모범 사례 준수, SAST 및 DAST 도구 활용을 통해 개발자는 잠재적인 취약성을 크게 완화할 수 있습니다. 또한 보안 키 관리, 제한된 API 노출, 적절한 요청 정리, 보안 업데이트 메커니즘, HTTPS 사용은 IoT 기기를 보호하는 데 중요합니다. IoT가 일상 생활에 지속적으로 통합됨에 따라 강력한 보안은 이러한 통합이 보다 안전하게 이루어질 수 있도록 보증할 수 있습니다.

     

    태그: 사이버보안

    seungyeun SONG

    Seungyeun SONG Sales and Marketing in Nemko Korea

    기타 게시물