You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
\@writefile{toc}{\contentsline {section}{\numberline {3.1}\IeC {\textquestiondown } Qu\IeC {\'e} es una gram\IeC {\'a}tica y para qu\IeC {\'e} sirve?}{5}{section.3.1}}
6
+
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Cifrado de contrase\IeC {\~n}as y seguridad en Thoth Web}{7}{section.3.2}}
7
+
\@writefile{toc}{\contentsline {subsection}{Funcionamiento del algoritmo hash}{7}{section*.7}}
8
+
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Aplicaci\IeC {\'o}n de la funci\IeC {\'o}n hash a diferentes datos introducidos.}}{8}{figure.3.1}}
9
+
\newlabel{fig:3.1}{{\M@TitleReference {3.1}{Aplicaci\IeC {\'o}n de la funci\IeC {\'o}n hash a diferentes datos introducidos.}}{8}{Aplicación de la función hash a diferentes datos introducidos}{figure.3.1}{}}
10
+
\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Ejemplo de ataque con tablas de b\IeC {\'u}squeda.}}{9}{figure.3.2}}
11
+
\newlabel{fig:3.2}{{\M@TitleReference {3.2}{Ejemplo de ataque con tablas de b\IeC {\'u}squeda.}}{9}{Ejemplo de ataque con tablas de búsqueda}{figure.3.2}{}}
12
+
\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces Resultado de aplicar tablas de b\IeC {\'u}squeda al cifrado hash con semilla.}}{9}{figure.3.3}}
13
+
\newlabel{fig:3.3}{{\M@TitleReference {3.3}{Resultado de aplicar tablas de b\IeC {\'u}squeda al cifrado hash con semilla.}}{9}{Resultado de aplicar tablas de búsqueda al cifrado hash con semilla}{figure.3.3}{}}
6
14
\citation{wiki:latex}
7
15
\citation{koza92}
8
-
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Cifrado de contrase\IeC {\~n}as}{7}{section.3.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Aut\IeC {\'o}mata para una expresi\IeC {\'o}n vac\IeC {\'\i }a}}{8}{figure.3.1}}
14
-
\newlabel{fig:escudoInfor}{{\M@TitleReference {3.1}{Aut\IeC {\'o}mata para una expresi\IeC {\'o}n vac\IeC {\'\i }a}}{8}{Autómata para una expresión vacía}{figure.3.1}{}}
15
-
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Listas de items}{8}{section.3.5}}
16
-
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Herramientas y tecnolog\IeC {\'\i }as utilizadas en cada parte del proyecto}}{9}{table.3.1}}
17
-
\newlabel{tabla:herramientasportipodeuso}{{\M@TitleReference {3.1}{Herramientas y tecnolog\IeC {\'\i }as utilizadas en cada parte del proyecto}}{9}{Herramientas y tecnologías utilizadas en cada parte del proyecto}{table.3.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces Aut\IeC {\'o}mata para una expresi\IeC {\'o}n vac\IeC {\'\i }a}}{11}{figure.3.4}}
21
+
\newlabel{fig:escudoInfor}{{\M@TitleReference {3.4}{Aut\IeC {\'o}mata para una expresi\IeC {\'o}n vac\IeC {\'\i }a}}{11}{Autómata para una expresión vacía}{figure.3.4}{}}
22
+
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Listas de items}{11}{section.3.5}}
23
+
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Herramientas y tecnolog\IeC {\'\i }as utilizadas en cada parte del proyecto}}{12}{table.3.1}}
24
+
\newlabel{tabla:herramientasportipodeuso}{{\M@TitleReference {3.1}{Herramientas y tecnolog\IeC {\'\i }as utilizadas en cada parte del proyecto}}{12}{Herramientas y tecnologías utilizadas en cada parte del proyecto}{table.3.1}{}}
Copy file name to clipboardExpand all lines: plantillaLatex-master/tex/3_Conceptos_teoricos.tex
+55-3Lines changed: 55 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -36,11 +36,63 @@ \section{¿ Qué es una gramática y para qué sirve?}
36
36
37
37
Algunos conceptos teóricos de \LaTeX\footnote{Créditos a los proyectos de Álvaro López Cantero: Configurador de Presupuestos y Roberto Izquierdo Amo: PLQuiz}.
38
38
39
-
\section{Cifrado de contraseñas}
40
39
41
-
El cifrado de la contraseña es una de las cuestiones más importantes para preservar la seguridad o intimidad del usuario. El porqué es muy simple. Los usuarios normalmente utilizamos las mismas contraseñas o parecidas para cualquier cuenta de una página o red social. Por lo tanto si alguien con acceso a la base de datos descubre la contraseña utilizada por un determinado usuario, se podría estar hablando de una vulnerabilidad en las demás cuentas.
40
+
queda por hacer todavia
41
+
42
+
\section{Cifrado de contraseñas y seguridad en Thoth Web}
43
+
44
+
El cifrado de la contraseña es una de las cuestiones más importantes para preservar la seguridad o intimidad del usuario. El porqué es muy simple. Los usuarios normalmente utilizamos las mismas contraseñas o parecidas para cualquier cuenta de una página o red social. Por lo tanto si hay alguien con acceso a la base de datos, podrá ver la contraseña utilizada por un determinado usuario poniendo en peligro esa intimidad no solo en este programa, sino, como ya se ha comentado antes, la de otras cuentas.
45
+
46
+
Para evitar esto, el método más simple es el cifrar las contraseñas en la base de datos para que en el caso en el que alguien acceda a ella, en el campo <<contraseña>> no vea la contraseña real, sino el resultado del cifrado de esta. El método de cifrado que se emplea en Thoth Web el del algoritmo <<hash>> que como veremos más adelante tiene unas características determinadas.
47
+
48
+
\subsection{Funcionamiento del algoritmo hash}
49
+
50
+
Se trata de un algoritmo matemático con el que se transforma cualquier cantidad de datos en una serie de datos fija que funciona como una huella dactilar. Esto quiere decir que sea cual sea la cantidad de caracteres de entrada, la salida siempre será fija. Cumple además con dos premisas muy importantes para la seguridad:
51
+
52
+
\begin{itemize}
53
+
\item No es reversible, no se puede descifrar por medio de funciones matemáticas y obtener el resultado antes de ser encriptado, sea cual sea la función utilizada (SHA-1, SHA-2 o MD 5 entre otras, como veremos a continuación).
54
+
\item Cuenta con la propiedad de que si la entrada cambia, aunque sea sólo en un bit, el hash resultante será completamente, como se puede ver en la siguiente ilustración \ref{fig:3.1}. En la imagen se puede apreciar que aunque la entrada tenga un mayor numero de caracteres, la salida siempre sera de 40 caracteres.
\caption{Aplicación de la función hash a diferentes datos introducidos.}
62
+
\label{fig:3.1}
63
+
\end{figure}
64
+
65
+
Ahora bien, las acciones llevadas a cabo para preservar esa seguridad serian las siguientes: un usuario crea una cuenta en la aplicación, la contraseña se encripta y se almacena en la base de datos. Cuando el usuario trata de iniciar sesión y escribe la contraseña, esta se encripta y se compara el resultado con aquel que se ha guardado en la base de datos, si son iguales el usuario tendrá acceso sino, se le requerirá que lo vuelva a intentar.
66
+
67
+
El problema principal de esto es que con los avances en temas de seguridad siempre hay asociados otros que tratan de <<romper>> esa seguridad y en este caso no iba a ser menos. Creo que es importante reconocer los peligros que hay asociados a aplicar este método, pero no deseo extenderme demasiado en este aspecto así que los mencionare brevemente.
68
+
69
+
70
+
\begin{itemize}
71
+
\item Ataques de fuerza bruta. Consisten en utilizar diccionarios de palabras con contraseñas habituales e introducirlas hasta que alguna coincida. Se trata del ataque menos eficiente, pero el más difícil de evitar.
72
+
\item Tablas de búsqueda. Este tipo de ataque si que supondría un grave problema para la seguridad en el cifrado con algoritmo hash. Recordemos que las funciones hash solo se pueden encriptar, no descifrar. Lo que hace este ataque es lo siguiente, cuenta con una tabla de contraseñas típicas y su cifrado hash y las compara con los hash introducidos. Para entender mejor este concepto hay incluso herramientas online que pueden hacer este trabajo \ref{fig:3.2}. También las hay que funcionan al revés. Introduces la contraseña que crees que puede usar alguien, la encripta, la compara con todas las de la base de datos y te dice si alguien la utiliza o no.
\caption{Ejemplo de ataque con tablas de búsqueda.}
79
+
\label{fig:3.2}
80
+
\end{figure}
81
+
82
+
Además de estos, hay más métodos, casi todos basados en las tablas de búsqueda. Según estos ataques queda comprobado que la seguridad de este algoritmo depende en gran mediada de la contraseña que utilice el usuario. Cuanto más aleatoria y con más mezcla de caracteres mejor, ya que formará palabras que no se encuentran en los diccionarios o tablas y solo se podrá descubrir por medio de la fuerza bruta. Entonces ¿ cómo hacer que las contraseñas sean más resistentes y solucionar este problema?
83
+
84
+
Se conoce como el cifrado hash con sal o semilla. Consiste en añadir un conjunto de caracteres aleatorios, agregarlos a la contraseña y una vez hecho esto, cifrarlo con la función hash. De esta manera se consigue que la contraseña sea mucho más aleatoria que la que inicialmente ha introducido el usuario. Así podemos ver como quedaría un intento de <<tablas de búsqueda>> con este tipo de cifrado usa para contraseñas muy simples \ref{fig:3.3}.
\caption{Resultado de aplicar tablas de búsqueda al cifrado hash con semilla.}
90
+
\label{fig:3.3}
91
+
\end{figure}
92
+
93
+
La primera de ellas corresponde con la clave <<123>> la segunda con la palabra <<contraseña>> y la tercera con la fecha <<16-6-17>>. Todas son fáciles, pero al añadirle una clave y cifrarlo todo, se vuelve mucho mas complejo. Se podría pensar que, como la clave que se le añade también se guarda en la base de datos sigue sin ser seguro. Partiendo del hecho de que no hay prácticamente nada seguro al cien por cien, lo que se consigue con esto es dificultar mucho el cálculo y con este método se consigue de una forma muy simple.
94
+
42
95
43
-
El cifrado utilizado en Thoth Web es variable. Esto quiere decir que por medio de unas variables podemos cambiar la forma de encriptar la contraseña.
Copy file name to clipboardExpand all lines: plantillaLatex-master/tex/4_Tecnicas_y_herramientas.tex
+12-2Lines changed: 12 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -42,8 +42,6 @@ \section{DukeScript}
42
42
43
43
DukeScript se centra sobre todo en el desarrollo de aplicaciones <<multi-plataforma>> llevadas a cabo en Java, más que en el paso de Java a JavaScript. Da la posibilidad de que alguien con conocimientos, digamoslo así, en Java pueda llevar a cabo un proyecto en lenguajes pensados para aplicaciones móviles o web. Esto no quita que se puedan realizar aplicaciones de escritorio con JavaScript.
44
44
45
-
---añadir más---
46
-
47
45
\section{Vaadin}
48
46
49
47
Vaadin en un <<framework>> de Java de código abierto, para crear aplicaciones web \footnote{\url{https://vaadin.com/home}}. Se programa en Java o cualquier otro lenguaje de JVM. Lo mas destacado de Vaadin es que esta construido sobre una base de GWT, por ello es una de las grandes alternativas a este último. La forma de trabajar con Vaadin es mediante el lenguaje Java e incorpora un lado cliente y otro servidor, el el cual irán las funcionalidades más complejas y su programación es dirigida por eventos. Es decir, hasta aquí es igual a GWT.
@@ -54,6 +52,18 @@ \section{Vaadin}
54
52
55
53
Aunque cuenta con un núcleo de elementos gratuitos y periodos de prueba también gratuitos, decidimos seguir nuestro camino, por llamarlo así, con GWT y hacerlo completamente de esta forma.
56
54
55
+
\section{Herramientas para el cifrado de contraseñas}
56
+
librerias utilizadas para el cifrado, para el login etc
57
+
58
+
59
+
En este programa utilizamos una técnica muy simple, que mejora un poco este aspecto. Sabemos que existen técnicas más avanzadas que lo que hacen, sobre todo, es aumentar mucho los tiempos de procesado en los ataques por fuerza bruta por ejemplo, pero no queríamos centrarnos mucho en ese tema además de que percibimos un ralentizado a la hora de registrar a un usuario ya que cifrar la contraseña requiere un mayor tiempo de ejecución.
60
+
61
+
62
+
63
+
La técnica que empleamos es se conoce como el cifrado hash con sal o semilla (según su traducción del inglés, hashing with salt). Consiste en añadir un conjunto de caracteres aleatorio y concatenarlo a la contraseña y una vez hecho esto, cifrarlo con la función hash. De esta manera se consigue que la contraseña sea mucho más aleatoria que la que inicialmente ha introducido el usuario. Además de forma transparente para él. Para generar el salt en Java contamos con el paquete <<security>> y la clase <<SecureRandom>> especificando el tamaño del salt.
64
+
65
+
Por otro lado, para hacer la autentificación del usuario se debe almacenar en la base de datos tanto el salt como el hash generado. Cuando el usuario introduce la contraseña para iniciar sesión, internamente se añade el salt a la contraseña introducida, se cifra con el mismo método y se comparan. Si coinciden, accederá a la aplicación, sino, deberá introducir de nuevo los datos necesarios.
0 commit comments