GithubHelp home page GithubHelp logo

rqf7 / proyecto_lovelace Goto Github PK

View Code? Open in Web Editor NEW
7.0 7.0 1.0 496.6 MB

ESCOM IPN, trabajo terminal 2017-B008: Generación de tokens para proteger los datos de tarjetas bancarias.

License: GNU General Public License v3.0

TeX 50.23% Makefile 2.58% Python 10.82% C++ 25.74% HTML 4.03% Shell 0.38% CSS 1.97% C 0.02% JavaScript 4.13% TSQL 0.09%
criptografia cryptography tokenization trabajo-terminal webapp

proyecto_lovelace's People

Contributors

danieldaz23 avatar lnborbolla42 avatar rqf7 avatar traviscibot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

lnborbolla42

proyecto_lovelace's Issues

Observaciones a flujos

Observaciones de Sandra

  • Investigar sobre cifrados de flujo en particular: e-stream

┆Issue is synchronized with this Asana task

Correcciones y cambios a formato de LaTeX

Producto: plantilla propia de LaTeX para los reportes técnicos y las presentaciones.

En esta lista voy agrupando (más que nada para organización mía) los cambios que quiero hacer en la plantilla. Si tienen más propuestas o inconformidades con lo aquí expuesto, no duden en comentarlas abajo; si se sienten valientes y quieren contribuir con alguno de los puntos, sólo avísenme antes, para no repetir.

Por hacer

  • Crear nueva portada. image Necesitamos una portada más original; la que está la he visto en todos mis documentos desde cuarto semestre o algo así. Cualquier sugerencia es bien recibida.
  • Cambiar tabla de simbología por un glosario. image En la documentación del paquete de los glosarios vi de pasada comandos para definir este tipo de cosas; creo que sería más adecuado que lo que está ahorita.
  • Quitar encabezado y pie de página en las páginas en blanco. image Cuando hay un título de capítulo, este se desplaza hasta la próxima página derecha (cuestión de formato); esto genera algunas páginas en blanco (como la de la imagen). Creo que lo más adecuado es que estas no lleven ni pie ni encabezado. De hecho... ahora que estoy viendo mis capturas, creo que el los títulos de los capítulos están de lado incorrecto: mi visor de pdf los coloca al revés; el número de página va del lado de afuera.
  • Crear índice general e índice específico. image Nuestro índice crecerá demasiado. Hay algunos libros en donde se ponen dos: el primero general (para un lector nuevo, que quiera darse una idea general del contenido) y el segundo específico (para alguien que ya sabe lo que busca). Creo que eso sería útil aquí.
  • Espaciado de ecuaciones. image El espacio previo y posterior debería ser el mismo.
  • Posicionamiento de imágenes, tablas y pseudocódigos. image Hasta ahora, simepre somos nosotros los que decimos en dónde debe estar una imagen (usamos el parámetro H); al hacer esto le estamos dando al traste a la supuesta separación entre formato y contenido. Hay que configurar lo necesario para que sea LaTeX el que decida en dónde colocar las imágenes según el contexto.
  • Cambio de formato para títulos de bibliografía, glosario y siglas. image Estos deben verse como títulos de secciones, no como títulos de capítulos.
  • Espaciado de siglas. image Creo que no es mi imaginación: el espaciado en las siglas no es uniforme.

En entorno de pseudocódigos

  • Espaciado de entorno. image El espacio previo y posterior debería ser el mismo.
  • Unificación en páginas image Me parece que este corte que hay en un salto de página no debería ocurrir. A final de cuentas son como figuras, o tablas. Una posibilidad es forzarlos a que se encuentren siempre en una sola página; la otra es agregar algo parecido a las long-table en donde se agrega una leyenda con esta tabla continúa en las siguiente página.

┆Issue is synchronized with this Asana task

Observaciones a sección de introducción

Correcciones de contenido

Correcciones menores

Me inclino por la segunda.

Observaciones de Sandra

  • Agregar ejemplo de criptoanálisis.
  • Poner en español los tipos de ataques.

