95 votes

Protection du code source Java contre tout accès

La semaine dernière, j'ai dû créer une petite interface graphique pour les devoirs. Aucun de mes camarades d'école ne l'a fait. Ils ont volé le mien de l'endroit où nous devions le télécharger, puis ils l'ont à nouveau téléchargé comme étant le leur. Quand j'ai dit à mon professeur que c'était tout mon travail, il ne m'a pas cru.

Alors j'ai pensé à mettre une méthode inutile ou quelque chose à l'intérieur avec une preuve que je l'ai codée. J'ai pensé au cryptage. Ma meilleure idée jusqu'à maintenant:

 String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64
 

Pouvez-vous penser à d'autres meilleurs moyens?

103voto

Nick P Points 1057

J'ai eu le même problème que vous il y a longtemps. Nous avons eu des ordinateurs Windows 2000 et téléchargé des fichiers sur un réseau Roman de dossier que tout le monde pouvait voir. J'ai utilisé plusieurs astuces pour battre même le meilleur des voleurs: les espaces de filigrane; des métadonnées de filigrane; des caractères inhabituels; confiance horodatage; modus operandi. Voici dans l'ordre.

Les espaces en filigrane:

C'est ma contribution originale à filigrane. J'ai besoin d'un filigrane invisible qui a travaillé dans des fichiers texte. L'astuce que j'ai trouvé a été de mettre dans un modèle spécifique de blanc entre les instructions de programmation (ou paragraphes). Le fichier regardé la même chose pour eux: certains des instructions de programmation et les sauts de ligne. En sélectionnant soigneusement le texte serait montrer l'espace. Chaque ligne vide contient un certain nombre de places qui n'est évidemment pas le fruit du hasard ou accidentelle. (par exemple 17), Dans la pratique, cette méthode a fait le travail pour moi parce qu'ils ne pouvaient pas comprendre ce que j'étais en intégrant dans les documents.

Les métadonnées de filigrane

C'est là que vous modifiez le fichier de métadonnées pour contenir de l'information. Vous pouvez intégrer votre nom, une table de hachage, etc. dans l'invisible des parties d'un fichier, en particulier EXE. Dans le NT jours, les Flux de Données alternatifs ont été très populaires.

Des personnages insolites

Je vais jeter celui-ci dans juste pour le plaisir. Un vieux IRC usurpation d'identité truc, c'était de se faire un nom avec des lettres qui ressemblent au nom d'une autre personne. Vous pouvez l'utiliser dans le filigrane. La table de Caractères de Windows vous donnera beaucoup de personnages insolites qui ressemblent, mais ne le sont pas, une lettre ou un numéro que vous pouvez utiliser dans votre code source. Ces montrant dans un endroit précis de quelqu'un d'autre travail ne peut pas être accidentelle.

Confiance Horodatage

En un mot, vous envoyez un fichier (ou hash) à un tiers, qui ajoute ensuite un horodatage et des signes avec une clé privée. Toute personne souhaitant preuve d'lorsque vous avez créé un document peut aller à la tierce partie de confiance, souvent un site web, afin de vérifier la preuve de votre temps de création. Ces données ont été utilisées dans les affaires de la cour pour les litiges de propriété intellectuelle de sorte qu'ils sont très solides éléments de preuve. Ils sont le moyen standard pour accomplir la preuve que vous êtes à la recherche d'. (J'ai inclus les autres en premier b/c ils sont faciles, ils sont plus de plaisir et fonctionnera probablement.)

Cet article de Wikipedia qui pourrait aider votre instructeur de comprendre vos preuves et les liens externes de l'article a beaucoup de fournisseurs, y compris celles qui sont libres. J'avais lancer le test des fichiers par ceux qui sont gratuits pour quelques jours avant de les utiliser pour quelque chose d'important.

Modus operandi

Donc, vous avez fait quelque chose et vous avez maintenant la preuve de droite? Non, les étudiants peuvent toujours dire que vous avez volé l'idée à partir d'eux, ou certains autres non-sens. Mon fix pour cela a été, en privé, d'établir un ou plusieurs de mes méthodes avec mon instructeur. Je dis à l'instructeur de regarder pour les espaces, regardez pour certains symboles, etc. mais ne jamais dire aux autres ce que le filigrane était. Si l'instructeur sera d'accord pour garder vos techniques simples secret, ils vont probablement continuer à fonctionner correctement. Sinon, il y a toujours la confiance de l'horodatage. ;)

63voto

exabrial Points 3305

Si vos camarades de classe volaient votre code sur le site de téléchargement, je chiffrerais vos devoirs et enverrais la clé à l'enseignant. Vous pouvez le faire avec PGP si vous voulez être compliqué, ou quelque chose d'aussi simple qu'un fichier Zip avec un mot de passe.

EDIT: PGP vous permettrait de chiffrer / signer sans révéler votre clé, mais vous ne pouvez pas battre la simplicité de cisaillement d’un fichier Zip avec un mot de passe. Il vous suffit donc de choisir une nouvelle clé pour chaque devoir. La beauté dans la simplicité :)

38voto

GaborSch Points 6587

Si vous donnez le code source de l'enseignant, puis il suffit d'ajouter un serialVersionUID à l'un de vos fichiers de classe, qui est une version cryptée de votre nom. Vous pouvez décrypter à l'enseignant de vous-même.

Qui ne veut rien dire pour les autres, juste pour vous. Vous pouvez dire que c'est un code généré, si ils sont voler, ne sera probablement pas pris la peine de modifier à tout.

Si vous voulez le faire dans un style élégant, vous pouvez utiliser cette astuce, si vous trouvez la graine aléatoire qui produit de votre nom. :) Ce serait votre numéro d' alors, et où il semble que tendrait à prouver que c'est vous qui faites de ce code.

35voto

Andy Thomas Points 30979

Ce qui s'est passé avec une paire de mes élèves qui ont vécu dans le même appartement. On a volé le code source à partir d'un disque à gauche dans un tiroir de bureau.

Le voleur a légèrement modifié l'volé de la source, de sorte qu'il ne serait pas évident. J'ai remarqué la similitude du code de toute façon, et a examiné la source dans un éditeur. Certaines lignes ont des espaces supplémentaires à la fin. Chaque élève de la source, a le même nombre de places supplémentaires.

Vous pourrait exploiter ceci pour encoder de l'information sans qu'il soit visible. Vous pouvez encoder vos initiales ou votre carte d'étudiant à la fin de certaines lignes, avec des espaces.

Un voleur sera probablement faire des changements cosmétiques pour le code visible, mais peut manquer le non-caractères visibles.

EDIT:

Penser à ce sujet un peu plus, vous pouvez utiliser des espaces et des tabulations comme Morse code-dits et dahs, et de mettre votre nom à la fin de plusieurs lignes. Un voleur pourrait supprimer, réorganiser ou retaper certaines lignes sans détruire votre identification.

EDIT 2:

"Espaces stéganographie" est le terme pour cacher des messages dans l'espace. Googler il révèle ce open-source de la mise en œuvre datant des années '90, en utilisant le codage Huffman à la place du code Morse.

19voto

Jon Raynor Points 2312

Cela me semble être un problème d’administration informatique. Chaque élève doit avoir son propre espace de téléchargement auquel aucun autre élève n’a accès.

L'enseignant serait à un niveau supérieur, pouvant accéder à chaque dossier de téléchargement d'élève. Si ce n'est pas possible, utilisez @exabrial answer car c'est la solution la plus simple.

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