사물의 인터넷 IOT ()으로 널리 인기있는 장치입니다 - 무선 스마트 도시에서 보석으로, 안전을 보장하기 위해 점점 더 시급한 우선 순위의 임베디드 시스템 보안 요구 사항의 유형을 묘사 것들에 대한 일상 생활의 거의 모든 단계에 일. 시작 프로세스는 응용 프로그램의 악성 소프트웨어 필요한 부분을 방지하기 위해 임베디드 시스템뿐만 아니라 장벽을 보호하기위한 첫 번째 단계입니다. 우리의 강점과 약점을 살펴 보자, 하나의 일반적인 프로세서 --i.MX6의 전자 산업에 예시로서 설명합니다.
시작하는 것이 안전할까요?
'보안 부팅'은 미러링과 코드를 시작하기 전에 운영 체제 (OS)가 하드웨어에 대해 인증을 받아야 시작하는 프로세스입니다. 하드웨어는 미리 다음과 같이 준비해야합니다. 인증은 신뢰할 수있는 보안 자격 증명으로 생성 된 코드를 사용합니다. 요약하면 부팅 및 OS 소프트웨어가 의도 된 제조업체 버전이며 맬웨어 또는 악의적 인 제 3 자에 의해 변조되지 않도록합니다.
주로 사용되는 i.MX6 Solo 및 DuaLite 통합 E-Ink 디스플레이 컨트롤러와 같은 i.MX6 프로세서를 광범위하게 사용하는 e-reader와 같이 단일 사용을위한 안전 부팅 장치 일반적인 작업이 아닌 eBook을 읽는 경우 부팅 할 때 Linux 환경을 잠그는 것이 좋습니다.
안드로이드 전화와 같은 다른 것들은 선택 사항 일 수 있습니다. 예를 들어, 보안 부팅을 사용하면 최종 사용자가 게스트 ROM을 실행할 수있는 능력이 제한 될 수 있습니다. 이는 기능적 특징 일 수도 있고 제품 레이아웃이나 보안 요구 사항에 기반 할 수도 있습니다 안전 부팅으로 시작하는 가장 이상적인시기는 기본적으로 상대방이 운영 체제 나 다른 부트 로더를 장치에로드하지 못하게하려는 경우입니다.
IP 카메라의 통합 리눅스 높은 수준을 실행하는 시스템의 경우, 더 많은 사람들이, 당신은 당신의 장치가 좀비 네트워크하게 넣을 수 있습니다 당신이 때문에 악성 코드 나 운영 체제 소프트웨어, 부팅 보안 부팅을 사용할 것을 제안합니다 복사합니다. 혹은 카메라가 인터넷에 업로드 된 사진을 찍을에서 공공, 또는 비디오 클립 및 다른 비디오 소유자 정보를 원하는 포함되지 수정 될 수 있습니다.
안전한 시작 프로세스에 대한 i.MX6
i.MX6에 부팅 이미지되면,이 목적을 위해 생성 된 SSL 인증서에 대한 보안 키의 세트를 생성해야하며, 보안 부팅을 활용합니다.
이 키는 보안 지침 세트를 생성하고 오늘 프리 스케일 및 NXP와 같은 공급 업체가 제공하는 도구를 사용하여 부트 이미지로 컴파일됩니다. 그러면 프로세서는 첫 번째 단계 부트 로더를 취하고, 또한 자격 증명을 사용하여 보안 시작 컴파일 도구에서 생성 된 자격 증명을 인증합니다.
부트 미디어에 쓸 때 부팅 키 이미지 데이터가 프로세서의 보안 저장소에 저장된 키 데이터와 일치하면 보안 명령을 실행 한 다음 미러 된 암호 해시 값을 확인하여 안전 표시와 일치하는지 확인합니다 일치하면 프로세서가 부팅 이미지로드 및 실행을 시작합니다.
는 CPU의 내부 부트 로더에 의해이 과정되면, 당신은 여전히이 운영 체제 이미지를로드 할 수 있습니다, 그리고 CPU 부트 로더 인증 소프트웨어 부트 로더. 보안 부팅 부트 로더 코드에서 라이브러리를 호출 할 수 있습니다 이 프로그램은 같은 방법으로 인증을 받아야합니다.
이 과정의 끝에서, 운영 시스템은 보안 환경을 확인하여 시작시에 완료됩니다. 당신은 프로세서에 저장된 키 해시 값에 대한 인증 테스트를위한 각 단계 이후, 의미가 알고있다.
일회성 프로그램 디자인
보안 측면에서 보았을 때이 프로세스는 SSL 인증서에서 루트 키를 생성 한 다음 의사 인증 (OTP) 설계에서 CPU로 구운 다음, 키가 프로세서에 구워지면 변경할 수 없습니다 - 이유 중 하나는 안전입니다.
부팅 이미지는 키 기반으로 서명되며 서명 프로세스 중에 생성 된 정보는 이미지와 결합됩니다. 프로세서는 이미지 키를 해당 키로 확인하고 일치하는 경우, 키가 이미지를 확인합니다. 여전히 일치하면 미러를 수행 할 수 있습니다.이 단계는 CPU에서 일반 부트 로더로로드 프로세스를 시작하는 상위 레벨 체인으로 이동하여 운영 체제로 연결합니다.
물론 i.MX6의 경우 일 수 있습니다. 실제로 UEFI 보안 부팅을 사용하는 X86과 같이 다양한 종류의 보안 부팅이 있지만이 기사의 이해를 돕기 위해 i.MX6에 중점을 둡니다.
하드웨어 사용
i.MX6 하드웨어 키트에는 시동시 안전 할 수있는 여러 가지 특수 보안 메커니즘이 포함되어 있으며 안전한 시동의 열쇠는 키를 태우는 데 사용되는 일회용 퓨즈입니다. 따라서 키가 구워지면 해시 값은 영구적입니다. 여러 키를 단일 키 해시에 통합 할 수 있으므로 해킹당한 키를 해지 할 수 있습니다.
시스템의 또 다른 특징은 CPU 부트 로더의 내부 보안입니다, 이것은 안전 테스트 같은 정적 코드입니다. 그것은 중요한 기반의 보안을 유지하기 위해 전체 체인의 운영 체제에 달려있다.
또한, 하드웨어 암호화 알고리즘 i.MX6 가속기를 구비. 등과 AES, 트리플 DES 해시 샬 및 SHA256 알고리즘으로 해시 대폭 보안 프로세스의 속도를 증가 i.MX6 프로세서를 통해 촉진 될 수있다.
결점
가장 눈에 띄는 단점은 자신의 안전에 대한 책임을 져야한다는 것입니다. 키가 외부로 유출되는 경우 해당 프로세스 및 하드웨어 보안을 보장해야한다, 그래서 사람들은 서명을 코딩하는 프로세서에 저장된 키를 사용합니다.
또한 안전한 부팅을 위해 구성된 프로세서는 이미지에 제대로 서명 한 후에 만 시작되므로 해시 값을 프로세서에 기록하면 오류가 발생해도 프로세서가 코드를 실행하지 못하게되고, 해시 값이 일치하지 않으므로 쓸모없는 프로세서가됩니다.
일단 프로세서가 안전한 실행을 위해 설정되면 저장소 (예 : SD 카드 또는 NAND 플래시 메모리)에서 안전하게로드 할 수있는 보안 코드를로드하거나 그렇지 않으면 소프트웨어를로드해야합니다 프로세서 (USB 이미지 로딩).
따라서 하드웨어 및 프로세서 준비가 보장되어야하며, 부트 로더가 이에 대비할 수 있어야합니다.
앞서 언급했듯이 부트 로더는 부트 체인의 다음 단계를 인증하기 위해 프로세서의 보안 부트 라이브러리를 호출해야합니다. 보안 라이브러리를 올바르게 사용하기 위해 부트 로더를 올바르게 코딩하지 않으면 운영 체제의 안전을 완전히 보장합니다.
거짓 보안의 함정에 빠지지 마십시오.
i.MX6의 안전한 시작은 전체 시스템을 잠그지 않고 운영 체제 소프트웨어 만 잠그는 것이므로 운영 체제에서 실행되는 일부 Linux 맬웨어를 작성할 수 있으며 성공적으로로드되면 전체 시스템을 해치십시오.
i.MX6 안전 시작 인증
보다 완전한 보안이 요구되는 경우 파일 시스템의 나머지 부분을 인증 할 수 있으며 코드 i.MX6 안전 부팅 프로세스 원칙은 특정 메모리 블록이 특정 암호화 해시 값과 관련 서명 정보를 가지므로 가능한 것입니다 올바른 보안 명령 집합을로드하는 동안 운영 체제의 루트 파일 시스템 및 기타 중요한 파일을 메모리의 고정 된 위치에로드하면 필요한 경우 나머지 시스템을 인증 할 수 있습니다.
i.MX6 안전한 시작 중요한 트릭
1. 부팅 프로세스가 안전한지 확인합니다. 안전한 부팅 경로를 결정한 후에는 프로덕션 환경에서 키 누출과 함께 프로세스가 진행되는지 확인해야합니다.
2. 강력한 암호화 방법을 통해 사용 된 암호화 방법이 사용자가 약한 키를 설정할 가능성이 높고 i.MX6의 보안 부팅이 이전 또는 손상된 손상을 지원할만큼 강력하다는 것을 확인하십시오 따라서 알고리즘이 최신이고 목표를 달성 할 수 있는지 확인하십시오.
3. 코드 확인 로더에서 나머지 코드를 시작하는 것을 포함하여 안전한 시작을 위해서는 운영 체제 및 기타 소프트웨어가 보안 결함없이 안전 부팅에 올바르게 작성되어야합니다.
또한 부트 프로세스의 각 단계를 실행하기 전에 다음 단계를 확인해야하며 그렇지 않은 경우 또는 부분적으로 완료되면 프로세스 안전이라고 할 수있는 범위가 훨씬 작아집니다.
4. Everyplace를 인증하십시오. 실제 보안을 위해서, 원하는만큼의 코드를 인증하고 라이브러리 구축을위한 지침을 따르도록하십시오.
전체 프로세스가 안전한지, 즉 키를 생성하고 저장하는 방법을 확인해야합니다. 세이프 부팅은 서명 만 검사하며 서명 된 이미지는 프로세서에서 안전하다고 판단됩니다.
따라서 대부분의 i.MX6 보드는 여러 단계를 거치므로 작성하는 모든 코드를 프로세서의 보안 부트 라이브러리에서 호출하여 미러 인증을 계속하십시오. 부팅 프로세스 중에 CPU의 내부 부트 로더가 먼저 SPL을로드 한 다음 SPL이 운영 체제로로드하기위한 전체 부트 로더를로드합니다. 각 단계는 안전하다는 것을 확인하기 위해 이전 단계에서 인증을 받아야합니다.
5. 프로세스가 유효한지 확인하여 코드가 실제로 안전한 시작을 수행하는지 확인하십시오. 프로세서가 이와 같이 작동하므로 보안 코드가 메모리의 어느 부분 으로든 이동할 수있는 것이 중요합니다. 실제로 코드가 다음 단계를 인증하는지 실제로 확인하는 것이 중요합니다.
i.MX6에서 가장 일반적으로 사용되는 부트 로더는 i.MX6에서 보안 부팅을 실제로 지원하는 U-Boot입니다. 구성해야하지만 더 간단합니다. 처음부터 보안을 작성하는 것은 좋은 생각이 아니지만 설계 요구 사항을 작성하고 적용하는 데 익숙하고 이상적인 방법을 이용하는 것이 가장 좋습니다.