Question:
À quel point quelque chose compte-t-il comme «sécurité par l'obscurité»?
root
2013-03-06 13:52:39 UTC
view on stackexchange narkive permalink

Donc, je continue à trouver la sagesse conventionnelle selon laquelle «la sécurité par l'obscurité n'est pas du tout une sécurité», mais j'ai le problème (peut-être stupide) de ne pas pouvoir dire exactement quand quelque chose est «une bonne sécurité» et quand quelque chose est juste "obscur".

J'ai vérifié d'autres questions liées de manière tangentielle à ceci, et je n'ai pas pu comprendre la différence précise.

Par exemple: Quelqu'un a dit utiliser SSH sur un port non standard compte comme la sécurité par l'obscurité. Vous comptez simplement sur l'autre personne pour ne pas vérifier cela. Cependant, tout ce que SSH fait, c'est obscurcir les informations. Cela repose sur l'espoir qu'un attaquant ne pensera pas à deviner la bonne clé cryptographique.

Maintenant, je sais que la première circonstance (que quelqu'un penserait à vérifier les ports non standard pour un service particulier) est bien plus probable que la seconde (que quelqu'un devinerait au hasard une clé cryptographique), mais est-ce que la vraisemblance fait vraiment toute la différence?

Et, si oui, comment suis-je (un infosec n00b, si ce n'est pas déjà abondamment clear) censé pouvoir distinguer le bon (c'est-à-dire ce qui vaut la peine d'être implémenté) du mauvais (ce qui ne l'est pas)?

Évidemment, les schémas de chiffrement qui se sont avérés vulnérables ne devraient pas être utilisés alors parfois c'est plus clair que d'autres, mais ce avec quoi je lutte, c'est comment je sais où la sagesse conventionnelle s'applique et ne s'applique pas.

Parce qu'à première vue, c'est parfaitement clair, mais quand je en fait, essayez d'extrapoler un algorithme dur et rapide et cohérent pour vérifier les idées, je rencontre des problèmes.

