Pourquoi la sécurité à travers l’obscurité est-elle une mauvaise idée?

Je suis récemment tombé sur un système où toutes les connexions à la firebase database étaient gérées par des routines masquées de diverses manières, y compris l’encodage de base 64, md5sums et diverses autres techniques.

Est-ce juste moi, ou est-ce trop? Quelles sont les alternatives?

La sécurité à travers l’obscurité serait enterrer votre argent sous un arbre. La seule chose qui le rend sûr est que personne ne sait que c’est là. La vraie sécurité consiste à la placer derrière une serrure ou une combinaison, par exemple dans un coffre-fort. Vous pouvez placer le coffre-fort au coin de la rue, car ce qui le rend sûr, c’est que personne ne peut y entrer, sauf vous .

Comme mentionné par @ ThomasPadron-McCarty ci-dessous dans un commentaire ci-dessous:

Si quelqu’un découvre le mot de passe, vous pouvez simplement changer le mot de passe, ce qui est facile. Si quelqu’un trouve l’emplacement, vous devez déterrer l’argent et le déplacer ailleurs, ce qui représente beaucoup plus de travail. Et si vous utilisez la sécurité par obscurité dans un programme, vous devrez réécrire le programme.

On peut dire que la sécurité par l’obscurité est mauvaise parce qu’elle implique souvent que l’obscurité est utilisée comme principal moyen de sécurité. L’obscurité est acceptable jusqu’à ce qu’elle soit découverte, mais une fois que quelqu’un a déterminé votre obscurité particulière, votre système est à nouveau vulnérable. Compte tenu de la persistance des attaquants, cela ne signifie aucune sécurité.

L’obscurité ne devrait jamais être utilisée comme alternative aux techniques de sécurité appropriées.

L’obscurité comme moyen de cacher votre code source pour empêcher la copie est un autre sujet. Je suis plutôt divisé sur ce sujet. Je peux comprendre pourquoi vous pourriez vouloir le faire, personnellement, je ne me suis jamais trouvé dans une situation où il serait souhaitable.

La sécurité par l’obscurité est un sujet intéressant. Il est (à juste titre) décrié comme un substitut à une sécurité efficace. Un principe typique de la cryptographie est qu’un message est inconnu mais que le contenu ne l’est pas. Les algorithmes d’enchaînement sont généralement largement publiés, analysés par les mathématiciens et, au bout d’un certain temps, leur efficacité augmente, mais rien ne garantit qu’ils soient efficaces.

Certaines personnes cachent leurs algorithmes cryptographiques, mais ceci est considéré comme une pratique dangereuse car de tels algorithmes n’ont pas subi le même examen minutieux. Seules les organisations comme la NSA, qui disposent d’un budget important et d’un personnel de mathématiciens, peuvent s’en tirer avec ce type d’approche.

Un des développements les plus intéressants de ces dernières années a été le risque de stéganographie , qui consiste à cacher des messages dans des images, des fichiers son ou un autre support. Le plus gros problème de la stégparsing consiste à déterminer si un message est présent ou non, rendant cette sécurité obscure.

L’année dernière, j’ai découvert une histoire selon laquelle les chercheurs calculent la capacité d’un canal stéganographique, mais ce qui est vraiment intéressant à ce sujet, c’est:

Étudier un canal stego de cette manière conduit à des résultats contre-intuitifs: par exemple, dans certaines circonstances, doubler le nombre d’algorithmes à la recherche de données cachées peut augmenter la capacité du canal stéganographique.

En d’autres termes, plus vous utilisez d’algorithmes pour identifier les messages, moins cela devient efficace, ce qui va à l’encontre de la critique normale de la sécurité par l’obscurité.

Des choses intéressantes

La principale raison pour laquelle c’est une mauvaise idée est que cela ne corrige pas les problèmes sous-jacents, mais tente simplement de les cacher. Tôt ou tard, les problèmes seront découverts.

De plus, un cryptage supplémentaire entraînera des frais supplémentaires.

Enfin, l’obscurité excessive (comme l’utilisation de sums de contrôle) rend la maintenance un cauchemar.

De meilleures alternatives de sécurité consistent à éliminer les faiblesses potentielles de votre code, telles que les entrées forcées pour empêcher les attaques par injection.