┆Issue is synchronized with this Asana task

Modos de operación

Productos: Sección de modos de operación en capítulo de antecedentes. Incluye los siguientes modos:

  • ECB
  • CBC
  • OFB
  • CFB
  • CTR

┆Issue is synchronized with this Asana task

NIST 800-90A R1

Recommendation for Random Number Generation Using Deterministic Ran-
dom Bit Generators.

Cifrados de flujo

Productos: sección de cifradores de flujo en capítulo de antecedentes.
Incluye explicación sobre el proyecto eSTREAM.

┆Issue is synchronized with this Asana task

Correcciones y cambios a modelo de distribución continua

Productos: scripts de configuración de las herramientas ocupadas (de momento solo Travis).

Se busca que en todo momento (después de cada pull) Travis compile los documentos entregables, ejecute las pruebas de los programas, genere documentación y despliegue los resultados en las páginas correspondientes.

┆Issue is synchronized with this Asana task

Observaciones a sección de cifrados a bloques

  • Checa los comentarios de las observaciones a la sección de introducción, me parece que los cifrados por bloques pueden ser ocupados en esquemas de llave pública.

    Los cifrados por bloque son esquemas de cifrado simétricos que, como bien
    lo explica su nombre, operan mediante bloques de datos. Normalmente los
    bloques tienen una longitud de 64 o de 128, mientras que las llaves
    pueden ser de 56, 128, 192 o 256.

  • Falta mencionar las unidades de todos esos números: bits.

  • Misma historia que en la definición de las funciones hash: parece que hay dos funciones en lugar de una. Creo que es más claro si se ponen en dos líneas distintas.

    \begin{equation}
    \label{cifrado_bloques_def}
    E: \{0,1\}^r \times \{0,1\}^n \longrightarrow \{0,1\}^n, (k,m)
    \longmapsto E(k,m)
    \end{equation}

  • Como que está incompleta la primera oración: ¿Qué pasa con el espacio de llave?

    El espacio de llave $K = \{0,1\}^r$. Para cada llave, existe una función

  • Me parece que así como está, suena incompleto: ¿por qué se contrasta con los cifrados de flujo?

    Generalmente, los cifrados por bloque procesan el texto claro en bloques
    relativamente grandes ($n \geq 64$), contrastando con los cifradores de
    flujo. Cuando la longitud del mensaje en claro excede el tamaño de

    Yo pondría ... contrastando con los cifradores de flujo, en los que se procesa bit por bit.

  • Colocar FIPS en la sección de siglas.

    especificaciones y detalles de implementación. Se encuentra definido
    en el estándar americano FIPS 46-2.

  • Agregar definición de cifrado (o red) Feistel.

    \acrshort{gl:des} es un cifrado Feistel que procesa bloques de $n=64$ bits y
    produce bloques cifrados de la misma longitud. Aunque la llave es de 64 bits,

    En este punto del flujo de lectura aún no se definen los cifrados Feistel, o se habla de las redes Feistel. Creo que hay varias alternativas: agregar una sección previa en la que se hable de ellos; poner una nota al pie y ligarlo con una entrada del glosario; explicarlo ahí mismo; o cualquier otro recurso que se te ocurra.

  • Esta última línea no la entendí. ¿De dónde salió el factorial? (2 a la 64 factorial debe ser un número enrme)

    56 bits. Las $2^{56}$ llaves implementan, máximo, $2^{56}$ de las
    $2^{64}!$ posibles biyecciones en bloques de 64 bits.

    Si crees que así está bien escrito, entonces solamente pon un comentario explicándolo.
    PD: sugerencia; biyección también suena como algo que va en el glosario.

  • Supongo que aquí se quedaron pegadas dos ecuaciones. La segunda f(R_{i - 1}, K_i) podría ir en otra línea; o separada por un en donde.

    \begin{equation}
    \label{cifrado_des_di}
    R_i = L_{i-1} \oplus f(R_{i-1}, K_i)
    f(R_{i-1}, K_i) = P(S(E(R_{i-1})\oplus K_i))
    \end{equation}

    image
    Revisa como funciona el entorno aligned en LaTeX; te permite introducir varias líneas en un solo entorno de ecuación.

  • Creo que aquí faltó cerrar un paréntesis. Y no se explica qué es lo que hace IP.

    Calcular 16 subllaves $K_i$ de 48 bits partiendo de $K$.
    $(L_0, R_0) \leftarrow IP(m_1m_2\dots m_{64}$
    Para $i$ desde 1 hasta 16: Calcular $L_i$ y $R_i$ mediante las ecuaciones

  • Correcciones a pseudocódigo de DES.
    image
    Supongo que lo que está entre la línea de para y la de fin es el contenido de un ciclo: hay que identarlo un nivel más.
    En plantillas/pseudocodigo.sty están definidas las palabras clave (las que se marcan con negritas). El equivalente del for es para_todo; claro que si te gusta más para, solamente tienes que definirlo en el archivo de la plantilla.
    Sugerencia: ya sé que así está en el libro de a Handbook ..., sin embargo me parece un poco raro que en la primer línea del bloque para se diga lo que va a hacer el propio bloque, y luego este se encuentre un poco incompleto. Yo lo cambiaría por algo así:

para_todo i entre 1 y 16:
  Li = Ri-1
  Obtener f(Ri-1, Ki) mediante:
    a) ...
    b) ...
    ...
  Ri = Li xor f(Ri-1, Ki)
