어플리케이션 보안, 이제는 쉽고 간편하게

 

IoT가 널리 확산되면서 향후 10년간 수십 억 개의 클라우드 커넥티드 제품이 설계, 생산, 판매될 것으로 전망됩니다. 하지만 쉽게 해킹을 당할 수 있는 제품을 원하는 사람은 없을 것입니다. 그러므로 보안의 중요성이 그 어느 때보다도 커지고 있습니다.

우수한 코드 품질을 갖추는 것은 보안성을 확보한 제품을 만드는 데에 있어 필수 불가결하며, 이를 실현하기 위해서는 개발 과정의 일환으로 코드 분석 도구를 사용하는 것이 반드시 필요합니다. 소스 코드는 제품의 품질을 좌우하는 요소라고 할 수 있습니다. 제품의 개발, 제조, 업데이트 전반에 걸쳐 보안을 확보하기 위해서는 먼저 구상 단계에서부터 보안성을 확보할 필요가 있습니다. 모든 기업들은 투자한 자산을 보호받고 싶어하며, 이것은 소프트웨어 설계 및 엔지니어링 과정에 투입되는 모든 노력을 포함합니다. 결국, 수 개월, 수 년에 걸쳐 제품을 개발하기 위해 기울인 노력이 물거품이 되게 하고 싶지는 않을 것입니다. 여기서는 기업과 그 가치의 핵심에 대해 이야기 해 보겠습니다. 

관계 법령 및 실무 규정 

여러 정부 공공기관에서도 오늘날 IoT 기기의 보안이 취약한 경우 발생할 수 있는 위협에 대한 인식이 확산되고 있습니다. 과거 IoT 제품들은 보안 관련 고려 사항에 전혀 포함되지를 못 했던 바, 이로 인해 민간의 자율 규제 능력이 부족하다는 인식이 확산되어 관계 법령 제정에 박차를 가하고 있는 실정입니다. 전 세계 정부 공공 기관들은 새로운 기초 보안 표준을 제정하고, 이를 통해 IoT 제품을 개발하고 있는 기어들로 하여금 이를 시행하도록 하여 사이버 범죄로부터 최종 소비자들을 보호해야 할 필요가 있습니다. 

이에 여러 정부 기관과 산업 단체들은 적극적으로 실무 규정을 편찬하고 있으며, 그 외 기업들을 대상으로 각종 자문을 제공, IoT 제품 개발 과정에서 필요한 사항과 관련해 지원을 제공하고 있기도 합니다. 예를 들어 영국의 디지털 문화 미디어 스포츠 부에서는 "소비자용 사물인터넷 보안을 위한 실무 규정(Code Of Practice for Consumer IoT Security)" 1을 도입하여 소비자용 IoT 기기와 관련되는 1대 보안 지침을 제공하고 있습니다. 이는 전 세계적으로 해당 분야 관련 법령 제정의 기준으로 활용 되고 있기도 합니다. 

또 다른 예로, “소비자 사물인터넷 보안 간이 지침(Consumer IoT Security Quick Guides)” 2을 들 수 있습니다. 이 지침은 사물 인터넷 보안 재단(IoTSF)에서 발표한 것으로, 전 세계 여러 기관 및 기업을 대상으로 소비자용 사물 인터넷 기기에 대한 다양한 국제 표준, 규정, 국제 지침을 파악, 준수하는 과정을 용이하게 하는 것을 목적으로 하고 있습니다. 

게다가 지금은 정부 규제가 옛날처럼 호락호락 하지가 않은 상황입니다 이미 미국의 캘리포니아나 오레곤 주의 경우, 유럽 연합 및 영국과 마찬가지로 강력한 규제를 도입하고 있으며, APAC 회원국 내에도 이러한 추세를 바짝 쫓아가고 있는 국가들이 다수 있습니다. 가트너는 최근 “전 세계 CEO의 75%가 2024년까지 사이버 물리 보안 사태에 대해 직접적인 책임을 지게 될 것”이라고 전망하였습니다.3 이는 많은 기업들이 앞으로 IoT 제품과 관련해 어느 정도 수준의 보안을 달성해야 할 것인지에 대해 좀 더 초점을 맞출 수 있도록 해 주는 계기가 될 것입니다. 

