Je veux vérifier si les fichiers journaux de texte créés par mon programme étant exécuté sur le site de mon client ont été altérés. Comment suggérez-vous que je vais faire cela? J'ai cherché un bouquet ici et Google mais je n'ai pas trouvé ma réponse. Merci! P>
Edit: Après avoir lu toutes les suggestions jusqu'à présent, voici mes pensées. Je veux garder cela simple et, étant donné que le client n'est pas aussi savoureux, je pense qu'il est prudent d'intégrer le sel dans le binaire. Je continuerai à rechercher une solution simple à l'aide des mots-clés "Hash de checksum sel" et etc. et postez ici une fois que j'en trouve une. P>
5 Réponses :
C'est une chose assez difficile à faire, à moins que vous ne puissiez pas protéger le clavier utilisé pour signer les données. Signature des données nécessite une clé privée et si cette clé est sur une machine, une personne peut simplement modifier les données ou créer de nouvelles données et utiliser cette clé privée pour signer les données. Vous pouvez conserver la clé privée sur une machine "sécurisée", mais comment garantit-tu que les données n'avaient pas été altérées avant de laisser la machine d'origine? P>
Bien sûr, si vous ne protégeez que des données en mouvement, les choses sont beaucoup plus faciles. P>
La signature de données est facile, si vous pouvez protéger la clé privée. P>
Une fois que vous avez travaillé la théorie de niveau supérieur qui assure la sécurité, jetez un coup d'œil à
Puis-je intégrer la clé privée dans le binaire? Je suis sûr que cela a été fait auparavant et il existe un processus facile à faire pour ce faire. Je ne peux tout simplement pas le trouver sur Google ou ici :(
Il peut être trivial de repérer la clé en regardant le binaire dans un éditeur Hex.
@ user355008: incorporer une clé à l'intérieur quelque chose ne va pas aider. Si votre application peut voir la clé d'une manière ou d'une autre, un utilisateur peut aussi.
Vous pouvez mettre un contrôle de contrôle comme préfixe à chacune de vos lignes de fichiers, à l'aide d'un algorithme comme Adler-32 ou quelque chose. Si vous ne souhaitez pas mettre de code binaire dans vos fichiers journaux, utilisez une méthode Encode64 pour convertir la checksum aux données non binaires. Donc, vous ne pouvez supprimer que les lignes qui ont été altérées. P>
Comment cela empêcherait-il qu'un attaquant ne recompite-t-il que la somme de contrôle?
De la page Wiki que vous avez partagée, il est indiqué "La somme de contrôle Adler-32 peut être forgée facilement et est donc dangereuse de protéger contre la modification intentionnelle". Donc, je ne pense pas que cela fonctionnera. Merci quand même.
Je ne connais pas le niveau de sécurité requis, alors j'ai écrit "comme Adler-32 ou quelque chose". Vous pouvez même utiliser des méthodes Adler-32, MD5 128 Bits ou SHA1 avec salage, en ajoutant votre propre clé à la chaîne à crypter. Il sera donc très difficile pour quelqu'un de recomputer la somme de contrôle correcte.
Bien sûr, le cœur même de la matière est la suivante: comment cachez-vous la clé et le processus de salage du client depuis qu'il est emballé dans le binaire ainsi soumis à une éventuelle examen de la deasbly? : p
@Matthieu m .: Demandez-leur poliment de ne pas regarder :)
Si vous avez vraiment besoin d'un très fort modèle de cryptographe, utilisez la cryptographie clés de la clé publique. Cette technique utilise des algorithmes de clé asymétrique basés sur 2 touches, où la clé utilisée pour chiffrer un message n'est pas la même que la clé utilisée pour la déchiffrer. en.wikipedia.org/wiki/public-key_cryptography
préambule obligatoire: em> combien coûte en jeu ici? Vous devez supposer que la falsification sera possible, mais que vous pouvez le rendre très difficile si vous passez suffisamment de temps et d'argent. Ainsi: combien vaut-il pour vous? P>
qui dit: p>
Comme c'est votre code écrit le fichier, vous pouvez l'écrire crypté. Si vous en avez besoin pour être lisible par l'homme, vous pouvez conserver une deuxième copie cryptée ou un deuxième fichier contenant uniquement un hachage, ou écrire une valeur de hachage pour chaque entrée. (Le hachage doit contenir une clé "secret", bien sûr.) Si cela est trop risqué, envisagez de transmettre des hachages ou des checksums ou le journal lui-même vers d'autres serveurs. Et ainsi de suite. P>
C'est votre fichier et votre programme qui est autorisé à le modifier. Lorsque cela étant le cas, il y a une solution simple. (Si vous pouvez vous permettre de mettre votre fichier journal dans un dossier séparé)
note: em>
Vous pouvez avoir tous vos fichiers journaux placés dans un dossier séparé. Pour par exemple, dans mon application, nous avons beaucoup de DLL, chacun ayant ses propres fichiers journaux et d'application du parcours a sa propre. P> a donc un processus séparé en cours d'exécution en arrière-plan et surveille le dossier pour toutes les modifications. comme p> basé sur cette notification, vous pouvez certifier si le fichier est modifié ou non!
(Comme vous et d'autres personnes, même votre processus et vos dlls modifieront ces fichiers pouvant également conduire à une notification. Vous devez synchroniser cette action intelligemment. C'est tout) p> API de la fenêtre pour surveiller le dossier Compte tenu ci-dessous: p> suspect un em>: notre processus P> suspect x em>: autre processus ou utilisateur p> inspecteur em>: le processus que nous avons créé pour surveiller le dossier. P > inpector em> voit une modification du dossier. Les requêtes avec soupçonnent un em> s'il a fait de cela. p> si oui, p> sinon p> autre que cela, ci-dessous Les techniques qui peuvent (ou peuvent ne pas :)) vous aider! p> stocker l'horodatage chaque fois qu'une application ferme le fichier avec la taille de fichier.
La prochaine fois que vous ouvrez le fichier, vérifiez la dernière heure modifiée de l'heure et de sa taille. Si les deux sont identiques, alors cela signifie que le fichier reste pas altéré. P> li>
Modifiez le privilège de fichier vers lecture seule em> après avoir écrit des journaux. Dans certains programmes ou quelqu'un veut l'altérer, ils tentent de changer la propriété en lecture seule. Cette action change la date / heure modifiée pour un fichier. P> li>
écrire dans votre fichier journal seulement des données cryptées. Si quelqu'un le tampers, lorsque nous décrypter les données, nous pouvons trouver du texte non déchiffré correctement. P> li>
Utilisation du mécanisme de compresse et de compresse (Compressez peut vous aider à protéger le fichier à l'aide d'un mot de passe) p> li>
ol> chaque cas peut avoir ses propres avantages et inconvénients. Force la logique en fonction de vos besoins. Vous pouvez même essayer la combinaison des techniques proposées. P> p>
Pour le point 1 et le point 2: il est facile de définir l'heure de modification d'un fichier et de modifier le contenu d'un fichier sans changer sa longueur. Pour le point 3 et le point 4: vous devez comprendre que si votre application peut exécuter ces tâches, un utilisateur peut également également (simplement en imbriant ce que l'application fait).
@DeMlax: Tous ces points sont fournis juste pour donner un aperçu des utilisateurs envisagés. Je sais que tout cela a des trous de boucle. L'accent principal concerne les données fournies au-dessus de ceux idiotes (si vous le regardez ainsi) points!
Cela dépend vraiment de ce que vous essayez d'atteindre, ce qui est à l'encontre et quelles sont les contraintes. P>
fondamentalement: ce que vous demandez est tout simplement impossible (isolément). P>
Maintenant, il s'agit de compliquer la vie des personnes qui tentent de modifier le dossier afin que cela leur coûterait plus pour le modifier que ce qu'ils pouvaient gagner en faisant la modification. Bien sûr, cela signifie que les hackers motivés par le seul objectif de la fissuration de vos mesures de protection ne seront pas dissuadés autant ... P>
En supposant que cela devrait fonctionner sur un ordinateur autonome (pas de réseau), c'est, comme je l'ai dit, impossible. Quel que soit le processus que vous utilisez, quel que soit le clé / algorithme, cela est finalement intégré au binaire, qui est exposé à la surveillance du pirate informatique. Il est possible de plonger, il est possible de l'examiner avec des lecteurs hexagonaux, il est possible de le sonder avec des entrées différentes, de brancher un débogueur, etc. Votre seule option est donc de faire le débogage / l'examen une douleur en décomposant la logique , en utilisant la détection de débogage pour changer les chemins et si vous êtes très bon en utilisant le code auto-modificateur. Cela ne signifie pas que cela deviendra impossible à altérer le processus, il signifie à peine qu'il devrait devenir suffisamment difficile pour que tout attaquant abandonne. P>
Si vous avez un réseau à votre disposition, vous pouvez stocker un hachage sur un lecteur distant (sous votre contrôle), puis comparez le hachage. 2 Difficultés ici: P>
Et bien sûr, dans les deux cas, méfiez-vous de l'homme dans les syndromes moyens ... p>
Un dernier conseil: si vous avez besoin de sécurité, vous devrez consulter un véritable expert, ne comptez pas sur certains gars étranges (comme moi-même) parler sur un forum. Nous sommes des amateurs. P>
Pourquoi cela a-t-il la balise "GPGPU"? GPGPU représente généralement l'informatique générale des unités de traitement graphique. Est-ce une faute de frappe?