Então, todo mundo está falando sobre SHA-1 e como ele se torna menos seguro hash função. As pessoas estão falando sobre uma rápida eliminação gradual e passar para uma alternativa mais segura. Então, qual é a história?

Gostaria de compartilhar com vocês meus próprios pensamentos e pesquisas em todo o SHA1 sendo inseguro ea necessidade de ir para outra alternativa. Também falarei em postagens futuras sobre como migrar sua Microsoft PKI para suportar a nova função hash SHA-2.

Mas eu não posso começar a falar sobre como resolver o problema antes de passar algum tempo analisando a situação atual e falando sobre algumas teorias de criptografia. É difícil saltar para conclusões e soluções se você não está totalmente ciente da situação atual.

SHA-1?

O algoritmo Hash é uma função unidirecional ( uma construção criptográfica ) que é usada com infra-estrutura de chave pública para fornecer serviços de criptografia e assinatura digital, além da verificação de integridade e autenticidade.

Esta é a definição científica. Em palavras simples, a função hash terá uma entrada de qualquer comprimento e produzirá uma saída de comprimento fixo única para cada entrada diferente. Os valores retornados por uma função de hash são chamados de valores de hash, códigos de hash, somas de hash.

A eficiência da função hash é definida por dois fatores (propriedades):

  • Eles são unidirecionais: É fácil calcular o valor de hash, mas é impossível (não é possível em tempo razoável) tomar o valor de hash e produzir a mensagem original.
  • Colisão livre : é impossível (não é possível em tempo razoável) encontrar duas mensagens que hash para o mesmo valor de hash.

Isso também implica outra regra. A mesma mensagem deve sempre produzir o mesmo valor de hash, e duas mensagens diferentes sempre devem produzir valores diferentes.

Em 1990, Rohn Rivest desenvolveu a função hash MD4, seguida pela MD5 em 1992. Um ano mais tarde, a Agência de Segurança Nacional publicou o SHA ( S ecure H ash A lgorithm). Em 1995, uma fraqueza foi corrigida no SHA fazendo algumas mudanças, ea nova função hash atualizada foi chamada de SHA-1.

Evolução da função hash

O que há de errado com o SHA-1 e por que agora?

SHA-1 é o mais comumente usado funções de hash por anos, e está se tornando o algoritmo padrão para funções de hash. Eu posso me lembrar de volta quando os papéis brancos especificaram que é recomendado usar SHA-1 para segurança absoluta. Ninguém hoje em dia está usando MD5 ou MD4 já que eles são funções de hash fraco. MD significa Message Digest.

Então, por que SHA-1 está se tornando em risco? Como eu expliquei anteriormente nesta postagem do blog, a força da função hash é medida pela forma como implementa as duas propriedades (One-Way e Collision Free). Tudo começou em 2005, quando três criptógrafos chineses mostraram que SHA-1 não está livre de colisões. Ou seja, eles desenvolveram um algoritmo para encontrar colisões mais rápido do que a força bruta. Se você quiser obter mais informações sobre como o SHA-1 é atacado, por favor, verifique este artigo , escrito por meu mentor em Criptografia ” Bruce Schneier “. Em palavras simples, eles poderiam produzir duas entradas diferentes que SHA-1 calcula o mesmo valor de hash para.

Os ataques sempre melhoram; Eles nunca ficam piores “, um velho ditado dentro da NSA.

É hora de caminhar, mas não correr, para as saídas de incêndio “, John Callas, CTO da PGP disse na época.

Benjamin Jun, vice-presidente e CTO da Cryptography Research de San Francisco, Divisão de Rambus, disse à SCMagazine.com que as revelações de 2012 sobre a Flame , um sofisticado malware de espionagem cibernética que visava o ministério do petróleo do Irã, também Intensificou dúvidas sobre a integridade do SHA-1 em face das ameaças em evolução

SHA-1 é amplamente utilizado na internet hoje em dia. Na verdade, 98% dos certificados SSL na web estão usando SHA-1 (85% por cento de acordo com o Google). Não há nenhum ataque claro e anunciado em SHA-1 agora como por as comunidades on-line e blogueiros, mas é apenas uma questão de tempo antes que eles apareçam. No entanto, muitas partes começam a comunicar seu plano de desaprovação para SHA-1 agora, incluindo o Google ea Microsoft.

Sha-1 porcentagem

Se não SHA-1, então o quê?

O SHA-1 produz um valor de hash de 160 bits, portanto, para dificultar os ataques de colisão, precisamos aumentar os bits do valor de saída. Uma nova função de hash chamada SHA-2 resolve este problema produzindo valores de hash que são 224, 256, 384 ou 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA- 512/256 .

