AVR / Arduino에서 코드 보안 및 업데이트 제공


9
  1. 리버스 엔지니어링으로부터 AVR 기반 장치에 플래시 된 코드를 보호하는 가장 좋은 방법은 무엇입니까?
  2. 코드를 공개하지 않고 최종 사용자에게 업데이트를 제공하는 쉬운 방법은 무엇입니까? (암호화 된 이미지를 해독하는 부트 로더가 있습니까?)

DRM 홍보에 화를 내지 말고 오픈 플랫폼을 선호합니다. 이것이 어떻게 작동하는지 궁금합니다.


하지마 악의적 인 사람이 하드웨어 / 소프트웨어를 리버스 엔지니어링 할 가능성 을 완전히 막을 방법은 없습니다 . Anti-RE 조치는 모두 되 돌리는 데 시간이 오래 걸리는 것입니다.
코너 울프

답변:


9

먼저:

칩에 퓨즈가있어 외부 도구가 칩의 코드를 읽지 않도록 설정할 수 있습니다. 데이터 시트 및 / 또는 프로그래머 설명서에서 보호 퓨즈를 찾으십시오.

완벽하지는 않지만 간단한 공격으로부터 보호합니다.

둘째:

펌웨어를 안전하게 다운로드 할 수 없습니다. AVR은 보호 영역을 자체 프로그래밍 할 수 없습니다.

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

최선의 방법은 암호화 된 토큰 언어 (예 : 기본 또는 기타)를 사용하고 암호화 된 토큰을 열린 영역에 프로그래밍 할 수있는 부트 로더를 사용하여 인터프리터를 칩에서 보호하는 것입니다. 실행하면 칩이 즉시 해독되어 명령을 실행합니다.


3
퓨즈 비트가 완벽하지 않은 경우 어떤 종류의 손상이이를 우회 할 수 있습니까?

1
@Anonymous-칩 커버를 화학적으로 에칭하고 전자 현미경, 레이저 및 마이크로 프로브를 사용하여 실리콘을보고, 인터페이스하고, 편집합니다. 최소 500 달러의 비용이 들지만, stbra가 장치에 넣는 것보다 저렴할 수 있습니다.
Kevin Vermeer

@KevinVermeer $ 500을 의미 했습니까? 그것은 그것보다 훨씬 비쌀 것 같습니다.
NickHalden

Adam, 오류가있어서 코멘트를 삭제했습니다
hulkingtickets

3

그것이 중요하고 특히 코드를 훔치는 경쟁 업체에 대해 걱정이되는 경우 코드 세그먼트에서 IP 보호를 수행하십시오. 어쨌든 프로젝트에서 돈을 벌려고 시도한다면 이것을 조사해야합니다.

특정 코드 요소는 특허를 받거나 (특정 처리 방법 및 새로운 알고리즘의 경우) 산업 설계 (코드를 장치에 모양, 레이아웃 및 적용)로 등록 할 수 있습니다. 이에 관해 IP 변호사와 상담 할 수 있습니다.


1

직렬 포트를 통해 암호화 된 데이터를 수락하고 암호 해독하여 코드 저장 영역에 저장 한 자체 부트 로더를 작성한 경우 안전한 코드 펌웨어 업데이트가있을 수 있습니다. 각 장치는 사용자 정의 부트 로더에 고유 한 암호 해독 키를 가질 수도 있습니다.


1
그러나 @Adam Davis의 말에 따르면 부트 로더 (사용한 부트 로더)를 사용하면 잠금 비트 보호 영역을 프로그래밍 할 수 없다고 생각합니다. 따라서 자체 암호화 부트 로더를 작성했다면 칩을 읽을 수 없습니다 (문제 1). 어쨌든 그것은 링크와 데이터 시트에서 얻는 것 같습니다.
Lou

부트 로더와 코드가 암호화되면 두 번째 문제를 해결할 것입니다. 첫 번째 문제는 충분한 보안 암호화를 사용하면 거의 해결됩니다. (uC 속도는 병목 일 수 있음).
Rick_2047

진실. @Adam Davis는 위의 암호화 된 토큰 언어를 제안했습니다.
Lou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.