Je programmment un système utilisant C #. Mon programme génère un petit message (un hash Digest pour un fichier) que je souhaite stocker sur le disque dur - mais je ne veux pas que l'utilisateur puisse la lire. J'allais crypter ce message, mais quelqu'un a suggéré que c'est une mauvaise idée. p>
Donc, je cherche des alternatives - Comment protégerez-vous une pièce d'informations secrètes d'un utilisateur pleinement approuvé? p>
6 Réponses :
Mon programme génère un petit message (un hash Digest pour un fichier) que je souhaite stocker sur le disque dur - mais je ne veux pas que l'utilisateur puisse la lire. P> blockQuote>
L'utilisateur a le contrôle total sur sa machine. Si votre logiciel peut le lire, alors l'utilisateur peut, avec un peu d'effort. P>
Au lieu de combattre une bataille perdu contre vos clients, il est probablement préférable d'accepter que "c'est la machine des utilisateurs, pas la mienne" et ne vous inquiétez pas avec quelque chose d'excès - juste base64 coder ou quelque chose. P>
Pourquoi avez-vous besoin d'arrêter l'utilisateur de lire un digest hachage quand même? p>
C'est une tentative de faire un certain fichier journal.
La tentative a déjà échoué. Vous pourriez le faire saboter - évident i>, mais vous ne le ferez pas d'inviolabilité.
non. Ce n'est pas possible. Si la personne a un accès physique / complet à la machine, vous ne pouvez pas protéger le disque dur sans cryptage. P>
La seule façon dont je pouvais voir de le faire consiste à stocker ce message sur un serveur distant que l'utilisateur n'a pas accès à. p>
Même s'il le stocke sur un serveur distant lorsque l'utilisateur exécute le programme de sa machine et que le programme accédera au message que l'utilisateur peut obtenir le message.
Oui ... Donc, vous pouvez leur fournir un serveur sur lequel exécuter l'application en tant que site Web ou SSH avec X Transfert. Vraiment, n'essayez pas de cacher ou d'obscurez des choses pour l'administrateur de l'ordinateur. Cela ne fonctionne pas et est juste ennuyeux.
C'est le problème de la DRM, on ne peut pas être fait. Vous pouvez le rendre très gênant et frustrant en proposant des moyens nouveaux et nouveaux d'obscurcir les données, mais c'est une idée fondamentalement imparfaite de penser que vous pouvez protéger les données lorsque les machines pour le cryptage et le déchiffrement sont à la fois hébergées dans un système «L'ennemi». "Contrôles entièrement. P>
@CRAIGS: Gestion des droits numériques en.wikipedia.org/wiki/digital_rights_management
@CRAIGS Cela signifie «gestion des droits numériques». Il est plus visible dans les DVD et Blu-ray - la tentative de donner aux utilisateurs finaux la capacité de déchiffrer uniquement les données de manière «autorisée» (par exemple la surveillance) mais empêcher la copie. Il n'a jamais travaillé et ça ne marchera jamais.
Faites-le donc que le texte ne puisse être utile sans, disons, le l'autre moitié em> du texte qui ne se rapproche pas de l'ordinateur des utilisateurs. P>
En d'autres termes: éloignez la valeur du secret. Ce ne sera donc plus secret ni que le client n'aura aucun intérêt à l'obtenir. P>
Si vous ne pouvez pas, vous avez des chances que vous ayez une erreur dans la conception de votre application et essayez de trouver un moyen peu coûteux de travailler autour de lui. Mais il y a Pas de déjeuner gratuit à ce sujet. Encore une fois, la sécurité dans ce cas est un autre exemple d'équilibre entre la convivialité, les difficultés de mise en œuvre et la valeur du secret. P>
Si vous voulez toujours le faire, ne comptez pas sur une seule technique. Utilisez beaucoup: Cryptez les données sur disque à l'aide d'une clé publique stockée en mémoire et à partir d'un référentiel; Ne stockez pas les données comme «ClearText» en mémoire, mais faites le cryptage. Mémoire de la mémoire shuffle fréquemment; Observez l'utilisation, les modèles, les latences, etc. p>
Vérifiez comment Skype est implémenté: via l'obfuscation du code, la détection du débogage (lorsqu'un débogueur est dirigé sur l'exécutable, le chemin d'exécution change) et en prenant la valeur réelle de la mise en œuvre. Même si vous comprenez comment fonctionne Skype, c'est déjà une norme; Et si vous souhaitez inverser l'ingénieur pour obtenir votre logiciel de «travailler avec Skype», bien, ils ne vous donneront jamais d'authentification à utiliser leur marque. p>
Prenez un pas en arrière; Vous avez une solution qui ne fonctionne fondamentalement pas pour le problème que vous avez. Au lieu d'essayer de le marteler jusqu'à ce qu'il fonctionne, arrêtez-vous, reculez et résolvez le vrai problème. P>
Les problèmes de sécurité impliquant de l'argent réel sont certains des problèmes les plus difficiles à résoudre; Les mauvaises personnes ont un vrai motif financier pour attaquer votre système. Une approche à plusieurs volets est généralement meilleure pour ces types de choses. P>
Premier, Une fois que vous connaissez les ressources, les menaces et les vulnérabilités, alors seulement en pensant à des mesures d'atténuation à ces menaces. Attribuez des coûts et des effectifs à chacune des mesures d'atténuation. P>
Par exemple: P>
OK, maintenant que je sais quelles sont les attaques, je peux commencer à penser aux attes d'atténuation: p>
Ceux sont dans l'ordre croissant de dépenses. Finalement, le coût de l'atténuation est plus grand que la perte de la ressource, et il n'a aucun sens de dépenser l'argent. P>
Il existe également des moyens d'extérioriser les coûts d'atténuation: p>
crypter un fichier contenant des données utilisateur sur une machine utilisateur n'est pas une atténuation d'une attaque. Déterminez quelles sont les attaques et ce que effectivement em> les atténue, y compris des options telles que la sidicing le gouvernement fédérateur sur les attaquants, puis met en œuvre un système qui atténue réellement vos vulnérabilités et élimine les menaces. P>
Votre atténuation proposée est la suivante: Donnez la clé du voleur et demandez au voleur de verrouiller la fenêtre avant de tenter de voler la télévision. Ce n'est pas une atténuation de la vulnérabilité. Aucune proposition qui consiste à remédier à la clé du voleur est une atténuation de la vulnérabilité de la fenêtre déverrouillée, alors arrêtez d'essayer d'en trouver un. strong> p>
Pour plus d'exemples "logiciels" ciblés de modélisation de la menace, voir: p>
http://www.owasp.org/index.php/theat_risk_modeling p>
http://msdn.microsoft.com/en-us/library /aa302419.aspx p>
et ainsi de suite; Vous pouvez trouver beaucoup de choses sur le Web sur la façon dont nous faisons la modélisation des menaces ici chez Microsoft. P>
Enfin: p>
Sérieusement, vous mordez l'un des emplois les plus difficiles dans la mise en œuvre du logiciel, où les conséquences des petites erreurs ont des implications financières majeures. Dépensez votre budget de mise en œuvre sur un consultant d'experts de premier ordre qui possède une expertise dans ce domaine et peut vous aider à trouver les pièces hors tension et sur mesure dont vous avez besoin pour créer une solution sécurisée. Rouler votre propre système de sécurité peut sembler amusant et bon marché; Ce n'est ni l'un ni l'autre. Laissez ce genre de chose aux personnes qui ont passé leur carrière à étudier cet espace. P>
Obtenez un professionnel de la sécurité impliqué. h2>
+1. Votre ma nouvelle personne préférée. Votre message devrait être le POST GÉNÉRAL GÉNÉRAL POUR Toute personne qui évalue les problèmes de sécurité.
Merci Eric, de grandes pensées là-bas
Dans l'un des commentaires à une autre réponse, vous avez écrit: P>
C'est une tentative de faire un certain journal Fichier la preuve de désignation. P> blockQuote>
Si c'est vraiment le cas, vous devriez peut-être adopter une approche différente et déplacer le fichier journal dans un endroit où l'utilisateur est pas em> entièrement fiable (c'est-à-dire: un autre système). P >
Sinon, vous ne pouvez pas garantir la sécurité du fichier (comme d'autres personnes ont mentionné). P>
La suggestion «mauvaise idée» était le commentaire d'Eric ici: Stackoverflow. com / questions / 2150703 / ...