# VeraCrypt

O VeraCrypt é um utilitário freeware disponível na fonte usado para criptografia on-the-fly (OTFE). Ele pode criar um disco virtual criptografado dentro de um arquivo ou criptografar uma partição ou (no Windows) todo o dispositivo de armazenamento com autenticação pré-inicialização.
VeraCrypt é um fork do projeto TrueCrypt descontinuado. Foi inicialmente lançado em 22 de junho de 2013 e produziu seu lançamento mais recente (versão 1.24) em 6 de outubro de 2019. Muitas melhorias de segurança foram implementadas e os problemas levantados por auditorias de código TrueCrypt foram corrigidos. VeraCrypt inclui implementações otimizadas de funções criptográficas de hash e cifras que aumentam o desempenho em CPUs modernas.

## Licença e código fonte

VeraCrypt herdou uma quantidade substancial de código de seu predecessor TrueCrypt, e também herdou a licença TrueCrypt disponível para esses arquivos. Esta licença não é uma das muitas licenças de código aberto amplamente utilizadas e não é uma licença de software livre de acordo com a lista de licenças da Free Software Foundation (FSF), pois contém restrições de distribuição e de responsabilidade de copyright.
Novas partes do VeraCrypt foram licenciadas sob a Licença Apache 2.0 desde a versão 1.19.

## Esquema de criptografia
### Algoritmos

As cifras individuais suportadas pelo VeraCrypt são AES, Serpent, Twofish, Camellia e Kuznyechik. A cifra Magma foi removida na versão 1.19 em resposta a uma auditoria de segurança. Além disso, dez combinações diferentes de algoritmos em cascata estão disponíveis: AES – Twofish, AES – Twofish – Serpent, Camellia – Kuznyechik, Camellia – Serpent, Kuznyechik – AES, Kuznyechik – Serpent – ​​Camellia, Kuznyechik – Twofish, Serpent – ​​AES, Serpent – ​​Twofish – AES e Twofish – Serpent. As funções de hash criptográficas disponíveis para uso em VeraCrypt são RIPEMD-160 ,SHA-256 , SHA-512, Streebog e Whirlpool.

### Modos de operação

O VeraCrypt usa o modo de operação XTS.

### Chaves

A chave de cabeçalho e a chave de cabeçalho secundária (modo XTS) são geradas usando PBKDF2 com um salt de 512 bits e 200.000 a 655.331 iterações usadas por padrão (que podem ser personalizadas pelo usuário para começar tão baixo quanto 2.048), dependendo do hash subjacente função usada.

## Negação plausível

Como com seu predecessor TrueCrypt, VeraCrypt suporta negação plausível , permitindo que um único "volume oculto" seja criado dentro de outro volume. Além disso, as versões Windows do VeraCrypt têm a capacidade de criar e executar um sistema operacional criptografado oculto, cuja existência pode ser negada.
A documentação do VeraCrypt lista muitas maneiras nas quais os recursos de negação de volume oculto do VeraCrypt podem ser comprometidos (por exemplo, por software de terceiros que pode vazar informações através de arquivos temporários, miniaturas, etc, para discos não criptografados) e possíveis maneiras de evitar isso.

## Performance

VeraCrypt suporta criptografia paralelizada para sistemas multi-core e, no Microsoft Windows, operações de leitura e escrita em pipeline (uma forma de processamento assíncrono) para reduzir o impacto de desempenho de criptografia e descriptografia. Em processadores que suportam o conjunto de instruções AES-NI, o VeraCrypt oferece suporte a AES acelerado por hardware para melhorar ainda mais o desempenho. Em CPUs de 64 bits, o VeraCrypt usa a implementação de montagem otimizada de Twofish e Camellia.

## Melhorias de segurança

