M5 Stack Core2 for AWS의 보안 칩(ATECC 608A)에서 진성 랜덤 수 얻기
8686 단어 M5stackCore2ATECC608A
아마존의 클라우드 서비스 업체 아마존 웹 서비스(AWS)가 맞춤형으로 제작한 AWS IoT'M5 Stack Core2 for AWS'가 2020년 12월 발매됐다.
이 인기 상품은 스위치과학 발매 직후 바로 매진돼 최근(2021/2)에 드디어 안정적으로 공급됐다.
이 제품은 M5 Stack의 차세대 버전인 코어2에 전용 M5 Go Bottom2(M5 Stack Core2 전용 배터리 하단)를 추가한 것이다.이 M5GO Bottom2에는 AWS에 안전하게 접근할 수 있는 마이크로칩 회사인 ATECC608A 트러스트 & GO 보안 부품이 숨겨져 있다.
이외에도 일반 M5 Stack Core2입니다.
이번에는 M5 Stack Core2 for AWS를 활용해 접점이 거의 없는 안전 소자에 접근해 IoT 보안 기반 기술인 RoT(Root of Trust)+보안 기능 내 진성 난수 발생 기능을 가동해 봤다.
또한, AWS의 연결은 본가의 튜토리얼https://edukit.workshop.aws/en/getting-started.html을 참조하여 여기서 정통 Arduino IDE를 사용하여 ATECC 608A를 직접 조작하십시오.
M5 Stack Core2 for AWS 개요
M5 Stack Core2 for AWS는 ESP32의 이른바 중화 와이파이 칩을 사용한 IoT 소도구의 최신 버전이다.
ESP32는 원격 인터페이스 프로세서 IP를 사용하는 톈실리콘회사 엑스텐사의 와이파이/블루투스 모듈로, POC뿐 아니라 중국 소도구와 IoT 기기에서도 널리 사용된다.
원래는 모듈과 Poc용 보드에서 사용됐으며, 아두노 IDE와 UIFlow를 사용하는 마이크로파이톤과 개발 환경을 제공한다.
특히 M5 Stack Core2 for AWS는 VScode가 위에 있는 Plaatformio가 환경이 만들어졌고, 아두노 IDE에서 활용되는 것은 사악한 방법일 수 있다.
이 페이지의 동작을 확인하기 위해서는 아두노 IDE의 설치, 설정, M5 Core2의 보드 환경 설정이 이미 이루어졌다는 전제가 있으니 주의하시기 바랍니다.
Microsoft ATECC608A Trust &GO 보안 소자 개요
Microsoft에서 판매하는 IoT용 보안 컴포넌트(보안 부품)입니다.PC 메인보드 보안 칩 TPM의 IoT 버전이라고도 할 수 있다.
IoT가 확대됨에 따라 IoT를 제어하는 장비에도 보안 기능이 포함됐지만, 안타깝게도 안전성이 장착된 SoC는 스마트폰의 칩만 있으면 된다이외에도 일반적으로 이른바'위장 안전'의 상황을 열기 위해 제작된 칩으로 여겨진다.
주요 기능은 키 관리, 인증, 암호 통신에 사용되는 키 데이터를 처리하고 일부 암호 처리(TRNG,Hash, 공용 키 암호화, 공개 키 암호화)를 가지고 I2C를 통해 호스트와 통신한다.
다만, 글로 설명하는 것은 간단하지만, 칩의 설명서를 봐도 기능, 사용법 등을 이해하기 어렵다.
칩의 기능 상자도 등이 공개되지 않아 기능, 구성, 구조 등이 규격서 글에서 읽어야 하는 점도 이해하기 어려운 이유 중 하나다.
ATECC 608A 기능 개요
ATECC 608A는 보안 기능을 제공합니다.이른바 ROT와 보안 기능을 갖춘 칩이라고 할 수 있다.단가 100엔 이하의 칩이지만 엄청나다.
키 관리 메모리의 사용 방법도 되돌릴 수 없는 설정이 있습니다. 임의로 접근하는 것을 주의해야 합니다.
Arduino IDE 환경에서 ATECC 608A 지원
현재(2021/2/18) M5 Stack Core 2 for AWS를 위한 완벽한 프로그램 라이브러리는 Arduino에서 제공되지 않습니다.
이번 대상의 안전소자인 ATECC 608A는 8pin의 작은 Chip임에도 불구하고 상당히 복잡한 기능을 실시했다. 이를 사용하면 데이터 테이블과 응용 노트학과의 정보를 익혀야 하기 때문에 I2C 신호로부터 조작하는 데 상당한 시간이 걸린다.
이에 따라 이번에는 이미 오리지널 아두노 언노 등과 연결해 판매한 스파크펀 크립토그래픽코 -processor Breakout ATECC508A(Qwiic)용으로 제공된 프로그램 라이브러리로 접근할 예정이다.
SparkFun_ATECCX08a_Arduino_Library이 라이브러리는 여기에 있습니다(https://github.com/sparkfun/SparkFun_ATECCX08a_Arduino_Library에서.
Arduino IDE에 프로그램 라이브러리를 추가하는 방법은 다른 인터넷 링크를 통해 조사할 수 있으면 좋겠다고 생각합니다.
(zip 파일을 다운로드한 후 Arduino IDE의 메뉴에서 프로그램 라이브러리를 추가하여 Arduino IDE를 다시 시작합니다.)
라이브러리를 추가하면 파일→스케치 예제에서 "SparkFun ATECCX08a Arduino Library"를 볼 수 있습니다.
이번에 우리는 그 중의'Example 5 Random'을 가동해 보려고 한다.
진성 획득 랜덤수
보안 소자 사용은 키 관리를 바탕으로 키 데이터를 만든 후 다시 쓸 수 없도록 잠그고 암호화, 인증을 사용합니다.
M5 Stack Core2 for AWS도 절차에 따라 AWS에 M5 Stack Core2 for AWS를 등록해 AWS 협업을 수행하기 때문에 이번에 필요하지 않은 조작으로 AWS 연결을 방해하면 어려움이 많기 때문에 키 데이터와 무관한 기능으로 신뢰성 난수 기능에 접근하기로 했다.
SparkFun_ATECCX08a_Arduino_리브레리의 엑ample 역시 최초 엑ample1의 Configuration을 마친 뒤 인증과 비밀번호 조작을 확인하는 절차다.암호화는 키 정보 Lock이 필요할 것 같지만 최소한 진성 랜덤 수는 키 정보를 사용하지 않기 때문에 ATECC 608A 기능을 확인하는 데 가장 적합하다.
먼저 Arduino IDE 메뉴의 파일 → 스케치 예 → SparkFun ATECX08a Arduino Library → Example5 Random 을 선택하여 샘플 원본 파일을 엽니다.
이럴 때는 자신의 폴더에 먼저 쓰는 것을 추천합니다.
이 소스 코드는 스파크펀을 위한 이사회나 아두노 언노 등을 대상으로 한 것으로, M5 Stack Core2 for AWS에서는 움직이지 않는다.이에 따라 M5 Stack Core2 for AWS용 설정이 추가됐다.
M5 Stack Core2 설정
M5 Stack으로 실행할 때 고유한 설정이 있습니다.
Example5_Random.중도
#include <M5Core2.h>
...
void setup() {
M5.begin(true, true, true, true);
...
I2C 주소, 포트 설정M5 Stack Core2 for AWS의 ATECC 608A는 내부 I2C 단자와 연결됩니다.아두노에서는 미세 창작 방문이 가능하다.또한 I2C는 장치마다 특정한 주소가 있고 제 장치는 0x35 주소입니다. (이것은 다른 I2C 스캐너를 통해 찾은 것입니다.)
Example5 Random에서는 처음에 atec 설정이 Class로 호출되었기 때문에 이 매개 변수에 M5 Stack Core2 for AWS 특화 정보를 추가합니다.
Example5_Random.중도
/* 元 */ if (atecc.begin() == true)
/* 新 */ if (atecc.begin(0x35, Wire, Serial) == true)
ATECC 608A 스토리지의 잠금 상태 확인Example5_Random.중도
// check for configuration
if (!(atecc.configLockStatus && atecc.dataOTPLockStatus && atecc.slot0LockStatus))
{
Serial.print("Device not configured. Please use the configuration sketch.");
// while (1); // stall out forever. /* コメント化して無限ループに入らないようにする */
}
이상의 설정을 통해 엑ample5가 잘 작동합니다.실행 예
AWS를 설정하지 않은 상태에서 실행되기 때문에 Data Slot0은 Lock이 없는 상태이지만 TRNG 기능은 정상적으로 작동하는 것으로 보인다.
15:59:31.068 -> Successful wakeUp(). I2C connections are good.
15:59:31.105 ->
15:59:31.105 -> Serial Number: XXXXXXXXXXXXXXXXXX
15:59:31.105 -> Rev Number: 00006002
15:59:31.105 -> Config Zone: Locked
15:59:31.105 -> Data/OTP Zone: Locked
15:59:31.105 -> Data Slot 0: NOT Locked
15:59:31.105 ->
15:59:31.105 -> Device not configured. Please use the configuration sketch.
15:59:31.139 -> Random number: 15
15:59:31.173 -> Random number2: 174
15:59:31.211 -> Random Byte: 0xD2
15:59:31.211 -> Random Int: 49987
15:59:31.249 -> Random Long: -173161879
15:59:31.286 -> atecc.random32Bytes[32]: F25D4D167265D523823F693DA84DBCB8863EE2E6F1986D4528DBD2FB9D93550F
확인하기 위해서 다시 시도해 보겠습니다.16:14:49.952 -> Random number: 95
16:14:49.986 -> Random number2: 175
16:14:50.021 -> Random Byte: 0x34
16:14:50.055 -> Random Int: 62994
16:14:50.089 -> Random Long: -773678228
16:14:50.122 -> atecc.random32Bytes[32]: F933B9E8871EC654FCF3DE58B5EB535C2962C8DEBE1FD374A6026BDFB22A6A43
랜덤 수이기 때문에 방문할 때마다 다른 값을 표시합니다.다른 동작 확인은 AWS 로그인을 완료한 후에 하고 싶습니다.
Reference
이 문제에 관하여(M5 Stack Core2 for AWS의 보안 칩(ATECC 608A)에서 진성 랜덤 수 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/furufuru/items/aefdfc894fcce411c6cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)