Segurança através da obscuridade

O que é a segurança através da obscuridade?

Na área de security engineering a segurança através de obscuridade ou segurança por obscuridade é uma dependência em relação ao sigilo do projeto ou implementação, como o principal método de proporcionar segurança para um sistema ou componente de um sistema.
Um sistema ou seu componente que depende da obscuridade para se ter uma camada de segurança pode ter vulnerabilidades teóricas ou reais, mas seus desenvolvedores ou proprietários acreditam que, se as falhas não são conhecidas, o sistema ou componente está livre de ataques.

O que a definição acima quer dizer é, que, os desenvolvedores tentam codificar suas aplicações de forma secreta com o pensamento de quem ninguém vai ser capaz de encontrar tais vulnerabilidades que venham a existir e apesar de que a segurança por obscuridade é uma grande furada, grandes corporações continuam utilizando tal técnica.

É bom lembrar que a segurança por obscuridade já vem sendo usada a muito tempo. Um exemplo foi o período da Black Chamber, que ocorreu na Europa, onde países como França e Inglaterra, enviavam mensagens para suas embaixadas utilizando códigos para que essas não pudessem ser lidas por interceptadores, uma vez que essas mensagens viajavam por meios inseguros. O problema aqui foi que em Viena na Áustria eles descobriram como decodificar tais mensagens e a partir dai ter acesso ao seu conteúdo. As cartas que continham as mensagens eram desviadas de seu destino original e iam parar em pontos secretos que eram localizados em Viena, onde eram abertas e suas mensagens decodificadas e posteriormente eram reenviadas para seu destino original. A partir daí outros países conseguiram o mesmo feito. O mais interessante aqui é, que esses países sabiam como decodificar mensagens de outros países, mas mesmo assim eles acreditavam que seu sistema de codificação era seguro.

Nunca utilize segurança por obscuridade como camada de segurança. Nunca assuma que o usuário não vai descobrir como a aplicação funciona. Nunca tente implementar segredos durante a codificação, pois mais cedo ou mais tarde o segredo será quebrado.