답변:
칩을 지정하지 않은 경우 다음은 대부분 8 비트 atmega 장치에 적합하지만 일반적인 정보입니다. 보다 자세한 정보는 특정 칩의 데이터 시트에 대한 '메모리 프로그래밍'섹션을 읽으십시오!
즉, 모든 AVR 장치에는 LB1 및 LB2라는 두 개의 잠금 비트가 포함되어 있습니다. 이를 0으로 낮게 프로그래밍하면 아래 표에 따라 Flash 및 EEPROM 메모리에 기록 된 내용에 보호 기능이 추가됩니다. 보호 수준은 세 가지 모드로 나뉩니다. 여기서 모드 1은 보호 기능을 제공하지 않으며 모드 3은 최대 보호 기능을 제공합니다. 잠금 비트를 재 프로그래밍하여 더 높은 보호 모드로 전환 할 수 있습니다.
AVR에서는 "높음"비트를 "낮음"으로 변경할 수 있지만 다른 방법은 아닙니다. "낮음"잠금 비트를 "높음"으로 변경할 수 없으므로 보호 수준을 낮출 수 없습니다. 잠금 비트를 지우려면 완전한 칩 삭제가 필요하며 플래시 메모리가 지워집니다.
이 2 개의 잠금 비트 만 (LB1 및 LB2) 낮 으면 99.9 %의 사람들이 펌웨어를 훔치지 못하게됩니다! 아마 99.9 % 이상. 거의 항상 코드를 리버스 엔지니어링하는 것이 더 쉽습니다.
따라서 사용자 정의 부트 로더로 펌웨어를 업데이트하고 플래시가 동시에 읽지 않도록 할 수있는 방법이 없습니까?
부트 로더 보호 퓨즈가있는 장치 (BLB12 및 BLB11)에서 내 지식을 최대한 활용하려면 (실수는 있지만 이전에이 문제가 있었을 것이라고 생각 합니다.) 사용자 정의 부트 로더 섹션을 잠그고 SPI를 비활성화하고 97-98 %의 사람들로부터 보호됩니다.
그러나 잠금 비트가 프로그래밍되지 않은 경우 활성화 된 메모리 잠금 기능이 없습니다 !!! ISP 비활성화는 사람의 70 %를 차단하기에 충분합니다.
일부 추가 정보의 경우, 잠금 비트 및 퓨즈는 일반 플래시 또는 EEPROM 공간에 있지 않으며 자체 프로그래밍 기능이있는 장치의 부트 로더와 관련된 잠금 비트를 제외하고 소프트웨어에서 액세스 할 수 없습니다. 이 앱 노트의 표 2는 특정 장치에서 수행 할 수있는 작업을 식별하는 데 도움이됩니다.
Atmel의 AVR 라인은 높은 보안 장치가 아니며 (명시 적으로 언급되지 않는 한) 코드 안전 보장을 제공하지도 않습니다. 안전하지 않은 모든 장치 (그리고 슬프게도 안전한 장치)와 마찬가지로 일반적인 공격을 받기 쉽습니다!
편집하다
HV 프로그래밍 인터페이스 헤더를 내장 할 것입니다. 그러나 누군가 HV 프로그래머를 사용하여 플래시를 읽을 수 있습니까? HV 프로그래머가 ISP / Jtag가 비활성화되어 있어도 칩을 지울 수 있다는 것을 알고 있습니다.
절대적으로 필요한 경우가 아니라면 보드 디자인에 HV 프로그래머를 포함시켜야한다고 생각하지 않으며 문제가 발생하지 않을 것입니다. HV 프로그래머 (12 볼트 신호)는 잠금 (대부분의 오류 잠금) 칩을 프로그래밍하기위한 안전 수단으로 만 사용할 수 있습니다. 이론적으로이됩니다 만 아무 것도 읽을 수없는 장치를 프로그래밍하는 것을 의미했다. 그리고 나는 읽을 수있는 악용에 대해 들어 본 적이 없다.
부트 로더 업그레이드를 위해 (때로는) HV 프로그래밍 인터페이스 헤더를 내장 할 것입니다. 그러나 누군가 HV 프로그래머를 사용하여 플래시를 읽을 수 있습니까? HV 프로그래머가 ISP / Jtag가 비활성화되어 있어도 칩을 지울 수 있다는 것을 알고 있습니다.
나는이 생각 할 수 부트 로더를 통해 잠금 플래시, (아마도 내부 쓰기 플래그 및 / 또는 ISR 함께 할 수있는 뭔가 ???)를 업데이트 할 수있는 방법이 될하지만 내 노트를 검색해야하고, 어쩌면 그것을 테스트해야합니다. ~ 20 시간 동안이 작업을 수행 할 수 없습니다. 따라서이 문제 와 언급 한 프로세서에만 중점을 둔 새로운 질문 을 하는 것이 좋습니다 . 아주 좋은 질문입니다 !
LB1
와 LB2
나는 또한 업그레이드를 목적으로 부트 로더를 사용하는 옵션을 제한하는 내 질문에 설명한다. 따라서 옵션이 아닙니다. 에 관해서 BLB12
와 BLB11
이해가 안 무엇을 그 -. (계속)
일부 ATMega 장치에서 잠금 비트를 사용하고 부트 로더로 코드를 업데이트 할 수 있습니다.
ATMega 328에서 LB1과 LB2를 프로그래밍했습니다. 그런 다음 부트 로더를 호출하고 기본 프로그램을 업데이트했습니다. 모두 완벽하게 작동했습니다.
ISP는 플래시 / eeprom / 퓨즈를 읽거나 쓸 수 없지만 부트 로더는 여전히 애플리케이션 섹션을 쓸 수 있습니다.
ISP의 칩 삭제는 잠금 비트 (LB1 및 LB2)를 지우고 전체 플래시 / eeprom을 지우므로 코드를 보호 할 수 있습니다 (그러나 부트 로더가 해킹되지 않도록해야 함)