Assim, qualquer saída de mais de 160 bits é chamada de SHA-2. SHA-2 é um termo colectivo para as funções de hash SHA-224, SHA-256, SHA-384 e SHA-512.

O número SHA especifica o número de bits no hash, portanto, quanto maior o número de hash, mais seguro o certificado, mas possivelmente menos compatível.

O padrão SHA-3 foi recentemente finalizado, mas levará muito tempo para ser amplamente implantado (ainda não comercial).

Os scanners de conformidade PCI atualmente exigem que seus clientes usem certificado SSL compatível com SHA-2.

O que aconteceu desde então?

Em 2011, o CA / Browser Forum , um grupo de indústria de principais navegadores da Web e autoridades de certificação que trabalham em conjunto para estabelecer requisitos de segurança para certificados SSL ( publicados aqui ) e recomendam a transição das CAs longe do SHA-1 o mais rápido possível.

Em 2013, a Microsoft emitiu um Aviso de Segurança para descontinuar o uso do SHA-1, e eles descreveram sua Política de Depreciação aqui . A partir de 2016 , as coisas vão mudar da Microsoft em relação ao suporte SHA-1.

O Google também começa a se afastar do SHA-1 desde novembro de 2014 com o Chrome. As pessoas começarão a receber avisos de certificados ao usar o cromo para navegar por sites SSL usando SHA-1. Na verdade, dependendo da versão do Chrome, três sinais diferentes começarão a aparecer ao navegar em sites SSL SHA-1. Um exemplo de tais sinais de aviso de cromo é mostrado na figura abaixo. O Google está tentando espalhar a consciência para todos que o SHA-1 não é mais seguro e as pessoas devem começar a suprimir gradualmente dele mais cedo.

Capturar

Microsoft Deprecation Plan

Em novembro de 2013, a Microsoft anunciou seu plano de desprezo para SSL SHA-1 e certificados de assinatura de código e anunciaram que darão uma nova consideração aos prazos de depreciação do SHA em julho de 2015. Em resumo, o Windows não aceitará certificados SSL SHA-1 Até janeiro de 2017 . Esta data parece estar muito longe, mas você deve começar a trabalhar na transição a partir de agora.

Plano de desativação do Microsoft SHA-1

Vou tentar quebrar o plano de depreciação da Microsoft, e vou citar a partir de sua postagem no blog :

Para certificados SSL:

“Para certificados SSL, o Windows deixará de aceitar certificados de entidade final SHA1 em 1 de janeiro de 2017. Isso significa que qualquer momento válido certificados SHA1 SSL deve ser substituído por um equivalente SHA2 por 1 de janeiro de 2017”

Assim, a máquina cliente quando se conecta a um site seguro com certificado SSL que usa SHA-1, é quando sua máquina cliente executando o Windows começará a se comportar mal e rejeitará esse certificado.

Certificados de assinatura de código:

Eu tenho que tomar um minuto e descrever o que é um carimbo de tempo eo que tem a ver com a assinatura de código. Time-stamping é usado para especificar o tempo quando a assinatura digital é feita. Isso é necessário para validar corretamente a assinatura.

Você pode optar por não incluir o carimbo de data / hora quando usar a assinatura de código. No entanto, se o carimbo de hora de assinatura estiver presente, o aplicativo que valida a assinatura verificará se os certificados envolvidos na validação da assinatura eram válidos no momento da assinatura.

Se não houver nenhum cronograma para a assinatura, a validade do certificado será verificada no momento da validação da assinatura.

Time-stamp é tão importante para a seguinte razão. Suponha que você tenha um certificado de assinatura de código que é valide de 2008 até 2010, e você assinar um documento em 2009. Suponha, então, que um aplicativo precisa verificar a assinatura hoje (estamos em 2015). Se não houver nenhum time-stamping, então o aplicativo falhará para validar a assinatura, já que o certificado de assinatura de código usado para assinar o documento em 2009 já expirou.

Como você pode usar a assinatura de código com ou sem data e hora, o plano de reprovação da Microsoft afetará sua escolha aqui.

“Para certificados de assinatura de código, o Windows deixará de aceitar certificados de assinatura de código SHA1 sem carimbos de hora após 1 de Janeiro de 2016”, ou seja, o Windows deixará de aceitar código assinado por um certificado SHA1 onde a assinatura não inclui um carimbo de data / hora. No entanto, “os certificados de assinatura de código SHA1 que são marcados com hora antes de 1 de janeiro de 2016 serão aceitos até o momento em que a Microsoft decidir que SHA1 é vulnerável ao ataque pré-imagem”.

