O documento discute criptografia simétrica AES, seus modos de operação (ECB, CBC, CTR) e como implementá-la corretamente. Também aborda ataques comuns como timing attacks e side-channel attacks, além de exemplos de mau uso de criptografia que podem comprometer a segurança.
3. -> ~ agenda
AES
O que eh
Da onde surgiu
Como funciona
ECB
CBC
CTR
Como usar errado
Uso ideal
Ataques em criptografia moderna
Ataques em AES por má implementação
4. AES
Advanced Encryption Standard
AES é uma mistura entre
permutação e substituição.
Ele separa a entrada em blocos de
128 bits e faz derivações da
chave original para criptografar
Criado por criptógrafos belgas
no início dos anos 90, quando o
DES já tinha sido quebrado
13. O básico
• Evitar a criptografia fraca ou obsoleta
• DES, 3DES, RC4, MD5, MD2, SHA-1
• Evitar tamanhos de chave inseguros
• 2048 para RSA
• 2048 para DH
• 128 para cripto simétrica
• 256 para hashes
• 256 para ECC
14. O que preciso prestar atenção
• Função randômica com seeds mutáveis que não dependem de
hardware ou funções com poucos recursos
• Não usar coisas que não deveriam ser usadas, como chaves,
nounces, IV.
15. • Timming and power attacks - O algoritmo usa o mesmo tempo e a
mesma quantidade de energias para fazer todas computações?
• Side channel attacks - cache de memória que deveria ter sido
limpo, criptografia perfumada em áreas de memória de acesso
publico.
• Acoustic cryptanalysis - Analise dos cons feitos pelo
processador
Tipos de ataque
16. Mal uso de criptografia
Cipher e = Cipher.getInsytance(“AES");
e.init(Cipher.Encrypt_Mode, k);
17. Mal uso de criptografia
var fileEncoded =
CryptoJS.AES.encrypt(contents, password).toString();
18. Mal uso de criptografia
var BlockCipher = C_lib.BlockCipher =
Cipher.extend({
/**
* Configuration options.
* @property {Mode} mode The block
mode to use. Default: CBC
* @property {Padding} padding The
padding strategy to use. Default: Pkcs7
*/
cfg: Cipher.cfg.extend({
mode: CBC,
padding: Pkcs7
}),
19. Mal uso de criptografia
var fileEncoded =
CryptoJS.AES.encrypt(contents, WordArray).toString();