산업 재산권 보호, 주요 관심사로 부각 

관련 지침 및 법규 외에도 IoT 제품의 보안 수준을 높이지 않으면 안 되는 요인은 몇 가지가 더 있습니다. 지난 2019년 9월, 저희는 고객들을 대상으로 가장 심각하다고 생각되는 보안 문제가 무엇이라고 인식하고 있는지를 조사한 바 있습니다. 그 결과는 아래와 같습니다:

What is your number 1 security concern

그림 1: 가장 중요한 보안 문제는 무엇이라고 생각합니까? 

이 중에는 당연히 관련 법규 준수가 포함되어 있었지만, 그래프에서 보시는 바와 같이, 우리 고객들에게 있어 이보다 더 큰 문제는 바로 지적 재산권 절도 행위였습니다. 디바이스의 해킹 및 악성코드 설치가 그 뒤를 잇고 있군요. 산업재산권 침해 행위에 대해 좀 더 생각을 해 보자면, IoT 제품을 개발하기 위해 투자되는 비용의 대부분은 기기가 기능을 발휘할 수 있도록 하는 소프트웨어의 설계, 생산, 시험 과정에 소요됩니다. 

그러므로 제품의 보안성을 확보하는 데에 있어 중요한 요소의 하나는 어떠한 형태로든 “산업재산권 보호” 장치가 반드시 포함되어야 한다는 것입니다. 이것은 소프트웨어에 해커나 경쟁사가 무단으로 접근하는 행위를 방지하고, 생산 과정 중, 그리고 현장 배치 후 소프트웨어가 누출되지 않도록 보호하는 것을 말합니다. 이렇게 산업 재산권이 도난을 당할 수 있는 원인에는 여러가지가 있습니다. 예를 들어, 경쟁사가 소프트웨어에 대해 리버스 엔지니어링을 시도할 수도 있습니다. 또, 짝퉁 제조업체가 귀사의 IoT 제품을 모방하여 회색 시장에 내 놓을 수도 있습니다. 이 경우 빼앗기는 판매 기회는 개발사의 매출 손실로 그대로 돌아올 것입니다. 뿐만 아니라, 기업의 평판에도 악영향을 미칠 수가 있습니다. 

보안은 언제 적용하는가? 

개발에서 생산으로 이어지는 일반적인 과정을 살펴보면 다음과 같습니다:

Traditional Software Development flow

그림 2: 기존의 소프트웨어 개발 흐름 

이론적으로, 보안은 ‘빗장을 잠그는’ 개념으로 개발의 마지막 단계, 시판 직전에 적용하는 것도 가능합니다. 소스 코드 단위로 코드 분석과 테스트 사이클을 거치면서 말이지요. 그리고 나서 제품의 생산에 바로 들어갈 수도 있습니다. 그렇지만 이것은 그다지 좋은 생각은 아닙니다! 왜냐하면, 이러한 시험의 과정은 실제로 기기가 현장에서 사용되는 방식과는 차이가 있을 수 있기 때문입니다. 이것은 실제로 기기가 시판된 뒤에도 악용의 우려가 있는 보안상 허점이 잔존할 수도 있음을 의미합니다.

제품에 각인되는 보안 

보안 기능이 제품의 태생적인 일부로서 그 안에 각인되도록 하기 위해서는 제품의 초기 구상 단계에서부터 보안 기능을 포함시키는 것이 훨씬 바람직합니다. 가장 이상적인 방식은 개발 도구 및 업무 흐름 상에 보안 기능을 일체화 시키는 것입니다. 이것은 이미 제품의 일부로 포함되어 있는 상태에서 보안 기능을 개발 및 시험할 수 있음을 의미합니다. 이러한 방식을 사용하면 제품이 최종 소비자의 손에 들어간 이후 발생할 수 있는 위험이 크게 줄어듭니다. 

