Skip to content
BlockchainSign
es

Sello de tiempo blockchain para equipos de software

Por Ú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 archive o git bundle para 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.

Preguntas frecuentes

¿Por qué no confiar simplemente en las fechas de git commit?
Porque son metadatos que escribe tu propia máquina. git commit --date, un rebase o un cambio en el reloj producirán cualquier historial que desees, y el resultado parece completamente normal. Eso es aceptable internamente y débil como evidencia — y la debilidad juega en tu contra cuando te defiendes, no solo cuando reclamas.
¿Qué exactamente debería sellar en el tiempo para una versión?
Un artefacto determinista en lugar de un árbol de trabajo: un git archive o git bundle del estado etiquetado, una salida de compilación, o un tarball con orden reproducible. Guarda el certificado junto con la versión y registra la etiqueta, para que cualquiera pueda volver a crear el archivo, hacerle el hash y compararlo con el registro.
¿Sale el código de nuestras máquinas?
No. El artefacto se hashea en tu navegador y solo se transmite el hash resultante de 64 caracteres; no hay ningún punto final que acepte el archivo. También puedes generar el hash tú mismo con cualquier herramienta estándar — el valor que añadimos es anclarlo a una transacción pública, no recibir nada.
¿En qué se diferencia esto de una etiqueta git firmada?
Una etiqueta firmada demuestra quién la creó y que el contenido no ha sido modificado, pero la fecha sigue siendo la que afirmó la máquina del firmante. Un ancla en el registro fija el tiempo de forma independiente. Los dos funcionan bien juntos: firma la etiqueta para autoría e integridad, sella el artefacto en el tiempo para la fecha.

Establece hoy la anterioridad de tu trabajo

Sella en el tiempo tu primer borrador y consigue una prueba inalterable de que ya existía. Tu archivo nunca sale de tu navegador.