현재 모바일 응용 프로그램 (현재 Ionic 플랫폼 사용)과 내장 장치 간의 Bluetooth 통신을 포함하는 프로젝트를 진행하고 있습니다. 비교를 위해 당사 제품은 스마트 잠금 장치 와 유사합니다 .
보안은 가장 중요하며 하드웨어와 소프트웨어를 해킹 할 수 없도록하는 방법을 모색하고 있습니다. 시스템 보안을 위해 어떤 조치를 취해야합니까?
편집 : 예, 현재 통신을 암호화하고 있으며 장치가 서버와 통신 할 때 HTTPS를 사용합니다.
현재 모바일 응용 프로그램 (현재 Ionic 플랫폼 사용)과 내장 장치 간의 Bluetooth 통신을 포함하는 프로젝트를 진행하고 있습니다. 비교를 위해 당사 제품은 스마트 잠금 장치 와 유사합니다 .
보안은 가장 중요하며 하드웨어와 소프트웨어를 해킹 할 수 없도록하는 방법을 모색하고 있습니다. 시스템 보안을 위해 어떤 조치를 취해야합니까?
편집 : 예, 현재 통신을 암호화하고 있으며 장치가 서버와 통신 할 때 HTTPS를 사용합니다.
답변:
기기가 충분히 안전하도록 몇 가지 팁이 있습니다.
또한 암호화 및 암호화에 대한 자세한 내용을 보려면 장치를 보호하는 데 사용할 전자 책을 확인 하십시오 (무료) . 암호화 알고리즘의 좋고 나쁜 구현에 대해 많이 이야기하며 제품 보안에 도움이됩니다. (참고 1 : 자신의 알고리즘을 만들지 마십시오. 참고 2 : crypto101 또는 lvh와 관련이 없습니다.)
종단 간 TCP를 사용할 수있는 경우 종단 간 TLS (예 : HTTPS)를 사용하십시오.
특히 암호화와 관련하여 휠을 재발 명하지 마십시오. 대부분의 사람들이 잘못 알고 있습니다. 장치에 TLS를 지원하기에 리소스가 너무 많이 제한되어 있지 않은 경우 AES 수준으로 내려 가면 잘못 된 것 입니다. 실수는 암호화하고 인증을 잊는 것입니다. 서버와 장치 사이에 암호화 된 채널 대신 서버와 MITM (Man-in-the-Middle) 사이에 암호화 된 채널이있는 경우 암호화는 아무런 이점이 없습니다. . TLS를 사용할 수없는 경우 사용하는 프로토콜이 모두 인증 하고 기밀 정보를 암호화해야합니다.
TLS를 안전하게 사용하려면 각 참가자의 관점에서 필요한 것이 무엇인지 생각하십시오. 일반적으로 장치는 합법적 인 서버와 통신하고 있음을 알아야합니다. 즉, 서버의 인증서를 확인해야합니다. 장치에는 인증 기관의 X.509 인증서가 신뢰할 수있는 것으로 기록되어 있어야합니다. 이를 위해서는 공격자가 수정할 수없는 저장소가 필요하지만 저장소의 기밀성이 필요하지 않습니다. 서버 인증서를 직접 하드 코딩해서는 안됩니다. 손상된 경우 해당 인증서를 쉽게 교체 할 수 없기 때문입니다. 대신, 장치는 예상 ID를 저장합니다서버의 (호스트 이름) 및 특정 공개 키가 예상 호스트 이름에 속하는지 확인하는 인증 기관의 인증서. 다시 한 번 휠을 다시 만들지 말고 TLS 라이브러리 또는 응용 프로그램에서 제공 한 인증서 확인에 의존하십시오.
서버가 합법적 인 클라이언트와 통신하고 있음을 알아야하는 경우 각 클라이언트에는 자체 클라이언트 인증서가 있어야합니다. 이를 위해서는 클라이언트에 기밀 저장소가 필요합니다. 클라이언트 인증서를 TLS 라이브러리에서 TLS 세션 열기 기능으로 전달하거나 애플리케이션 구성에서 설정하십시오.
서버와 장치 간의 통신을 보호합니다. 모바일 응용 프로그램이 장치와 직접 통신 할 수있는 경우 (예 : 로컬 Wi-Fi 네트워크에있는 동안 연결이 끊긴 경우) 스마트 스위치와 휴대폰간에 페어링을 수행해야합니다. 페어링은 키 교환, 바람직하게는 리소스가 허용하는 경우 공개 키 교환, 그렇지 않으면 비밀 키의 동의를 의미합니다. 이 페어링의 목표는 각 장치가 대화하는 사람을 알 수 있도록하는 것입니다.
모바일 장치에서 스마트 스위치로 또는 서버를 통해 직접 이동하는지 여부에 관계없이 제어 채널도 보호해야합니다. 권한 부여에 대해 생각해보십시오. 스위치에 대한 액세스 수준이 다릅니 까 (예 : 재구성을 허용하는 제어 레벨과 온 / 오프 스위칭 만 허용하는 기본 채널)? 이는 일반적으로 보안 채널 (가능한 경우 TLS)을 설정 한 후 인증 단계에 의해 처리됩니다.
다른 고려 사항은 펌웨어 업데이트입니다. 그것은 까다로운 일입니다. 한편으로는 절대적인 보안과 같은 것은 없기 때문에 지금 적용 할 보안 패치가 있습니다. 반면, 펌웨어 업그레이드 메커니즘은 복잡한 것이며 자체 버그가있을 수 있습니다. 최소한 펌웨어 업그레이드에 서명해야합니다. 보안 채널에 대한 트러스트는 정적 보안 확인보다 크며, 때로는 네트워크 연결없이 펌웨어 업데이트를 적용 할 수 있기 때문에 업그레이드를 위해 통신 채널의 보안에만 의존하는 것은 까다 롭습니다. 서명을 확인하는 것 외에도 이상적으로는 롤백에 대한 보호 기능을 갖추어야합니다.