44 votes

Existe-t-il un système de contrôle de version crypté?

Je recherche un système de contrôle de version crypté. En gros je voudrais

  • Tous les fichiers doivent être chiffrés localement avant d’être envoyés au serveur. Le serveur ne doit jamais recevoir aucun fichier ni aucune donnée non cryptée.

  • Chaque autre fonctionnalité devrait fonctionner à peu près de la même manière que SVN ou CVS aujourd'hui.

Quelqu'un peut-il recommander quelque chose comme ça? J'ai fait beaucoup de recherches mais je ne trouve rien.

47voto

Chris Thornton Points 11083

Vous devez chiffrer le canal de données (ssl/ssh) au lieu de cela, et de sécuriser l'accès au serveur. Crypter les données de la force de SVN pour essentiellement de traiter le tout dans un fichier binaire. Il ne peut pas faire toute la diff, donc il ne peut pas stocker les deltas. Cela va à l'encontre de l'objectif d'un delta de l'approche fondée sur les.
Votre référentiel permettrait d'obtenir un très grand, très rapidement. Si vous téléchargez un fichier de 100 ko et puis changement de 1 octet et d'archivage de nouveau, faire 8 fois plus (10 tours au total), le référentiel serait de stocker 10 * 100 kb, au lieu de 100k + 9 petits deltas (appelons ça de la 101kb).

Mise à jour: @TheRook explique qu'il est possible de faire des deltas avec chiffré référentiel. Ainsi, il peut être possible de le faire. Cependant, mon premier conseil est: il n'en vaut pas la peine, et vous êtes mieux avec le cryptage ssl/ssh pipe et sécuriser le serveur. c'est à dire les "meilleures pratiques".

16voto

Rook Points 34698

Il est possible de créer un système de contrôle de version de texte chiffré. L'idéal serait d'utiliser un chiffrement de flux comme RC4-drop1024 ou AES-OFB mode. Aussi longtemps que la même clé+iv est utilisé pour chaque révision. Cela signifie que le même GÉNÉRATEUR de flux est généré chaque fois et puis XOR ed avec le code. Si un octet est différent, alors vous avez un déséquilibre et le texte chiffré son auto sera fusionné normalement.

Un algorithme de chiffrement par bloc en mode ECB pourrait aussi être utilisé, où le moindre discordance serait à 1 pâté de maisons de la taille, de sorte qu'il serait idéal d'utiliser de petits blocs. Le mode CBC sur l'autre main peut produire de très différents du texte chiffré pour chaque révision, et donc n'est pas souhaitable.

Je reconnais que ce n'est pas très sécurisé, de l'OPA et de la BCE modes ne devrait normalement pas être utilisé comme elles sont plus faibles qu'en mode CBC. Le sacrifice de la IV est également indésirable. De plus, il n'est pas clair de quelle attaque est défendu contre. Où que l'utilisation de quelque chose comme SVN+HTTPS est très commun et aussi sécurisé. Mon post est simplement en indiquant qu'il est possible de le faire efficacement.

12voto

John Weldon Points 19132

Pourquoi ne pas configurer votre repo (subversion, mercurial, etc.) sur un système de fichiers chiffré et utiliser ssh uniquement pour vous connecter?

10voto

David Cary Points 1678

Utilisation rsyncrypto pour crypter les fichiers à partir de votre texte en clair répertoire de votre répertoire chiffré, et décrypter des fichiers à partir de votre répertoire chiffré et votre texte en clair répertoire, en utilisant les touches que vous gardez à l'échelle locale.

Utilisez votre favori système de contrôle de version (ou tout autre système de contrôle de version -- svn, git, mercurial, peu importe) à synchroniser entre votre chiffré répertoire de l'hôte distant.

Le rsyncrypto mise en œuvre, vous pouvez télécharger maintenant à partir de Sourceforge ne traite pas uniquement des changements en octets, mais aussi des insertions et des suppressions. Il met en œuvre une approche très similaire à l'approche que que "La Tour", mentionne le.

Un octet des insertions, des suppressions et des modifications dans un fichier texte en clair causent généralement rsyncrypto de faire quelques K de complètement différent, le texte chiffré autour du point correspondant dans la version chiffrée de ce fichier.

Chris Thornton souligne que le ssh est une bonne solution; rsyncrypto est très différente de la solution. Le compromis est:

  • à l'aide de rsyncrypto nécessite le transfert d'un peu de K pour chaque "trivial" le changement plutôt que d'un demi-K il faudrait à l'aide de ssh (ou sur un non chiffré du système). Donc ssh est légèrement plus rapide et nécessite peu moins "diff" d'espace de stockage que rsyncrypto.
  • l'utilisation de ssh et un standard VCS nécessite que le serveur (au moins temporairement) à avoir les clés et décrypter les fichiers. Avec rsyncrypto, toutes les clés de chiffrement ne jamais laisser l'ordinateur local. Donc rsyncrypto est un peu plus sécurisé.

5voto

Commodore Jaeger Points 11949

Vous pouvez utiliser une grille Tahoe-LAFS pour stocker vos fichiers. Tahoe étant conçu comme un système de fichiers distribué, et non comme un système de gestion de versions, vous devrez probablement utiliser un autre schéma de gestion des versions en plus du système de fichiers.

Edit: Voici un prototype d’extension qui utilisera Tahoe-LAFS comme stockage principal pour Mercurial .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X