Sello de tiempo blockchain para equipos de software
Por BlockchainSignÚltima actualización
El control de versiones te da un historial detallado y una fecha débil. Los sellos de tiempo de los commits los escribe tu máquina y un rebase producirá cualquier historial que quieras. Para cualquier cosa que pueda servir como evidencia, eso es un problema que vale diez dólares.
La laguna en tu historial existente
Git registra mucho, con precisión, para fines de ingeniería. Como evidencia tiene una debilidad específica: las fechas las escribes tú.
git commit --date, un rebase interactivo, un cambio en el reloj — cualquiera de estos produce un historial que parece completamente normal y dice lo que quieras. Eso está bien internamente. Frente a un oponente motivado no es mucha afirmación, y la misma debilidad juega en tu contra cuando eres tú quien se defiende.
Los propios sellos de tiempo de un repositorio alojado son mejores, pero pertenecen a una plataforma, pueden perderse con una cuenta y no son verificables independientemente por alguien externo a ella.
Qué anclar
Versiones (Releases). El hash de un archivo de lanzamiento o un paquete del repositorio, sellado en el tiempo en cada lanzamiento. Eso da un registro fechado y a prueba de manipulaciones de exactamente qué se envió, lo cual es útil en una reclamación por infracción e igualmente útil al defenderla: demostrar que tu versión es anterior al código del que te acusan de copiar es la misma operación al revés.
Estados previos a la divulgación. Antes de que el código vaya a un cliente, un auditor, un comprador o un agente de depósito. El hash se calcula en tu navegador y solo se transmite el hash, lo cual importa cuando el código es el secreto comercial — véase marca vs derechos de autor para código fuente para entender por qué el secreto suele ser la protección que realmente hace el trabajo.
Documentos de diseño y arquitectura. Frecuentemente los artefactos más valiosos y menos protegidos que tiene un equipo.
Instantáneas de datos. Cuando necesitas mostrar que un conjunto de datos estaba en un estado particular en un momento particular.
Cómo hacerlo en la práctica
Haz el hash del artefacto, no del árbol de trabajo. El patrón fiable es un archivo determinista:
git archiveogit bundlepara un estado del repositorio- Un artefacto de compilación para una versión
- Un tarball para un directorio, con orden reproducible si quieres que el hash sea repetible
Luego sella ese archivo en el tiempo. Guarda el certificado con la versión y anota la etiqueta a la que corresponde. Cualquiera puede volver a crear el archivo, hacerle el hash y compararlo con el registro.
Por qué no se sube nada
Para código propietario el requisito de confidencialidad es absoluto, y un servicio de sello de tiempo que quiera el archivo es un servicio que no puedes usar.
Aquí el archivo se hashea en tu navegador con la Web Crypto API y solo se transmite el hash SHA-256 de 64 caracteres. No hay ningún punto final que acepte el artefacto. Si prefieres generar el hash tú mismo, la herramienta de hash gratuita lo hace localmente, y produce una salida idéntica en bytes a shasum -a 256.
Qué demuestra
Que el artefacto existía para entonces y no ha cambiado. No demuestra quién lo escribió, no es una patente y no registra derechos de autor — véase prueba de existencia vs prueba de autoría.
Los derechos de autor sobre tu código surgen automáticamente. Lo que normalmente te falta es una fecha incuestionable, y esa es la laguna específica que esto cubre.