똑똑한 사람이 항상 먼저 결승점에 도달하지는 않는다는 말이 있습니다. 대학 시절, 몇몇 동기들이 제 과제를 베껴서 오히려 저보다 더 좋은 점수를 받는 경우를 기억합니다. 똑똑함이 대학에서 최고 성적을 보장해주지 않았고, 제 아이디어를 바탕으로 다른 사람들이 성공하는 것을 보는 것은 사기 저하가 되었습니다.
비즈니스 세계도 비슷합니다; 경쟁사가 잘하는 개념을 복사하여 시장을 지배하는 것은 드문 일이 아닙니다. 윤리적으로 의심스러울 수 있지만, 가짜 디자인은 사실 꽤 흔합니다. 디자인 엔지니어로서, 제 디자인을 위조하기 어렵게 만드는 것이 제 일입니다.
전체 PCB를 에폭시로 코팅하는 것을 제외하고, 가능한 모든 방법을 시도해 보았습니다. 이는 내 하드웨어의 정확한 복제본을 만들어 작동시키는 것을 불가능하게 만드는 고유 ID EEPROM(전기적으로 지워서 다시 프로그램 가능한 읽기 전용 메모리) 사용을 포함합니다. 고유 ID EEPROM을 내장 시스템에 포함시킴으로써, 여러분도 최악의 시나리오에 대비하고 디자인 위조를 방지할 수 있습니다.
EEPROM은 작은 데이터 크기를 저장하는 데 유용한 비휘발성 메모리 유형입니다. 보통 Inter-Integrated Circuit (I2C) 또는 Serial Peripheral Interface (SPI)를 통해 마이크로컨트롤러에 연결됩니다. EEPROM은 수십 년 동안 전자 분야에서 사용되어 왔으며, 구성 값과 같은 매개변수를 저장하는 데 사용됩니다.
고유 ID EEPROM은 지울 수 없는 ID를 가진 EEPROM입니다. 고유 ID의 길이는 제조업체에 따라 32비트에서 128비트까지 다양합니다. 이론적으로 두 EEPROM이 동일한 ID를 공유할 가능성은 현실적으로 없습니다. 이는 인터넷이 가능한 장치의 고유한 Media Access Control (MAC) 주소 개념과 유사합니다.
완전히 보호되지 않은 임베디드 시스템에서는 PCB를 역설계하고 마이크로컨트롤러에서 펌웨어를 추출하여 위조 모델을 쉽게 만들 수 있습니다. 물론, 코드 보호 기능이 활성화되어 있어도 펌웨어를 복제하는 것이 여전히 가능할 수 있지만, 더 어려워집니다.
디자인에 고유 ID EEPROM을 포함시키고 펌웨어에서 검증 절차를 구현함으로써 대량 위조를 방지할 수 있습니다. 이것이 제가 임베디드 시스템에서 구현하는 방법입니다:
EEPROM에서 고유 ID를 읽어 SD 카드 내의 파일에 저장하는 간단한 펌웨어를 생성합니다. 이 펌웨어는 고유 ID를 검색하는 것만을 목적으로 하며, 나중에 실제 애플리케이션 펌웨어에 의해 덮어쓰여집니다.
위조 프로그램의 로딩을 방지하기 위해 고유 ID를 확인합니다.
그 다음, 애플리케이션 펌웨어에 특별한 함수를 생성하여 파일에서 고유 ID를 추출하고 그 값을 마이크로컨트롤러의 내부 플래시 메모리에 쓰도록 합니다. 마이크로컨트롤러는 SD 카드에 저장된 파일을 안전하게 저장한 후 삭제해야 합니다.
실제 애플리케이션 펌웨어에서는 PCB의 EEPROM 고유 ID와 마이크로컨트롤러 플래시 메모리에 하드코딩된 EEPROM ID를 비교 검증하는 함수를 생성합니다. 이를 통해 특정 PCB에서 올바른 하드코딩된 고유 ID를 가진 컴파일된 펌웨어만이 작동하도록 합니다.
어떤 설계에서든 보안과 편의성은 항상 스펙트럼의 양 끝에 있습니다. 귀하의 위조 방지 방법의 실행 가능성은 귀하의 애플리케이션의 성격과 위조가 귀하의 비즈니스에 미치는 예상 영향에 따라 달라집니다.
고유 ID 검증의 명백한 장점은 귀하의 임베디드 시스템이 대량으로 위조될 수 없다는 것입니다. 펌웨어가 추출되더라도 여러 PCB에 주입하더라도 어떤 장치도 작동하게 되지 않습니다. 마이크로컨트롤러를 자가 파괴하게 하는 것 외에, 이것은 내가 구현한 가장 안전한 보호 조치입니다.
이 방법의 단점은 고유 ID 추출 펌웨어를 다운로드하고 SD 카드를 사용하는 것을 포함하기 때문에 생산 과정이 훨씬 느려질 것입니다. 고유 ID가 저장된 후에는 생산 기술자가 애플리케이션 펌웨어를 주입해야 합니다. 더욱이, 고유 ID EEPROM은 일반적인 것들보다 훨씬 비쌉니다.
펌웨어 주입의 길지만 안전한 과정을 기대하세요.
위조의 결과가 귀하의 비즈니스에 중대한 우려사항이라면, 고유 ID EEPROM을 배치하는 것이 설계를 보호하는 최선의 방법입니다. 이는 PCB 설계 소프트웨어인 Altium Designer®와 같은 다재다능한 소프트웨어를 사용하여 설정하기 쉽습니다. 통합된 고유 ID EEPROM이 즉시 사용 가능하지 않은 경우, 표준 풋프린트를 사용하여 쉽게 하나를 생성할 수 있습니다.
임베디드 시스템 설계를 위조로부터 보호하는 데 대한 더 많은 팁이 필요하십니까?