* A equipe de desenvolvimento do VeraCrypt considerou o formato de armazenamento TrueCrypt muito vulnerável a um ataque da National Security Agency (NSA), por isso criou um novo formato incompatível com o do TrueCrypt. Esta é uma das principais diferenças entre o VeraCrypt e seu concorrente CipherShed , que continua a usar o formato TrueCrypt. O VeraCrypt ainda é capaz de abrir e converter volumes no formato TrueCrypt.
* Uma auditoria de segurança independente do TrueCrypt lançada em 29 de setembro de 2015 descobriu que o TrueCrypt inclui duas vulnerabilidades no driver de instalação do Windows, permitindo a execução arbitrária de código de um invasor e escalonamento de privilégios por meio de sequestro de DLL. Isso foi corrigido no VeraCrypt em janeiro de 2016.
* Enquanto TrueCrypt usa 1.000 iterações do algoritmo PBKDF2 - RIPEMD160 para partições do sistema, VeraCrypt usa 200.000 ou 327.661 iterações por padrão (que pode ser personalizado pelo usuário para chegar a 2.048), dependendo do algoritmo usado. Para contêineres padrão e outras partições, VeraCrypt usa 655.331 iterações de RIPEMD160 e 500.000 iterações de SHA-2 e Whirlpool por padrão (que é personalizável pelo usuário para ser tão baixo quanto 16.000). Enquanto essas configurações padrão tornam o VeraCrypt mais lento na abertura de partições criptografadas, ele também torna os ataques de adivinhação de senha mais lentos.
* Além disso, desde a versão 1.12, um novo recurso chamado "Personal Iterations Multiplier" (PIM) fornece um parâmetro cujo valor é usado para controlar o número de iterações usadas pela função de derivação da chave do cabeçalho, tornando os ataques de força bruta potencialmente ainda mais difíceis. O Veracrypt pronto para uso usa um valor PIM razoável para melhorar a segurança, mas os usuários podem fornecer um valor mais alto para aumentar a segurança. A principal desvantagem desse recurso é que ele torna o processo de abertura de arquivos criptografados ainda mais lento.
* Uma vulnerabilidade no bootloader foi corrigida no Windows e várias otimizações foram feitas também. Os desenvolvedores adicionaram suporte para SHA-256 à opção de criptografia de inicialização do sistema e também corrigiram um problema de segurança ShellExecute. Os usuários de Linux e macOS se beneficiam do suporte para discos rígidos com tamanhos de setor maiores que 512. O Linux também recebeu suporte para a formatação NTFS de volumes.
* As senhas Unicode são suportadas em todos os sistemas operacionais desde a versão 1.17 (exceto para criptografia do sistema no Windows).
* VeraCrypt adicionou a capacidade de inicializar partições do sistema usando UEFI na versão 1.18a.
* A opção para ativar / desativar o suporte para o comando TRIM para unidades do sistema e não do sistema foi adicionada na versão 1.22.
* Apagar as chaves de criptografia do sistema da RAM durante o desligamento / reinicialização ajuda a mitigar alguns ataques de inicialização a frio, adicionados na versão 1.24.
* A criptografia de RAM para chaves e senhas em sistemas de 64 bits foi adicionada na versão 1.24.

### Auditoria veracrypt

Uma auditoria da versão 1.18 foi conduzida pelo QuarksLab em nome do Open Source Technology Improvement Fund (OSTIF), que levou 32 dias-homem e foi publicada em 17 de outubro de 2016. As principais vulnerabilidades identificadas em esta auditoria foi resolvida na versão 1.19, divulgada no mesmo dia.

## Precauções de segurança

Existem vários tipos de ataques aos quais toda a criptografia de disco baseada em software é vulnerável. Tal como acontece com TrueCrypt, a documentação do VeraCrypt instrui os usuários a seguir várias precauções de segurança para mitigar esses ataques, vários dos quais são detalhados abaixo.

### As chaves de criptografia armazenadas na memória

O VeraCrypt armazena suas chaves na RAM; em alguns computadores pessoais, a DRAM manterá seu conteúdo por vários segundos após o corte de energia (ou mais tempo se a temperatura for reduzida). Mesmo se houver alguma degradação no conteúdo da memória, vários algoritmos podem ser capazes de recuperar as chaves. Este método, conhecido como ataque de inicialização a frio (que se aplicaria em particular a um notebook obtido durante a inicialização, suspensão ou modo de bloqueio de tela), foi usado com sucesso para atacar um sistema de arquivos protegido por TrueCrypt versões 4.3a e 5.0a em 2008. Com a versão 1.24, VeraCrypt adicionou a opção de criptografar as chaves in RAM e senhas em 64 bits Sistemas Windows, com sobrecarga de CPU de menos de 10% e opção de apagar todas as chaves de criptografia da memória quando um novo dispositivo for conectado.

### Segurança física

A documentação do VeraCrypt afirma que o VeraCrypt é incapaz de proteger os dados em um computador se um invasor o acessa fisicamente e o VeraCrypt é então usado no computador comprometido pelo usuário novamente. Isso não afeta o caso comum de um computador roubado, perdido ou confiscado. O invasor com acesso físico a um computador pode, por exemplo, instalar um hardware ou um keylogger de software, um dispositivo de captura de memória de barramento ou instalar qualquer outro hardware ou software malicioso, permitindo que o invasor capture dados não criptografados (incluindo chaves de criptografia e senhas) ou descriptografe dados criptografados usando senhas ou chaves de criptografia capturadas. Portanto, a segurança física é uma premissa básica de um sistema seguro. Ataques como esse costumam ser chamados de "ataques de donzelas malvadas".

### Malware

Alguns tipos de malware são projetados para registrar pressionamentos de tecla, incluindo senhas digitadas, que podem então ser enviadas ao invasor pela Internet ou salvas em uma unidade local não criptografada de onde o invasor possa ler mais tarde, quando obtiver acesso físico a o computador.

### Trusted Platform Module

A seção FAQ do site VeraCrypt afirma que o Trusted Platform Module (TPM) não é confiável para segurança, porque se o invasor tem acesso físico ou administrativo a um computador e ele é usado posteriormente, o computador pode ter sido modificado pelo invasor: por exemplo, um componente malicioso - como um logger de pressionamento de tecla de hardware - pode ter sido usado para capturar a senha ou outras informações confidenciais. Como o TPM não impede que um invasor modifique o computador de forma mal-intencionada, o VeraCrypt não oferece e não oferece suporte ao TPM.
* Max Schrems