0

Ocultamento de Informação e Information Leakage

M
Mateus Silva

Qual a importância do ocultamento de informação?


Esse assunto foi discutido pela primeira vez por David Parnas em 1972 e atualmente é um princípio de projeto muito importante em qualquer área que lide com dados, difícil é achar uma área em que dados não esteja altamente presente. Além disso, têm-se os riscos associados ao vazamento de dados sensíveis (information leakage).


Information Leakage


É necessário ter em mente que todo software trás consigo um risco associado de vazamento de dados. O único jeito de tornar esse risco nulo é se os dados forem inacessíveis a qualquer pessoa ou máquina, mas sabemos que isso não é possível porque um programa é desenvolvido para atender a necessidade de usuários.


Contudo existem maneiras de minimizar esse risco na parte do desenvolvimento, iremos agora comparar dois códigos:


1.

public class Estacionamento { 
  public Hashtable veiculos; 
  public Estacionamento() { 
    veiculos = new Hashtable(); 
  } 
} 

public class SistemaDeEstacionamento { 
  public static void main(String[] args) { 
    Estacionamento e = new Estacionamento(); 
    e.veiculos.put("TCP-7030", "Uno"); 
    e.veiculos.put("BNF-4501", "Gol"); 
    e.veiculos.put("JKL-3481", "Corsa"); 
  } 
}


2.

public class Estacionamento { 
  private Hashtable veiculos; 
  public Estacionamento() { 
    veiculos = new Hashtable(); 
  } 
  public void estaciona(String veiculo, String placa) {
    veiculos.put(veiculo, placa); 
  } 
} 

public class SistemaDeEstacionamento { 
  public static void main(String[] args) { 
    Estacionamento e = new Estacionamento(); 
    e.estaciona("TCP-7030", "Uno"); 
    e.estaciona("BNF-4501", "Gol"); 
    e.estaciona("JKL-3481", "Corsa"); 
  } 
} 


Qual código vocês acham que consegue realizar o ocultamento de informação? A resposta é nenhum dos dois.


Então qual dos dois é mais vantajoso em relação ao ocultamento? Agora sim a resposta é o segundo.


A vantagem do segundo é realizar o ocultamento da estrutura de dados que consegue facilitar a manutenção do código e evita acesso indevidos por outros desenvolvedores.


Por mais que aprendermos que precisamos colocar atributos e o máximo de métodos possíveis como privados, eles não evitam o vazamento de informação (information leakage), mas eles diminuem o seu risco ao criar mecanismos de controle e permitem o aumento do controle quanto a segurança dos dados.


Criptografia e Segurança de dados: veja como funciona!


Ainda assim é necessária a implementação de mais mecanismos voltados para a segurança, principalmente quando dados estão envolvidos no processo, como: criptografia.


Outros possíveis benefícios do uso de mecanismos de ocultamento de informação são:

  • Desenvolvimento em paralelo.
  • Flexibilidade a mudanças.
  • Facilidade de entendimento.


Link para o primeiro artigo sobre Qualidade de Software:

  • O porquê devemos nos preocupar com a qualidade do software: https://web.digitalinnovation.one/articles/o-porque-devemos-nos-preocupar-com-a-qualidade-de-software?back=%2Farticles&page=1&order=oldest


Link para os artigos sobre Redes de computadores e Internet:

  • DNS - Como digitar www.digitalinnovation.one faz você conseguir se comunicar com a DIO:
  • https://web.digitalinnovation.one/articles/dns-como-digitar-wwwdigitalinovationone-faz-voce-consegue-se-comunicar-com-a-dio?back=%2Farticles&page=1&order=oldest
  • Camadas da Internet e suas Funções:
  • https://web.digitalinnovation.one/articles/camadas-da-internet?back=%2Farticles&page=1&order=oldest
  • Redes de Computadores e Internet - defindo:
  • https://web.digitalinnovation.one/articles/redes-de-computadores-e-internet-definindo?back=%2Farticles&page=1&order=oldest


Fontes:

  • Marco Tulio Valente. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade. Leanpub, 2020. (Capítulo 5).
  • https://www.whitehatsec.com/glossary/content/information-leakage


Próximo artigo sobre Qualidade de Software será sobre Métricas de Código Fonte.


0
0

Comentários (2)

0
M

Mateus Silva

09/07/2021 14:06

Muito obrigado, David. Realmente a intenção é esclarecer os temas, assim como nos artigos que deixei o link. Eles são realmente focados em ajudar a entender o que acontece por trás das aplicações que desenvolvemos e facilitar na hora da tomada de decisão de como iremos desenvolver uma aplicação.

0
David Carvalho

David Carvalho

09/07/2021 11:48

Excelente artigo! Mesmo para mim, que já atuo na área, mesmo sendo algo tão simples, foi blow mind.... Além de melhorar na questão do vazamento de informações, é uma melhor abstração do mundo real.

None

Brasil