Cuando entregas un sistema operativo en las manos de tu atacante, no puedes evitar que lo realicen ingeniería inversa. No hay excepciones.
Pero con una distribución inteligente de claves y certificados, puede aliviar algunos de los problemas. Si cada usuario obtiene su propia clave y certificado (firmado por usted), entonces puede identificar de manera única a ese usuario por cualquier cosa que firme. Compartir su clave revelaría la identidad de la persona que la compartió.
Del mismo modo, al distribuir claves públicas para cifrar los datos salientes, puede limitar el descifrado solo a aquellas máquinas que poseen la clave privada asociada.
EN RESPUESTA AL COMENTARIO
solo necesito los datos estrictamente confidenciales de alguna manera almacenados en el disco duro cifrado y el descifrado solo debería ser posible a través de mi software.
Has perdido en "el descifrado solo debería ser posible a través de mi software" . Esto es absolutamente imposible al 100%. Lo que has descrito es, exactamente, DRM. Lea la la explicación de Cory Doctrow sobre esto hace casi una década. Algunas de las personas más inteligentes y con mayor motivación financiera han trabajado en esto, y continúan trabajando en esto hasta el día de hoy, y en ningún momento han funcionado. Porque no puede.
En su lugar, lo que puede hacer es hacer el descifrado solo en su servidor , o una solución similar. La forma (la ÚNICA) de evitar que el cliente descifre sus datos es no darle la clave . Lo que significa que él no puede ser el que lo descifra.