Encriptação de Documentos no Office 2007

Ao longo da sua história o Microsoft Office já implementou várias formas de encriptação dos seus documentos. As primeiras versões, anteriores ao Office 97, utilizavam um esquema bastante fraco (eu diria realmente fraco!) de encriptação utilizando um XOR entre a senha digitada e o conteúdo do documento. Isso é trivialmente quebrado de forma praticamente instantânea, o que trouxe a má impressão que muitos ainda têm da encriptação do Office.

Os Office 97 e 2000 trouxeram o primeiro mecanismo realmente criptográfico de proteção dos dados, que utilizava uma chave de 40-bits de criptografia que por sua vez era encriptada com a senha de proteção do documento. Os 40-bits eram o máximo disponível na época devido às restrições de exportação de criptografia do governo americano, e apesar de relativamente segura quando foi lançada, essa forma de criptografia também é quebrada de forma trivial hoje em dia.

Liberadas as restrições do governo americano, o Office XP e o Office 2003 vieram uma nova forma de encriptação utilizando o algoritmo RC4 com chaves de 128-bits. Este formato pode dar uma boa proteção para documentos menos sensíveis, com o nível de proteção oferecido dependendo enormemente da qualidade da senha que for utilizada. Como o Office 2003 não utiliza salting e a transformação da senha em chave é computacionalmente leve, a velocidade com que um ataque de força bruta pode ser feito é muita alta (na ordem de milhões de tentativas por minuto) e a não ser que você use uma senha extremamente forte ela provavelmente será quebrada em pouco tempo.

O novo Office 2007 atualiza o mecanismo de encriptação de documentos de uma forma que é significativamente mais forte que as anteriores, que excede em muito inclusive o padrão PKCS#5 utilizado normalmente no mercado:

¦  O Office 2007 primeiro usa um novo processo para converter a senha em chave de encriptação, fazendo 50 mil iterações da senha com SHA-1. Isto é trivial para quem está encriptando ou decriptando o arquivo, mas fatal para quem está fazendo uma ataque de força bruta (o cálculo tem que ser refeito para cada nova tentativa).

¦  Ah, e o Office acrescenta 16 bytes de salting randômicos para impedir ataques via Rainbow tables.

¦  Em seguida o valor obtido é utilizado para alimentar um algoritmo AES de 128-bits para encriptar o conteúdo do documento propriamente dito.

O resultado é uma proteção que baixa a velocidade dos ataques de força bruta de milhões para apenas algumas centenas de tentativas por minutos. Segundo David Leblanc, um cluster de 1000 nós de altíssima performance trabalhando em carga máxima demoraria 13.8 anos para varrer o espaço de senhas de 8 caracteres alfanuméricos. E isso para só um documento!

Em resumo: ao encriptar um arquivo com o Office 2007, guarde bem a sua senha!