Cómo cifrar código de software

Para cifrar el código de software, el certificado de firma de código se usa en todo el mundo.

¿Por qué el certificado de firma de código?

Cuando firma el código de software con el certificado de firma de código, se garantiza que el código no se haya modificado, por lo que no habrá ningún daño en distribuir el software por Internet.

Cuando desarrolle su Software y lo distribuya por Internet (sin firmar)

  • Cualquiera puede descargar ese software.
  • Hacker descargará su software e intentará buscar sus códigos fuente …
  • Pueden agregar códigos maliciosos y volver a desarrollarlos nuevamente.
  • Ahora distribuirán ese software templado a través de Internet utilizando algunos foros, blogs, redes sociales y otras plataformas.
  • Y cuando el usuario descarga e instala este software malicioso, el código malicioso puede extenderse al sistema del usuario y puede dañar su sistema.
  • Esto tendrá un impacto negativo, la reputación del software será baja.

Por lo tanto, siempre es mejor firmar el código del software antes de distribuirlo por Internet.

Cuando un usuario intenta instalar el software firmado , el sistema mostrará una alerta según la siguiente imagen …

Aquí, el sistema mostrará el nombre del editor (su nombre) con URL. Cuando el usuario haga clic en ese enlace, se mostrará la información del Certificado y del desarrollador del software. Esto demuestra que su software es genuino y confiable por una Autoridad de Certificación de Firma de Código legítima.

Durante la instalación del Software, el SO mostrará Publisher como Desconocido si el Software no está firmado.

El certificado de firma de código está disponible para desarrolladores de software empresarial e individual. Las autoridades de certificación como Comodo, Symantec, Thawte están ofreciendo Code Signign.

Lecturas importantes de firma de código

  • Por qué la firma de código es importante para los desarrolladores de software
  • Comprender el certificado de firma de código en detalles
  • ¿Dónde comprar el certificado de firma de código?

Video: Introducción a la firma de código por Symantec (empresa)

Un certificado de firma de código es la solución ideal para proteger su código. Un certificado de firma de código permite a los desarrolladores de TI firmar digitalmente su software antes de distribuirlo en la Web. El uso más común de la firma de código es proporcionar seguridad durante la implementación; en algunos lenguajes de programación Autentica la fuente y la integridad de tu código.

Beneficios del certificado de firma de código

  • Firme digitalmente Ejecutable portátil de 32 o 64 bits
  • Crear un punto de venta confiable
  • Garantizar autenticidad e integridad
  • Protege el software de la manipulación
  • Protege la integridad del editor de software.
  • Compatible con todas las plataformas principales

Recurso útil

El sello de confianza y aprobación

Firma de código

Certificado de firma de código

si no está utilizando un lenguaje de programación del sistema como java, C, C ++ que genera binarios. definitivamente puede ocultar / codificar / cifrar el código fuente y ‘otros’ pueden instalarlo en su máquina. Puede usar las siguientes herramientas para lograr lo mismo.

para PHP

  • Guardia Zend
  • IonCube
  • SourceGuardian
  • phpSHIELD

HTMl, CSS y JavaScript no pueden ser cifrados ya que el navegador debe leerlo como texto sin formato. Lo mejor que puedes hacer es ofuscarlo.

python: – use ofuscar su código de Python.

Cifrar y descifrar dinámicamente el código es la parte fácil: incluso en el código de máquina, todo es solo un montón de bytes; puede hacer lo que quiera con ellos (siempre y cuando notifique al sistema operativo sus intenciones). Por ejemplo, mira esto: la respuesta de Vladislav Zorov a C (lenguaje de programación): ¿Puedes escribir un programa en C para demostrar un código auto modificable?

Ocultar la clave de cifrado es mucho más difícil. Hay esquemas criptográficos especiales para eso, llamados criptografía de caja blanca: la idea es que la clave no se almacena como datos, sino que está implícita en la estructura de un código complejo.

Por supuesto, eso no sirve de nada si solo puede ejecutar el programa hasta que se haya descifrado, y luego volcar todo. Por lo tanto, debe descifrar, ejecutar y volver a cifrar continuamente.

Como impedimento adicional, puede crear su propia CPU, con un conjunto de instrucciones diseñado para ser particularmente obtuso. Y luego solo compile el programa para eso, y haga que se ejecute en una máquina virtual.

También habrá mecanismos para detectar la ejecución en un depurador o máquina virtual, para dificultar el análisis de código dinámico.

Por supuesto, nada de lo anterior realmente funciona, solo hace que la ingeniería inversa sea más lenta y dolorosa. Si hubiera una solución, tendríamos DRM en funcionamiento, y claramente no.

PD: Supongo que realmente no quieres decir “código fuente”, sino solo “código”. El código fuente generalmente no se incluye con la aplicación, excepto en el software de código abierto / libre, donde evitar que las personas lo vean es exactamente lo contrario de lo que está tratando de hacer.

Si su objetivo es proteger el código fuente, dependiendo de si el idioma se interpreta o compila, existen muchas herramientas para ofuscar la fuente o dificultar la descomposición en algo útil para realizar ingeniería inversa.

Sin embargo, esta protección solo llega hasta cierto punto porque, en última instancia, todo el software debe enviarse a la CPU como una serie de códigos de conjunto de instrucciones que definitivamente no son secretos. Por su propia definición, el “software” existe como un binario legible y modificable. Por lo tanto, incluso los códigos de instrucción sin procesar se pueden examinar y alguien podría descubrir lo que está haciendo con suficiente tiempo y esfuerzo.

Dicho esto, hay algunas técnicas interesantes para proteger el software y decodificarlo en procesadores especialmente diseñados. También se está llevando a cabo una investigación de vanguardia en criptografía para “cifrar la ejecución” del software en sí, donde teóricamente sería imposible averiguar qué haría el software, sin importar cuánto tiempo pase alguien examinándolo.

Si no tiene que publicar el código fuente, no lo haga. Solo publique binarios compilados.

De lo contrario, publique un hash del código firmado digitalmente con su clave privada y publique su clave pública. Esa es la forma en que se protege el código fuente de RedHat (y sus binarios). No está protegido contra la manipulación. pero es a prueba de manipulaciones. Si alguien calcula el hash de código que ha sido manipulado, no coincidirá.

Normalmente, no lo harías. Le sorprenderá, pero el código fuente por sí solo no tiene valor. Podría obtener el código fuente para la Búsqueda de Google mañana, y no podría hacer exactamente nada con él, porque no tiene ni la infraestructura, a la que está sintonizado el código, ni la experiencia para comprender, por qué el código se desarrolló de cierta manera (en en otras palabras, no podrás mantenerlo). Y aunque admitiré que este es un ejemplo extremo, es válido para cualquier otro código no trivial.

Ahora, si por casualidad no entendí bien la pregunta, y solo estás interesado en asegurarte de que tu código no se cambie mientras no estabas buscando, entonces … Solo usa el control de versiones, supongo, por ejemplo, Git.