web-dev-qa-db-fra.com

Le rôle valide de l'obscurité

Cette sécurité par l'obscurité est une mauvaise chose reçue de la sagesse et du dogme dans la sécurité de l'information. Raconter les gens pourquoi quelque chose doit être évité Peut être considérablement plus difficile quand il n'y a aucune ligne de délimitation de ce que vous essayez d'interdire de stratégies apparemment efficaces.

Par exemple - exécutant SSH sur un port non par défaut et port frappant Les deux sont suggérées comme des moyens d'améliorer la sécurité SSH et les deux sont critiqués comme étant une sécurité inefficace grâce à l'obscurité.

Dans ce cas particulier, les deux solutions réduisent la visibilité du système aux tentatives automatisées. Cela ne fait rien pour améliorer l'efficacité de SSH comme outil ou réduire la nécessité d'autres mesures de sécurité SSH. Il fournit un moyen de séparer de sérieuses tentatives de passants automatisés, ce qui améliore la gestion de la gestion du système.

  • Outre la gestion/efficacité des distinctions décrivent la limite entre les utilisations valides/invalides de l'obscurité?
  • Quelles analogies décrivent une utilisation efficace de l'obscurité ou attirent la distinction entre cette utilisation et une utilisation inefficace?
  • Quelles analogies supportant apparemment l'efficacité de l'obscurité ne tiennent-elles pas et pourquoi?
  • Quelles autres implémentations spécifiques sont des exemples du rôle valide de l'obscurité?
43
Bell

Question interessante. Mes pensées à ce sujet sont que les informations obscurcissantes sont utiles à la sécurité dans de nombreux cas, car elles peuvent forcer un attaquant à générer davantage de "bruit" qui peuvent être détectés.

Lorsque l'obscurité est une "mauvaise chose" peut être une "mauvaise chose" où le défenseur s'appuie sur cette obscurité comme un contrôle critique et sans cette obscurité, le contrôle échoue.

Ainsi, outre celui que vous avez donné ci-dessus, une utilisation efficace de l'obscurité pourrait éliminer les informations de nom et de version de logiciel à partir des services d'Internet. Les avantages de ceci sont:

  • Si un attaquant veut savoir si une version vulnérable du service est utilisée, elles devront effectuer de multiples requêtes (par exemple, la recherche de fichiers par défaut, ou peut-être tester des réponses de synchronisation à certaines requêtes). Ce trafic est plus susceptible d'apparaître dans les journaux IDS qu'une seule demande qui a renvoyé la version. De plus, les protocoles d'empreintes digitales ne sont pas bien développés pour tous les services, afin de ralentir considérablement l'attaquant
  • L'autre avantage est que le numéro de version ne sera pas indexé par des services tels que Shodan . Cela peut être pertinent lorsqu'une attaque automatisée est effectuée pour toutes les instances d'une version particulière d'un service (par exemple, où un 0 jour a été découvert pour cette version). Cacher cela de la bannière, peut en réalité empêcher une instance donnée du service de tomber en proie à cette attaque.

Cela dit, il ne devrait jamais être la seule ligne de défense. Dans l'exemple ci-dessus, le service doit toujours être durci et corrigé pour aider à maintenir sa sécurité.

Où je pense que l'obscurité échoue, c'est où elle s'appuie. Des choses comme des mots de passe codés durs qui ne sont pas changés, obscurcissant des secrets avec un "cryptage à domicile" ou fondant une décision de risque sur le point de corriger un service sur l'idée que personne ne l'attaquera. Donc, le genre d'idée que personne ne trouvera/connaître/attaquer cela échoue généralement, éventuellement parce que les défenseurs limitent leur concept de qui pourrait être un attaquant valide. Tout va bien dire qu'un attaquant externe non motivé peut ne pas prendre le temps de démêler un contrôle obscutable, mais si l'attaquant s'avère être un ex-employé mécontent, ce mot de passe codé dur pourrait causer de graves problèmes.

41
Rory McCune

