7
votes

Quelle technique peut protéger un secret d'un utilisateur pleinement approuvé?

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.

Donc, je cherche des alternatives - Comment protégerez-vous une pièce d'informations secrètes d'un utilisateur pleinement approuvé?


1 commentaires

La suggestion «mauvaise idée» était le commentaire d'Eric ici: Stackoverflow. com / questions / 2150703 / ...


6 Réponses :


7
votes

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.

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.

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.

Pourquoi avez-vous besoin d'arrêter l'utilisateur de lire un digest hachage quand même?


2 commentaires

C'est une tentative de faire un certain fichier journal.


La tentative a déjà échoué. Vous pourriez le faire saboter - évident , mais vous ne le ferez pas d'inviolabilité.



2
votes

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.

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 à.


2 commentaires

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.



6
votes

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.


2 commentaires

@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.



2
votes

Faites-le donc que le texte ne puisse être utile sans, disons, le l'autre moitié du texte qui ne se rapproche pas de l'ordinateur des utilisateurs.

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.

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.

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.

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.


0 commentaires

30
votes

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.

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.

Premier, Écrivez un modèle de menace :

  • Identifiez toutes les ressources nécessaires à la protection (vos ressources et vos ressources de votre client bénin, telles que leurs données financières privées)
  • estime sa valeur pour vous
  • estime sa valeur à un attaquant
  • Pensez à quelles vulnérabilités exposent la ressource à attaquer
  • caractérise la menace - qui est l'attaquant et quelle est leur motivation?

    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.

    Par exemple:

    • ressource: mon téléviseur
    • valeur pour moi: 400 $
    • Valeur à l'attaquant: 40 $
    • Vulnérabilité: Fenêtre de salle de bain déverrouillée
    • Menace: voleurs ou vandales Utilisez la fenêtre pour accéder au téléviseur

      OK, maintenant que je sais quelles sont les attaques, je peux commencer à penser aux attes d'atténuation:

      • verrouiller la fenêtre
      • Obtenez un système d'alarme
      • chiens
      • Guards

        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.

        Il existe également des moyens d'extérioriser les coûts d'atténuation:

        • menacer l'attaquant avec poursuite - Les contribuables paient pour cette
        • Assurez la télévision contre le vol, réduisant le coût d'une attaque réussie contre moi.
        • et ainsi de suite.

          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 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.

          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.

          Pour plus d'exemples "logiciels" ciblés de modélisation de la menace, voir:

          HTTP : ///download.microsoft.com/download/3/a/7/3A7FA450-1F33-41F7-9E6D-3A95B5A6AEA/msdnmagazinenovember2006en-us.chm

          http://www.owasp.org/index.php/theat_risk_modeling

          http://msdn.microsoft.com/en-us/library /aa302419.aspx

          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.

          Enfin:

          Obtenez un professionnel de la sécurité impliqué.

          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.


2 commentaires

+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



2
votes

Dans l'un des commentaires à une autre réponse, vous avez écrit:

C'est une tentative de faire un certain journal Fichier la preuve de désignation.

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 entièrement fiable (c'est-à-dire: un autre système).

Sinon, vous ne pouvez pas garantir la sécurité du fichier (comme d'autres personnes ont mentionné).


0 commentaires