No, esto no es posible. No en Linux y no en ningún otro entorno informático. No es una limitación de Linux, es una limitación de la física.
Si ejecuta su código en la computadora de otra persona ... es su computadora, por lo que controlan lo que se ejecuta en ella. Si tienen su código, pueden verlo ejecutarse, inspeccionar su memoria, hacer que haga cosas diferentes si lo desean. Pueden ejecutar su código en una máquina virtual para facilitar la depuración. Puede intentar detectar eso, pero haga lo que haga, pueden omitirlo si le dan a su programa las respuestas correctas, si están lo suficientemente motivadas.
Intel SGX funciona porque cuando compro un procesador con SGX, no es realmente mi computadora, es parcialmente una computadora de Intel. Intel retiene el control sobre el software que se ejecuta en el enclave SGX. Usted envía el código encriptado y firmado con una clave que pertenece a Intel; El enclave SGX descifra y verifica el código con una clave a la que solo puede acceder el enclave. El enclave no me pertenece, pertenece a Intel, por lo tanto, si no desea que su código tenga ingeniería inversa, solo debe confiar en Intel y no en mí. Solo recibo un blob encriptado de ti y no puedo ejecutarlo en otro lugar porque no puedo descifrarlo.
Puede usar SGX para aplicaciones que requieren E / S. Solo tiene que dividir su aplicación en dos partes: la parte confiable que se ejecuta en SGX y la parte de la interfaz de usuario (y el backend de almacenamiento) que se ejecuta fuera.
Tenga en cuenta que las defensas contra la ingeniería inversa son muy costosas (en términos de depuración y costos de soporte, así como el tiempo de desarrollo y la pérdida de rendimiento). La ingeniería inversa y la modificación de un programa son caras; Por lo general, es más económico pagarle por hacer la modificación que hacerlo y mantenerlo internamente.