Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

OpenWeave 팩토리 프로비저닝 도구

jinja-placeholder-0 .md "> GitHub에서 소스보기

OpenWeave Factory Provisioning Tool은 지속적인 장치 별 구성 정보를 Weave 지원 장치에 프로비저닝 할 수있는 편리한 방법을 제공합니다. Factory Provisioning Tool은 고객에게 배송하기 전에 개별 장치에 고유 한 ID 및 자격 증명 정보를 표시하는 제조 라인 프로세스의 일부로 사용하기위한 것입니다. 또한 개발자는 개발 프로세스 중에 사용되는 사전 프로덕션 하드웨어를 개인화하는 데 사용할 수 있습니다.

작동 이론

OpenWeave Factory Provisioning Tool의 목표는 선택된 구성 정보를 장치의 영구 구성 저장소에 주입하여 장치 펌웨어가 런타임에 선택하여 사용할 수 있도록하는 것입니다. 영구적 인 장치 구성은 일반적으로 장치의 내부 플래시 내에 저장되지만 데이터가 정확히 어떻게 저장되고 어떤 형식으로 형식에 대한 세부 사항은 플랫폼마다 다릅니다. Factory Provisioning Tool 자체는 최종 스토리지 형식과 무관하며 데이터를 올바른 방식으로 작성하기 위해 장치 펌웨어의 코드에 의존합니다. 이 툴의 사용자 인터페이스는 또한 구성되는 하드웨어 유형과는 독립적으로 다른 하드웨어 플랫폼을 기반으로하는 제품 라인에서 유사한 제조 프로세스를 사용할 수 있습니다.

Factory Provisioning Tool은 JTAG 또는 SWD 포트와 같은 특정 형식의 디버그 또는 제어 인터페이스를 통해 대상 장치에 연결된 호스트 시스템에서 작동하도록 설계되었습니다. 이 도구는 프로비저닝 정보를 장치의 RAM에 특수하게 인코딩 된 형태로 주입하여 작동합니다. 그런 다음, 장치의 펌웨어에 내장 된 코드가 인코딩 된 데이터를 찾고 무결성을 검증하며 포함 된 값을 플랫폼에 적합한 형식으로 영구 저장소에 기록합니다.

주입 된 프로비저닝 데이터를 감지하고 처리하는 온 디바이스 코드는 OpenWeave 디바이스 계층에 내장되어 있으며 지원되는 모든 플랫폼에서 활성화 할 수 있습니다. 활성화되면 장치 초기화 프로세스 초기에 장치가 부팅 될 때마다 코드가 자동으로 실행됩니다. 코드는 플랫폼 별 RAM 영역을 스캔하여 작동합니다. 적당한 메모리 마운트 (예 : <1M)가있는 플랫폼에서 스캔에는 사용 가능한 모든 RAM이 포함됩니다.

RAM에 배치되면 프로비저닝 데이터는 쉽게 식별 할 수있는 접두어로 인코딩되어 스캔 프로세스 중에 빠르게 찾을 수 있습니다. 처리 전에 데이터의 유효성을 확인하기 위해 암호화 해시에 기반한 무결성 검사 값이 사용됩니다.

기본적으로 프로비저닝 도구는 대상 장치 플랫폼을 기반으로 프로비저닝 데이터를 주입 할 RAM 위치를 선택합니다. 이 선택은 도구에 대한 인수를 통해 무시할 수 있습니다. 일반적으로 장치 펌웨어는 프로비저닝 데이터 수신을 위해 RAM 위치를 예약 할 필요가 없습니다. 보다 일반적으로 프로비저닝 데이터는 다른 용도로 할당 된 RAM 위치에 기록되지만 일반적으로 장치 부팅 프로세스 초기에는 사용되지 않습니다. 일반적인 선택은 초기 시스템 스택의 맨 위 또는 힙 아레나의 맨 끝입니다.

Factory Provisioning Tool은 대상 장치와 인터페이스하기 위해 일련의 외부 개발 도구를 사용합니다. 사용되는 특정 도구는 대상 장치의 유형에 따라 다릅니다. 현재 두 가지 장치 인터페이스가 지원됩니다.

  • 장치의 JTAG 또는 SWD 포트에 연결된 SEGGER J-Link 디버그 프로브
  • Espressif ESP32에 연결된 USB 직렬 포트

