Permalink
Cannot retrieve contributors at this time
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?
Implementacion-de-SFN/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
149 lines (120 sloc)
5.05 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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](https://img.shields.io/badge/verilog-IEEE%201364.1-9cf)](https://www.verilog.com/) | |
* [![Python Logo](https://img.shields.io/badge/python-3.11-blue)](https://www.python.org/) | |
### Tabla de contenidos | |
- [SFN](#sfn) | |
- [Desarrollado con](#desarrollado-con) | |
- [Tabla de contenidos](#tabla-de-contenidos) | |
- [Herramientas](#herramientas) | |
- [Icarus Verilog](#icarus-verilog) | |
- [GTKWave](#gtkwave) | |
- [OpenROAD](#openroad) | |
- [Módulos](#módulos) | |
- [AddConstants](#addconstants) | |
- [MixColumns](#mixcolumns) | |
- [GFmul](#gfmul) | |
- [MixRows](#mixrows) | |
- [MixXors](#mixxors) | |
- [Permutation](#permutation) | |
- [S-Boxes](#s-boxes) | |
- [S1-Box](#s1-box) | |
- [S2-Box](#s2-box) | |
- [Utils](#utils) | |
- [Cont_5bit](#cont_5bit) | |
- [Demux_1to2](#demux_1to2) | |
- [Join_64bit](#join_64bit) | |
- [Mux_2to1](#mux_2to1) | |
- [Swap_64bit](#swap_64bit) | |
- [Xor_32bit](#xor_32bit) | |
- [Xor_64bit](#xor_64bit) | |
- [Contacto](#contacto) | |
# Herramientas | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## Icarus Verilog | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## GTKWave | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## OpenROAD | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
# Módulos | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## MixColumns | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
### GFmul | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## MixRows | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## MixXors | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
## Permutation | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
El contenido de la S1-Box viene especificado en la Tabla 1. | |
Resaltar que corresponde con la S-Box de Midori64. | |
### S2-Box | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
El contenido de la S2-Box viene especificado en la Tabla 3. | |
Comentar que esta caja es la S-Box de PRINCE. | |
## Utils | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
Este módulo implementa un contador de 5 bits, con el que | |
controlaremos en que iteración nos encontramos. | |
### Demux_1to2 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
En este componente se implementa un demultiplexor 1 a 2. | |
### Join_64bit | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
Aquí implementamos un multiplexor 2 a 1. | |
### Swap_64bit | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
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 | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
Esta capa realiza la operación XOR entre 2 operandos de | |
32 bits cada uno. | |
### Xor_64bit | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
Esta capa realiza la operación XOR entre 2 operandos de | |
64 bits cada uno. | |
# Contacto | |
<sup>[(volver al principio)](#tabla-de-contenidos)</sup> | |
| 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 | |