<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>4 bits blog &#187; Seguridad</title>
	<atom:link href="http://blog.4bits.es/category/seguridad/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.4bits.es</link>
	<description>Ahora en 16 colores</description>
	<lastBuildDate>Thu, 05 Aug 2010 13:52:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Cómo proteger las contraseñas de los usuarios</title>
		<link>http://blog.4bits.es/como-proteger-las-contrasenas-de-los-usuarios/</link>
		<comments>http://blog.4bits.es/como-proteger-las-contrasenas-de-los-usuarios/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 18:53:58 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=396</guid>
		<description><![CDATA[Voy a recuperar otro de mis documentos perdidos en Google Docs (el anterior fue el de las autotools), esta vez se trata de un pequeño manual sobre cómo proteger las contraseñas de lo usuarios de cualquier aplicación que se programe, el manual es una traducción al español del artículo How to encrypt user passwords de [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a recuperar otro de mis documentos perdidos en Google Docs (el anterior fue el de <a href="http://blog.4bits.es/autotools/">las autotools</a>), esta vez se trata de un pequeño manual sobre cómo proteger las contraseñas de lo usuarios de cualquier aplicación que se programe, el manual es una traducción al español del artículo <a href="http://www.jasypt.org/howtoencryptuserpasswords.html">How to encrypt user passwords</a> de Daniel Fernandez.</p>
<h3>1. Visión general</h3>
<p><strong>Casi todas las aplicaciones web modernas necesitan</strong>, de un modo u otro, <strong>cifrar las contraseñas de sus usuarios.</strong> Se podría decir que, desde el momento en que la aplicación tiene usuarios, y los usuarios se identifican usando una contraseña, <strong>esas contraseñas se deben guardar usando algún tipo de cifrado.</strong></p>
<p>Hay muchas razones básicas para esto: las bases de datos pueden estar comprometidas, y por tanto también las comunicaciones. Pero la razón más importante es que se tiene que pensar que las contraseñas de los usuarios son datos personales. Sus contraseñas son sus claves para su privacidad, por tanto son personales, y nadie tiene el derecho de conocerlas. Y se debe cumplir esto si se quiere ganar la confianza de los usuarios.</p>
<h3>2. El algoritmo</h3>
<p>Ahora que se quieren cifrar las contraseñas, se debe saber cómo. Aquí entra la primera regla:</p>
<blockquote><p>I. Cifrar las contraseñas usando técnicas de un sentido, es decir, funciones resumen (o <em>hash</em>).</p></blockquote>
<p>Esto se debe a que, excepto para algunos escenarios específicos, no hay ninguna razón para que una contraseña sea descifrada. Si se cifran las contraseñas usando cifrados basados en claves (una técnica de dos sentidos) y un atacante consigue saber la clave de cifrado, se revelarán todas las contraseñas. Si no se tiene una clave para el cifrado, el riesgo desaparece, y el atacante tendrá que confiar en el uso de técnicas de fuerza bruta o similares.</p>
<p>Pero, ¿qué ocurre si un usuario pierde su contraseña? ¿No podrá recuperarla? La respuesta es NO. No sólo no se puede recuperar, si no que ni siquiera existe una manera de leer/conocer/ver las contraseñas de los usuarios, no importa si se es el administrador del sistema. Si un usuario pierde su contraseña, sólo se podrá reiniciarla a un nuevo valor y enviárselo por algún canal seguro al usuario, y pidiéndole que la cambie lo más pronto que pueda.</p>
<p>Ahora que está claro que las funciones resumen son necesarias en las contraseñas, ¿cuál algoritmo se debería usar? Hay bastantes, y dependen de las necesidades de cada uno. Los más usados son:</p>
<ul>
<li>Algoritmo MD5.</li>
<li>Familia SHA: SHA-1 y la variantes de SHA-2 (SHA-224, SHA-256, SHA-384 y SHA-512)</li>
</ul>
<p>En la mayoría de los casos, MD5 o SHA-1 serán elecciones adecuadas para los resúmenes de contraseñas, aunque aplicar estos algoritmos no será suficiente, como se verá a continuación.</p>
<p>Cuando se dice que se deberían usar funciones resumen para los cifrados de las contraseñas, y dado que estas funciones resumen son técnicas de un sentido, la siguiente pregunta es: «Si no se pueden descifrar las contraseñas, ¿cómo se comprueba que un usuario tiene una contraseña correcta?»</p>
<p>Hay una respuesta muy simple a esta cuestión, que será la segunda regla:</p>
<blockquote><p>II. La entrada y las contraseñas guardadas se comparan usando los resultados de las funciones resumen, no usando cadenas sin cifrar.</p></blockquote>
<p>Lo que significa que, una vez los usuarios han introducido sus contraseñas en la identificación, se realizará la función resumen sobre la contraseña introducida con el mismo algoritmo que se ha usado con las contraseñas guardadas, y se compararán ambos resultados. Como estas funciones garantizan que dos entradas iguales obtienen el mismo resultado (lo que no es cierto en el sentido contrario), si los resultados coinciden se considerará que la contraseña introducida por el usuario es correcta.</p>
<h3>3. Mejorando la seguridad de los resúmenes</h3>
<p>Todos los algoritmos de funciones resumen mencionados anteriormente comparten una característica: son públicos. Son algoritmos muy conocidos y ampliamente implementados, por lo que cualquiera puede usarlos.</p>
<p>Si cualquiera puede usar el mismo algoritmo que la aplicación, y por alguna razón los atacantes pueden ver la base de datos de los resúmenes de las contraseñas, ¿cómo se puede estar seguro que los atacantes no serán capaces de conseguir alguna contraseña de los usuarios probando todas las posibilidades hasta que encuentren algún resumen que coincida con uno de los guardados?</p>
<p>La respuesta es que no se puede. Pero se puede hacer que todo eso sea una tarea enorme y con un gran tiempo de realización, de modo que no resulte útil, a menos que puedan esperar toda la eternidad. Para lograr esto, se van a explicar dos conceptos: «salt» y el contador de iteración.</p>
<h4>3.1. «Salt»</h4>
<p>«Salt» es una secuencia de bytes que se añaden a la contraseña antes de conseguir su resumen. Esto hace que estos resúmenes sean diferentes a los que deberían ser usando sólo la contraseña, y como resultado se consigue protección contra los ataques de diccionario. Se pueden seguir dos estrategias para usar «salt»:</p>
<ul>
<li>Usar un «salt» fijo, una secuencia de bytes que se utilizarán para resumir cualquier contraseña. Se puede guardar oculto el «salt» y considerarlo un valor añadido de seguridad, pero esto puede hacer que el sistema se vuelva más vulnerable a ataques de cumpleaños y, en general, a ataques dirigidos contra la base de datos de contraseñas.</li>
<li>Usar un «salt» variable, que normalmente es una opción segura (especialmente si es aleatorio). Este se genera independientemente para cada contraseña a resumir, y permite que cada contraseña guardada esté desacoplada de las demás, creando una gran protección general y un alta seguridad contra ataques dirigidos contra la base de datos de contraseñas.</li>
</ul>
<p>En la práctica, un «salt» aleatorio (o variable) es la mejor idea porque, aunque al generarse aleatoriamente tendrá que guardarse junto al resumen de la contraseña (por lo que cualquiera podrá recuperarlo) y esto hará que sea trivial para un atacante conocerlo, permitirá que cada contraseña de usuario sea independiente del resto, por lo que tendrán que atacarse una por una.</p>
<p>Se tiene que pensar que, si se usa un «salt» fijo y el atacante consigue saberlo, la seguridad de toda la base de datos de contraseñas será nula. Y hay muchos métodos para que el atacante pueda conocer este «salt», como aplicar fuerza bruta en sus contraseñas o en contraseñas que tenga de algún usuario válido. En un escenario de un «salt» fijo, una contraseña débil podría hacer que el sistema de contraseñas fuera débil.</p>
<p>Sin embargo, si se quiere mantener una parte del «salt» en secreto, se puede usar una técnica que mezcle las otras dos, usando un «salt» compuesto de una parte fija y otra aleatoria, guardando los bytes aleatorios junto al resumen de la contraseña.</p>
<p>El tamaño mínimo de un «salt» es de 8 bytes. Si se usa una opción mixta, al menos 8 bytes deberían ser aleatorios.</p>
<p>Así, se puede definir la tercera regla:</p>
<blockquote><p>III. Se debe usar un «salt» que contenga al menos 8 bytes aleatorios, y añadir esos bytes junto al resumen de la contraseña.</p></blockquote>
<h4>3.2. El contador de iteración</h4>
<p>El contador de iteración es el número de veces que la función <em>hash</em> que realiza el resumen se aplica a sus propios resultados.</p>
<p>Esto significa que, una vez se ha seleccionado un «salt» y concatenado con la contraseña, se deberá aplicar la función <em>hash</em> (por ejemplo, MD5), conseguir el resultado, y pasarlo de nuevo como entrada a la misma función, y hacer lo mismo las veces que indique el contador de iteración.</p>
<p>El número mínimo recomendado de iteraciones es 1.000, y esto proporcionará una buena seguridad extra. Hay que pensar que, cuando se crea un único resumen de una contraseña para un nuevo usuario, la diferencia entre aplicar la función <em>hash</em> una vez o 1.000 veces no será un problema, tal vez doscientos milisegundos, pero los atacantes deberán tener que generar una enorme cantidad de intentos de resumen mediante fuerza bruta y, para un atacante, la diferencia entre aplicar la función <em>hash</em> una vez y aplicarla mil veces para cada intento será un gran problema computacional.</p>
<p>Así, se obtiene la cuarta regla:</p>
<blockquote><p>IV. Iterar la función <em>hash</em> al menos 1.000 veces.</p></blockquote>
<h3>4. Secuencia de traducción de caracteres a secuencia de bytes</h3>
<p>Antes de poder guardar correctamente los resúmenes de las contraseñas, hay algo que se debería tener en cuenta, que es la diferencia entre cadenas de caracteres y secuencias de bytes: dos cadenas de caracteres se pueden representar con diferentes secuencias de bytes dependiendo de la codificación empleada (ISO-8859-1, UTF-8, &#8230;)</p>
<p>Esto afecta, ya que las contraseñas suelen ser cadenas de caracteres, pero las funciones <em>hash</em> trabajan a nivel de byte.</p>
<h4>4.1. Problemas codificando la contraseña introducida</h4>
<p>En el supuesto de que un nuevo usuario se identifique con una contraseña que no contiene caracteres ASCII, y que la aplicación de identificación, que se está ejecutándo en Windows 2000 en Europa Occidental, convierta la cadena de caracteres a bytes sin elegir una codificación específica para la operación, e incluso usando la que haya de forma predeterminada, en Windows suele ser ISO-8859-1. De modo que el resumen se realice sobre esa secuencia de bytes y quede almacenado.</p>
<p>Entonces, este usuario vuelve de nuevo y esta vez no visita la aplicación de identificación anterior, en vez de eso usa cualquier otra aplicación con la misma base de datos de contraseñas pero en Linux. El usuario introduce correctamente su contraseña y &#8230; ¡no coincide!</p>
<p>¿Por qué? Porque la mayoría de los sistemas Linux, usan UTF-8 como codificación predeterminada, y las contraseñas que ha introducido el usuario en ambos casos se han codificado en diferentes secuencias de bytes, afectando a la correcta concordancia de las contraseñas.</p>
<p>Cómo se puede resolver esto, pues utilizando una codificación fija para las codificaciones de las cadena de caracteres a secuencia de bytes. Así se enuncia la quinta regla:</p>
<blockquote><p>V. Antes de resumir, realizar una codificación de cadena de caracteres a secuencia de bytes usando una codificación fija, preferiblemente UTF-8.</p></blockquote>
<p>Si se usa Java, donde las cadenas de caracteres (clases <code>String</code>) se codifican independientemente (aunque usan de fondo UTF-16), no habrá que preocuparse de si la aplicación usa ISO-8859-1 o alguna otra codificación en lugar de UTF-8 para su interfaz de usuario, al igual que no será necesario que la codificación para los resúmenes de las contraseñas coincidan con las de la interfaz de usuario. Sólo será necesario que la codificación sea una fija, y UTF-8 proporciona un buen equilibrio entre tamaño y conjunto de caracteres.</p>
<h4>4.2. Problemas codificando en el almacenamiento del resumen</h4>
<p>Normalmente se quiere gestionar y almacenar el resumen de contraseñas como una cadena de caracteres, pero la función <em>hash</em> dará como resultado una secuencia de bytes que no necesariamente representará un carácter válido en alguna codificación. Por esto, la secuencia de bytes del resumen no se puede codificar en una cadena de caracteres, habiendo peligro de pérdidas de datos si se realizase.</p>
<p>Aquí es donde entra al rescate la codificación BASE64. Codificando la secuencia de bytes del resumen en BASE64, se asegura que la secuencia de bytes de salida representa una cadena de caracteres US-ASCII válida. Por lo que se podrá codificar una secuencia de bytes en BASE64 en una cadena de caracteres US-ASCII.</p>
<blockquote><p>VI. Finalmente, se debe aplicar la codificación BASE64 y guardar el resumen como una cadena de caracteres US-ASCII.</p></blockquote>
<h3>5. Resumen de las reglas para el cifrado de contraseñas</h3>
<p>La lista completa de reglas a aplicar:</p>
<ol>
<li>Cifrar las contraseñas usando técnicas de un sentido, es decir, funciones resumen (o <em>hash</em>).</li>
<li>La entrada y las contraseñas guardadas se comparan usando los resultados de las funciones resumen, no usando cadenas sin cifrar.</li>
<li>Se debe usar un «salt» que contenga al menos 8 bytes aleatorios, y añadir esos bytes junto al resumen de la contraseña.</li>
<li>Iterar la función <em>hash</em> al menos 1.000 veces.</li>
<li>Antes de resumir, realizar una codificación de cadena de caracteres a secuencia de bytes usando una codificación fija, preferiblemente UTF-8.</li>
<li>Finalmente, se debe aplicar la codificación BASE64 y guardar el resumen como una cadena de caracteres US-ASCII.</li>
</ol>
<h3>6. Realizándolo en Java</h3>
<p>La forma más sencilla de <a href="http://www.jasypt.org/encrypting-passwords.html">cifrar contraseñas en Java</a>, mediante las técnicas explicadas es usar Jasypt.</p>
<p>Si no se puede usar jasypt, o si por alguna razón se quiere desarrollar alguna característica de cifrado propia, se necesitarán:</p>
<ul>
<li>La clase <code>java.security.MessageDigest</code> para crear resúmenes. Esta clase permite especificar el algoritmo que se va a usar.</li>
<li>La clase <code>java.security.SecureRandom</code> para generar «salt» aleatorios de una manera segura, usando algoritmos como <code>SHA1PRNG</code>.</li>
<li>El método <code>java.lang.String.getBytes (String charsetName)</code>, para obtener una secuencia de bytes desde una cadena de caracteres, especificando una codificación fija (UTF-8).</li>
<li>La clase <code>org.apache.commons.codec.binary.Base64</code>, parte de la biblioteca Apache Commons-Codec, para realizar codificaciones BASE64 en la salida de la función <em>hash</em>.</li>
</ul>
<p>También, se puede utilizar el código fuente para las clases <code>org.jasypt.digest.StandardByteDigester</code> y <code>org.jasypt.digest.StandardStringDigester</code>, disponible en <a href="http://www.jasypt.org/source-repository.html">el repositorio de jasypt</a>.</p>
<h3>7. Defensa frente a los típicos ataques</h3>
<h4>7.1. Ataques de fuerza bruta</h4>
<p>Realizado sobre: Una única contraseña.</p>
<p>Descripción: El atacante intenta conseguir la contraseña del usuario generando todas las contraseñas posibles, resumiéndolas y probando si coinciden con el resumen de la contraseña del usuario.</p>
<p>Defensa: La iteración de la función <em>hash</em> un número de veces, como 1.000 (mínimo recomendado), el coste de la creación del resumen de la contraseña en el tiempo de identificación del usuario no es significante, pero el coste de un ataque de fuerza bruta por parte de un atacante que genera millones de resúmenes será muy grande. Hay que recordar que una de las mejores maneras de proteger los datos cifrados es haciendo que el coste de romper la seguridad sea más alto de lo que cuesta el esfuerzo.</p>
<h4>7.2. Ataques de diccionario</h4>
<p>Realizado sobre: Cada contraseña o una base de datos de contraseñas</p>
<p>Descripción: El atacante intenta conseguir la contraseña de un usuario comparando sus resúmenes contra un conjunto de resúmenes de contraseñas más probables, normalmente se generan desde una lista de palabras de un diccionario. Este ataque explota una debilidad actual de las aplicaciones, ya que muchos usuarios usan palabras del diccionario como contraseña.</p>
<p>Defensa: Añadiendo un «salt» aleatorio, la debilidad de las contraseñas basadas en diccionario se reduce, y la posibilidad de de que el resumen aparezca en un conjunto de resúmenes previamente creados por el atacante es mínima.</p>
<h4>7.3. Ataques de cumpleaños</h4>
<p>Realizado sobre: La base de datos de las contraseñas.</p>
<p>Descripción: Este ataque explota la paradoja del cumpleaños, la cual en resumen consiste en, teniendo un gran conjunto de resúmenes de contraseñas, las posibilidades de generar una contraseña cuyo resumen coincida con al menos uno de los resúmenes en el conjunto es mucho más alto que lo esperado. Y estas posibilidades aumentan bastante cuando el tamaño del conjunto (el número de usuarios) aumenta.</p>
<p>Defensa: Añadiendo un «salt» aleatorio las posibilidades de que un ataque de cumpleaños tenga éxito son mínimas, porque el atacante tendría que atacar cada contraseña por separado, y no el conjunto de contraseñas, para encontrar una coincidencia. Esto es porque se tendría que encontrar una contraseña que crease el mismo resumen que el del atacante usando el mismo «salt» que se usó para el resumen, y que es diferente para cada contraseña haciendo que el ataque pase a ser de fuerza bruta.</p>
<p>Espero que este pequeño manual os sea de utilidad, a mí me sirvió para mi <abbr title="Proyecto Fin de Carrera">PFC</abbr>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/como-proteger-las-contrasenas-de-los-usuarios/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Taxis con internet</title>
		<link>http://blog.4bits.es/taxis-con-internet/</link>
		<comments>http://blog.4bits.es/taxis-con-internet/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 08:34:25 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=281</guid>
		<description><![CDATA[Ayer veía en las noticias de la televisión del metro que unos cuantos taxis habían incorporado un servicio nuevo, que consistía en tener un llamado ultraportátil con conexión a internet vía modem 3G, de modo que el cliente pudiese acceder a internet mientras viaja en el taxi. Todo esto no deja de ser curioso, porque [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer veía en las noticias de la televisión del metro que <strong>unos cuantos taxis habían incorporado un servicio nuevo, que consistía en tener un llamado ultraportátil con conexión a internet vía modem 3G,</strong> de modo que el cliente pudiese acceder a internet mientras viaja en el taxi.</p>
<p>Todo esto no deja de ser curioso, porque <strong>hace unos días salía la noticia de que <a href="http://barrapunto.com/articles/09/08/25/0848224.shtml">la CMT prohibía dar acceso WiFi gratis al ayuntamiento de Madrid en los autobuses</a>,</strong> ya que no era su servicio principal, así que para ofrecer dicho servicio debería cobrar una tasa extra.</p>
<p>No me entere bien de la noticia de los taxis, pero me pareció ver que dicha conexión a internet era un servicio gratuito, por lo que todo esto me parece un poco contradictorio.</p>
<p>Además, <strong>me pregunto qué nivel de seguridad proporcionarán en dichos ultraportátiles,</strong> es decir, el taxista me puede asegurar que dicho portátil no tiene virus, que los datos (cookies, archivos temporales, &#8230;) que maneje serán borrados antes de que otro cliente lo use, que el disco está cifrado por si alguien lo roba no poder acceder a los datos, &#8230; No sé, pero recomendaría no usar dichos ordenadores para tareas que contengan datos personales.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/taxis-con-internet/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cifrar una memoria USB</title>
		<link>http://blog.4bits.es/cifrar-una-memoria-usb/</link>
		<comments>http://blog.4bits.es/cifrar-una-memoria-usb/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 17:59:28 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=255</guid>
		<description><![CDATA[Hace poco se me ocurrió una forma de aprovechar una memoria USB (o pendrive) antigua (de 256MB) que tenía por ahí. Simplemente, utilizarla para guardar, todo cifrado, un archivo con un listado de contraseñas, documentos personales, claves GPG y/o SSH, &#8230; Así que estuve buscando diferentes opciones, siendo importante que funcionase en Linux y en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco se me ocurrió <strong>una forma de aprovechar una memoria USB</strong> (o <em>pendrive</em>) antigua (de 256MB) que tenía por ahí. Simplemente, <strong>utilizarla para guardar, todo cifrado, un archivo con un listado de contraseñas, documentos personales, claves GPG y/o SSH, &#8230;</strong></p>
<p>Así que estuve buscando diferentes opciones, siendo importante que funcionase en Linux y en Windows (por si las moscas). <strong>Al final había dos opciones Truecrypt (el archiconocido) y dm-crypt (un gestor de dispositivos cifrados de Linux)</strong>, me decanté por dm-crypt porque Truecrypt, curiosamente, no está en los repositorios de Debian y porque con dm-crypt no necesitaría de un programa a parte para utilizar mi dispositivo en Linux (aunque sí, en Windows).</p>
<h3>Pasos a seguir</h3>
<p>Directo al grano, estos son los pasos que realicé:</p>
<ol>
<li>Paquetes necesarios:
<pre># apt-get install cryptsetup hashalot dmsetup</pre>
</li>
<li>Rellenar la memoria con datos aleatorios (no es necesario, aunque sí recomendable):
<pre># dd if=/dev/urandom of=/dev/sdX</pre>
</li>
<li>Cargar los siguientes módulos si no lo están ya:
<pre># modprobe aes
# modprobe dm_crypt
# modprobe dm_mod
# modprobe sha256</pre>
</li>
<li>Crear el contenedor cifrado (pedirá la contraseña para poder luego descifrarlo):
<pre># cryptsetup -v --key-size 256 luksFormat /dev/sdX NOMBRE-CONTENEDOR</pre>
</li>
<li>Formatear el contenedor (yo utilicé FAT para que funcione en Windows) para ello primero hay que montar el contenedor utilizando <code>cryptsetup</code>:
<pre># cryptsetup -v luksOpen /dev/sdX NOMBRE-CONTENEDOR
# mkfs.vfat /dev/mapper/NOMBRE-CONTENEDOR</pre>
</li>
<li>Y ya está, ya se puede montar:
<pre># mount -t vfat /dev/mapper/NOMBRE-CONTENEDOR /mnt/usb_cifrado</pre>
</li>
</ol>
<h3>Uso</h3>
<p>Lo bueno de este método es que al enchufar la memoria en Linux, éste pedirá la contraseña y se montará automáticamente, aunque en la versión de GNOME que uso no lo monta. Así que, por si las moscas, siempre lo puedes montar ejecutando:</p>
<pre>$ pmount-hal /dev/sdX</pre>
<p>Y desmontar ejecutando:</p>
<pre>$ pumount /dev/sdX</pre>
<p>Para poder utilizar el dispositivo cifrado en Windows se necesita un programa llamado <a href="http://www.freeotfe.org/">FreeOTFE</a> que es compatible con este tipo de cifrado.</p>
<p>Basado en <a href="http://homer.shacknet.nu/docs/Cifrado.txt">Manual de Cifrado de una particion concreta desde Linux Debian/Ubuntu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/cifrar-una-memoria-usb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress y su inseguro proceso de identificación</title>
		<link>http://blog.4bits.es/wordpress-y-su-inseguro-proceso-de-identificacion/</link>
		<comments>http://blog.4bits.es/wordpress-y-su-inseguro-proceso-de-identificacion/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 13:09:41 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=167</guid>
		<description><![CDATA[Hoy he visto como a un blogger (aloisius, no pongo el enlace para no darle publicidad al tonto ese que te ha jodido el blog) al que suelo seguir le han conseguido robar su contraseña de Wodpress. Parece ser que todo era una broma, aunque lo que cuento de WordPress no es broma. Y es [...]]]></description>
			<content:encoded><![CDATA[<p><del datetime="2009-03-12T10:38:36+00:00">Hoy he visto como a un blogger <em>(aloisius, no pongo el enlace para no darle publicidad al tonto ese que te ha jodido el blog)</em> al que suelo seguir le han conseguido robar su contraseña de Wodpress.</del> Parece ser que todo era una broma, aunque lo que cuento de WordPress no es broma.</p>
<p>Y es que WordPress adolece de las siguientes debilidades:</p>
<ol>
<li><strong>Proporcionar demasiada información al fallar la identificación:</strong> Siempre se ha aconsejado que cuando una identificación falle, el mensaje de error sea ambiguo y nunca menciones que parte ha fallado (usuario o contraseña), en WordPress en cambio te dice claramente que parte ha fallado, gracias a esto se podría conseguir una lista de los usuarios registrados en el blog.</li>
<li><strong>Número máximo de intentos de identificación:</strong> Para que la gente no te pueda realizar un ataque de fuerza bruta se suele limitar el número de intentos, o incluso poner un retardo cada vez mayor entre intentos. WordPress no hace ni lo uno ni lo otro.</li>
</ol>
<p>Gracias a estos dos puntos, se puede conseguir realizar un ataque de fuerza bruta contra WordPress, ya que se pueden conseguir los usuarios (amén de que siempre existe uno llamado <em>admin</em>) para acto seguido atacar a cada uno de ellos con un script (<a href="http://weblogs.inf.udp.cl/nboettcher/05/12/2008/ataque-por-fuerza-bruta-a-wordpress-probado-con-version-2x-26x-y-27-rc1/">los hay en abundancia</a>) que se dedique a probar contraseñas, mientras nosotros esperamos (el tiempo que estaremos esperando dependerá de la complejidad de la contraseña) a que acierte.</p>
<p><strong>Actualización:</strong> Para solventar el problema de los intentos (a mí juicio el más grave) he encontrado el complemento <a href="http://wordpress.org/extend/plugins/login-lockdown/">Login LockDown</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/wordpress-y-su-inseguro-proceso-de-identificacion/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Security blogger summit 2009</title>
		<link>http://blog.4bits.es/security-blogger-summit-2009/</link>
		<comments>http://blog.4bits.es/security-blogger-summit-2009/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 15:50:54 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=150</guid>
		<description><![CDATA[Ayer estuve en el security blogger summit 2009 que organizó Panda Security, obviamente fui como espectador. Hay que decir que el evento fue magnífico, estuvo muy bien organizado y encima vinieron unos ponentes de relumbrón, aunque la estrella era Bruce Schneier. La mesa redonda estuvo muy entretenida, hablaron sobre cómo mejorar la situación actual de [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer estuve en el <a href="http://www.securitybloggersummit.com/">security blogger summit 2009</a> que organizó Panda Security, obviamente fui como espectador.</p>
<p>Hay que decir que el evento fue magnífico, estuvo muy bien organizado y encima vinieron <a href="http://www.securitybloggersummit.com/?page_id=42">unos ponentes de relumbrón</a>, aunque la estrella era <a href="http://www.schneier.com/blog/">Bruce Schneier</a>.</p>
<p>La mesa redonda estuvo muy entretenida, <strong>hablaron sobre cómo mejorar la situación actual de la seguridad</strong>, centrándose casi siempre en si se debería enfocar desde la educación a la gente o que fuese la tecnológica la que mejorase en este apartado.</p>
<p>Yo me quedaría con la explicación que realizó un miembro del grupo de delitos telemáticos de la guardia civil, sobre todos los pasos que tienen que dar hasta atrapar al <em>tipo malo</em> y como se hace casi imposible cuando las herramientas que usan (por ejemplo: una <em>botnet</em>) están en fuera de España.</p>
<p>Al final de todo había un <em>cocktail</em> dónde la gente se relacionaba, yo sólo conocía a mis compañeros de trabajo y a <a href="http://blog.victorpimentel.com/">Victor Pimentel</a> al que saludé, aunque por la cara que puso creo que tardó en reconocerme.</p>
<p>Por supuesto, repetiré en la próxima edición.</p>
<p>[+] <a href="http://www.securitybydefault.com/2009/02/1st-security-blogger-summit.html">Resumen del security blogger summit en security by default</a><br />
[+] <a href="http://www.error500.net/articulo/cibercrimen-seguridad">Resumen del security blogger summit en error500</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/security-blogger-summit-2009/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Demasiados clicks</title>
		<link>http://blog.4bits.es/demasiados-clicks/</link>
		<comments>http://blog.4bits.es/demasiados-clicks/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 16:39:25 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Usabilidad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=81</guid>
		<description><![CDATA[¿Qué ocurre en Firefox 3 cuando un certificado no concuerda con la URL de la web? Pues esto: Muchos clicks para mi gusto, si queréis un ejemplo visitad Google Reader con dominio es.]]></description>
			<content:encoded><![CDATA[<p>¿Qué ocurre en Firefox 3 cuando un certificado no concuerda con la URL de la web? Pues esto:</p>
<p><a href="http://blog.4bits.es/wp-content/uploads/2009/09/cert_01.png"><img src="http://blog.4bits.es/wp-content/uploads/2009/09/cert_01-300x228.png" alt="Certificados Firefox 3 (1)" title="Certificados Firefox 3 (1)" width="300" height="228" class="aligncenter size-medium wp-image-298" /></a></p>
<p><a href="http://blog.4bits.es/wp-content/uploads/2009/09/cert_02.png"><img src="http://blog.4bits.es/wp-content/uploads/2009/09/cert_02-300x228.png" alt="Certificados Firefox 3 (2)" title="Certificados Firefox 3 (2)" width="300" height="228" class="aligncenter size-medium wp-image-299" /></a></p>
<p><a href="http://blog.4bits.es/wp-content/uploads/2008/09/cert_03.png"><img src="http://blog.4bits.es/wp-content/uploads/2008/09/cert_03-300x298.png" alt="Certificados Firefox 3 (3)" title="Certificados Firefox 3 (3)" width="300" height="298" class="aligncenter size-medium wp-image-84" /></a></p>
<p><a href="http://blog.4bits.es/wp-content/uploads/2008/09/cert_04.png"><img src="http://blog.4bits.es/wp-content/uploads/2008/09/cert_04-300x298.png" alt="Certificados Firefox 3 (4)" title="Certificados Firefox 3 (4)" width="300" height="298" class="aligncenter size-medium wp-image-85" /></a></p>
<p>Muchos clicks para mi gusto, si queréis un ejemplo visitad <a href="http://www.google.es/reader">Google Reader con dominio es</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/demasiados-clicks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Generador de contraseñas</title>
		<link>http://blog.4bits.es/generador-de-contrasenas/</link>
		<comments>http://blog.4bits.es/generador-de-contrasenas/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 18:37:58 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/?p=72</guid>
		<description><![CDATA[Llevo ya tiempo pensando en cambiar mis contraseñas, tengo unas cuantas para diferentes cosas (como debe ser), pero se me están quedando cortas y ya uso la misma para algunas cosas (como no debe ser), así que quiero renovarlas. Por este motivo, se me ocurrió hacer un pequeño programa (en C) que genera contraseñas aleatorias [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo ya tiempo pensando en cambiar mis contraseñas, tengo unas cuantas para diferentes cosas (como debe ser), pero se me están quedando cortas y ya uso la misma para algunas cosas (como no debe ser), así que quiero renovarlas.</p>
<p>Por este motivo, se me ocurrió hacer <strong>un pequeño programa (en C) que genera contraseñas aleatorias (llamado passwdgen)</strong>, con una serie de opciones:</p>
<ul>
<li>En base al conjunto alfanumérico (alfabeto en mayúsculas, minúsculas y/o números).</li>
<li>Longitud mínima y/o máxima personalizable, si se le da una mínima y otra máxima se escogerá una longitud aleatoria entre los valores dados. (La longitud predeterminada es de ocho caracteres)</li>
</ul>
<p>De este modo, <strong>se genera aleatoriamente una cadena de caracteres en base al conjunto de caracteres y la longitud que queramos.</strong> Lo he subido a Google Code para que todos podáis hacer uso de él y/o si queréis trastear con <a href="http://code.google.com/p/passwdgen/source/browse/#svn/trunk">el código</a>, está licenciado bajo GPL 2.</p>
<p>Si estáis interesados, visitad la <a href="http://code.google.com/p/passwdgen/">web de passwdgen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/generador-de-contrasenas/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Nombres SQL</title>
		<link>http://blog.4bits.es/nombres-sql/</link>
		<comments>http://blog.4bits.es/nombres-sql/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 17:00:42 +0000</pubDate>
		<dc:creator>Fran</dc:creator>
				<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://blog.4bits.es/nombres-sql/</guid>
		<description><![CDATA[En este mundo que está tan de moda poner nombres un tanto raritos a los niños, pueden surgir problemas como este: PD: Seguramente ya lo hayáis visto en muchos otros sitios, pero es que la tira es genial.]]></description>
			<content:encoded><![CDATA[<p>En este mundo que está tan de moda poner nombres un tanto raritos a los niños, pueden surgir problemas como este:</p>
<p><a href="http://xkcd.com/327/"><img src="http://imgs.xkcd.com/comics/exploits_of_a_mom.png" width="570" alt="Tira xkcd" /></a></p>
<p>PD: Seguramente ya lo hayáis visto en muchos otros sitios, pero es que la tira es genial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.4bits.es/nombres-sql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