J-Link 인터페이스는 호스트 시스템에 별도로 설치해야하는 SEGGER J-Link Commander 도구 (JLinkExe)를 사용합니다.

ESP32 인터페이스는 Espressif의 ESP-IDF SDK의 일부로 제공되는 Espressif esptool.py 명령을 사용합니다.

프로비저닝 할 수있는 정보 유형

OpenWeave Factory 프로비저닝 도구는 다음 유형의 정보를 프로비저닝 할 수 있습니다.

  • 장치 일련 번호
  • 제조업체 지정 직조 장치 ID
  • 제조업체 지정 직조 인증서 및 개인 키
  • 직조 코드
  • 제품 개정 번호
  • 제조 일자

일반적으로 장치가 제대로 작동하려면 위의 모든 정보가 필요하지만 모든 정보를 동시에 제공 할 필요는 없습니다. 따라서 다른 유형의 정보 제공은 제조 프로세스의 개별 지점에서 발생할 수 있습니다. 또한 후속 프로비저닝 단계에서 이전에 프로비저닝 된 값을 새 값으로 대체 할 수 있습니다.

프로비저닝 정보 소스

장치 프로비저닝 정보는 다음과 같은 방법으로 Factory Provisioning Tool에 제공 될 수 있습니다.

  • 명령 줄 인수
  • 프로비저닝 CSV 파일 사용
  • Nest 프로비저닝 서버에서 값을 가져옴

커맨드 라인

가장 간단한 형태로 장치 프로비저닝 정보는 명령 줄에서 OpenWeave Factory Provisioning Tool에 직접 지정됩니다. 예를 들면 다음과 같습니다.

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --pairing-code NESTUS --mfg-date 2019/04/01

Weave 인증서 및 개인 키와 같은 이진 데이터 값은 base-64 문자열로 지정하거나 원하는 데이터를 원시 (이진) 형식으로 포함하는 파일 이름으로 지정할 수 있습니다.

사용 가능한 명령 행 인수의 전체 목록은 아래를 참조하십시오.

프로비저닝 CSV 파일

장치의 대량 프로비저닝을 수용하기 위해 Factory Provisioning Tool은 CSV 형식의 프로비저닝 데이터 파일에서 프로비저닝 데이터를 읽을 수도 있습니다. 이 파일의 열은 특정 프로비저닝 데이터 유형 (예 : Serial_Num , Certificate , Private_Key 등)에 해당합니다. 파일의 행은 특정 장치에 대한 개별 값을 제공하며, 위브 장치 ID ( Device_Id )로 색인화됩니다. 프로비저닝 할 특정 장치의 ID는 명령 줄에 지정해야합니다. 예를 들면 다음과 같습니다.

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-csv-file ./dev-provisioning-data.csv

다음과 같은 CSV 열이 지원됩니다.

이름 체재 기술
Device_Id 16 진수 장치 ID를 짜십시오. 존재해야합니다.
Serial_Num 장치 일련 번호
Certificate Base-64 문자열 제조업체 지정 직조 장치 인증서.
Private_Key Base-64 문자열 제조업체 지정 직조 개인 키.
Pairing_Code 직조 코드.
Product_Rev 정수 제품 개정 번호
Mfg_Date YYYY / MM / DD 장치 제조일.

열은 CSV 파일에 어떤 순서로나 나타날 수 있습니다. Device_Id 제외한 모든 열은 선택 사항입니다. CSV 파일에 없는 값은 단순히 장치에서 프로비저닝되지 않습니다.

사용자는 CSV 파일 외에도 명령 줄에 개별 프로비저닝 값을 지정할 수 있습니다.이 경우 명령 줄 값이 파일의 값보다 우선합니다.

Factory Provisioning Tool에서 지원하는 CSV 파일 형식은 weave 도구의 gen-provisioning-data 명령 출력과 호환됩니다.

네스트 프로비저닝 서버

팩토리 프로비저닝 도구는 HTTPS 기반 프로토콜을 사용하여 Nest 프로비저닝 서버에서 선택 프로비저닝 정보 가져 오기를 지원합니다. Provisioning 서버 프로토콜을 사용하여 Provisioning 서버에서 제조업체 지정 Weave 장치 인증서, 해당 개인 키 및 Weave 페어링 코드를 가져올 수 있습니다.