보안성을 갖춘 IoT 제품의 기본은 바로 Root of Trust(RoT)를 구현하는 것입니다. 이것은 사용자가 신뢰할 수 있는 최소한의 소프트웨어, 하드웨어, 및 데이터를 말합니다. 하드웨어 측면에서 보면, 사용되는 MCU는 (생산 시점에는) 디버그 기능을 제거해야 하며, 메모리를 잠글 수 있어야 합니다. 또한, 개별 기기의 식별이 가능해야 합니다. 한 편 소프트웨어 측면에서 보면, 기저의 MCU 하드웨어 기능을 바탕으로 하는 보안 보트 관리자를 통해 기기를 대상으로 강력한 Root of Trust를 제공하며, 이것은 전체적인 부팅 프로세스의 보안을 확보할 수 있도록 해 줍니다. 이를 통해 악성 코드의 주입을 방지하고, 보안 업데이트 기능을 구현해 이를 적절히 보호할 수 있습니다. 

PKI(Public Key Infrastructure) 키 및 인증서 등의 보안 데이터를 추가함으로써 MCU 시스템은 보안적인 맥락 프로필을 제공받습니다. 이러한 프로필은 각각의 기기를 대상으로 프러비저닝 되어야 합니다. 보안 맥락의 요소를 생성하고, 대상이 되는 MCU 기기의 기능에 대한 정보를 바탕으로 그 설정을 편집할 수 있는 개발 툴이 있다면 이러한 과정이 매우 쉽고 간편해질 것입니다.  

일단 MCU를 대상으로 보안적 맥락의 프러비저닝이 이루어진 다음에는 주 개발팀이 주 사용자 어플리케이션으로부터 신뢰할 수 있으며, 우수한 품질을 지닌 코드의 개발을 진행할 수가 있습니다. 사용하고 있는 개발 툴이 보안 지식의 바탕을 이룬다고 한다면, 엔지니어가 개발 업무 수행 과정에서 따르고 있는 업무 프로세스에는 보안 기능을 배제한 시스템에서 따라야 할 업무 프로세스와 비교해 크게 변경을 가할 이유가 없어집니다. 이르고 이는 개발 및 테스팅 일정 상에 변동이 발생하지 않도록 하는 데에 도움을 줍니다. 

Security Software Development flow

그림 3: 보안을 적용한 소프트웨어 개발 흐름

일단 향후 업그레이드 및 확장 가능성을 반영하여 소프트웨어를 개발하고 그에 대한 시험을 모두 마친 후에는 최종적인 제품보안 맥락 및 암호화 어플리케이션을 보안 프로그래밍 시설로 전달하거나, 작은 규모의 프로젝트인 경우에는 아마도 보안을 확보한 데스크톱 프로그래밍 시스템으로 이를 옮기게 될 것입니다. 하지만 여기서 사용되는 툴 및 시설은 다시 한 번, IoT 제품이 보안성을 유지할 수 있도록 해 주는 핵심적인 요소가 됩니다.

요약 

커넥티드 기기의 보안은 과거 어느 때보다도 더 중요해지고 있습니다. 현재의 보안 위협은 결코 무시할 수 없는 수준에 이르러, 해킹 공격이나 위조 행위, 클로닝 등의 범죄 행위가 기승을 부리고 있습니다. 또한, 각국 정보는 관련 법률 및 정책의 제정을 적극적으로 추진하고 있습니다. 이러한 상황에 대비하지 못하는 기업은 존망의 위기에 처하게 될 것입니다.  

적절한 코딩 표준과 함께 사용되는 우수한 품질의 코드 분석 툴은 코딩 과정에서의 보안성을 확보할 수 있도록 개발되었습니다. 코드 품질과 기존에 개발되어 있는 보안 장치(코드 베이스 암호화, 생산 한도 설정 등)을 개발의 근간으로 삼게 되면, 보안 규정과는 별도로 생산을 진행하는 과정에서 발생할 수 있는 위조 및 클로닝 행위의 위험을 크게 줄일 수가 있을 것입니다. IoT 보안은 간단 명료하면서도 확장성을 지녀야 하며, 지속 가능해야 합니다. 또한 보안은 개념 구상 단계부터 제품과 통합이 이루어져야 합니다. 왜냐하면, 개발을 먼저 진행하고 보안 기능을 나중에 추가하는 방식은 거의 통하지 않기 때문입니다.

작성: Andy Beeson, 수석 제품 관리자, 보안 사업부 담당/수석 제품 관리자, 임베디드 보안 솔루션 부문, IAR 시스템즈 

참고문헌