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