Agilidade Criptográfica no Microsoft Office 2007 Service Pack 2

O post anterior é um bom exemplo da necessidade de se ter agilidade criptográfica no sistema operacional e nas aplicações. Algoritmos de criptografia tem uma vida útil limitada e tem que ser periodicamente trocados por algoritmos mais novos, em períodos nem sempre previsíveis (um novo ataque por exemplo pode forçar a troca imediatamente). E a pior coisa que você quer nestas horas é ter que reescrever todas as suas aplicações para suportar um novo algoritmo.

Além disso, vários governos possuem requisitos específicos para algoritmos criptográficos, que podem incluir o uso de algoritmos específicos (alguns confidenciais) para a proteção de informações mais sensíveis. O governo americano por exemplo possui a Suite A, enquanto a Federação Russa exige o uso do GOST. Para atender a estes mercados as aplicações tem de permitir que estes governos nacionais incluam o suporte a estes algoritmos – mesmo que o desenvolvedor da aplicação jamais possa ter acesso aos mesmos.

Para permitir que algoritmos criptográficos possam ser facilmente plugáveis nas aplicações, o Windows Vista inclui uma nova plataforma criptográfica, chamada de Crypto Next Generation (CNG). Esta plataforma permite que qualquer algoritmo criptográfico possa ser plugado dentro do Windows e utilizado pelas aplicações rodando no sistema.

A CNG também permite que aplicações possam na medida do possível abstrair as funções de criptografia, de tal forma que as operações criptográficas possam ser usadas sem estarem amarradas a algum algoritmo específico. Aplicações codificadas para o CNG podem permitir por exemplo que o gerador de números randômicos ou uma cifra simétrica sejam substituídas sem qualquer alteração na aplicação, tornando-a “ágil” do ponto de vista de criptografia.

Depois deste longo preâmbulo, vamos ao que interessa. Uma das novidades no Service Pack 2 do Microsoft Office 2007 é a introdução de agilidade criptográfica na encriptação de arquivos OpenXML. Com o SP2 o Office 2007 passa a utilizar a CNG do Windows Vista para permitir que o usuário possa:

Configurar o algoritmo de encriptação simétrica, com suporte para cifras de bloco indo de 2 a 4096 bytes

Configurar o modo de operação da cifra de bloco (CBC ou CFB)

Configurar o algoritmo de hashing

Configurar o tamanho do salt para até 64k bytes

Cipher-block chaining (CBC or CFB)

Configurar o número de iterações de hashing para proteção da senha, de 100 mil para até 10 milhões

Com estes recursos uma organização pode definir a sua própria política para proteção dos arquivos encriptados, incluindo o uso do seu próprio algoritmo caso requerido por norma ou legislação.

Para quem tiver curiosidade, o formato de arquivo encriptado utilizado pelo Office 2007 está documentado em https://msdn.microsoft.com/en-us/library/cc313071.aspx, já que não faz parte da especificação OpenXML. A Microsoft divulgou também no Codeplex um conjunto de rotinas para trabalhar com arquivos OpenXML encriptados, sob licença open source MS-PL.