Vous avez mal maîtrisé la sagesse conventionnelle. La sagesse conventionnelle ne dit pas que l'obscurité est mauvaise. Il dit que s'appuyer sur La sécurité par l'obscurité est mauvaise: elle conduit généralement à des systèmes fragiles ou non sécurisés. Notez la différence. L'obscurité pourrait ajouter une sécurité supplémentaire, mais vous ne devriez pas compter sur elle, et ce ne devrait pas être votre défense principale. Vous devriez être préparé que l'obscurité pourrait être percée et être convaincu que vous avez des défenses suffisantes pour gérer cette affaire.

Un concept important ici est Principe de Kerckhoff . De retour dans les années 1800, Kerckhoff a déjà articulé les raisons pour lesquelles nous devrions être sceptiques quant à la sécurité par l'obscurité et comment dessiner une ligne entre les utilisations appropriées et inappropriées de la cryptographie. Le article Wikipedia sur le principe de Kerckhoff est très bon et un excellent point de départ.

Voici quelques points à méditer:

  • Comme le dit l'article Wikipedia, "les secrets de moins et plus simples que l'on doit conserver pour assurer la sécurité du système, plus il est facile de maintenir la sécurité du système". Par conséquent, tout le reste étant égal, moins nous devons rester secrets, plus il est plus facile de sécuriser le système.

  • De manière générale, il y a peu d'espoir de garder la conception ou les algorithmes utilisés dans le secret du système des attaquants dédiés. Par conséquent, tout système dont la sécurité s'appuie sur le secret de sa conception est, à long terme, condamné - et à court terme, il prend un risque inutile.

  • Le pire type de secret est celui qui ne peut être changé s'il est compromis ou divulgué à des parties non autorisées. Le meilleur type de secret est celui qui peut être facilement changé s'il est suspecté d'être fui. Construire un système dans lequel la sécurité s'appuie sur le maintien du secret du système est l'une des pires utilisations possibles du secret, car une fois le système déployé, si son secret fuit, il est très difficile de changer (vous devez remplacer toutes les copies déployées de la système avec une implémentation totalement nouvelle, qui est généralement extrêmement coûteux). Construire un système sur lequel la sécurité s'appuie sur chaque utilisateur pour sélectionner une phrase secrase aléatoire est meilleure, car si le mot de passe est divulgué (par exemple, l'utilisateur tape leur mot de passe dans un site de phishing, puis dit "oups!"), Il est relativement facile de changer le mot de passe de l'utilisateur sans inconvénaître les autres.

  • Ou, comme l'a écrit Kerckhoff dans les années 1800, la conception d'un cryptosystème ne doit pas être tenue d'être secrète, et il doit être capable de tomber entre les mains de l'ennemi sans inconvénient. Ceci est fondamentalement un retraitement de mon point précédent, dans un domaine particulier.

Pour ces raisons, des systèmes bien conçus tentent généralement de minimiser la mesure dans laquelle ils s'appuient sur des secrets; Et lorsque des secrets sont nécessaires, on les concevent généralement à concentrer tout le secret requis dans une clé cryptographique ou une phrase secrète pouvant être facilement modifiée si compromis.

15
D.W.

C'est la sécurité à travers obscurité qui est la mauvaise partie. L'obscurité peut augmenter la sécurité, mais vous ne pouvez pas dépendre de l'obscurité seulement pour assurer la sécurité.

Les mantras absolus sont toujours nocifs. ;) Il est essentiel de comprendre le raisonnement derrière le mantra et le compromis impliqué.

Par exemple, cachez une clé à l'extérieur de votre maison lorsque vous allez faire une exécution, c'est la sécurité par l'obscurité, mais cela pourrait être un risque acceptable si vous allez être de retour dans 30 minutes (et que vous n'êtes pas une cible à risque élevé?).

On peut dire que la même chose pour "ne jamais utiliser goto". Parfois, GOTO est le meilleur moyen d'écrire un code clair dans certaines situations. En tant que professionnel expérimenté, vous devez comprendre les raisons des directives afin que vous puissiez comprendre les compromis.

5
Bradley Kreider