Source-Code

如何保護我的機器人程式碼?

  • September 24, 2016

我想使用一些小型電腦(如 Raspberry-Pi)建構一個機器人,並在其上使用 Linux 作業系統。我認為那些板(RPi、NanoPi 等)有外部 SD 卡來啟動作業系統,我的程式碼會去那裡(在 SD 卡上)。那麼,我怎樣才能保護我的程式碼免受想要複製它的人的侵害呢?

從我的程式碼中,我的意思是我使用 CMUsphinx、Opencv 等編寫的程序。

有沒有為一個指定的板指定每張 SD 卡?我的意思是 SD 卡 nom.1 僅在 nom.1 上執行。

或者可能在使用一種算法並且應該匹配執行的板和 SD 卡上放置隱藏程式碼?

為了保護您的數據,您必須擁有任何類型的密鑰,您可以在物理上對其進行保護和控制,並且與您的秘密數據分開。你大腦中的密碼就是這種解決方案的一個例子——它由所有者物理地保護,通過記住它。

作為密碼,您的超級機器人可能有一些視覺標記,例如帶有條碼的紙,它可以解密您的軟體並允許它以這種方式執行。可能值得考慮,因為在 openvc 和腳本的幫助下,可能會使用同一張紙來關閉您的創作。

不太實用但更容易實現的方法是擁有 2 個 sd 卡,其中一個包含密鑰,用於引導系統,並等待您更改 sdcard 並在此之後繼續引導。

您應該研究如何使用initramfs引導整個系統。您應該了解如何創建自定義 initramfs,並能夠修改 init 腳本以等待和解密將您的第二張卡安裝到主系統。

系統並不完美,但又髒又便宜。

它也不必是 initramfs 解決方案,您可以使用解決方案,例如將可執行程式碼從某個 USB 驅動器複製到 ramdisk,您插入這些解決方案只是為了啟動您的創建,並在它開始存在時將其刪除。

當您在一種媒體上擁有秘密和密鑰(是那個聰明的技巧,隱藏的東西等)時,它可以被逆向工程。

至於我 initramfs 解決方案需要更少的努力,大量資訊如何製作自定義 initramfs。

您無法保護對設備具有物理訪問權限的人不複製您的程式碼。如果董事會可以閱讀您的程式碼,那麼其他任何人也可以。

為了保護程式碼不被複製,您需要使用具有一些防篡改儲存的設備。此類硬體存在,但價格較高。

您可以在程式碼中進行測試以驗證某些硬體標識符,如果在不同的硬體設備上執行,則拒絕啟動。這使得無法直接執行精確的副本,但仍然可以輕鬆更改程式碼以繞過檢查,或者在虛擬化環境中執行它,從而為您的程式碼提供它期望的硬體標識。基本上,這是一種讓誠實的人保持誠​​實的方式,但它不會阻止任何想要複製程式碼的人。

引用自:https://unix.stackexchange.com/questions/312035