ESP32의 보안 프로토 타이핑 환경을 만들었습니다 (클라이언트)

소개



독학하고 있는 IoT 시큐리티에 대해서, 집대성의 의미를 담아 현재 이상이라고 생각하는 시큐어인 프로토타이핑 환경을 구축했습니다.
디바이스, 서버, 클라이언트 앱의 요소 기술 공부를 포함하여 비망록으로 분산하여 기록해 갑니다.
지난번 ,이 프로젝트의 이름을 rainbowtype.


구성은 상기가 되어, 이번은 클라이언트측의 구현을 검토해 보겠습니다.

rainbowtype client 구현



rainbowtype client는 개발자의 WindowsPC에 배치되어 디바이스의 조작, 증명서의 관리를 실시하기 위한 어플리케이션으로서 작성했다.
rainbowtype client는 rainbowtype server와 통신하고 rainbowtype bootloader가 참조하는 디바이스 상태, 액션을 설정한다.
1, rainbowtype bootloader가 설정된 디바이스에 대해 다음을 설정
  • rainbowtype bootloader에 설정된 장치 인증서 업데이트를위한 새로운 공개 키 제출 요청
  • 제출된 새로운 공개키에 대한 서명
  • OTA 할 펌웨어 보내기
  • 개별적으로 설정할 수 있는 URL 등의 정보

  • 2, rainbowtype bootloader가 설정 끝난 디바이스가 접속하는 처에 대해서, 이하를 설정
  • rainbowtype bootloader를 인증 할 수있는 서버 인증서 발행
  • AWS, Azure에서 rainbowtype bootloader를 인증하기위한 확인 인증서 만들기

  • 3, rainbowtype 전체에서 사용하는 인증서 관리
  • 루트 CA 인증서, 개인 키 만들기
  • 서명자 CA 인증서, 개인 키 만들기

  • 4, rainbowtype bootloader의 펌웨어에 포함시킬 필요가 있는 증명서 정의의 작성

    5, 제조된 직후의 디바이스에 대해 실시하는 ATECC608A의 프로그래밍, 증명서의 보존을 실시하는 프로비저닝

    6, 프로비저닝이 끝난 장치에 rainbowtype bootloader를 쓰는 배포

    단일의 Windows 어플리케이션으로서 작성해, ESP32와의 시리얼 통신, 증명서 작성 등 기존의 Python 코드를 사용할 필요가 있다.
    그래서 Electron을 사용하여 응용 프로그램을 만들고 거기에서 Python을 호출하는 방법을 생각했습니다.
    React 프레임 워크를 사용할 수있는 Electron React Boilerplate을 사용했습니다.
    버튼등의 UI를 이용하기 위해(때문에), Material-UI (을)를 짜넣었다.


    기동 후의 화면 이미지는 다음과 같이 되었다.


    코드는 rainbowtype-client에 공개했다.

    좋은 웹페이지 즐겨찾기