provisioning server의 네트워크 위치는 provisioning tool 명령 행에 기본 URL을 제공하여 지정됩니다. 원하는 프로비저닝 정보는 명령 행에서 Weave device id를 지정하여 선택됩니다. 예를 들면 다음과 같습니다.

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-server https://192.168.172.2:8000/

사용자는 provisioning server URL 외에도 명령 행에 개별 프로비저닝 값을 지정할 수 있습니다. 이 경우 명령 행에 제공된 값이 서버가 리턴 한 값보다 우선합니다.

공장 프로비저닝 지원 활성화 / 비활성화

장치 펌웨어에서 OpenWeave 공장 프로비저닝 지원은 WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 컴파일 타임 구성 옵션에 의해 제어됩니다. 이 옵션은 기본적으로 활성화 되어 있습니다. 응용 프로그램의 WeaveProjectConfig.h 파일에서 옵션을 재정 의하여 기능을 비활성화 할 수 있습니다. 예를 들면 다음과 같습니다.

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

일반적으로 장치 디버그 인터페이스가 프로덕션 장치에서 적절하게 비활성화되어 있으면 프로덕션 장치 펌웨어에서 공장 프로비저닝을 사용하는 것이 안전 합니다. 이는 하드웨어 수단 (예 : SoC에 퓨즈를 날림) 또는 소프트웨어 (예 : 부팅 프로세스의 일부로 디버그 액세스를 차단하는 보안 부팅 로더)를 통해 수행 할 수 있습니다.

팩토리 프로비저닝 도구 실행

OpenWeave Factory 프로비저닝 도구는 다음 명령 행 옵션을 지원합니다.

선택권 기술
--target <문자열> 대상 장치 유형 선택 사항 : nrf52840 , esp32
--load-addr <16 진수> 프로비저닝 데이터가 기록 될 장치 메모리의 주소입니다.
--verbose, -v 출력 상세 레벨을 조정하십시오. 세부 사항을 늘리려면 여러 개의 인수를 사용하십시오.
--serial-num <문자열> 장치 일련 번호를 설정하십시오.
--device-id <16 진수> 제조업체가 지정한 장치 ID를 설정하십시오.
--device-cert <base-64> | <파일 이름> 제조업체가 지정한 Weave 장치 인증서를 설정하십시오.
--device-key <base-64> | <파일 이름> 제조업체 지정 Weave 장치 개인 키를 설정하십시오.
--pairing-code <문자열> 장치 페어링 코드를 설정하십시오.
--product-rev <정수> 장치의 제품 개정을 설정하십시오.
--mfg-date <YYYY / MM / DD> | 오늘 | 지금 장치의 제조 날짜를 설정하십시오.
--jlink-cmd <경로 이름> JLink 경로 기본적으로 'JLinkExe'입니다.
--jlink-if SWD | JTAG J-Link 인터페이스 유형. 기본적으로 SWD입니다.
--jlink-speed <정수> | 적응 | 자동 J-Link 인터페이스 속도.
--jlink-sn <문자열> J-Link 프로브 일련 번호.
--esptool-cmd <경로 이름> esptool 명령의 경로입니다. 기본값은 'esptool.py'입니다.
--port <경로 이름> ESP32의 COM 포트 장치 이름 기본값은 / tty / USB0입니다.
-속도 <정수> COM 포트의 전송 속도. 기본값은 115200입니다.
--prov-csv-file <파일 이름> 프로비저닝 CSV 파일에서 디바이스 프로비저닝 데이터를 읽습니다.
--prov-server <url> 프로비저닝 서버에서 장치 프로비저닝 데이터를 읽습니다.
--disable-server-validation HTTPS를 사용하는 경우 프로비저닝 서버에서 제공 한 인증서의 유효성 검증을 사용하지 마십시오.

다음 명령은 장치 ID, 일련 번호, 제품 개정판 및 페어링 코드를 특정 값으로 설정합니다. 제조 날짜는 현재 날짜로 설정됩니다. 또한 디바이스 인증서 및 개인 키는 openweave-core 소스 저장소와 함께 제공된 CSV 파일에 제공된 값을 테스트하도록 설정됩니다.

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000042 \
    --serial-num JAYS_DEVICE_42 --product-rev 1 --pairing-code NESTUS --mfg-date today \
    --prov-csv-file ~/projects/openweave-core/certs/development/device/test-dev-provisioning-data.csv