Voir [Un mot de passe n'est-il pas une forme de sécurité par l'obscurité?] (Http://stackoverflow.com/q/4486171/632951)
Quinze réponses:
Peleus
2013-03-06 14:14:33 UTC
view on stackexchange narkive permalink

L'idée fausse que vous avez est que la sécurité par l'obscurité est mauvaise. Ce n'est en fait pas le cas, la sécurité uniquement par l'obscurité est terrible.

Mettez les choses de cette façon. Vous voulez que votre système soit totalement sécurisé si quelqu'un en connaissait le fonctionnement complet, mis à part le composant clé secret que vous contrôlez. La cryptographie en est un parfait exemple. Si vous comptez sur eux "ne pas voir votre algorithme" en utilisant quelque chose comme un chiffrement ROT13, c'est terrible. D'un autre côté, s'ils peuvent voir exactement l'algorithme utilisé mais ne peuvent toujours pratiquement rien faire, nous voyons la situation de sécurité idéale.

Ce qu'il faut savoir, c'est que vous ne voulez jamais compter sur l'obscurité mais cela ne fait certainement jamais de mal . Dois-je protéger par mot de passe / utiliser des clés pour ma connexion SSH? Absolument. Dois-je compter sur le passage du serveur 22 au port 2222 pour assurer la sécurité de ma connexion? Absolument pas. Est-il mauvais de changer mon serveur SSH sur le port 2222 tout en utilisant également un mot de passe? Non, c'est la meilleure solution. Changer ("Obscurcir") le port réduira simplement un tas de scanners d'exploit automatiques recherchant les ports normaux. Nous gagnons un avantage de sécurité par l’obscurité, ce qui est bien, mais nous ne comptons pas sur l’obscurité . S'ils l'ont trouvé, ils doivent encore déchiffrer le mot de passe.

TL; DR - Ne compter que sur l'obscurité est mauvais. Vous voulez que votre système soit sécurisé avec l'attaquant sachant que son fonctionnement est complet en dehors des informations secrètes spécifiquement contrôlables (c'est-à-dire les mots de passe). L'obscurité en soi n'est cependant pas mauvaise et peut en fait être une bonne chose.

Edit: Pour répondre plus précisément à votre question de probabilité, oui d'une manière que vous pourriez voir comme ça, tout en appréciant les différences. Les ports vont de 1 à 65535 et peuvent être rapidement vérifiés en 1 minute avec un scanner comme nmap. "Deviner" un mot de passe aléatoire, disons à 10 chiffres, de tous les caractères ascii est 1 / 1.8446744e + 19 et prendrait 5,8 millions d'années à deviner 100 000 mots de passe par seconde.

Edit 2: Pour répondre au commentaire ci-dessous. Les clés peuvent être générées avec une entropie suffisante pour être considérées comme vraiment aléatoires ( http://tools.ietf.org/html/rfc4086). Sinon, c'est un défaut de mise en œuvre plutôt que de philosophie. Vous avez raison de dire que tout repose sur le fait que les attaquants ne connaissent pas les informations (mots de passe) et que la définition du dictionnaire de l'obscurité est "L'état d'être inconnu", vous pouvez donc dire correctement que tout compte sur un niveau d'obscurité.

Encore une fois, la valeur se résume à la sécurité pratique étant donné que les informations que vous pouvez contrôler restent inconnues. Les clés, qu'il s'agisse de mots de passe ou de certificats, etc., sont (relativement) simples à garder secrètes. Les algorithmes et autres méthodes faciles à vérifier sont difficiles à garder secrets. «Vaut-il la peine» se résume à déterminer ce qu'il est possible de garder inconnu et à juger de la possibilité d'un compromis sur la base de cette information inconnue.

«mais cela ne fait certainement jamais de mal» ** Absolument faux **.Tout ce que vous modifiez, chaque peu de complexité que vous ajoutez à un système, encourt le risque d'introduire une vulnérabilité.En fait, l'exemple même que vous avez utilisé introduit une vulnérabilité.Exécution de SSH sur un _hurts_ à port élevé.Les ports supérieurs à 1024 peuvent être liés sans racine, ce qui permet à un attaquant de se faire passer pour un serveur SSH, mais si, et seulement si, vous avez implémenté votre mesure d'obscurité «inoffensive».Bien sûr, utiliser un port bas non standard ne fait pas de mal, mais c'est clairement quelque chose que vous n'avez pas pris en compte!
@forest de plus, si vous «cachez» des éléments des scanners automatisés, vous incluez des scanners de vulnérabilité que vous exécutez vous-même;par exemple.si une vulnérabilité SSH «Headline News» est découverte, vous risquez de ne pas identifier les systèmes à corriger.Vous risquez que vos services soient bloqués par des agents de sécurité trop zélés des deux côtés (un risque de sécurité en soi).Et obscurcir les algorithmes cryptographiques vous risque également de casser des choses, c'est dangereusement proche de rouler votre propre sécurité.("Décomposons votre mot de passe en deux morceaux de 6 caractères et chiffrons-les séparément", pourrait sonner quelques cloches!)
Ladadadada
2013-03-06 15:15:24 UTC
view on stackexchange narkive permalink

Les secrets sont difficiles à garder secrets. Plus un secret est volumineux et plus de personnes le connaissent, plus il risque de fuir rapidement.

Les bons secrets sont:

  • Petit.
  • Connu par une seule personne.
  • Facile à changer.

Lorsque nous accusons quelqu'un de sécurité par l'obscurité , ce que nous disons en réalité que nous pensons que leur secret pourrait être plus petit, connu par moins de gens et / ou plus facile à modifier .

Les algorithmes, les numéros de port et les mots de passe partagés échouent tous aux deuxième et troisième points ci-dessus. Les algorithmes échouent également sur le premier point.

La distinction entre quand quelque chose est un secret approprié et simplement obscur est de savoir si nous connaissons un moyen d'atteindre le même niveau de sécurité avec un plus petit secret qui est plus facile à changer et est connu par moins de gens.


Je ne suis pas d'accord avec l'affirmation selon laquelle l'obscurité supplémentaire ne fait jamais de mal.

Dans le cas des numéros de port SSH, il est un peu de temps supplémentaire requis pour taper -p 1234 chaque fois que vous utilisez SSH. Ce n'est qu'une seconde ou deux, mais avec le nombre de fois que j'utilise SSH, cela finirait par être significatif. Il faut se souvenir que ce client est légèrement différent et enseigner la même chose aux nouveaux employés. Il y a le cas où vous oubliez que ce client est sur un port étrange et perdez des minutes à regarder les configurations de pare-feu et les moniteurs de disponibilité à essayer de comprendre pourquoi vous ne pouvez pas vous connecter.

Puisque les numéros de port sont si faciles à découvrir avec un scan de port, vous devrez également implémenter un IPS qui détecte le scan de port et empêche le port correct de répondre lorsqu'il est vérifié ou implémente quelque chose comme le port-knocking. Ces deux méthodes peuvent être surmontées et n'ajoutent rien de plus que plus d'obscurité, mais elles prennent votre temps à jouer au chat et à la souris avec votre attaquant.

Le même temps passé à désactiver les connexions root et les mots de passe et à passer aux clés aura un meilleur impact sur la sécurité. Perdre du temps à obscurcir les détails enlève de véritables mesures de sécurité.

Dans le cas d'un algorithme secret, l'algorithme passe à côté de l'examen supplémentaire que de nombreux chercheurs en sécurité peuvent fournir. L'obscurité (ou le secret) de l'algorithme le rend probablement moins sécurisé.

Je ne veux pas paraître défensif, mais diriez-vous que la surcharge d'un autre port est vraiment importante? Pour un simple changement de port, évitez que la grande majorité des scanners d'exploit automatisés recherchent des erreurs de configuration. Je dirais que -p 2222 n'est pas une surcharge significative dans un sens réel.
Je ne dirais pas cela avec véhémence ou pendant très longtemps. J'estime que cela ajouterait jusqu'à * minutes par jour * dans ma situation, mais mon travail quotidien est d'administrateur système pour une infrastructure de taille moyenne où l'utilisation de SSH est très courante. Plus grand * ou * plus petit impliquerait une utilisation moins réelle de SSH. Je * dirais * longuement que le même effort pourrait être mieux dépensé.
Si vous êtes incapable de modifier votre .ssh / config pour ajouter un port autre que le port standard, alors j'hésiterais à prendre vos conseils de sécurité.
@Ladadadada a un point tout à fait valable. Bien que la modification du port SSH par défaut soit une pratique courante pour empêcher les outils automatisés, elle présente des inconvénients. Par exemple, les connexions entrantes vers des ports autres que 22 peuvent être bloquées par un pare-feu côté client dans une autre entreprise, etc. En dehors de cela, les outils automatisés peuvent facilement être bloqués via une simple interdiction IP après 3 tentatives de connexion. Ce n'est pas l'ajout d'un nouveau port qui est difficile, vous devez familiariser chaque employé (interne et externe), et tous ces efforts ne semblent pas en valoir la peine.
Dans une situation de très haute sécurité, le point 2 n'est pas vrai à proprement parler, il y a des situations où personne ne connaît tout le secret, chaque personne ne connaissant que des parties du secret, et ils devaient tous être présents pour déverrouiller le secret.
@Ladadadada, Je _pourrais_ être d'accord avec l'idée générale des frais généraux, mais votre exemple (excusez-moi) est ridicule. La surcharge ici est le produit de votre propre échec à optimiser vos tâches. J'ai un petit script shell d'une ligne sur lequel je double-clique chaque fois que je veux configurer mon tunnel SSH (qui utilise un numéro de port inhabituel, une protection par force brute et une authentification par clé).
@Adnan J'ai déjà mentionné que je ne soutiendrai pas fermement qu'il s'agit d'un * gros * surcoût, (car ce n'est pas le cas) mais vous vous êtes concentré sur un seul aspect d'avoir SSH sur un port non standard et j'ai mentionné nombreuses. Vous semblez également vouloir discuter de quelque chose qui n'a rien à voir avec la sécurité. * Tout * temps perdu à gérer le port non standard (y compris l'ajout de lignes à `~ / .ssh / config` et l'écriture de scripts pour vous connecter) est du temps que vous auriez pu passer à ajouter une vraie sécurité.
@Ladadadada, si vous ne voulez pas que vos opinions soient critiquées, ne les publiez pas sur SE. En tant qu'utilisateur du service (SSH dans ce cas), vous pouvez vraiment ajouter une sécurité "réelle". Changer le port SSH de la valeur par défaut 22 _est_ une bonne pratique, mon argument est que cela empêche le grand pourcentage d'attaques automatisées. Vous dites que ce n'est pas une bonne pratique, votre argument est que cela gaspille 10 secondes pour écrire un script shell, et vous soutenez qu'en 10 secondes, vous ferez quelque chose pour impacter la sécurité de SSH.
Dois-je ** seulement ** changer le port par défaut et utiliser `password` comme mot de passe? Bien sûr que non. Mais il vaut certainement mieux faire les deux. De plus, aucun de nous ne peut avoir de verdict final dans ce domaine, tout dépend du cas. Lorsque le changement du port par défaut n'est pas pratique (nécessite des modifications sur un grand nombre de clients), ce n'est pas bon.
+1: Ceci est essentiellement la version la plus informée, intelligente et raisonnée de mon commentaire sournois super-secret-crypto-port.
Eh bien, l'argument `ssh -p 1234` _est_ invalide car nous avons un fichier .ssh / config qui vous permet de spécifier que` ssh foo` se connecte au serveur `bar` sur le port` quel que soit`, et en utilisant la clé `foo_rsa`.
Mes opinions sont toujours critiquables, mais mon argument est que ** l'affirmation selon laquelle "l'obscurité supplémentaire ne fait * jamais * mal" est fausse **. La raison pour laquelle je ne discuterai pas de `-p 1234` est que ce n'est pas une partie importante de mon argument réel. C'est simplement un exemple d'obscurité blessant (aussi minuscule que soit la blessure) et n'a été choisi que parce que c'est dans la question d'origine, pas parce que c'est un bon exemple. Si nous supposons que vous avez raison et que changer le port SSH * vaut * le temps qu'il faut, mon argument n'est pas du tout affaibli.
Dans une discussion houleuse et futile, le commentaire de Lie Ryan est passé inaperçu, peut-être pourriez-vous l'inclure dans votre belle réponse?
pwaller
2013-03-06 18:24:48 UTC
view on stackexchange narkive permalink

La sécurité par l'obscurité est l'endroit où vous vous fiez à un fait que vous espérez inconnu d'un attaquant. Un problème majeur avec ceci est qu'une fois que le fait est divulgué, le schéma de sécurité est rendu inutile.

Cependant, tout ce que SSH fait est d'obscurcir les informations. Il repose sur l'espoir qu'un attaquant ne pensera pas à deviner la bonne clé cryptographique.

Lorsque l'expression « Sécurité par l'obscurité » est discutée, elle fait référence aux processus impliqués, plutôt qu'à des informations secrètes. Le problème avec SSH, c'est qu'en tant que processus , il a été soigneusement contrôlé pour garantir que la seule chose que vous devez garder secrète est la clé cryptographique. Ce n'est en principe pas possible pour l'attaquant de "penser et deviner", car l'espace dans lequel vivent les clés cryptographiques est vaste^.

Bruce Schneier a montré que pour faire de la force brute une clé AES 256 bits dont vous auriez besoin au minimum , pour capturer la totalité de l'énergie du soleil pendant 32 ans (!). Peu importe la vitesse de votre ordinateur. C'est juste un résultat théorique de l'information qui tient quel que soit l'ordinateur que vous utilisez (nonobstant l'informatique quantique).

C'est totalement irréalisable avec la technologie actuelle. Cela ne veut pas dire que SSH utilise AES, mais c'est l'un des principes d'une bonne cryptographie.

Par exemple, un bogue est découvert dans un logiciel où un utilisateur (de confiance) trouve un l'entrée permet un contournement d'authentification. Un mauvais gestionnaire pourrait dire "ah, mais il est vraiment improbable que des utilisateurs non fiables découvrent jamais cela, pourquoi se donner la peine de le réparer". C'est la sécurité par l'obscurité.

L'obscurité renvoie en effet à une procédure (algorithme), plutôt qu'à une connaissance partagée (mot de passe). Souvent, la raison pour laquelle la «sécurité par l'obscurité» est considérée comme mauvaise est que le contraire (algorithmes publics, connus, essayés, testés, éprouvés) est considéré comme bon. Les gens qui essaient de mettre en œuvre un algorithme "obscur" inventeront souvent le leur, oubliant souvent certaines choses et créant d'énormes vulnérabilités.
* "Bruce Schneier a montré que pour forcer brutalement une clé AES 256 bits dont vous auriez besoin au minimum, pour capturer la totalité de l'énergie du soleil pendant 32 ans (!)" * - En fait, c'était de la force brute * ( toutes les combinaisons de) * une clé 192 bits. Pour forcer une clé de 256 bits, il faudrait plus d'énergie que le soleil entier n'en produira * jamais *. En fait, il montre qu'il faudrait l'énergie d'environ 137 milliards de supernovas.
(@BlueRaja-DannyPflughoeft, c'est pourquoi j'ai dit * à un minimum * ;-)
Xander
2013-03-06 19:03:54 UTC
view on stackexchange narkive permalink

Cela a été abordé dans plusieurs autres réponses, mais il y a trois pièces à ce puzzle.

  1. Mécanismes
  2. Implémentation / Configuration
  3. Données

Un exemple de mécanisme serait AES, ou SHA-1, ou pour votre exemple, SSH.
Un exemple d'implémentation / configuration serait sur quel port SSH écoute, ou sur quel algorithme de cryptage vous avez choisi pour crypter les données de votre application. Un exemple de données est une clé privée ou un mot de passe.

Un mécanisme ne doit jamais être obscur. «C'est sûr parce que vous ne savez pas comment cela fonctionne» n'est pas la sécurité. Il doit pouvoir être examiné dans les moindres détails sans que les implémentations soient exploitables en l'absence de données secrètes.

Une mise en œuvre peut ou non être masquée. En règle générale, cela ne nuit ni ne contribue à la sécurité matériellement lorsque vous faites cela. Vous pouvez voir moins d'analyses de port identifiant votre port SSH, ou vous pouvez masquer l'algorithme de cryptage utilisé pour un texte chiffré particulier, mais pour un mécanisme sécurisé sans les données secrètes, cela ne devrait pas avoir d'importance. Le mécanisme devrait toujours être inexploitable. Il y a un argument selon lequel il y a ici un avantage marginal en matière de sécurité et un dommage marginal à la convivialité. Votre kilométrage peut varier.

Les données secrètes doivent toujours être obscures. Si quelqu'un met la main sur vos clés privées ou mots de passe, vous les révoquez, créez de nouvelles données secrètes et promettez de mieux les protéger la prochaine fois.

Saladin
2013-03-06 14:01:54 UTC
view on stackexchange narkive permalink

La sécurité à l'obscurité s'applique à tout ce qui concerne le fait de ne pas corriger la faiblesse particulière au niveau du code / source au lieu de trouver une solution de contournement pour combler vos lacunes. Lorsque cette couche de protection est supprimée, la vulnérabilité est ouverte pour être exploitée.

Un tel exemple est le programme-hooks qui donne aux développeurs une sorte de moyen secret de se connecter aux applications dans un environnement de production. C'est en effet une menace un mythe de sécurité; mais c'est rapidement terni par quelqu'un qui a assez de connaissances pour faire de l'ingénierie inverse et parfois simplement en reniflant le réseau.

Habituellement, la principale raison pour laquelle ces menaces s'échappent dans la nature quand elles sont manquées dans la phase SDLC de conception de système / application; puis, quand il passe à l'environnement de production, cela coûte trop cher pour les choses à réparer à partir de ce point. C'est là que des solutions de contournement ou des dissimulations commencent à émerger.

Un autre exemple Les gens écrivent leur mot de passe sur des morceaux de papier et le mettent sous leur clavier.

Aussi comme un facteur de marché , vous devez savoir que de telles pratiques sont normalement suivies par les fournisseurs / la communauté de source fermée; pour un projet open-source, ce concept ne s'applique pas à des fins pratiques car le code est rendu public pour examen et à peu près tout le monde peut répondre à ses préoccupations grâce à des techniques telles que les révisions de code. Le moyen le meilleur et le plus fiable de l'attraper.

Vaincre la sécurité SSH grâce à des exemples pratiques de concept d'obscurité

  1. Exécuter nessus scan sur le réseau ciblé serait vous apporter les services vulnérables et les ports mappés
  2. Exécutez une analyse nmap sur le réseau ciblé pour les services ouverts.
Les exemples ont du sens. Il est évident qu'écrire votre mot de passe sur quelque chose et le conserver par l'ordinateur annule l'objectif du mot de passe. Mais qu'en est-il du cas du changement de port de service? De toute évidence, cela rend la chose plus sûre. Si une faille est trouvée avec SSH, elle peut différer lorsque vous serez vissé assez longtemps pour que vous puissiez corriger le problème avant que quelqu'un ne le trouve et ne l'exploite. Pour ce genre de chose, à quel moment savez-vous que «d'accord, c'est juste ridicule».
Comme je l'ai dit, par exemple s'applique également à ssh, il est nécessaire de résoudre le problème à la source. En mettant à jour ssh crypt lib ou tout ce qu'il faut, un changement de port signifie que si l'attaquant a déployé un renifleur dans votre environnement, il peut renifler la poignée de main et apprendre à connaître le port obscur que vous utilisez
J'accorde que l'exemple de port de service de commutation est un peu faible. Un autre exemple, alors; disons que vous utilisez une méthode de cryptage qui, avec l'ordinateur le plus rapide actuellement sur terre, prendrait 10 ans à se fissurer. Il peut être craqué par la force brute, mais pas facilement. Vous avez obscurci les informations en faisant l'équivalent informatique de mettre un canapé dessus. Mais c'est toujours possible. Est-ce raisonnable, compte tenu de la loi de Moore? Et si cela prenait 100 ans? 1000 ans? En supposant que vous ne savez pas combien de temps les informations doivent être sécurisées.
Je suppose que mon problème est que, d'après ce que j'ai trouvé, ce qui est et n'est pas obscur dépend plus de l'attaquant que de la politique elle-même. Si votre attaquant est plus intelligent que les personnes qui ont créé les outils que vous utilisez pour vous protéger / votre employeur / votre client / votre blog de chat, leur sécurité est, du point de vue des attaquants, juste autant de tables de calcul à déplacer. Comment savoir que j'ai empilé suffisamment de canapés? Ou, plutôt, comment puis-je savoir que la politique à laquelle j'ai pensé sera adéquate même contre quelqu'un de plus intelligent que moi? Je sais que personne ne peut inverser la soustraction, par exemple. Mais une politique de sécurité donnée?
Vous devez comprendre que tout algorithme doit avoir un niveau d'assurance particulier pour le système ou être officiellement appelé comme cible d'évaluation (livre orange). Plusieurs fois, ces algorithmes passent par un examen minutieux comme le fait le NIST, en fait, il existe une science complète pour évaluer les algos. Le hic, c'est que seuls les algos divulgués publiquement peuvent être testés par des tiers. La possibilité de rétro-ingénierie et d'autres menaces est ce que le processus d'évaluation vérifie. Lorsque nous utilisons par exemple AES128, nous faisons confiance à la norme de cryptage. Cette confiance vient de l'évaluation. Parfois, la politique conduit à l'évaluation.
Encore une fois, je dois admettre l'ignorance - je dois me déplacer pour lire les livres arc-en-ciel. Mais, pour être sûr de bien comprendre ce que vous dites ... Il existe une science pour évaluer la sécurité des algorithmes lorsqu'ils sont développés - pas simplement pour le cryptage - et, bien que pour un usage quotidien, l'adage `` sécurité par l'obscurité n'est pas la sécurité »sert d'auto-vérification rapide utile, il existe des définitions beaucoup plus rigoureuses de suffisamment sécurisé, qui malheureusement (mais naturellement) nécessitent des livres entiers pour être énumérés. Une analyse juste?
@root Je vous suggère de lire ce lien. http://csrc.nist.gov/groups/STM/cavp/index.html
Dûment noté. On dirait le genre de documentation dans laquelle une personne pourrait se faufiler. Heureusement, j'ai quelques jours libres à venir ... Merci.
@root Je vous suggère de lire ce lien. http://csrc.nist.gov/groups/STM/cavp/index.html Les menaces qui s'appliquent à l'algo cryptographique sont différentes de ce que vous appelez le prescriptif "sécurité par l'obscurité". http://www.giac.org/cissp-papers/57.pdf. L'utilisation de l'archive à clé publique est un exemple de la sécurité par l'obscurité; seules les clés privées doivent être protégées.
AJ Henderson
2013-03-07 04:08:52 UTC
view on stackexchange narkive permalink

La sécurité par l'obscurité n'est pas la sécurité est peut-être plus précisément énoncée comme suit: «Un système de sécurité est aussi sûr que ses secrets sont difficiles à deviner». Vraiment, quand vous y arrivez, le cryptage pourrait être considéré comme une sécurité par l'obscurité car la clé de cryptage est obscure. La différence est qu'il est si obscur qu'il est mathématiquement impossible à trouver et donc à sécuriser.

Dans tout système de sécurité basé sur le secret, vous voulez que le secret soit aussi limité que possible et aussi difficile à deviner que possible. . Plus un secret est complexe, plus il est probable qu'il contienne un défaut. De plus, limiter la quantité à garder secrète permet de le garder plus facilement secret.

L'affirmation "la sécurité par l'obscurité n'est pas la sécurité" découle de l'idée que de nombreuses idées "intelligentes" surgissent tout simplement avec des façons compliquées de faire quelque chose pour essayer de rendre plus difficile pour un attaquant de comprendre quelque chose, mais souvent un détail de ces approches aura un impact sur d'autres détails d'autres étapes, il est donc impossible de dire à quel point ce sera difficile pour un attaquant avec connaissance partielle d'un algorithme secret pour déterminer le reste de l'algorithme.

Les clés par contre devraient être aléatoires, connaître quelques bits d'une clé cryptographique par exemple ne devrait pas vous aider à comprendre les autres bits dans la clé. De même, la difficulté de trouver la clé est assez bien comprise. Étant donné que la sécurité relative de l'algorithme n'est pas affectée de manière significative (ou quantifiable de manière fiable) par le secret de l'algorithme, cela n'ajoute pas de sécurité statistiquement significative.

Qu'est-ce qui a un impact statistiquement significatif sur la sécurité de un algorithme est un problème avec l'algorithme. En général, les algorithmes publiés ont été beaucoup plus minutieusement examinés pour détecter toute faille qui les brise et fourniront donc généralement une plus grande confiance dans la sécurité qu'ils fournissent.

Pour terminer, la plupart des problèmes de sécurité impliquent un certain niveau d'obscurité, mais l'astuce consiste à minimiser la quantité et à maximiser la facilité de protection de ces secrets tout en essayant de s'assurer qu'il n'y a pas de failles non détectées qui entraîneraient un mauvais comportement du système et révéler les secrets.

Alexander
2013-03-06 19:03:55 UTC
view on stackexchange narkive permalink

Dans chaque algorithme de chiffrement, à chaque invite de connexion, la «sécurité par l'obscurité» est un composant majeur. Il repose toujours sur une sorte de connaissance secrète (à l'exception de l'authentification à deux facteurs).

La différence entre une bonne sécurité et une mauvaise sécurité est liée aux propriétés de la connaissance secrète : Reste-t-elle secrète?

Un mauvais exemple est un système où vous pouvez obtenir des informations sur ce secret à partir d'autres canaux. Disons que vous avez inventé votre propre algorithme de chiffrement, par exemple "zip puis XOR avec votre clé". Un attaquant sonde votre système et peut déterminer l'algorithme de compression à partir du temps qu'il faut à votre schéma de chiffrement pour encoder différents messages en texte brut. L'attaquant a acquis des connaissances sur votre système, connaît les éléments internes de l'algorithme zip et pourrait être en mesure d'utiliser ces données pour déterminer votre clé. De l'extérieur, cela ressemble à un algorithme parfaitement bon, les données compressées et xor'ed sembleront assez aléatoires mais ne poseront qu'un petit défi à un attaquant sophistiqué. Votre clé peut être très longue mais cela ne vous aide pas à faire la distinction entre la mauvaise et la bonne obscurité. Vous avez accidentellement intégré un chemin pour acquérir des connaissances sur votre clé secrète dans l'algorithme:

Le contre-exemple est le chiffrement à clé publique RSA. Ici, la clé secrète est un grand nombre premier. La clé publique est le produit de la clé secrète et d'un autre grand nombre premier. Maintenant, même avec l'algorithme RSA bien connu, je peux vous donner ma clé publique, vous pouvez encoder les données que vous voulez avec mais cela ne divulgue aucune information sur la clé secrète .

Le temps dont une personne a besoin pour accéder à vos données est très important pour distinguer une bonne sécurité d'une mauvaise sécurité. Dans votre exemple spécifique, passer du port 22 au port 2222 do est une autre information dont l'attaquant a besoin, c'est donc un avantage de sécurité. Comme cela est facile à comprendre en peu de temps, cela n'ajoute qu'une très petite quantité, mais ne laisse rien fuir sur votre clé. Comme cette analyse de port est triviale et ne coûte qu'une seule fois, seule la quantité totale d'informations nécessaires pour connaître votre clé secrète reste constante, c'est pourquoi elle n'est pas considérée comme améliorant la sécurité totale, d'où le dicton commun que «la sécurité par l'obscurité» n'aide pas.

Nathan Long
2013-03-06 23:21:55 UTC
view on stackexchange narkive permalink

"L'obscurité" concerne les hypothèses

Je pense que la "sécurité par l'obscurité" concerne en fait les hypothèses erronées.

Par exemple, si j'utilise naïvement mon propre chiffrement à la main, en pensant "personne ne saura comment le briser parce qu'il est unique":

  • Je sais qu'il peut être brisé par quelqu'un qui a la clé.
  • Je suppose qu'il ne peut pas être cassé par d'autres moyens. C'est probablement faux.

Si j'utilise une méthode de chiffrement éprouvée:

  • Je sais qu'elle peut être interrompue par quelqu'un qui a la clé.
  • J'ai de bonnes preuves qu'il ne peut pas être cassé par d'autres moyens.

Je compte toujours sur «l'obscurité» de ma clé. Mais c'est la seule chose que je dois protéger.

Donc, pour détecter la "sécurité par l'obscurité", contester les hypothèses. Si quelqu'un dit "personne ne peut deviner ou détecter que nous faisons X", la réponse correcte est combien de preuves avez-vous? Le niveau de sécurité est très, très élevé.

JimmyB
2013-03-07 21:10:20 UTC
view on stackexchange narkive permalink

Je le formulerais de cette façon:

«La sécurité par l'obscurité» fait référence à une situation où un attaquant est délibérément fourni avec tous les moyens / informations nécessaires pour briser le mécanisme de sécurité, en espérant ou en supposant que l'attaquant ne dépensera pas l'effort pour le révéler.

Parfois, on peut observer que certains programmes essaient de parvenir à la sécurité par un système de chiffrement `` automatique '', où à la fin, en plus de l'algorithme de cryptage, la clé de cryptage est contenue quelque part dans le programme lui-même. Le programme lui-même n'aura pas besoin d'informations supplémentaires pour pouvoir déchiffrer ses données «secrètes»; et aucun attaquant non plus.

La «vraie» sécurité essaiera de s'assurer qu'un attaquant n'aura jamais toutes les informations nécessaires pour la briser. Lors de l'utilisation du chiffrement, peu importe si l'attaquant a accès à la fois au message de chiffrement et à l'algorithme pour le créer tant que la clé de chiffrement ne lui est pas divulguée . De cette façon, il se voit refuser des informations critiques et ne peut pas à partir des informations qu'il a simplement contourner le mécanisme de sécurité.

BlueRaja - Danny Pflughoeft
2013-03-06 23:06:36 UTC
view on stackexchange narkive permalink

Vous pouvez utiliser ce que vous voulez pour la "clé secrète", mais les ports font un mauvais choix; il n'y en a que 2 ^ 16, ils peuvent être reniflés, et ils sont (généralement) statiques pour la durée de la connexion.

Cependant, ils ont été utilisés comme (partie de) la clé secrète dans le passé, quand il n’ya pas d’autre bon choix. En particulier, la randomisation du port a été utilisée pour contrer l ' attaque d'empoisonnement du cache DNS Kaminsky d'il y a quelques années. Combiné à la randomisation de l'ID de requête 16 bits, cela nous donne 32 bits de sécurité, ce qui est plus que suffisant pour nous protéger pendant la durée d'une requête DNS typique (~ 0,1 seconde). La clé secrète peut toujours être reniflée, mais elle est considérée comme "pas grave" puisque DNS a toujours été vulnérable aux attaques MITM de toute façon. C'est la vie.

Donc, que votre exemple soit "sécurité par l'obscurité" ou pas dépend vraiment du contexte.

KyleM
2013-03-06 23:26:07 UTC
view on stackexchange narkive permalink

Si vous avez toute une suite de mécanismes de protection, vous pourriez dire que l’un de ces mécanismes de protection n’est que «la sécurité par l’obscurité», mais il est plus important de considérer la sécurité du système dans son ensemble.

Individuellement, un mécanisme de protection est considéré comme une "sécurité par l'obscurité" si ce mécanisme de protection dépend d'un attaquant qui n'attend pas quelque chose, ou si ce mécanisme de protection dépend du fait qu'il est inhabituel plutôt que cryptographique fort. En d'autres termes, mettre SSH sur le port 2222 est la sécurité par l'obscurité car un attaquant ne s'attendrait pas à ce qu'il soit là (ce ne serait pas sa première supposition), et parce que ce n'est pas le port normal. Cependant, protéger SSH avec un mot de passe de haute résistance est une véritable sécurité car il est destiné à être cryptographiquement fort. De plus, changer votre nom d'utilisateur de "root" à quelque chose qui ne peut pas être facilement deviné est également une vraie sécurité car il y a une mesure de la force cryptographique là-bas: si l'attaquant ne peut pas comprendre le nom d'utilisateur, il ne peut pas très bien pénétrer dans le système même si ils obtiennent le mot de passe correct.

Val
2013-03-07 01:33:14 UTC
view on stackexchange narkive permalink

Par obscurité, je comprends que votre sécurité est basée sur le fait que le pirate informatique ne connaît pas votre algorithme de chiffrement. Vous inversez simplement les caractères dans vos mots, comme PASS -> SAPP, ou faites une obfuscation plus complexe, et vous pouvez communiquer tant que personne ne repère l'algorithme. Si le dévoilement de l'algorithme de chiffrement brise toute votre sécurité, alors c'est l'obscurité, pas la sécurité. La vraie sécurité commence lorsque le pirate informatique ne pourra pas déchiffrer votre message, étant donné les algorithmes de chiffrement et de déchiffrement.

Eric
2013-03-07 06:22:28 UTC
view on stackexchange narkive permalink

La sécurité est assurée en authentifiant que vous êtes le destinataire ou l'utilisateur prévu. Il y a 3 facteurs d'authentification

  • Quelque chose que l'utilisateur sait (par exemple, mot de passe, code PIN, modèle)
  • Quelque chose que l'utilisateur possède (par exemple, carte ATM, carte à puce)
  • Quelque chose que l'utilisateur est (par exemple, caractéristique biométrique, telle qu'une empreinte digitale)

La plupart des mesures de sécurité utilisent l'authentification à un facteur. SSH, par exemple, nécessite de connaître un mot de passe ou d'avoir une clé privée (je suppose que vous pourriez dire que le fait d'exiger une phrase de passe pour la clé serait une authentification à deux facteurs).

L'authentification à deux facteurs est quelque chose qui a été mis en œuvre par de nombreux fournisseurs de services et logiciels ces derniers temps. Cela nécessite deux des facteurs énumérés ci-dessus, généralement un mot de passe et un numéro de téléphone. Avec l'authentification à deux facteurs, un attaquant peut accéder à l'une ou l'autre des informations d'identification de sécurité et ne peut toujours pas accéder au système sécurisé.

La sécurité par l'obscurité est une authentification à facteur zéro. Vous n'êtes pas obligé de connaître un secret, de posséder quoi que ce soit ou d'être une personne en particulier. Sans authentification, il n'y a pas d'authentification et donc pas de réelle sécurité.

dr jimbob
2013-03-08 04:32:20 UTC
view on stackexchange narkive permalink

L'obscurité ne peut vous blesser que si vous pensez qu'elle vous offre une véritable sécurité et adoptez des pratiques faibles. Cependant, l'obscurité peut aider légèrement car elle vous fait gagner du temps contre des vulnérabilités futures inconnues, si vous essayez de maintenir les meilleures pratiques (phrases de passe fortes, appliquer des mises à jour de sécurité, utiliser des algorithmes et protocoles vérifiés par la sécurité, etc.). L'obscurité n'empêche pas une attaque de quelqu'un qui vous a ciblé si votre système est vulnérable, mais elle n'annonce pas non plus le fait que vous êtes vulnérable au monde entier.

Si vous aviez un Ruby On Rails et a annoncé cela et s'est avéré être en vacances en janvier dernier, des gens auraient pu exécuter des commandes arbitraires sur votre serveur Web. En fait, la publicité permettrait aux attaquants de vous trouver beaucoup plus rapidement que s'ils devaient deviner au hasard le type de pile technologique que vous exécutiez et essayer chaque site Web aléatoire.

Ou disons qu'il y a une faiblesse du jour zéro dans SSH; un peu comme le problème de génération de clé Debian SSH il y a quelques années. Les gens commenceront à scanner au hasard pour trouver ssh fonctionnant sur le port 22 sur des adresses IP aléatoires, puis exécuteront l'exploit. Bien sûr, ils pourraient d'abord effectuer une analyse de port pour rechercher ssh, mais les attaquants chercheront d'abord le fruit bas. Une recherche complète rendrait leur analyse plus de 10000 fois plus lente. J'espère que vous avez corrigé le problème. La plupart des adresses IP aléatoires n'auront pas de ssh ou quoi que ce soit d'autre en cours d'exécution, il est donc logique que les attaquants arrêtent de scanner après le port 22 (et peut-être quelques autres 222 et 2222 et 22222 également). Si votre serveur domestique ne répond pas aux pings et abandonne tous les paquets vers les ports autres que 39325, ils passeront probablement à autre chose avant de trouver votre serveur ssh. C'est l'obscurité qui vous aide. Oui, un espion réseau pourrait facilement trouver votre port à l'écoute sur une seule connexion ssh. Mais pour la grande majorité des attaquants qui vous ont ciblé au hasard, ils n'auront pas observé de connexion ssh en écoutant votre trafic réseau. De plus, même pour ces attaquants, 99,9% du temps, vous pensez que votre configuration ssh est sécurisée et ne présente aucune vulnérabilité.

Et pour les tracas supplémentaires liés à la saisie de ssh -p 39325 -Y foologin@foo.subdomain.example.com , quiconque utilise ssh configure fréquemment un ~ / .ssh / config (ainsi que authorized_keys et id_rsa.pub / id_rsa ) afin qu'ils puissent simplement taper ssh foo pour se connecter après avoir tapé la phrase de passe de leurs clés privées. Maintenant, votre fichier de configuration se souvient du nom de domaine complet, de votre nom d'utilisateur, du port (sinon 22) et de tout autre indicateur. Pour ssh, je changerai de port s'il est connecté à Internet et je ne l'utilise que (ma machine domestique, mon VPS) car c'est un problème pour que tout le monde utilise le même port que vous. Pour les trucs internes à plusieurs utilisateurs au travail, je garde un pare-feu sur Internet extérieur et j'ai besoin d'un accès extérieur pour passer par un VPN.

Pour mémoire, mon VPS avait l'habitude de faire fonctionner ssh sur le port 22 et je me suis mis à ~ 10000 mauvaises tentatives d'authentification / jour (toutes avec des noms d'utilisateur inexistants) enregistrées dans les fichiers journaux. Au cours des trois derniers mois de fichiers journaux, je n'ai eu aucune exécution sur un autre port.

Spook
2013-03-10 20:22:25 UTC
view on stackexchange narkive permalink

Je suppose que l'obscurité peut être mesurée en comparant sa valeur de sécurité à combien cela compliquera l'utilisation du support protégé. Quelqu'un a déjà mentionné que changer le port SSH augmentera un peu votre sécurité, mais en même temps compliquera beaucoup l'utilisation du shell, car vous devrez vous souvenir du port sur lequel il se trouve, apprendre à tous les nouveaux employés cette sécurité. mesure, et finalement cela finira comme une note collante attachée aux affichages de l'utilisateur ou aux scripts automatiques avec le port codé en dur, annulant ainsi sa valeur de sécurité.

De même, vous pouvez masquer le code source pour le protéger. Mais si quelqu'un y accède, ce n'est qu'une question de temps avant qu'il ne restaure les significations originales des fonctions et des variables (par exemple par un débogage soigneux) rendant l'obscurcissement inutile. D'autre part, vous devez vous rappeler d'exécuter un programme spécial avant de compiler le code ou (ce qui est encore pire, mais je l'ai vu) simplement de travailler sur du code avec une convention de dénomination étrange.

À mon avis, vous perdez plus que vous ne gagnez en utilisant l'obscurité et c'est pourquoi la sécurité par l'obscurité est considérée comme une mauvaise pratique.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...