Protection du code source Java contre l'accès [fermé]

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

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

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

Pouvez-vous penser à d'autres meilleures façons?

94
demandé sur WarGodNT 2013-04-17 18:13:18

11 réponses

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

Espace filigrane:

Ceci est ma contribution originale au filigrane. J'avais besoin d'un filigrane invisible qui fonctionnait dans les fichiers texte. Le l'astuce que j'ai trouvée était de mettre un modèle spécifique d'espaces entre les instructions de programmation (ou les paragraphes). Le fichier leur ressemblait: quelques instructions de programmation et sauts de ligne. Sélectionner le texte avec soin montrerait les espaces. Chaque ligne vide contiendrait un certain nombre d'espaces qui n'est évidemment pas aléatoire ou accidentel. (par exemple 17) en pratique, cette méthode a fait le travail pour moi parce qu'ils ne pouvaient pas comprendre ce que j'intégrais dans les documents.

Métadonnées filigrane

C'est là que vous modifiez les métadonnées du fichier pour qu'elles contiennent des informations. Vous pouvez intégrer votre nom, un hachage, etc. dans les parties invisibles d'un fichier, en particulier EXE. dans les jours NT, les flux de données alternatifs étaient populaires.

Caractères Inhabituels

Je vais jeter celui-ci juste pour les coups de pied. Une vieille astuce d'usurpation D'identité IRC était de faire un nom avec des lettres qui ressemblent au nom d'une autre personne. Vous pouvez l'utiliser dans le filigrane. La carte de caractères dans Windows vous donnera beaucoup caractères inhabituels qui ressemblent à, mais ne sont pas, une lettre ou un numéro que vous pouvez utiliser dans votre code source. Ceux qui apparaissent dans un endroit spécifique dans le travail de quelqu'un d'autre ne peuvent pas être accidentels.

Horodatage De Confiance

En un mot, vous envoyez un fichier (ou son hachage) à un tiers qui lui ajoute ensuite un horodatage et le signe avec une clé privée. Toute personne voulant prouver quand vous avez créé un document peut aller à la tierce partie de confiance, souvent un site web, pour vérifier votre preuve de création temps. Ceux-ci ont été utilisés dans des affaires judiciaires pour des litiges de propriété intellectuelle, de sorte qu'ils constituent une forme de preuve très solide. Ils sont le moyen standard d'accomplir la preuve que vous cherchez. (J'ai inclus les autres d'abord b / c ils sont faciles, ils sont plus amusants et fonctionneront probablement.)

Cet article de Wikipedia {[20] } pourrait aider votre instructeur à comprendre vos preuves et la section Liens externes a de nombreux fournisseurs, y compris les GRATUITS. J'exécuterais des fichiers de test à travers des fichiers gratuits pendant 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 non? Non, les étudiants peuvent encore dire que vous leur avez volé l'idée ou d'autres absurdités. Ma solution pour cela était, en privé, d'établir une ou plusieurs de mes méthodes avec mon instructeur. Je dis à l'instructeur de chercher les espaces, de chercher certains symboles, etc. mais de ne jamais dire aux autres ce qu'était le filigrane. Si l'instructeur accepte de garder votre simple techniques secret, ils vont probablement continuer à bien fonctionner. Sinon, il y a toujours un horodatage fiable. ;)

102
répondu Nick P 2013-04-18 05:27:57

Si vos camarades de classe ont volé votre code sur le site de téléchargement, Je crypterais 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.

Modifier: 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 suffit donc de choisir une nouvelle clé chaque devoir. Beauté dans la simplicité:)

63
répondu Jonathan S. Fisher 2013-04-18 00:46:00

Si vous donnez du code source à l'enseignant, ajoutez simplement un serialVersionUID à l'un de vos fichiers de classe qui est une version cryptée de votre nom. Vous pouvez le déchiffrer à l'enseignant vous-même.

Cela ne signifie rien pour les autres, juste pour vous. Vous pouvez dire que c'est un code généré, s'ils le volent, ne prendra probablement pas la peine de le modifier du tout.

Si vous voulez le faire dans un style élégant, vous pouvez utiliser , ce truc, si vous trouvez la graine aléatoire qui produit de votre nom. :) Ce serait votre numéro alors, et partout où il apparaît qui prouverait que c'est Vous qui avez fait ce code.

38
répondu gaborsch 2017-05-23 12:13:51

C'est arrivé avec une paire de mes étudiants qui vivaient dans le même appartement. On a volé le code source d'un disque laissé dans un tiroir de bureau.

Le voleur a légèrement modifié la source volée, de sorte que ce ne serait pas évident. J'ai remarqué la similitude du code de toute façon, et examiné la source dans un éditeur. Certaines des lignes avaient des espaces supplémentaires aux extrémités. La source de chaque étudiant avait le même nombre de places supplémentaires.

