약간의 맥락
AWS IoT에서 MQTT 를 사용하고 있으므로 인증 및 보안 을 위해 X.509 인증서를 사용해야 합니다. Amazon은 인증서 보안 방법에 대한 약간의 지침을 제공 하므로 여기에 인용하겠습니다.
인증서를 사용하면 비대칭 키를 장치와 함께 사용할 수 있습니다. 즉, 민감한 암호화 자료가 장치를 떠나지 않도록하면서 개인 키를 장치의 안전한 저장소에 구울 수 있습니다.
현재 STM32의 RDP ( 읽기 방지)를 사용하고 있기 때문에 가장 결정적인 공격자를 제외한 모든 공격자가 현재 체계에서 인증서에 액세스하는 데 문제가 있습니다.
글로벌 읽기 출력 보호 기능을 사용하면 내장 된 펌웨어 코드 (플래시 메모리에 사전로드 됨)를 통해 리버스 엔지니어링, 디버그 도구 또는 기타 침입 공격 수단을 사용하여 덤핑을 방지 할 수 있습니다.
- 레벨 0-보호 없음 (기본값)
- 레벨 1-플래시 메모리는 RAM로드 코드에 의한 디버깅 또는 코드 덤프에 의한 판독으로부터 보호됩니다
- 레벨 2-모든 디버그 기능이 사용 불가능합니다
외부 저장소가 안전합니까?
아마 아닙니다 으로 보안 . 클라이언트의 개인 키를 도난당한 경우 공격자는 실제로 장치에없는 데이터를 장치에서 보낸 것처럼 보낼 수 있습니다. 어떤 데이터를 전송하는지는 확실하지 않지만 신뢰할 수없는 데이터는 보안 위험이 될 수 있습니다.
어떤 비트를 비공개로 유지해야합니까?
AWS IoT에서 디바이스 인증서를 생성하면 다음과 같은 이미지가 표시됩니다.
AWS IoT 설명서의 디바이스 인증서 생성 및 활성화 페이지의 이미지 .
개인 키는 당신이 정말로 비공개 로 유지 해야하는 것입니다. 가능한 경우 읽기 보호 된 메모리에 확실히 저장해야합니다. 공개 키와 인증서는 공유되도록 설계되었으므로 공간이 부족하면 안전하게 외부 저장소로 옮길 수 있습니다. SSL / TLS는 어떻게 작동합니까? 페이지에서 좀 더 많은 내용을 얻을 수 있습니다 . Wikipedia의 Information Security Stack Exchange 및 공개 키 암호화 개인 키가 비밀이되어야 하는 이유 를 설명하기 위해이 이미지를 포함시키지 않으면 나는 당신에게 장애를 겪고 있다고 생각 합니다.
.
공개적으로 공개 된 Wikipedia의 이미지 .
디바이스의 퍼블릭 키 는 AWS IoT가 디바이스에 전송하기 위해 메시지에 서명하는 데 사용하는 것입니다 (단, 메시지를 보내는 사람을 증명하지는 않습니다 ). 따라서 비밀 키가 아니기 때문에 누군가 공개 키를 훔치는 것이 큰 재앙이 아닙니다.
개인 키는 공격자가이 훔치는 경우가 약간 더 큰 문제는 그래서 당신의 장치가 사용하는 메시지를 해독하는 것입니다.
또한 공격자가 RootCA 인증서를 훔친 경우 어떻게되는지 물었습니다. 누군가 AWS IoT의 개인 키를 훔친 경우 재앙이 될 수 있지만 디바이스의 RootCA 인증서 는 그렇지 않습니다 . RootCA.crt
그 아마존은 당신이 줄 을 완전히 공개 하고, 목적은 당신이 (대부분 중간자 AWS의 IoT의 서버 척) 어떤 방법으로 공격을 받고하지 않는 것을 확인할 수 있도록합니다.
해킹 된 장치는 어떤 피해를 입을 수 있습니까?
도난당한 장치는 정책에 나열된 작업 만 수행 할 수 있습니다 . 최소한의 특권 원칙 을 따르십시오 . 기기에 절대적으로 필요한 권한 만 부여 하면 최악의 상황이 발생할 경우 너무 큰 혼란을 겪을 수 없습니다. 구체적인 경우 :
사물은 2 개의 채널 (이름과 데이터 피드 채널)에만 게시 할 수 있으며 데이터 채널은 데이터 프로세서에 연결되어 악의적 인 패킷이 들어오는 것을 무시합니다.
잘 됐네요 모든 공격은 디바이스가 공개 할 수있는 두 개의 MQTT 주제로 분리되어야하므로 대규모 피해를 유발하지 않습니다.