versiones ventajas usar usados tipos subversion son software sistemas sistema qué programas para mas los cuáles control centralizado security svn version-control encryption

security - ventajas - ¿Hay un sistema de control de versiones encriptadas?



¿cuáles son los tipos de sistema control de versiones? (13)

Variante A

Utilice un VCS distribuido y cambios de transporte directos entre diferentes clientes a través de enlaces cifrados. En este escenario, no hay un servidor central atacable.

Por ejemplo, con mercurial puede usar el servidor web interno y conectar los clientes a través de VPN. O puede agrupar los conjuntos de cambios y distribuirlos con correos cifrados.

Variante B

Puede exportar una partición de disco duro cifrada a través de la red y montarla en el lado del cliente, y ejecutar el VCS en el lado del cliente. Pero este enfoque tiene muchos problemas, como:

  • posible pérdida de datos cuando dos clientes diferentes intentan acceder al VCS al mismo tiempo
  • el enlace en sí debe estar protegido contra el acceso de escritura fraudulento (cuando la partición se comparte a través de NFS, es muy probable que finalice con una configuración en la que cualquiera pueda escribir en la partición compartida, incluso cuando los demás no puedan leer el contenido, hay un agujero para destruir el contenido fácilmente)

También puede haber otros problemas con la variante B, así que olvídate de la variante B.

Variante C

Al igual que @Commodore Jaeger escribió, use un VCS encima de un sistema de archivos de red compatible con encriptación como AFS .

Estoy buscando un sistema de control de versiones encriptadas. Básicamente me gustaría

  • Haga que todos los archivos se encripten localmente antes de enviarlos al servidor. El servidor nunca debe recibir ningún archivo o datos sin cifrar.

  • Todas las demás características deberían funcionar de la misma manera que SVN o CVS hoy en día.

¿Alguien puede recomendar algo como esto? Hice muchas búsquedas, pero no puedo encontrar nada.


¿Has pensado en usar Duplicity? Es como rdiff-backup (copias de seguridad delta) pero encriptado? No es realmente el control de versiones, pero tal vez quieras todas las cosas increíbles pero no quieras trabajar con nadie más. O bien, simplemente presione / tire desde un archivo local de Truecrypt y rsyncíelo a una ubicación remota. rsync.net tiene una buena descripción de ambos: http://www.rsync.net/resources/howto/duplicity.html http://www.rsync.net/products/encrypted.html. Aparentemente, los contenedores Truecrypt todavía rsync.


¿Por qué no configura su repositorio (subversión, mercurial, lo que sea) en un sistema de archivos encriptado y usa ssh solo para conectarse?


¿Sobre qué estás tratando de protegerte específicamente?

Use Subversion ssh o https para el acceso de repos. Use un sistema de archivos encriptado en los clientes.


De forma similar a algunos comentarios anteriores, una solución útil puede ser encriptar y comprimir todo el repositorio localmente y sincronizarlo con el cuadro remoto. Por ejemplo, al usar git, todo el repositorio se almacena en el directorio ''.git'' dentro del directorio del proyecto.

  • comprimir / encriptar todo el directorio del proyecto
  • subirlo a un servidor (no estoy seguro de si manejar .git solo es suficiente)
  • antes de continuar trabajando en el proyecto, descargue este archivo
  • descifrar / descomprimir y sincronizar con git (localmente)

Esto se puede hacer con un script de línea de shell simple más cómodo.

pro: puede usar cualquier encriptación que sea apropiada, así como también cada VCS que admita repositorios locales.

Contras: carece evidentemente de algunas características de VCS cuando varias personas desean cargar su código base (la situación de fusión), aunque, tal vez, esto podría solucionarse evitando sobreescribir de forma remota y fusionar localmente (lo que introduce bloqueo, aquí es donde comienza la pesadilla)

Sin embargo, esta solución es un truco, no una solución adecuada.



En mi opinión esto no se puede hacer, porque en SVN y otros sistemas de control de versiones, el servidor necesita acceso al texto plano para realizar el control de versiones.


