
Raspberry-Pi와 같은 미니 컴퓨터를 사용하고 Linux OS를 사용하여 로봇을 만들고 싶습니다. 내 생각에 해당 보드(RPi, NanoPi 등)에는 OS를 부팅할 외부 SD 카드가 있고 내 코드는 거기(SD 카드)에 저장됩니다. 그렇다면 내 코드를 복사하려는 사람으로부터 코드를 보호하려면 어떻게 해야 할까요?
내 코드에서는 CMUsphinx, Opencv 등을 사용하여 작성된 프로그램을 의미합니다.
어쨌든 하나의 지정된 보드에 대해 각 SD 카드를 지정할 수 있습니까? 즉, SD 카드 no.1은 보드 no.1에서만 실행됩니다.
아니면 하나의 알고리즘을 사용하고 실행하려면 일치해야 하는 숨겨진 코드를 보드와 SD 카드에 넣을 수도 있습니다.
답변1
장치에 물리적으로 접근할 수 있는 사람이 코드를 복사하는 것을 방지할 수 없습니다. 보드가 귀하의 코드를 읽을 수 있다면 다른 사람도 읽을 수 있습니다.
코드 복사를 방지하려면 변조 방지 저장소가 있는 장치를 사용해야 합니다. 이러한 하드웨어가 존재하지만 가격 범위가 더 높습니다.
코드에 테스트를 추가하여 일부 하드웨어 식별자를 확인하고 다른 하드웨어 장치에서 실행 중인 경우 시작을 거부할 수 있습니다. 이로 인해 실행이 불가능해집니다.정확한직접 복사할 수 있지만 코드를 변경하여 검사를 우회하거나 코드에 예상되는 하드웨어 식별을 제공하는 가상화된 환경에서 실행하는 것은 여전히 쉽습니다. 기본적으로 이는 정직한 사람들을 정직하게 유지하는 방법이지만 코드를 복사하려는 사람을 단념하지는 않습니다.
답변2
데이터를 보호하려면 물리적으로 보호하고 제어할 수 있으며 비밀 데이터와 별도로 분리할 수 있는 모든 종류의 키가 있어야 합니다. 두뇌 속 비밀번호는 그러한 솔루션의 예입니다. 비밀번호는 소유자가 암기하여 물리적으로 보호합니다.
암호로는 소프트웨어를 해독하고 해당 방식으로 실행할 수 있는 바코드가 있는 종이 조각과 같이 슈퍼 로봇에 대한 시각적 토큰이 있을 수 있습니다. 물론 openvc와 스크립트의 도움으로 생성을 종료하는 데 동일한 종이가 사용될 수 있으므로 고려해 볼 가치가 있습니다.
덜 실용적이지만 구현하기 쉬운 방법은 2개의 SD 카드를 갖는 것입니다. 하나는 키를 포함하고 시스템을 부팅하는 데 사용되며 sd카드를 변경할 때까지 기다린 후 계속 부팅됩니다.
당신은 방법을 조사해야합니다initramfs전체 시스템을 부팅하는 데 사용됩니다. 만드는 방법을 살펴 봐야합니다.사용자 정의 initramfs, 메인 시스템에 두 번째 카드 마운트를 대기하고 해독하기 위한 초기화 스크립트를 수정할 수 있습니다.
시스템은 완벽하지는 않지만 더럽고 저렴합니다.
또한 initramfs 솔루션일 필요는 없습니다. 일부 USB 드라이브에서 실행 코드를 램디스크로 복사하는 것과 같은 솔루션을 사용할 수도 있습니다. 이 USB 드라이브는 생성을 시작할 목적으로만 삽입하고 활성화되기 시작하면 제거합니다.
하나의 미디어에 비밀과 키가 있으면(영리한 트릭, 숨겨진 것 등) 리버스엔지니어링이 가능합니다.
나로서는 initramfs 솔루션을 만드는 데 더 적은 노력이 필요하고 사용자 정의 initramfs를 만드는 방법에 대한 많은 정보가 필요합니다.