임베디드 시스템의 파일 암호화(개인 키 등)

임베디드 시스템의 파일 암호화(개인 키 등)

저는 Linux에서 실행되는 임베디드 장치를 개발 중입니다. 장치는 서버와 통신하고 인증서와 개인 키를 사용하여 데이터를 보냅니다.

우리가 장치를 배포할 때 일부 사악한 사람이 내장된 장치의 파일 시스템을 해킹하여 개인 키를 훔치고 우리 서버의 데이터를 변조하려고 시도할 수 있다는 우려가 있습니다.

개인 키를 암호화하더라도 실행 중인 프로그램은 키를 해독해야 하기 때문에 파일 시스템 어딘가에서 해독 키를 찾을 수 있습니다.

누구나 물리적으로 액세스할 수 있도록 장치를 배포해야 하므로 파일 권한을 변경하는 것은 해결책이 아닙니다.

프로그램 실행을 방해하지 않고 개인 키를 보호하기 위한 제안을 듣고 싶습니다. 감사해요.

편집: 우리는 Intel Edison에서 실행되는 Yocto를 사용하고 있습니다.

답변1

하드웨어가 물리적으로 안전하지 않은 경우 소프트웨어에서 수행하는 어떤 작업도 물리적으로 안전하지 않습니다.

별도의 암호화가 없으면 암호화에 신경쓰지 마세요.안전한키의 위치입니다. 컴퓨터의 전체 디스크 암호화는 부팅 시 누군가가 키(키를 파생하는 데 사용되는 암호)를 입력할 때 유용합니다. 키가 물리적으로 보호되는 별도의 저장 영역(예: TPM 또는 스마트 카드)에 있는 경우 전체 디스크 암호화도 가능합니다.

제가 아는 한, 인텔 에디슨에는 이런 별도의 저장 공간이 없습니다. 또한,Edison 보드는 SD 카드나 USB 스틱에서 부팅할 수 있습니다., USB 포트에 물리적으로 접근할 수 있는 사람은 누구나 eMMC에서 모든 데이터를 추출할 수 있습니다.

USB 부팅은 U-Boot에 의존하는 것으로 보이므로 공식 U-Boot 이미지를 USB를 비활성화하는 사용자 지정 이미지로 바꾸면 eMMC의 OS에서 강제로 부팅될 수 있습니다. 실제로 이것이 가능한지 모르겠습니다. 단지 이를 반박할 정보가 충분하지 않을 뿐입니다.

맞춤형 부트로더를 사용하더라도 USB 연결을 통해 보드를 플래시할 수 있습니다. 이는 eMMC의 일부를 포함하지만 적어도 플래시 인터럽트의 경우에는 전체 eMMC를 포함하지 않습니다. eMMC의 어디에 키를 배치하려고 하든 주의 깊은 공격자는 키를 덮어쓰는 것을 피할 수 있습니다.

서버가 장치의 데이터를 신뢰해야 하는 경우 찾고 있는 기능을 "보안 부팅"(또는 "신뢰할 수 있는 부팅", "확인된 부팅" 또는 기타 이름, 용어는 표준화되지 않음)이라고 합니다. Intel 프로세서의 경우 이는 TPM을 통해 수행됩니다(그러나 내장형 마더보드에는 TPM이 거의 없습니다). ARM 프로세서의 경우 이는 TrustZone과 일부 제조업체별 도구를 통해 달성됩니다. 두 기술 모두 많은 돈을 쓸 수 있는 적들에 대해 안전하지 않지만 이를 크래킹하려면 USB 스틱뿐만 아니라 적어도 납땜 인두가 필요합니다.

관련 정보