En su lugar, debe cifrar el conducto de datos (ssl / ssh) y asegurar el acceso al servidor. Al encriptar los datos, forzaría a SVN a tratar esencialmente todo como un archivo binario. No puede hacer ningún diff, por lo que no puede almacenar deltas. Esto frustra el propósito de un enfoque basado en delta.
Su repositorio sería enorme, muy rápido. Si carga un archivo de 100kb y luego cambia 1 byte y vuelve a registrarlo, hágalo 8 veces más (10 revoluciones en total), el depósito estaría almacenando 10 * 100kb, en lugar de 100kb + 9 pequeños deltas (llamémoslo 101kb).

Actualización: @TheRook explica que es posible hacer deltas con el repositorio encriptado. Entonces puede ser posible hacer esto. Sin embargo, mi consejo inicial es: no vale la pena la molestia, y es mejor cifrar el conducto ssl / ssh y proteger el servidor. es decir, "mejores prácticas".


Es posible crear un sistema de control de versiones de texto cifrado. Sería ideal usar un cifrado de flujo como el RC4-drop1024 o el modo AES-OFB. Siempre que se use la misma clave + iv para cada revisión. Esto significará que se generará el mismo flujo de PRNG cada vez y luego XOR''ed con el código. Si algún byte individual es diferente, entonces tiene una discrepancia y el texto cifrado se fusionará normalmente.

También se podría usar un cifrado de bloques en modo ECB, donde el desajuste más pequeño sería de 1 bloque de tamaño, por lo que sería ideal usar bloques pequeños. El modo CBC, por otro lado, puede producir texto de cifrado muy diferente para cada revisión y, por lo tanto, no es deseable.

Reconozco que esto no es muy seguro, los modos OFB y ECB normalmente no deberían usarse ya que son más débiles que el modo CBC. El sacrificio de la IV también es indeseable. Además, no está claro de qué ataque se defiende. Donde usar algo como SVN + HTTPS es muy común y también seguro. Mi publicación simplemente dice que es posible hacerlo de manera eficiente.


La fuente segura almacena datos en archivos cifrados. Espera, lo retiro. Están ofuscados. Y no hay otra seguridad más que una puerta de entrada a la ofuscación.

Vamos, es lunes.


Puede usar una cuadrícula Tahoe-LAFS para almacenar sus archivos. Como Tahoe está diseñado como un sistema de archivos distribuido, no como un sistema de control de versiones, probablemente necesite usar otro esquema de control de versiones sobre el sistema de archivos.

Editar: Aquí hay una extensión prototipo para usar Tahoe-LAFS como almacenamiento de back-end para Mercurial .


SVN tiene soporte integrado para transferir datos de forma segura. Si usa svnserve, puede acceder de forma segura con ssh. Alternativamente, puede acceder a él a través del servidor Apache usando https. Esto se detalla en la documentación de svn .


Use rsyncrypto para cifrar archivos de su directorio de texto plano a su directorio cifrado, y descifre los archivos de su directorio encriptado y su directorio de texto plano, usando claves que guarde localmente.

Use su sistema de control de versiones favorito (o cualquier otro sistema de control de versiones - svn, git, mercurial, lo que sea) para sincronizar entre su directorio encriptado y el host remoto.

La implementación de rsyncrypto que puede descargar ahora desde Sourceforge no solo maneja los cambios en bytes, sino también las inserciones y eliminaciones. Implementa un enfoque muy similar al enfoque que menciona "La Torre".

Las inserciones de un solo byte, las eliminaciones y los cambios en un archivo de texto sin formato suelen hacer que rsyncrypto genere unos pocos K de texto encriptado completamente diferente alrededor del punto correspondiente en la versión cifrada de ese archivo.

Chris Thornton señala que ssh es una buena solución; rsyncrypto es una solución muy diferente. La compensación es:

  • el uso de rsyncrypto requiere transferir unas pocas K por cada cambio "trivial" en lugar de la mitad-aK que tomaría usar ssh (o en un sistema no encriptado). Entonces, ssh es ligeramente más rápido y requiere un almacenamiento "diff" ligeramente menor que rsyncrypto.
  • El uso de ssh y un VCS estándar requiere que el servidor (al menos temporalmente) tenga las claves y descifre los archivos. Con rsyncrypto, todas las claves de cifrado nunca salen de la computadora local. Entonces rsyncrypto es un poco más seguro.