fin
  • Faltó el guión bajo para que el 16 sea subíndice.

    $b_1b_2 \dots b_{64} \leftarrow (R_{16}, L{16})$.

  • Agregar liga a siglas para NIST.

    de la tecnología, el NIST comenzó la búsqueda de un nuevo cifrado

  • Para evitar confusiones sobre los tamaños de bloques y llaves, yo le agregaría: ... y solo utiliza los tres tamaños de llaves mencionados anteriormente ....

    mientras que \acrshort{gl:aes} tiene fijo el tamaño de bloque y solo utiliza
    los tres tamaños mencionados anteriormente. Dependiendo del tamaño de la

  • Identar el cuerpo del pseudocódigo de AES.
    image

  • Rondas de más en pseudocódigo de AES. Según yo, el ciclo debería ir desde 1 hasta num_rondas - 1; la última transformación ya está fuera del ciclo.
    image

  • Aunque no nos metamos de lleno a explicarla, creo que cuando menos deberíamos poner alguna nota que diga que todas estas operacions son en aritmética de campos finitos o algo así.

    \subsubsection{MixColumns}
    Esta transformación opera en cada columna de la matriz de estado
    independientemente. Se considera una columna $a = (a_0, a_1, a_2, a_3)$
    como el polinomio $a(X) = a_3X^3 + a_2X^2 + a_1X + a_0$.
    Entonces este paso transforma una columna $a$ al multiplicarla con el
    siguiente polinomio fijo:
    \begin{equation}
    \label{cifrado_aes_poli}
    c(X) = 03X^3 + 01X^2 + 01X+ 02
    \end{equation}
    y se toma el residuo del producto módulo $X^4+1$:
    \begin{equation}
    \label{cifrado_aes_mix}
    a(X) \mapsto a(X) \cdotp c(X) mod (X^4+1)
    \end{equation}

    PD. también faltó usar el operador \mod, para que se vea igual que en la sección de simbología.

  • Esto de N-rondas no se entiende así como está escrito (o cuando menos a mi me costó, además de que es más normal en inglés); propongo cambiarlo a: ... puede ser generalizado a un número N de rondas ....

    \acrshort{gl:feal} con una llave de 64 bits puede ser generalizado a $N-$
    \glspl{gl:ronda} con $N$ par, aunque se recomienda $N = 2^x$.

