Cifrador de fluxo Trivium e Autômatos Celulares
Transcrição
Cifrador de fluxo Trivium e Autômatos Celulares
Trivium Leandro Aparecido Sangalli [email protected] Marco Aurélio Amaral Henriques [email protected] Universidade Estadual de Campinas - UNICAMP Faculdade de Engenharia Elétrica e de Computação - FEEC Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 1 / 19 Roteiro Estaca Zero Cifrador de Fluxo Cifrador de Bloco Introdução Trivium Geração de Chaves de Fluxo Ideia Central no Estudo do Trivium Autômatos Celulares Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 2 / 19 Estaca Zero O que é um cifrador de fluxo? No esquema de cifragem de fluxo, o texto em claro é cifrado bit a bit. Esta cifragem normalmente é realizada por meio do operador lógico XOR (⊕). Relembrando: 0 ⊕ 0 = 0; 1 ⊕ 0 = 1; 0 ⊕ 1 = 1 e 1 ⊕ 1. Algoritmo ideal: One-Time-Pad (cifra de uso único) Dificuldade: gerar números aleatórios com o mesmo tamanho da mensagem que se deseja cifrar (chave). Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 3 / 19 Estaca Zero Figure: Cifrador de fluxo (One-Time-Pad) Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 4 / 19 Estaca Zero O que é um cifrador de bloco? No esquema de cifragem de bloco, o texto em claro primeiramente é dividido em blocos de tamanho pré-definido e depois cifrado um bloco por vez. Algoritmos: AES (128 bits), DES (128 bits), entre outros. Problema: blocos de texto em claro iguais geram blocos idênticos de texto cifrado. Solução: utilizar dados extra na cifragem de cada bloco. Exemplo: Um bloco cifrado é utilizado na cifragem do bloco seguinte (Cipher Feedback Block). Modo de Operação: Cipher Block Chaining (CBC), Cipher Feedback Block (CFB), entre outros. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 5 / 19 Estaca Zero Figure: Cifrador de bloco Cada bloco é enviado ao destinatário da mensagem imediatamente após sua cifragem. Ao receber todos os blocos o destinatário efetua a decifragem dos mesmos na ordem como foram recebidos. Após a decifragem os blocos são concatenados, formando a mensagem original. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 6 / 19 Introdução Algoritmos criptográficos: Troca de chaves: Algoritmos Assimétricos (Chave Pública) RSA Curvas Elı́pticas Baseado em Emparelhamentos Cifragem de Dados Algoritmos Simétricos (Chave secreta) Triplo DES AES One-Time-Pad OBS- Algoritmos simétricos são mais eficientes (computacionalmente falando) para efetuar cifragem de dados que os assimétricos. Maior simplicidade na implementação baseados em operações lógicas simples, como, XOR, AND, SHIFT, entre outras. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 7 / 19 Introdução (Cont.) Motivação: a busca por serviços de criptografia em tempo real está relacionada diretamente com a busca por algoritmos cada vez mais simples e seguros. Algoritmo ideal: One-Time-Pad Desafio: geração de números aleatórios Proposta: Trivium http://www.ecrypt.eu.org/stream/e2-trivium.html Algoritmo extremamente eficiente em Hardware; Utiliza sementes para gerar números aleatórios (chaves); Estas chaves podem ser utilizadas na estrututa One-Time-Pad; Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 8 / 19 Trivium Figure: Ideia do Trivium Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 9 / 19 Trivium (Cont.) Parâmetros de entrada (sementes): Chave (k) (80 bits); Vetor inicial (IV) (80 bits). Saı́da (Chave de Fluxo): até 264 bits da chave de fluxo (Key Stream (KS)). Os N bits da KS são derivados de IV, K e dos Estados Internos (IS) do Trivium. Os IS são 288 bits derivados a partir de IV, K e de PADDING’s, distribuidos entre três registradores de 93, 84 e 111 bits, respectivamente; IS ← (s1 , s2 , · · · s288 ). Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 10 / 19 Trivium (Cont.) Algoritmo: Geração Estados Internos(IV,K) Entrada: IV, K. Saı́da: Estados Internos (IS). 1: (s1 , s2 , · · · s93 ) ← (k1 , k2 , · · · k80 , 0, · · · , 0) 2: (s94 , s95 , · · · s177 ) ← (IV1 , IV2 , · · · IV80 , 0, · · · , 0) 3: (s178 , s179 , · · · s288 ) ← (0, 0, · · · 0, 0, 1, 1, 1) 4: for i = 1 to 4 · 288 5: t1 ← s66 ⊕ (s91 s92 ) ⊕ s93 ⊕ s171 6: t2 ← s162 ⊕ (s175 s176 ) ⊕ s177 ⊕ s264 7: t3 ← s243 ⊕ (s286 s287 ) ⊕ s288 ⊕ s69 8: (s1 , s2 , · · · s93 ) ← (t3 , s1 , s2 , · · · , s92 ) 9: (s94 , s95 , · · · s177 ) ← (t1 , s94 , s95 , · · · s176 ) 10: (s178 , s179 , · · · s288 ) ← (t2 , s178 , s179 , · · · s287 ) 11: end for 12: return IS : representa o operador lógido AND. ⊕: representa o operador lógido XOR. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 11 / 19 Trivium (Cont.) Algoritmo: Geração Chave Fluxo(IV,K) (bits) Entrada: s1 , s2 , · · · s288 Saı́da: o bit zi da chave de fluxo. 1: for i = 1 to 264 2: t1 ← s66 ⊕ s93 3: t2 ← s162 ⊕ s177 4: t3 ← s243 ⊕ s288 5: zi ← t1 ⊕ t2 ⊕ t3 6: t1 ← t1 ⊕ (s91 s92 ) ⊕ s171 7: t2 ← t2 ⊕ (s175 s176 ) ⊕ s264 8: t3 ← t3 ⊕ (s286 s287 ) ⊕ s69 9: (s1 , s2 , · · · s93 ) ← (t3 , s1 , s2 , · · · , s92 ) 10: (s94 , s95 , · · · s177 ) ← (t1 , s94 , s95 , · · · s176 ) 11: (s178 , s179 , · · · s288 ) ← (t2 , s178 , s179 , · · · s287 ) 12: print(zi ) 13: end for Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 12 / 19 Trivium (Cont.) Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 13 / 19 Trivium (Cont.) Existem propostas de geradores de números aleatórios que utilizam estruturas semelhantes a do Trivium Trivium Toy Utiliza três registradores de tamanho distintos, 31, 28 e 37 bits, respectivamente. Pode gerar até 264 bits da chave de fluxo. IV, K: ? Bivium-Toy Utiliza dois registradores de tamanho distintos, 31 e 28 bits, respectivamente. Pode gerar até 264 bits da chave de fluxo. IV, K: ? Em ambas as variantes as propriedades matemática do Trivium são preservadas. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 14 / 19 Trivium (Cont.) A qualidade de um gerador de números aleatórios está associada diretamente ao comprimento do ciclo deste gerador. Ciclo: a quantidade de números que pode ser gerada a partir de determinada semente (sem repretição). Uma forma de avaliar o comprimento do ciclo do gerador é a cada saı́da, avaliar a correlação desta com as demais Sendo todas derivadas da mesma semente. O Trivium Uma análise de ciclo possı́vel: verificar a autocorrelação dos bits da chave de fluxo a cada IV e K utilizados. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 15 / 19 Ideia Central no Estudo do Trivium Entender a forma como foi demonstrado o tamanho do ciclo do Trivium; Adaptar esta demonstração a medida que se possa utiliza-lá em geradores aleatórios baseados em Autômatos Celulares. https://scholar.google.com/citations?view_op= view_citation&hl=en&user=aoiMfj8AAAAJ&citation_ for_view=aoiMfj8AAAAJ:u-x6o8ySG0sC Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 16 / 19 Autômatos Celulares Autômatos Celulares Unidimensionais (AC) Um AC pode ser associado a um vetor de n células (posições); Inicialmente um vetor inicial possui todas as células com valor zero, menos a célula central (valor um). A cada evolução, este vetor inicial gera um novo vetor, onde cada célula depende da vizinhança (células vizinhas) do vetor anterior. Processo executado de forma iterativa. A evolução dos autômatos ocorre de acordo com a regra utilizada; Existem 256 regras possı́veis (unidimencionais). Regra escolhida: Regra 30. Pode ser utilizada para geração de números aleatórios. Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 17 / 19 Autômatos Celulares Figure: Evolução de um AC Leandro Aparecido Sangalli () Prof. Dr. Marco Aurélio Amaral Henriques March 2, 2015 18 / 19 Autômatos Celulares (Cont.) Regra 30 A regra 30 é definida como: xt+1 = xti−1 ⊕ (xti ∨ xti+1 ) i onde, ∨ representa a operação lógica OU. Exemplo: Observe a evolução do AC-30. Vizinhança Valor central (bit) Leandro Aparecido Sangalli 000 0 001 1 010 1 011 1 100 1 () Prof. Dr. Marco Aurélio Amaral Henriques 101 0 110 0 March 2, 2015 111 0 19 / 19