Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

SFN

En este repositorio se encuentra una implementación en verilog de https://doi.org/10.1016/j.micpro.2018.04.009. SFN es un cifrado de bloques ligero en el que se usa una red de Substituciones-Permutaciones y/o una red Feistel.

Desarrollado con

  • Verilog Logo
  • Python Logo

Tabla de contenidos

Herramientas

(volver al principio)

Icarus Verilog

(volver al principio)

GTKWave

(volver al principio)

OpenROAD

(volver al principio)

Módulos

(volver al principio)
Si nos fijamos en la Figura 9, que corresponde con el datapath, nos encontramos con varios componentes bien diferenciados que son los implementados a continuación.

AddConstants

(volver al principio)

MixColumns

(volver al principio)

GFmul

(volver al principio)

MixRows

(volver al principio)

MixXors

(volver al principio)

Permutation

(volver al principio)
Una P-Box es una capa que se utiliza en algoritmos de cifrado para mezclar o reorganizar los bits en un patrón específicos. Como hemos visto en teoría una manera de obtener confusión es a través de permutaciones.

S-Boxes

(volver al principio)
Una S-Box es un componente crucial en muchos algoritmos de cifrado, especialmente en cifrados de bloques. La abreviatura "S" se refiere a "Sustitución", debido a que realizan una operación de sustitución no lineal en los datos de entrada. Como hemos visto en teoría una manera de obtener confusión es a través de sustituciones.

S1-Box

(volver al principio)
El contenido de la S1-Box viene especificado en la Tabla 1. Resaltar que corresponde con la S-Box de Midori64.

S2-Box

(volver al principio)
El contenido de la S2-Box viene especificado en la Tabla 3. Comentar que esta caja es la S-Box de PRINCE.

Utils

(volver al principio)
En este apartado incluimos el resto de componentes que necesitamos para la implementación del datapath de la Figura 9, los cuáles corresponden con componentes más generales que podemos encontrar en multitud de circuitos de diferente índole.

Cont_5bit

(volver al principio)
Este módulo implementa un contador de 5 bits, con el que controlaremos en que iteración nos encontramos.

Demux_1to2

(volver al principio)
En este componente se implementa un demultiplexor 1 a 2.

Join_64bit

(volver al principio)
Si nos fijamos en el datapath encontramos que en ocasiones tenemos que concatenar en un solo bus de 64 bits, 2 buses de 32 bits, este modulo es el que se encargar de ello.

Mux_2to1

(volver al principio)
Aquí implementamos un multiplexor 2 a 1.

Swap_64bit

(volver al principio)
En este modulo intercambiamos una entrada de 64 bits donde los 32 bits LSB pasan a ser los 32 bits MSB y viceversa.

Xor_32bit

(volver al principio)
Esta capa realiza la operación XOR entre 2 operandos de 32 bits cada uno.

Xor_64bit

(volver al principio)
Esta capa realiza la operación XOR entre 2 operandos de 64 bits cada uno.

Contacto

(volver al principio)

Nombre Correo
Pablo Cano Navajas pabcannav@alum.us.es
Juan Diego Galisteo Gómez juagalgom1@alum.us.es
Juan Pedro Gallardo Peral juagalper2@alum.us.es
Álvaro Núñez Marín alvnunmar@alum.us.es
José María Sigüenza Izquierdo jossigizq@alum.us.es