sexta-feira, 27 de abril de 2007

SHA1 (Secure Hash Algoritm)

O primeiro membro da família, publicado em 1993, foi oficialmente chamado SHA; no entanto, é frequentement chamado SHA-0 para evitar confusões com os seus sucessores. Em 1994, SHA-1, o primeiro sucessor do SHA, foi publicado. Desde então quatro variantes foram lançadas com capacidades de saída aumentadas e um design ligeiramente diferente: SHA-224, SHA-256, SHA-384, e SHA-512 — por vezes chamadas de SHA-2.

O SHA1 implementa um algoritmo de hash sem chave, que pega uma mensagem de até 264 bits e produz um resumo da mensagem de 160-bits e é utilizado para a verificação de integridade da mensagem. Ele é baseado nos princípios de projeto dos algoritmos de hash MD4 e MD5 (Memory Digest 4 e 5). O SHA1 é considerado o sucessor do MD5, um dos primeiros e mais utilizado algoritmos de hash, processando sequencialmente blocos de 512 bits. Cada processamento é feito por bloco com cerca de 80 passos.
SHA-1 e seu funcionamento
A sua lógica de funcionamento pode ser dividida em cinco passos:

1) Acrescentar bits de enchimento: toda mensagem terá bits acrescentados, sendo o tamanho final modulo 512 congruente a 448. Assim, uma mensagem pode ter de 1 a 512 bits de enchimento, que consiste de um bit com valor 1 seguido de quantos bits 0 forem necessários.

2) Acrescentar tamanho da mensagem: um bloco de 64 bits é acrescentado à mensagem, sendo tratado como um inteiro sem sinal de 64-bit. Este bloco contém o tamanho original da mensagem (antes do enchimento).

3) Inicialização do buffer MD: um buffer de 160 bits é utilizado para manter os resultados intermediários e final da função de hash. Este buffer pode ser representado como cinco registradores de 32 bits, que são inicializados com o seguinte valor (em hexadecimal):
A = 67 45 23 01
B = EF CD AB 89
C = 98 BA DC FE
D = 10 32 54 76
E = C3 D2 E1 F0

4) Processamento da mensagem em blocos de 512 bits: o centro do algoritmo é uma função de compressão que consiste de quatro iterações, que possuem 20 passos cada. Estas iterações são similares, mas utilizam uma estrutura lógica diferente.

5) Saída: depois de processar todos os blocos de 512 bits, a saída da última iteração fornece o hash de 160 bits.

Conclusões:

  • O NIST planeja substituir o SHA1 até 2010.
  • Apesar do SHA-1 ser um algoritmo de hash já quebrado através de técnicas de colisão de múltiplos blocos, ele é muito utilizado como função de verificação em diversos outros programas.
Referências bibliográficas:

- http://pt.wikipedia.org/wiki/SHA1
- http://www.schneier.com/blog/archives/2005/02/sha1_broken.html
- MARGI, Cíntia – “UM MECANISMO PARA DISTRIBUIÇÃO SEGURA DE VÍDEO MPEG”

quinta-feira, 26 de abril de 2007

Enigma – um lição aprendida (ou não) ao não considerar os fatores humanos na segurança de informação?

Artigo da semana: "The Weakest Link: The Human Factor - Lessons Learned from the German WWII Enigma Cryptosystem".
No blog de hoje, vamos usar um exemplo do passado como uma lição. Algo que a história nos mostra e que pede reflexão.

Uma grande parte dos negócio ocorre em ambientes puramente computacionais e essa migração cada vez mais aumenta. Conceitos de segurança e logicamente a criptografia passa a ser cada vez mais um fator crítico para o sucesso das dessas transações. Na área militar, esse preocupação é antiga, pois é naturalmente uma área de vanguarda, já que muitas inovações tecnológicas nascem no ambiente do mercado de defesa, nucleado por entidades e institutos ligados ao departamento de defesa de diversos países. Nesse ponto em específico, a preocupação é fundamental pois a informação precisa ser identificada e protegida, pois no caso de serem corrompidas ou descobertas geram danos materiais e humanos.

Durante a Segunda Guerra, a máquina do Enigma era uma evolução considerável para o seu momento. Sem a menor sombra de dúvidas. a melhor tecnologia em criptografia da época, e considerado um ambiente extremamente seguro e imune a ataques. A Alemanha possuía esse diferencial com o Enigma, uma máquina fabulosa. Os códigos gerados pelo Enigma, mesmo com outra máquina, não conseguiriam ser quebrado de imediato, pois seria necessária a chave e os ajustes corretos nos rotores da máquina. Essa segurança que o Enigma deu aos alemães, fez com que eles descartassem a possibilidade de que o sistema poderia ter vulnerabilidades. Esse foi sem dúvida o maior erro, pois o seu sistema de segurança não era perfeito e as falhas dos seus operadores foi o que levou seu código a ser quebrado. A Polônia e mais tarde a Inglaterra, começaram a investir pesado para quebrar os códigos do Enigma gerado pelo alemães. Apesar de ser uma tarefa complexa, que exigiu um esforço grande, nada faria parar o objetivo de quebrar o código dos alemães. As vulnerabilidades foram exploradas, como por exemplo, ao investigar-se as rotinas dos operadores, documentos que não eram descartados de maneira correta e claro a traição de alguns, levando ao fim do sonho do alemães de que o Enigma era um ambiente imune.
Mesmo com um exemplo bastante antigo percebemos que os problemas em Segurança sempre tem a falha humana como aliado, seja por prepotência, negligência ou ainda dinheiro. O fator humano é potencialmente o elo mais fraco da segurança da informação. Começa errada qualquer política de proteção à informação que só enxerga o ponto de vista tecnológico. Treinamentos adequados e freqüentes é um ponto-chave dessa discussão. O freqüente é importantíssimo, pois na medida em que as pessoas são treinadas e executam uma rotina, elas tendem a degradar a execução visto que conhecem bem os procedimentos, porém essa é uma vulnerabilidade alta em qualquer sistema de segurança de informação. Todas as camadas de uma empresa devem ser contempladas por uma política de segurança da informação. O exemplo do Enigma demonstra exatamente isso. Os alemães acreditavam ter um sistema imune a qualquer falha. Sem dúvida uma lição. Se foi aprendida ou não, fica a questão do título deste blog. Não são raros os casos similares ao Enigma, mesmo hoje, com as inovações tecnológicas disponíveis e em estudo.