Utiliser l’obscurité comme toutes ces personnes sont d’accord n’est pas la sécurité, c’est le temps de s’acheter. Cela dit, si un système de sécurité correct est implémenté, il est toujours utile d’append une couche supplémentaire d’obscurité. Disons que demain, quelqu’un trouve un trou / une fissure imbattable dans le service SSH qui ne peut pas être réparé immédiatement.

En règle générale, j’ai implémenté en interne … tous les serveurs publics exposent uniquement les ports nécessaires (http / https) et rien de plus. Un serveur faisant face au public aura alors ssh exposé à Internet sur un port obscur à haut numéro et sur un déclencheur de balayage de port pour bloquer toute adresse IP essayant de le trouver.

L’obscurité a sa place dans le monde de la sécurité, mais pas en tant que première et dernière ligne de défense. Dans l’exemple ci-dessus, je n’obtiens aucune attaque de script / bot sur ssh car ils ne veulent pas passer du temps à chercher un port de service ssh non standard et s’ils le font, il est peu probable la sécurité intervient et les coupe.

Toutes les formes de sécurité disponibles sont en réalité des formes de sécurité par l’obscurité. Chaque méthode augmente en complexité et offre une meilleure sécurité, mais elles reposent toutes sur un algorithme et une ou plusieurs clés pour restaurer les données chiffrées. «La sécurité par l’obscurité», comme l’appelle la plupart du temps, lorsque l’on choisit l’un des algorithmes les plus simples et les plus faciles à déchiffrer.

Des algorithmes tels que le changement de caractère sont faciles à implémenter et faciles à déchiffrer, c’est pourquoi ils sont une mauvaise idée. C’est probablement mieux que rien, mais cela ne fera tout au plus que freiner la lecture d’un simple coup d’œil aux données.

Il existe d’excellentes ressources sur Internet que vous pouvez utiliser pour vous informer sur toutes les méthodes de chiffrement disponibles, ainsi que sur leurs forces et leurs faiblesses.

La sécurité consiste à laisser les gens entrer ou les garder en dehors de ce qu’ils savent, qui ils sont ou ce qu’ils ont. Actuellement, la biomésortinge ne permet pas de trouver qui vous êtes et il y aura toujours des problèmes (lecteurs d’empreintes digitales pour quelqu’un qui a été victime d’un accident grave, empreintes digitales falsifiées, etc.). Donc, en réalité, une grande partie de la sécurité consiste à dissimuler quelque chose.

Une bonne sécurité consiste à garder les choses que vous devez garder secrètes au minimum. Si vous avez un canal AES correctement chiffré, vous pouvez laisser les personnes mal intentionnées voir tout ce qui y est sauf le mot de passe, et vous êtes en sécurité. Cela signifie que vous avez une zone beaucoup plus petite pour attaquer et que vous pouvez vous concentrer sur la sécurisation des mots de passe. (Pas que c’est sortingvial.)

Pour ce faire, vous devez avoir confiance en tout sauf le mot de passe. Cela signifie normalement utiliser un crypto standard que de nombreux experts ont examiné. N’importe qui peut créer un chiffre qu’il ne peut pas briser, mais tout le monde ne peut pas faire un chiffre. Bruce Schneier ne peut pas casser. Comme il y a un manque profond de fondements théoriques pour la sécurité du chiffrement, la sécurité d’un chiffrement est déterminée par le fait que beaucoup de personnes très intelligentes et informées essaient de lancer des attaques, même si elles ne sont pas pratiques. , jamais pire). Cela signifie que l’algorithme cryptographique doit être largement connu. J’ai une très grande confiance dans le standard de cryptage avancé et presque aucun dans un algorithme propriétaire que Joe a écrit et masqué.

Cependant, il y a eu des problèmes avec les implémentations d’algorithmes cryptographiques. Il est facile de laisser par inadvertance des trous dans lesquels la clé peut être trouvée ou d’autres méfaits. Cela s’est produit avec un autre champ de signature pour PGP, et des faiblesses avec SSL implémenté sous Debian Linux. Il est même arrivé à OpenBSD, qui est probablement le système d’exploitation le plus sécurisé disponible (je pense que c’est jusqu’à deux exploits en dix ans). Par conséquent, cela devrait être fait par une entreprise réputée et je me sentirais mieux si les implémentations étaient open source. (La source fermée n’arrêtera pas un attaquant déterminé, mais cela rendra plus difficile pour les bons gars de trouver des trous à fermer.)

