Intel FPGA, "Securing IoT Devices can be Never-Ending"

IoT 요소와 보안 요소

  • IoT device = HW + SW (+firmware) + data + messages into/out-of device
  • 각 요소에 대한 세 가지 가정
    • 각 요소는 신뢰할 수 있는 출처에서 제작되었다
    • 위·변조되지 않았다
    • 시스템 디자이너가 의도한 작업만을 수행한다
    • device는 위 가정을 신뢰하거나, 매 번 시험하는 선택을 할 수 있다.
  • "대전제": 완벽한 보안을 달성할 수는 없다. 주어진 설계/제조 예산 아래서, 시스템이 다루는 작업의 중요성보다 해킹에 필요한 비용이 최대한 비싸도록 만드는 것이 목표.

기기에 도달된 메시지를 신뢰하려면

공개키 인증을 통해 메시지를 검증한다

  • 서버와 기기가 공통된 hash 방법을 구현한다
  • 서버는 메시지와, 메시지의 hash를 개인키로 암호화한 hash를 전달한다
  • 기기는 같은 방법으로 메시지를 hash한 후, 공개키로 hash를 복호화하여 두 hash를 비교한다
  • 같으면 높은 확률로 메시지를 신뢰할 수 있다
  • 메시지 자체를 암호화할 수도 있으나, 공개키 연산은 비싸다

그러면 그 공개키는 어떻게 믿을 수 있을까?

  • Certification Authority (인증 기관) chain이 있다.
  • 키를 인증하는 상위 키도 같은 공개키 암호화 방식으로 작동.
  • chain을 쭉 따라가면 결국 끝이 있는데, 여기는 현실 계약서 서류가 보호해 주는 걸로.

기기의 인증 절차는 믿을 수 있을까? "나"를 믿을 수 있을까?

걱정거리는 더 있다.

  • 인증 절차를 관장하는 코드가 변조되면? 기기 OS가 변조되면?
  • 개발 PC가 해킹당해서 인증서가 변조되면?
  • "하드웨어 디자인에 백도어가 심겨 있다면?"

미사일 발사 시스템도 아닌데 과한 걱정이라구? IoT 아기 모니터를 변조해서 DDoS용 봇넷으로 만든 빌런이 있다. 어떤 시스템을 만들든 최악의 상황을 고려는 해야 한다.

소프트웨어 개발, 업데이트 배포 시에도 위의 메시지 인증 절차와 같이 인증 절차를 넣어 두어야 한다. 그런데 이 소프트웨어는 어떻게 믿지?

"The Root of Trust"

CPU의 보안 동작 모드, 나아가 "Root of Trust"를 구현하는 것은 쉽지 않다

  • "신뢰할 수 있는 하드웨어가 신뢰할 수 있는 코드를 실행해야 한다."를 구현하기 위해,
  • 신뢰할 수 있는 하드웨어
    • 신뢰 수준이 낮아도 된다면, 믿을 수 있는 제조사의 MCU
    • 그렇지 않다면,
      • formal verification 및 functional safety 기준을 만족하도록 철저히 설계·검증한 디자인
      • 당신의 기관에서 검증하거나 직접 다룰 수 있는 공장에서 제조
      • tamper protection, side-channel attack protection 적용된 디자인
      • physically unclonable function (PUF) 통해 유출·복제되지 않는 비밀 ID 부여
  • 신뢰할 수 있는 코드 실행
    • hardware security module (HSM)
      • 보안 키 저장소, (HW 기반) 암호화 엔진, ...
      • tamper, intrusion 감지 기능, secure boot 관장
    • 메모리 보호
      • HSM만 읽고 쓸 수 있는 메모리 영역 제공

Active Monitor

critical system이라면 위의 시스템들과 별개로, 비정상 동작을 감지하여 경고 또는 시스템을 중단시키는 감시자가 필요할 수도 있다.

  • 정상 동작을 간단한 규칙으로 정의할 수 있다면 HSM 내의 소프트웨어든 하드웨어든 만들면 그만
  • 규칙이 복잡하다면? 딥러닝을 활용할 생각을 할 수 있으나,
    • 딥러닝 전문가 인력이 적고,
    • 지도 학습을 위해 옳은/위험한 동작 데이터를 마련하는 일은 불가능하다시피 하다
    • 동작 데이터 자체가 변조될 수 있는 가능성을 걱정해야 한다
    • MCU에서 구현하기에 딥러닝 연산은 자원을 많이 필요로 한다
  • 정말정말 critical system이면, heterogeneous redundancy 개념이 쓰이게 된다
    • 같은 설계 사양을 다르게 구현한 시스템 세 개를 마련해서, 둘 이상이 일치하는 출력 결과로 동작 수행
    • 다른 시스템 두 개 이상을 모두 해킹하기는 비용이 많이 들겠지.

그러나... 설계/제조 비용 문제

1$짜리 MCU 칩에 위 보안 기능을 넣는 것은 현실적으로 불가능하다.

  • HSM 넣을 돈이 없다
  • redundancy 넣을 자리가 없다. 물론 돈도 없다
  • 어쨌든 돈도 없고 아무것도 없다

그러면 어떻게 할까?

  • 무시한다
  • 적당히 포기하고 낮은 수준의 보안을 적용한다
  • 보안 책임을 IoT 기기 대신 상위 단계의 IoT 허브로 넘긴다
  • 보다 미세화된 신공정으로 triple-redundant MCU & internal HSM을 구현한다.
  • 시스템 전체를 통째로 팔면서, 보안을 위한 설계·제조 비용을 시스템 전체 비용에 반영한다.
    • ARM 수석 연구원 왈, "어차피 IoT 시스템은 칩 하나만이 아니라 시스템 전체라야 의미 있는 것 아니냐"
  • 그냥 보안 강화 칩을 비싸게 판다 ($15 > $1)

곧 들이닥칠 IoT 보안 문제, 어떻게든 풀게 될 것이다.

+ Recent posts