Sugerencias

  • Agregar entropía al glosario: no es una palabra común; además, tengo entendido que se entienden cosas distintas en un contexto de teoría de la información y probabilidad, que en el físico (si se agrega al glosario se eliminan amigüedades).

    \item \textbf{Tamaño de llave.} La entropía del espacio de la llave
    define un límite superior en la seguridad del cifrado al tomar en
    cuenta la búsqueda exhaustiva. Sin embargo, hay que tener cuidado

  • ... los embates del progreso de la tecnología ..., me pregunto si no es demasiado sentido figurado para nuestro reporte técnico.

    Dado que el tamaño de bloque y la longitud de la llave de \acrshort{gl:des}
    se volvieron muy pequeños para resistir los embates del progreso
    de la tecnología, el NIST comenzó la búsqueda de un nuevo cifrado

  • Agregar diagramas con funcionamiento de operaciones de AES. Las figuras ayudan a entenderlo mucho más fácilmente.

Observaciones de Sandra

  • Separar ecuaciones.

  • Explicar llaves débiles.

  • Revisar RC5

┆Issue is synchronized with this Asana task

Observaciones a modos

Pequeñas sugerencias

  • Este para la mayoría de los casos después del punto me saca un poco de onda, ¿por qué el punto si seguimos hablando de los bloques de cifrado?
    descifrado de bloques de información de tamaño fijo. Para la mayoría de los
    casos, menos de 256 bits\cite{modos_de_operacion}, lo cual es equivalente a

    Tal vez podría ser una <<;>> mejor: de tamaño fijo; donde, en la mayoría de los casos, los bloques son
    de menos de 256 bits, lo cuál es equivalente a
    .
  • Creo que no debemos hablar de nosotros.
    bloques para poder aplicarlos a información de tamaño irrestricto. Formalizamos

    Sería se formaliza, ¿no?
  • Igual que en el anterior, se presentan a continuación
    presentamos a continuación (\textit{Electronic Codebook}, ECB); su uso no es
    recomendado, pues es muy inseguro cuando el mensaje original es simétrico a
    nivel de bloque \cite{modos_de_operacion}. También presentamos otros tres

    Y, abajo también hay un También presentamos.
    Tal vez sería buena idea, para no repetir tanto cambiar al inicio presentar por enlistar.
  • ¿No queda mejor Este modo? Siento que medio queda volando decir solo este.
    Este es muy similar al anterior (CFB), salvo porque la retroalimentación va
    directamente de la salida del cifrador a bloques. De esta forma, nada que
    tenga que ver con el texto en claro, llega al cifrado a bloques; este

    Creo que es salvo que la retroalimentación.
    Y, creo que unas comas sobran al final: nada que tenga que ver con el texto en claro llega al

Observaciones de Sandra

  • Cambiar notación.

┆Issue is synchronized with this Asana task

Correcciones y cambios a documentación de doxygen

Productos: generar salidas personalizadas para los htmls y latex de la documentación de doxygen.

OJO: No me voy a poner a documentar partes que no sean mías. De hecho, es muy probable que cuando haga esto me ponga a molestarlos con que documenten sus partes.

┆Issue is synchronized with this Asana task

Observaciones a sección de funciones hash

Correciones menores

  • Como que no entiendo muy bien la primera oración de este párrafo.
    Si se tiene una función hash cuya salida es una cadena de $n-$bits,
    la probabilidad de que una cadena aleatoria
    sea mapeada a un valor hash de $n-$bits es de $2^n$. Si se desea utilizar
    a una función hash $h$ en un ámbito criptográfico, es importante que
    cumpla con dos cosas: primero, que sea resistente a las colisiones o,
    en otras palabras, que no sea computacionalmente factible encontrar dos entradas distintas que den el mismo valor (una colisión entre las entradas $x$ y $y$ tal que $h(x) = h(y)$); y segundo, que tenga resistencia a una segunda preimagen, o sea que, dado un valor hash $h(z) = y$, no sea computacionalmente factible encontrar una entrada $x$ tal que $h(x) = y$ mientras $z \neq x$.

