• # Il suffirait de ne pas télécharger l'oeuvre

    Posté par . En réponse au journal P2P : Partager un morceau, c'est partager l'œuvre complète. Évalué à 6.

    Je ne connais pas trop le monde du P2P mais il me semble qu'il devrait être possible de faire en sorte qu'il ne soit pas possible de prouver que l'utilisateur a téléchargé le fichier. Par exemple, considérons 10 des fichiers Ai dont certains sont interdits et d'autres sont autorisés. Pour faire simple, je considère qu'ils ont tous la même taille. L'astuce consisterai à distribuer des fichiers Bi obtenus soit aléatoirement soit en combinant plusieurs Bi et un Ai. Dans l'idéal on s'assurera aussi que chaque fichier Bi est utilisé pour créer au moins un Ai legal. Voici un exemple avec des nombres 32bit représentant les fichiers à distribuer.

    #include <stdlib.h>
    #include <stdio.h>
    int main(void)
    {
     unsigned A[4] = {
     0xDEAA32EE, 0xF9942233, // valeurs interdites
     0x72DCAA3E, 0x2EFBDF29 // valeurs autorisées
     };
     printf("Valeurs à distribuer\n");
     for (int i=0;i<4;i++) {
     printf("A[%d] = %04X (%s)\n", i, A[i], (i>=2)?"illegal":"legal") ;
     }
     printf("Valeurs effectivement distribuées en P2P\n");
     unsigned B[9] ;
     B[0] = rand();
     B[1] = rand();
     B[2] = A[0] ^ B[1] ^ (~B[0]);
     B[3] = rand();
     B[4] = ~(A[3] ^ B[2] ^ B[3]);
     B[5] = rand();
     B[6] = A[2] ^ B[0] ^ B[5];
     B[7] = rand();
     B[8] = A[1] ^ B[3] ^ B[6] ^ B[4] ;
     for (int i=0;i<9;i++) {
     printf("B[%d] = %04X\n", i, B[i]) ;
     }
     printf("Formules publiques (ou pas)\n");
    #define compute(NAME, F) printf("%s = %s = (%04X)\n", NAME, #F, F)
     compute( "A[0]" , B[1] ^ (~B[0]) ^ B[2]);
     compute( "A[1]" , B[8] ^ B[3] ^ B[6] ^ B[4] ) ;
     compute( "A[2]" , B[0] ^ B[5] ^ B[6] ) ; 
     compute( "A[3]" , ~B[4] ^ B[2] ^ B[3] ) ;
     return 0;
    }

    -> résultat

    Valeurs à distribuer
    A[0] = DEAA32EE (legal)
    A[1] = F9942233 (legal)
    A[2] = 72DCAA3E (illegal)
    A[3] = 2EFBDF29 (illegal)
    Valeurs effectivement distribuées en P2P
    B[0] = 6B8B4567
    B[1] = 327B23C6
    B[2] = 78A5ABB0
    B[3] = 643C9869
    B[4] = CD9D130F
    B[5] = 66334873
    B[6] = 7F64A72A
    B[7] = 74B0DC51
    B[8] = 2F510E7F
    Formules publiques (ou pas)
    A[0] = B[1] ^ (~B[0]) ^ B[2] = (DEAA32EE)
    A[1] = B[8] ^ B[3] ^ B[6] ^ B[4] = (F9942233)
    A[2] = B[0] ^ B[5] ^ B[6] = (72DCAA3E)
    A[3] = ~B[4] ^ B[2] ^ B[3] = (2EFBDF29)

    Avec un tel systême, il serait difficile de prouver qu'un utilisateur a télécharger un fichier illégal de façon intentionnelle puisque les fichiers Bi sont aussi utilisés pour recréer des fichiers légaux. A priori, il n'y a aucun moyen de différencier les fichiers B[i] générés aléatoirement de ceux calculés avec une formule utilisant un fichier illégal. Interdire le partage de fichiers à priori aléatoires me semble difficile à justifier surtout si ils ont un usage légitime.