Relatório Cifragem One Time Pad
Por: Yuri Olive • 1/6/2016 • Relatório de pesquisa • 1.030 Palavras (5 Páginas) • 213 Visualizações
EA075 U
Sistemas Embarcados
Atividade 1: Cifragem One Time Pad
Objetivos
O objetivo do trabalho foi realizar um sistema de cifragem One-Time-Pad tanto em software como em hardware. Esta cifragem consiste em efetuar uma operação lógica de XOR entre cada bit da mensagem com um bit da chave.
Em Software foi utilizando o simulador ARMSim# para implementar o esquema de cifragem One-Time Pad efetuando a cifragem e a decifragem da mensagem “SISTEMAS EMBARCADOS” utilizando como chave a palavra “PARALELEPIPEDOVERDE”.
Em Hardware foi utilizando VHDL para simular o circuito que efetuou o mesmo esquema de cifragem. Pra isso foi usado o ambiente do Quartus II.
Desenvolvimento
- Software
Para realizar a cifragem por meio de software foi feito um programa em linguagem Assembly para ARM, o seu código é descrito abaixo:
MESSAGE: .ASCIZ "SISTEMAS EMBARCADOS" KEY: .ASCIZ "PARALELEPIPEDOVERDE" DECODESTRING: .ASCIZ "XXXXXXXXXXXXXXXXXXX" start: ldr r0, =MESSAGE @ R0 = &MESSAGE ldr r1, =KEY @ R1 = &KEY ldr r2, =DECODESTRING @ R2 = &ENCODE mov r6, #19 @ R6 <= Tamanho da Mensagem encode: cmp r6, #0 @ Ve se acabou a string beq outencode ldrb r3, [r0], #1 @ r3 = *(r0++) ldrb r4, [r1], #1 @ r4 = *(r1++) eor r5, r3, r4 @ r5 = r3 XOR r4 strb r5, [r2], #1 @ ENCODE <= r5 sub r6, r6, #1 b encode outencode: ldr r0, =DECODESTRING @ R0 = &ENCODE ldr r1, =KEY @ R1 = &KEY ldr r2, =DECODESTRING @ R2 = &DECODE mov r6, #19 @ R6 <= Tamanho da Mensagem decode: cmp r6, #0 @ Ve se acabou a string beq print ldrb r3, [r0], #1 @ r3 = *(r0++) ldrb r4, [r1], #1 @ r4 = *(r1++) eor r5, r3, r4 @ r5 = r3 XOR r4 strb r5, [r2], #1 @ DECODE <= r5 sub r6, r6, #1 b decode print: ldr r2, =DECODESTRING mov r0, #1 mov r1, #1 swi 0x204 stop: b stop |
O código inicialmente codifica a String armazenando em DECODESTRING e depois decodifica a mesma. O LDRB irá sempre obter o valor de 1 byte (8 bits) que é o tamanho do caracter. A posição em memória da mensagem, da chave e da mensagem codificada/decodificada foi respectivamente 1000, 1014 e 1028.
[pic 1]
Figura 1: Simulação no ArmSim# da implementação em Software
[pic 2]
Figura 2: Mensagem na posição 1000
[pic 3]
Figura 3: Chave na posição 1014
[pic 4]
Figura 4: Mensagem decodificada na posição 1028
- Hardware
Para a implementação em Hardware foi criado um módulo cifrador em VHDL a fim de realizar a cifragem com o algoritimo One-Time-Pad. Por isso as entradas e a saída consistiram em sinais de 1 byte cada.
library ieee; use ieee.std_logic_1164.all; entity cifrador is port( message: in std_logic_vector(7 downto 0); key: in std_logic_vector(7 downto 0); decode: out std_logic_vector(7 downto 0) ); end cifrador; architecture encodeDecode of cifrador is begin process (message, key) begin decode <= message xor key; end process; end encodeDecode; |
...