Vous pouvez exploiter cela pour encoder des informations sans les faire visible. Vous pouvez encoder vos initiales ou votre carte d'étudiant à la fin de certaines lignes, avec des espaces.

Un voleur apportera probablement des modifications cosmétiques au code visible, mais peut manquer les caractères non visibles.

Modifier:

En y réfléchissant un peu plus, vous pouvez utiliser des espaces et des onglets comme dits et dahs en code Morse, et mettre votre nom à la fin de plusieurs lignes. Un voleur pourrait supprimer, réorganiser ou retaper certaines lignes sans détruire votre identification.

MODIFIER 2:

"stéganographie des espaces blancs" est le terme pour dissimuler des messages dans des espaces blancs. Googler révèle cette implémentation open-source datant des années 90, en utilisant l'encodage Huffman au lieu du code Morse.

35
répondu Andy Thomas 2013-04-17 18:40:44

Cela me semble être un problème D'administration informatique. Chaque étudiant devrait avoir sa propre zone de téléchargement qui ne peut pas être consultée par les autres étudiants.

L'enseignant serait un niveau supérieur, étant en mesure d'accéder à chaque dossier de téléchargement de l'élève. Si ce n'est pas possible, allez avec la réponse @exabrial car c'est la solution la plus simple.

19
répondu Jon Raynor 2013-04-17 18:48:35

La meilleure chose que vous pouvez faire est de simplement zip le code source avec un mot de passe et e-mail le mot de passe à l'enseignant.

Problème résolu.

9
répondu Omid 2013-04-18 00:06:30

Utilisez un système de contrôle de version distribué (=autonome) , comme git. Pourrait être utile aussi.

Un historique de version avec votre nom et vos dates pourrait être suffisamment convaincant.

6
répondu Joop Eggen 2013-04-17 14:20:07

Qu'est-ce qui a été volé ?

  • La source ? Vous pouvez y mettre des chaînes aléatoires (mais cela peut être changé). Vous pouvez également essayer d'ajouter un comportement spécial Savoir seulement de vous (une pression de touche spéciale va changer une ligne de couleur), vous pouvez ensuite demander à l'enseignant "les autres savent ce combo spécial ?". La meilleure façon sera de planter le programme si un vide inutile de fichier n'est pas présent dans l'archive après 5 minutes d'activité, vos camarades d'école sera trop paresseux pour attendre cette quantité de temps.

  • Le binaire ? Juste en comparant la somme de contrôle de chacun .la classe sera suffisant (vos camarades d'école sont trop paresseux pour réécrire les fichiers de classe)

3
répondu Kartoch 2013-04-17 14:20:06

Il suffit de poster votre solution à la dernière minute. Cela ne donnera pas le temps à quiconque de le copier.

Et envoyer un commentaire à l'administrateur pour interdire aux étudiants de voir les autres devoirs des étudiants.

2
répondu Eduardo 2013-04-18 23:05:59

Si vous téléchargez le fichier dans un .zip avec le cryptage de mot de passe, tout le monde peut simplement casser le mot de passe en téléchargeant le .fichier zip et ont leur cpu exécuter un million de requêtes à elle si elles sont si gros d'un voleur de triche. Malheureusement, certains sont et c'est facile à faire.

Votre source peut être consultée sur le serveur partagé par les autres étudiants. L'enseignant devrait vraiment vous donner votre propre répertoire crypté de mot de passe à télécharger. Cela pourrait être fait facilement simplement en ajoutant des sous-domaines. Mais peut-être l'enseignant peut vous permettre de télécharger les fichiers sur votre propre serveur pour lui d'y accéder.

Il est également possible d'obscurcir le script pour qu'il ait un document.write ('cette page a été écrite par xxxxx'), forçant toute personne qui copie votre travail à ne pas être en mesure de supprimer le crédit à moins qu'ils ne le déchiffrent d'abord. Mais la vraie réponse est que votre école doit donner à chacun de ses élèves leurs propres répertoires protégés par mot de passe.

1
répondu michael d 2013-04-19 02:04:02

Dans mon cas, mes professeurs sont venus avec une meilleure approche. Les questions qu'il a quelque chose à voir avec notre numéro d'enregistrement. Ex:

Entrée d'une fonction/théorie est notre numéro d'Enregistrement, qui est différent pour chaque élève

Ainsi, les réponses ou l'approche de la solution sont relativement différentes de chaque élève.Cela fera nécessairement de tous les élèves à faire leurs devoirs sur leur propre, ou au moins arriver à savoir comment pirater l'approche avec leur propre inscription[il peut être plus difficile que d'apprendre la lession ;)].

Hope your lecturer will read this thread before his next tutorial :D
0
répondu Chand Priyankara 2013-04-18 03:36:20