Assim, em primeiro lugar, começar a usar o carimbo de data / hora para todos os seus certificados de assinatura de código. Em segundo lugar, para o certificado de assinatura de código carimbado antes de 01 de janeiro de 2016, não se preocupe.

Infraestrutura (Clientes)

Assim como as pessoas estão mudando para SHA-2, que versões do Windows suportam este novo tem função?

O Windows XP SP3 já suporta certificados SSL SHA2, enquanto o Windows Server 2003 SP2 ou posterior deve aplicar KB968730 e KB938397 . Mais detalhes podem ser encontrados aqui.

Windows XP SP3 e Windows Server 2003 com os hotfixes, têm suporte limitado para SHA-2. O suporte para o SHA-2 nessas plataformas é limitado aos recursos SSL / TLS.

Windows 2008 e posterior, e Windows Vista e posterior são muito bem como eles já suportam SHA-2.

A Microsoft havia publicado uma postagem no blog sobre ( SHA-2 e Windows ) mostrando a compatibilidade com o SHA-2.

Infraestrutura (Servidores Web)

Os administradores de sites devem substituir seus certificados SSL SHA-1 que expiram após 1º de janeiro de 2017.

Infraestrutura (S / MIME)

“O Windows não definiu nenhuma data para bloquear outros tipos de certificados (por exemplo, S / MIME)”

Infraestrutura (CRL e OCSP)

“CRLs e OCSP respostas próprias têm de ser assinado com SHA-2”

Suporte a aplicativos

“Algumas aplicações não suportam SHA2. Antes de usar certificados assinados SHA2 com um aplicativo específico, é recomendado que todos os componentes dependentes de PKI desse aplicativo sejam testados.Por exemplo, se SHA2 será usado para S / MIME; Então cada cliente de e-mail, servidor de e-mail, relay, filtro de spam, dispositivo de segurança, etc. pertencentes à sua própria organização e os de organizações externas (que trocam mensagens S / MIME com a organização) teriam que ser validados para processar S / MIME com SHA2. Por esta razão, a hierarquia antiga e nova de PKI pode precisar operar enquanto os aplicativos são atualizados / migrados “

Infra-estrutura (CA)

Esta parte é sobre a infra-estrutura PKI da empresa corporativa. Esta parte depende do número de camadas e da versão do sistema operacional da CA (o tempo é Windows 2008 R2 ou posterior).

Não falarei sobre como tornar seu suporte a PKI SHA-2, ou como planejar a migração para a infra-estrutura de PKI pronta para SHA-2. Vou falar sobre isso no post futuro. Agora, para os servidores da CA, temos servidores de CA raiz e servidor de CA Intermediário e de Emissor.

Servidores CA de raiz:

Side Nota: Se a sua CA é membro do Programa de Certificado Raiz do Windows que emite certificados publicamente confiáveis, isso afeta você .

Você já leu a nota lateral acima? Bem, agora vamos nos concentrar em implantações PKI Enterprise. Foco comigo por um minuto. A política de depreciação da Microsoft atende a certificados de entidade intermediária e final. A nova política de depreciação não afeta os Certificados de CA Raiz da CA que está agindo como apenas CA Raiz e não emissor (e o Chrome não avisará sobre eles).

Eu cito da Microsoft Deprecation plano post blog:

“A política de depreciação do SHA1 não afeta os certificados raiz SHA1 implantados de forma privada, porque o Windows conta com outros meios para validar certificados raiz além da assinatura. Mas todas as CAs raiz são esperados para mudar para usar SHA2 para assinar qualquer subordinado CA certificados, CRLs, etc “
“Para atender a diretiva, a autoridade de certificação raiz terá que alternar para usar SHA2 em 1/1/2016 ao assinar novos certificados e CRLs. No entanto, o algoritmo hash usado no certificado raiz é excluído desta política “

O que isto significa? você está confuso? Se você tiver, por exemplo, uma CA raiz e, em seguida, um emissor filho que emite certificados de entidade final, o seguinte se aplica:

  • O Certificado auto-assinado da AC raiz pode continuar usando SHA-1, pois este certificado não está incluído no plano de depreciação da Microsoft para SHA-1.
  • Quando a autoridade de certificação raiz precisa emitir uma CRL, ele tem que assinar a CRL com seu certificado raiz auto-assinado. Quando executa esta operação (CRL de assinatura), o SHA-2 deve ser usado.
  • Quando a AC raiz precisa assinar o certificado para servidores CA filho, a operação de assinatura deve ser executada usando SHA-2