Par conséquent, si je voulais de la sécurité, j’essaierais de faire en sorte que mon système soit aussi fiable que possible, ce qui signifie que le plus ouvert possible, à l’exception du mot de passe.

La mise en couches de la sécurité par l’obscurité sur un système déjà sécurisé peut être utile, mais si le système est sécurisé, cela ne sera pas nécessaire, et s’il n’est pas sûr, le mieux est de le sécuriser. Pensez à l’obscurité comme aux formes les moins réputées de «médecines alternatives» – il est très peu probable qu’elle aide beaucoup et, bien qu’elle ne nuise pas à elle-même, le patient risque moins de consulter un médecin compétent ou un spécialiste de la sécurité informatique.

Enfin, je voudrais faire un plug-in totalement non sollicité et désintéressé pour le blog de Bruce Schneier , rien de plus qu’un lecteur intéressé. J’ai beaucoup appris sur la sécurité.

L’un des meilleurs moyens d’évaluer, de tester ou d’améliorer un produit de sécurité consiste à le faire cogner par un grand groupe de pairs intelligent.

Les produits qui reposent sur leur sécurité en tant que “boîte noire” ne peuvent pas bénéficier de ce type de test. Bien sûr, être une “boîte noire” invite toujours les soupçons (souvent justifiés) à ne pas résister à ce type de contrôle de toute façon.

Dans un cas, j’ai soutenu que la protection par mot de passe est vraiment la sécurité par l’obscurité. La seule sécurité à laquelle je peux penser qui ne serait pas STO est une sorte de sécurité biomésortingque.

Outre ce peu de sémantique et de sélection, STO (Security through obscurity) est évidemment mauvais dans tous les cas où vous avez besoin d’une réelle sécurité. Cependant, il pourrait y avoir des cas où cela n’a pas d’importance. Je vais souvent tamponner un fichier texte que je ne veux pas lire. Mais je me fous de savoir si oui, je préférerais juste que ça ne soit pas lu. Dans ce cas, peu importe, et un pad XOR est un exemple parfait de STO facile à trouver.

Ce n’est presque jamais une bonne idée. C’est la même chose à dire, est-ce une bonne idée de conduire sans ceinture de sécurité? Bien sûr, vous pouvez trouver des cas où cela correspond, mais la réponse à l’expérience semble évidente.

Un chiffrement faible ne dissuadera que les pirates les moins motivés. Il n’est donc pas sans valeur, ce n’est tout simplement pas très utile, en particulier lorsque le chiffrement fort, comme AES, est disponible.

La sécurité par l’obscurité repose sur l’hypothèse que vous êtes intelligent et que vos utilisateurs sont stupides. Si cette hypothèse est basée sur l’arrogance et non sur des données empiriques, vos utilisateurs et vos pirates détermineront comment invoquer la méthode masquée, afficher la page non liée, décomstackr et extraire le mot de passe en texte brut du fichier .dll, etc.

Cela dit, fournir des métadonnées complètes aux utilisateurs n’est pas une bonne idée, et l’obscurcissement est une technique parfaitement valide tant que vous le sauvegardez avec le cryptage, l’autorisation, l’authentification et tous les autres principes de sécurité.

Si le système d’exploitation est Windows, utilisez l’API de protection des données (DPAPI). Ce n’est pas la sécurité par l’obscurité et c’est un bon moyen de stocker les informations d’identification de connexion pour un processus sans surveillance. Comme presque tout le monde le dit ici, la sécurité par l’obscurité ne vous protège pas beaucoup.

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

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

Ce que je dois append et qui n’a pas encore été abordé, c’est la capacité incroyable d’Internet à briser la sécurité par l’obscurité.

Comme cela a été montré à maintes resockets, si votre seule défense est que “personne ne connaît la porte dérobée / le bogue / l’exploit est là”, tout ce qu’il faut, c’est qu’une personne trébuche et, en quelques minutes, des centaines de personnes connaître. Le lendemain, à peu près tout le monde veut le savoir. Aie.