¿Puedes mostrarme tu fuente? O, no era más bien algo así:
...la probabilidad de que una cadena aleatoria sea mapeada a ese valor hash es de 1 / 2^n.
¿O cuál es la relación entra la hipótesis y la conclusión del condicional? Y pues la probabilidad... técnicamente tiene que ser un valor entre cero y uno.

  • Sobre las dos condiciones que deben de cumplir las funciones hash criptográfias: ¿Cuál es la diferencia entre la primera y la segunda? Anque con palabras un poco distintas, me parece que ambas dicen lo mismo; que dado un hash, no sea factible encontrarle dos preimágenes.

  • PD: la última línea se chutó el margen derecho.

  • Supongo que aquí sobra el y, o también podría ser que en lugar de punto y coma fuera sólo coma.

    también son utilizados para revisar la integridad de las llaves públicas
    y; al utilizarse con una llave secreta, las funciones criptográficas hash
    se convierten en códigos de autenticación de mensaje (MAC, por sus siglas

  • Me parece que aquí en realidad tienes dos funciones separadas por una coma. Es sólo propuesta, pero yo mejor las pondría en dos líneas distintas (ya sea con dos ecuaciones, u ocupando el modo multilínea para ecuaciones).

    \begin{equation}
    \label{funcion_hash_def}
    h: \{0, 1\}^* \longrightarrow \{0,1\}^n, m \longmapsto h(m)
    \end{equation}

  • Igual, no estoy seguro de entender esto bien así como está, lo que me parece que tiene más sentido es: ... de manera que, ya sea en hardware o en software, sean ....

    Es importante resaltar que uno de los requerimientos básicos de las
    funciones hash es que los valores $h(m)$ sean fáciles de calcular,
    de manera, ya sea en software o en hardware, sean prácticas al
    implementarse.

  • Me parece que hay demasiadas comas, creo que quedaría mejor ...la huella es prácticamente única.

    Las funciones criptográficas hash también son conocidas como funciones
    \textit{procesadoras de mensajes} y el valor hash $h(m)$ de un mensaje
    $m$ dado es llamado \textit{huella} de $m$; ya que es una representación
    compacta de m y, dada la resistencia a la segunda preimagen, la huella
    es, prácticamente, única. Si el mensaje fuese modificado, el valor hash

PD: Leer lo que escribieron tratando de buscar errores solo me hizo terminar buscando reglas gramaticales que nunca me aprendí.

  • Aquí también murió la regla del margen derecho.

    Otra importante aplicación de las funciones hash es la autenticación del mensaje. Si una función hash es utilizada para la autenticación de
    mensajes, es llamada código de autenticación de mensajes (MAC, por sus
    siglas en inglés). MAC es una técnica simétrica estándar muy utilizada para autenticar y proteger la integridad de un mensaje. Dependen de

  • En esta ecuación el operador de módulo se pegó al operando derecho.
    image
    Una opción es agregar espacios en blanco; otra es ocupar el operador de módulo de LaTeX (creo que es \mod).

  • Un pequeño detalle: las listas de las referencias, al inicio de algunas de tus secciones, les falta un poco el formato de lista.

    La información presentada a continuación puede consultarse con más profundidad
    en las siguientes referencias
    \cite{hash_hussein, menezes, DBLP:series/isc/DelfsK07, hash_gupta}

    image
    No estoy muy seguro de si lo más fácil es poner la última en un \cite separado, para intercalar un y ahí. También falta el punto (se te van a salir las ovejas del corral, me decía mi maestra de 3º de primaria).
    O como tu calcules; supongo que también queda simplemente poniéndole el punto.

  • Creo que preimagen no se utiliza antes. Hay que explicar en algún punto qué es la preimagen (ahí mismo, o con una entrada más en el glosario).

    \item Resistencia de preimagen: no es computacionalmente factible
    para una salida específica $y$ encontrar una entrada $x^\prime$ que
    dé como resultado el mismo valor hash $h(x^\prime) = y$ si no se
    conoce $x$. Esta propiedad también es llamada

    Si se aregan al glosario, creo que ya es necesario agregar una serie de términos que están relacionados entre sí (junto con biyección): inyectiva, suprayectiva, función, dominio e imagen.

  • En este punto (el primero), se dice: ... si no se conoce x; sin embargo no se sabe nada más sobre x (salvo que es una entrada). Creo que faltó mencionar en algún punto que h(x) = y. ¿O debería inferirlo el lector por las letras? Tal vez sí.

    \item Resistencia de preimagen: no es computacionalmente factible
    para una salida específica $y$ encontrar una entrada $x^\prime$ que
    dé como resultado el mismo valor hash $h(x^\prime) = y$ si no se
    conoce $x$. Esta propiedad también es llamada

  • Como el paréntesis de cierre quedó después de un salto de línea, se está insertando un espacio en blanco.

    función hash de un solo sentido o OWHF (\textit{one-way hash function}
    ). Las que cumplen con la resistencia de segunda preimagen y

    image
    Varias alternativas: subir el paréntesis de cierre; poner un comentario (%) al final de la línea de arriba; bajar desde antes de function. Las dos primeras no están chidas: se pasan del margen.

  • En estos dos párrafos faltan definir (o ligar) a entradas en la sección de siglas y acrónimos.

    Una función hash $h$ que cumple con las propiedades de resistencia de
    preimagen y resistencia de segunda preimagen es conocida como una
    función hash de un solo sentido o OWHF (\textit{one-way hash function}
    ). Las que cumplen con la resistencia de segunda preimagen y
    resistencia a las colisiones son conocidas como funciones hash
    resistentes a colisiones o CRHF
    (\textit{collision resistant hash function}). Aunque casi siempre las
    funciones CRHF cumplen con la resistencia de preimagen, no es
    obligatorio que lo hagan.
    Algunos ejemplos de las funciones hash criptográficas son el SHA-1 y el
    MD5. En los esquemas de firma electrónica, se obtiene el valor hash del
    mensaje ($h(m)$) y se pone en el lugar de la firma. Los valores hash
    también son utilizados para revisar la integridad de las llaves
    públicas y, al utilizarse con una llave secreta, las funciones
    criptográficas hash se convierten en códigos de autenticación de
    mensaje (MAC, por sus siglas en inglés), una de las herramientas más
    utilizadas en protocolos como SSL e IPSec para revisar la integridad de
    un mensaje y autenticar al remitente.

    Más adelante también hay un MDC y un ASCII.
    Además, en el segundo se habla sobre las funciones hash criptográficas... ¿No se supone que son las OWHF? Sino, entonces hay que decir los requisitos de una función hash para que pueda ser considerada «criptográfica».

  • No muy me llama el estilo Yoda de poner primero el predicado... (sugerencia).

    En la década de 1990 esta función hash fue diseñada Ronald Rivest.

  • 😮

    devuelve bloques \textit{procesados} de 160 bits; cuando en 1996 Hans
    descubrió en 1996 una colisión en dos rondas, se desarrollaron nuevas versiones

  • Aquí era obtenidos, ¿no?

    dado. Como se explica a continuación, los \acrshort{gl:mac} pueden ser
    obtenidas mediante cifradores de bloque, cifradores de flujo o de funciones
    hash criptográficas.

  • Agregar referencia cruzada a CBC.

    utiliza el modo de operación \acrshort{gl:cbc}. Cuando \acrshort{gl:des}

    Como aquí:
    de cifrado y descifrado; estas guardan muchas similitudes con el modo de
    operación \acrshort{gl:ofb} (sección \ref{sec:ofb}), con la única excepción de
    que este trabaja con bloques del tamaño del cifrado subyacente. En otras

  • ¿No el título de esta sección debiera ser MAC?


    Así como está, suena a que es subsección de la sección funciones hash.

Observaciones de Sandra

  • Crear glosario de simbología.

  • Poner MACs en sección propia.

  • Poner protocolos en especiífico: SHA-2, MD5.

┆Issue is synchronized with this Asana task

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.