Portanto, o certificado Auto-assinado para a CA Raiz, ainda pode usar SHA-1 e não há absolutamente nenhum dano para isso, porque os clientes usarão outros meios para validar esse certificado. No entanto, qualquer operação executada pela CA Raiz que inclua a assinatura (assinatura CRL, emissão de certificados CA filho) deve ser executada usando o SHA-2.

Assim, você pode manter seu certificado Root Self-Singed com SHA-1, mas você tem que se certificar de que sua CA Raiz é capaz de realizar operações de assinatura SHA-2 de agora em diante.

Servidores CA intermediários:

O certificado CA intermediário assinado pela autoridade de certificação raiz deve ser assinado com o SHA-2. Qualquer operação executada pela CA como assinatura CRL e emissão de SSL ou certificados de assinatura de código, deve ser feita com o SHA-2 também e é afetada pelo plano de desprezo Microsoft SHA-1.

Sha-1 Deprecation

Nota importante

Qualquer certificado SHA-2 encadeado a um certificado intermediário SHA-1 deve ser substituído por outro encadeado a um certificado intermediário SHA-2.

Infraestrutura (certificados auto-assinados)

Pelo mesmo motivo que os certificados de CA raiz não são afetados pelo plano de depreciação SHA-1, os certificados auto-assinados também não são afetados. Por exemplo, os servidores Microsoft Exchange geram certificados SHA-1 auto-assinados durante a instalação, aqueles ainda funcionarão após o prazo.

É o meu site usando SHA-1?

Há muitas maneiras de verificar se o seu site SSL está usando SHA-1. Basta abrir o certificado SSL, vá para a extensão Signature e Hash Algorithm, e verifique se SHA-1 está listado lá.

SHA1

Para verificar qual algoritmo de hashing sua Autoridade de Certificação está usando para assinar CRL e certificado emitido, abra o MMC para a Autoridade de Certificação, clique com o botão direito e selecione propriedades; Na aba geral ele irá indicar qual algoritmo hash é usado.

Sha-1

Existem muitas ferramentas on-line que você pode ajudá-lo a descobrir o uso de SHA-1 em seus sites SSL com acesso à Internet:

O que devo fazer como desenvolvedor?

Bem, se você for responsável por assinar os pacotes de aplicativos, certifique-se de que está usando a função hash SHA-2 ao assinar o aplicativo. A maioria das ferramentas de assinatura padrão para SHA-1 a menos que você explicitamente especificar SHA-2 como sua escolha.

Leve o SignTool para assinar o aplicativo e , em seguida, certifique-se de especificar o parâmetro (/ fd SHA256) para especificar SHA-2 como sua escolha de tem função. Além disso, você deve incluir um cronograma ao assinar aplicativos, especificando o parâmetro (/ tr timestampServerUrl).

Além disso, você deve usar a classe SHA256 para calcular valores de hash quando necessário. Em resumo, você deve questionar o tipo de função de hash que está sendo usada sempre que você estiver fazendo assinatura digital, assinatura de código ou valores de hash de computação.

O que devo fazer como um Pro IT?

Aqui está o que eu recomendo:

  • Leia atentamente os planos de desacordo da Microsoft e do Google .
  • Certifique-se de que qualquer novo certificado e suas cadeias (exceto o certificado de CA raiz implantado de forma privada) usem SHA-2. Então este ponto é sobre duas coisas:
    • Novos certificados de entidade final devem usar SHA-2
    • Novos certificados de entidade final emitidos devem ter certificados de AC intermediários que usam somente SHA-2.
  • Inventário do certificado existente e identificar a função SHA utilizada eo prazo de validade de cada um.
  • Substitua certificados SSL SHA-1 que expiram após 2016, em seguida, trabalhar o caminho de volta para substituir os certificados restantes.
  • Para certificados de assinatura de código, verifique se eles são marcados com o tempo e comece a substituí-los antes de 2016.

SHA-2 Verde

SHA-1 Red1

SHA-2 RED3

SHA-2 e GNC

Eles não estão relacionados . Esta é a resposta profissional científica.

Bem, eu tenho que argumentar aqui que eles são relativamente relacionados. Se você tem um pouco de conhecimento sobre provedores criptográficos ( verifique o meu post) , então você deve saber que você pode usar o provedor herdado (CryptoAPI) que implementa SHA-2. Você pode usar provedor de terceiros que suporte SHA-2.

No entanto, a maneira mais fácil e recomendada de implementar o SHA-2 é mover para CNG KSP (Key Storage Provider) para a CA e configurar a CA para emitir o SHA-2.

Anúncios