<?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>AmarellOcio &#187; Damián</title>
	<atom:link href="http://blog.amarello.com.mx/author/elessar/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.amarello.com.mx</link>
	<description>Tecnologías de información, seguridad, ciencia y entretenimiento</description>
	<lastBuildDate>Mon, 23 Apr 2012 16:00:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sesión SSH duradera</title>
		<link>http://blog.amarello.com.mx/2012/04/23/sesion-ssh-duradera/</link>
		<comments>http://blog.amarello.com.mx/2012/04/23/sesion-ssh-duradera/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 15:58:48 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Algoritmia y programación]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.amarello.com.mx/?p=977</guid>
		<description><![CDATA[Las conexiones SSH, así como las HTTP y de otros servicios, tienen por defecto una política de timeout que cierra la conexión si no hay actividad, por seguridad y por eficiencia para liberar los recursos no usados. En muchas ocasiones, como cuando se hacen túneles SSH, es más cómodo mantener una conexión abierta que no [...]]]></description>
			<content:encoded><![CDATA[<p>Las conexiones SSH, así como las HTTP y de otros servicios, tienen por defecto una política de timeout que cierra la conexión si no hay actividad, por seguridad y por eficiencia para liberar los recursos no usados.</p>
<p>En muchas ocasiones, como cuando se hacen túneles SSH, es más cómodo mantener una conexión abierta que no se cierre por timeout. Una manera de hacerlo es mediante las políticas del servidor SSH, pero otra manera más sencilla es hacerlo por cada conexión desde el cliente.</p>
<p>Comúnmente en los clientes SSH en Unix están las opciones TCPKeepAlive y ServerAliveInterval. La primera indica que se quiere mandar un paquete SSL por TCP hacia el servidor para mantener la actividad y la otra indica el intervalo en segundos en el cual se van a mandar los paquetes. Un ejemplo de uso sería el siguiente:</p>
<pre>
<code>ssh -o TCPKeepAlive=yes -o ServerAliveInterval=5 usuario@servidor</code>
</pre>
<p>Así ya podrán mantener sus sesiones de SSH abiertas todo el tiempo que quieran y no olviden cerrarlas cuando las dejen de usar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2012/04/23/sesion-ssh-duradera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mejores prácticas para Time Machine</title>
		<link>http://blog.amarello.com.mx/2012/02/25/mejores-practicas-para-time-machine/</link>
		<comments>http://blog.amarello.com.mx/2012/02/25/mejores-practicas-para-time-machine/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 20:02:10 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.amarello.com.mx/?p=956</guid>
		<description><![CDATA[A estas alturas del partido, dado el uso extendido de las computadoras en todos los ámbitos, es ya imprescindible mantener respaldos de todo el trabajo realizado para no pasar un mal rato cuando el disco duro falle, y lo peor de todo es que la vida útil de un disco duro es menor que cualquier [...]]]></description>
			<content:encoded><![CDATA[<p>A estas alturas del partido, dado el uso extendido de las computadoras en todos los ámbitos, es ya imprescindible mantener respaldos de todo el trabajo realizado para no pasar un mal rato cuando el disco duro falle, y lo peor de todo es que <strong>la vida útil de un disco duro es menor que cualquier otro componente de una computadora (salvo la batería quizá)</strong>.</p>
<p>Hace poco tuve un accidente con mi MacBook Pro y el disco fue lo único que se dañó, porque también es el componente más sensible a una caída (ya ni la pantalla) y no se volvió inservible, pero se dañó lo suficiente para que no todos los archivos fueran recuperables, por lo que perdí casi toda mi música y algunas otras cosas. Lo único bueno es que generalmente mis proyectos de software están en un SVN por lo que no perdí información trascendental y valiosa. Pero para cualquier desarrollador es muy engorroso y lento instalar de nuevo todo el software que utilizas de diario, por lo que me arrepiento tanto de no haber tenido un Time Machine.</p>
<p>Antes de hacer mi copia me estuve informando y estuve pensando seriamente cómo debía hacer este proceso, por lo que aquí les dejo unas recomendaciones:</p>
<ol>
<li>Compra un buen disco duro externo, con capacidad de al menos el doble de capacidad de tu disco duro actual</li>
<li>La versión inicial de Time Machine es muy importante, porque de ahí se derivará todo un árbol a futuro de los cambios que se vayan haciendo a tus archivos</li>
<li>Baja una herramienta como GrandPerspective o DaisyDisk para observar cómo está distribuido el espacio en tu disco actual.</li>
<li>Organiza tus archivos, haz un directorio llamado &#8220;NoBK&#8221; en donde vayan archivos grandes o cosas que ocupen mucho espacio y que si el día de mañana no estuvieran no tendría importancia.</li>
<li>Algunos discos duros externos vienen con algún formato o traen herramientas para formartearlos. Lo mejor será abrir la Utilidad de Discos, borrar todo el disco y formatearlo en Mac OS Plus</li>
<li>Antes de hacer la primer copia de seguridad, configura tu Time Machine y excluye tu carpeta &#8220;NoBK&#8221; y la de &#8220;Descargas&#8221;. Algunos recomiendan otras de sistema pero es un error si quieres poder recuperar tu instalación actual en caso de un percance</li>
<li>Haz tu copia de seguridad inicial y procura diario hacer una al menos por las noches</li>
</ol>
<p>Time Machine no sólo sirve para hacer copias de seguridad en caso de daño a tu disco o robo, también si quieres jubilar tu actual Mac a una más nueva puedes usar la copia de Time Machine para restaurar tu instalación en otro equipo.</p>
<p>Otra reflexión interesante cuando ocurrió el percance, es que mis datos más importantes nunca estuvieron en peligro, porque actualmente todo está en la nube, el correo, documentos, calendarios y código fuente en svn. </p>
<p>Si en lugar de usar Time Machine quieres algo más ubiquo y en la nube puedes probrar CrashPlan, es un servicio que te permite hacer respaldos en la nube, pero debes tener una muy buena conexión para que sea útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2012/02/25/mejores-practicas-para-time-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inseguridad Telmex</title>
		<link>http://blog.amarello.com.mx/2012/02/20/inseguridad-telmex/</link>
		<comments>http://blog.amarello.com.mx/2012/02/20/inseguridad-telmex/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:15:02 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Redes]]></category>
		<category><![CDATA[Seguridad en Información]]></category>

		<guid isPermaLink="false">http://blog.amarello.com.mx/?p=952</guid>
		<description><![CDATA[Estaba yo navegando por la página de El Universal, cuando veo un anuncio enorme en donde Telmex ofrece servicios de seguridad perimetral en redes. Sé que muchos ya estarán riéndose de esto, pero algunos pensarán que como es una empresa grande (que gana mucho dinero) alguna calidad deben tener sus servicios y algún otro tal [...]]]></description>
			<content:encoded><![CDATA[<p>Estaba yo navegando por la página de El Universal, cuando veo un anuncio enorme en donde Telmex ofrece servicios de <a rel="nofollow" href="http://www.telmex.com/mx/empresa/seguridad/seguridad-perimetral.html">seguridad perimetral en redes</a>. Sé que muchos ya estarán riéndose de esto, pero algunos pensarán que como es una empresa grande (que gana mucho dinero) alguna calidad deben tener sus servicios y algún otro tal vez hasta piense contratar esto para su empresa ¡cuidado!</p>
<p>Es bien sabido que Telmex es la principal empresa proveedora de enlaces a internet en este país y en el mundo de la seguridad (sobre todo para los amantes de aircrack) es además bien sabido que son la principal empresa que instala sus modems preconfigurados con la insegura y obsoleta tecnología WEP para proteger el acceso a las redes inalámbricas de cada punto de acceso. Para decirlo pronto y claro, <strong>cualquier persona con un pequeño entrenamiento puede colarse a la red inalámbrica de tu casa si es que tienes Infinitum.</strong></p>
<p>Con esta información, da mucha risa que ofrezcan estos servicios de &#8220;seguridad&#8221; cuando sería trivial colarse a la red local de una empresa que tenga contratado un Infinitum, por más firewall, VPN e IPS que tengan configurado. Una vez dentro de la red local &#8220;de ahí pal real&#8221; con todas las máquinas Windows que tengan, recursos compartidos en red, conversaciones en MSN, passwords que viajen en texto plano (sin https), etc.</p>
<p>Al final es triste recordar la incultura en seguridad que se tiene en el mundo empresarial, las pésimas políticas que se adoptan y los engaños de marketing que les cuelan. Lo peor es que no se limita a México, sino en todo el mundo es lo mismo.</p>
<p>Si quieren verdadera seguridad para sus servicios, ahí les dejo <a href="http://www.amarello.com.mx/servicios/consultoria-seguridad">nuestro enlace</a>.</p>
<p>P.D. Dado que no quiero darle referencias de este blog a esa abominación de empresa llamada Telmex usé la etiqueta rel=&#8221;nofollow&#8221; para el enlace.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2012/02/20/inseguridad-telmex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cómo se realizará el rescate de los mineros?</title>
		<link>http://blog.amarello.com.mx/2010/08/30/%c2%bfcomo-se-realizara-el-rescate-de-los-mineros/</link>
		<comments>http://blog.amarello.com.mx/2010/08/30/%c2%bfcomo-se-realizara-el-rescate-de-los-mineros/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 19:14:03 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=931</guid>
		<description><![CDATA[Es muy sonado el reciente caso de los mineros que quedaron atrapados en Chile. Pero ¿sabemos cómo se hace un rescate de este tipo? ¿cuánto esfuerzo requiere? En la siguiente animación se pueden seguir las proyección de los pasos a seguir para lograr el rescate: Rescate de los mineros chilenos atrapados bajo tierra]]></description>
			<content:encoded><![CDATA[<p>Es muy sonado el reciente caso de los mineros que quedaron atrapados en Chile. Pero ¿sabemos cómo se hace un rescate de este tipo? ¿cuánto esfuerzo requiere?</p>
<p>En la siguiente animación se pueden seguir las proyección de los pasos a seguir para lograr el rescate:</p>
<p><a href="http://www.elmundo.es/elmundo/2010/graficos/ago/s3/mineros.html">Rescate de los mineros chilenos atrapados bajo tierra</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2010/08/30/%c2%bfcomo-se-realizara-el-rescate-de-los-mineros/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vulnerabilidad LNK</title>
		<link>http://blog.amarello.com.mx/2010/07/22/vulnerabilidad-lnk/</link>
		<comments>http://blog.amarello.com.mx/2010/07/22/vulnerabilidad-lnk/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 15:39:38 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Seguridad en Información]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=924</guid>
		<description><![CDATA[El 17 de junio de 2010 se descubrió una vunerabilidad 0-day que afecta a todas las versiones de Windows. Lo terrible del asunto es que se descubrió después de que ya estaba siendo explotada por un troyano cuyo fin era el espionaje industrial. La noticia saltó a los medios especializados el 16 de julio. Los [...]]]></description>
			<content:encoded><![CDATA[<p>El 17 de junio de 2010 se descubrió una vunerabilidad 0-day que afecta a todas las versiones de Windows. Lo terrible del asunto es que se descubrió después de que ya estaba siendo explotada por un troyano cuyo fin era el espionaje industrial.</p>
<p>La noticia saltó a los medios especializados el 16 de julio. Los primeros detalles indicaban que la vulnerabilidad permitía a un atacante ejecutar automáticamente código al insertar un medio extraíble en el sistema. La crónica y más detalles se puede encontrar aquí:</p>
<p><a href="http://www.hispasec.com/unaaldia/4283/interesante-peligroso-troyano-que-aprovecha-interesant">Interesante (y peligroso) troyano que aprovecha un interesante (y peligroso) 0 day en Microsoft Windows</a></p>
<p>Ahora el código es <a href="http://www.hispasec.com/unaaldia/4285/hace-publico-exploit-ultima-grave-vulnerabili">público</a> y ni lentos ni perezosos ya lo incluyeron en la <a href="http://www.kungfoosion.com/2010/07/explotando-lnk-con-metasploit.html">archiconocida suite MetaSploit</a>. Aunque ya es posible <a href="http://www.securitybydefault.com/2010/07/solucion-la-vulnerabilidad-lnk-de.html">mitigarlo</a> mediante una Directiva de Seguridad Local, Microsoft no ha publicado aún ningún parche.</p>
<p>Gracias a <a href="http://elladodelmal.blogspot.com/2010/07/el-post-del-lnk-porque-tu-lo-has-pedido.html">Un informático en el lado del mal</a> por la recopilación de fuentes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2010/07/22/vulnerabilidad-lnk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autenticación segura sin SSL/TLS</title>
		<link>http://blog.amarello.com.mx/2010/06/12/autenticacion-segura-sin-ssl-tls/</link>
		<comments>http://blog.amarello.com.mx/2010/06/12/autenticacion-segura-sin-ssl-tls/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 23:34:51 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Algoritmia y programación]]></category>
		<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Seguridad en Información]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=867</guid>
		<description><![CDATA[Muchas veces no es necesario o es demasiado cifrar toda la comunicación entre el cliente y el servidor, por razones de performance o por el sobrecosto de implementar un esquema de PKI (Public Key Infraestructure) para usar SSL/TLS. Pero siempre hay algo que es necesario proteger por seguridad: las credenciales de autenticación del usuario. Por [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces no es necesario o es demasiado cifrar toda la comunicación entre el cliente y el servidor, por razones de performance o por el sobrecosto de implementar un esquema de PKI (Public Key Infraestructure) para usar SSL/TLS. Pero siempre hay algo que es necesario proteger por seguridad: las credenciales de autenticación del usuario. Por lo que en este post explicaré cómo se puede hacer una autenticación sin enviar esa información (no, no es telepatía).</p>
<p><strong>Protocolos de conocimiento cero (ZKP)</strong></p>
<p>Sabemos que sin un esquema de cifrado de llave pública es trivial para un atacante interceptar la información que se envía entre el cliente y el servidor, pero el sistema debe tener alguna manera de autenticar a los usuarios del sistema. Necesitamos enviar algo que si un atacante intercepta no pueda utilizar para autenticarse. Esto se conoce como un <em>protocolo de conocimiento cero</em> (<a href="http://en.wikipedia.org/wiki/Zero-knowledge_proof">Zero-knowledge proof</a>), y en palabras coloquiales significa: &#8220;probar que poseemos cierta información sin revelar esa información&#8221;.</p>
<p>Como comúnmente la única información que queremos &#8220;probar que poseemos pero no queremos revelar&#8221; es la contraseña, voy a explicar el esquema que usa MySQL para implementar su autenticación de usuarios. Los detalles no están explicados de manera formal en la documentación de MySQL pero alguien se tomó el tiempo de leer el código fuente y explicar cómo funciona (<a href="http://blog.vorant.com/2006/03/mysql-41x-authentication-internals.html">MySQL 4.1.x authentication internals</a>).</p>
<p><strong>¿Cómo se almacenan las contraseñas?</strong></p>
<p>Lo primero que hay que tener en cuenta es que, siguiendo los principios básicos de almacenamiento seguro de contraseñas, éstas se almacenan en el sistema sólo como un <em>hash criptográfico</em>. Que tiene la propiedad de ser <strong>prácticamente irreversible</strong> y <strong>prácticamente único</strong>. Por lo que esta es la primera parte del ZKP, ya que sólo quien conozca la contraseña podrá generar el <em>hash criptográfico</em> que le pertenece.</p>
<p>Desde MySQL 4.1 las contraseñas de usuario están almacenadas en la tabla &#8220;mysql.user&#8221; en la columna &#8220;Password&#8221; de la siguiente manera: <img src='http://s.wordpress.com/latex.php?latex=SHA1%28SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1(SHA1(password))' title='SHA1(SHA1(password))' class='latex' />. Donde <img src='http://s.wordpress.com/latex.php?latex=SHA1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1' title='SHA1' class='latex' /> es el <em>hash criptográfico</em> <a href="http://en.wikipedia.org/wiki/SHA-1">SHA-1</a>.</p>
<p><strong>La transmisión</strong></p>
<p>Si cada vez que el cliente se quiera autenticar sólo transmitiera <img src='http://s.wordpress.com/latex.php?latex=SHA1%28SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1(SHA1(password))' title='SHA1(SHA1(password))' class='latex' />, cumpliría con el principio de no revelar la contraseña, pero un atacante podría capturar y enviar después <img src='http://s.wordpress.com/latex.php?latex=SHA1%28SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1(SHA1(password))' title='SHA1(SHA1(password))' class='latex' /> para  autenticarse exitosamente aún sin conocer la contraseña. Por lo que necesitamos agregar más cosas al protocolo para que la información que transmite el cliente sólo sea útil para un intento de autenticación.</p>
<p>Este sería el esquema cliente-servidor para la transmisión:</p>
<ol>
<li>Se inicia el intento de autenticación</li>
<li>El servidor genera una cadena aleatoria <img src='http://s.wordpress.com/latex.php?latex=salt&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='salt' title='salt' class='latex' /> y se la transmite al cliente.</li>
<li>El cliente calcula <img src='http://s.wordpress.com/latex.php?latex=S_1%20%3D%20SHA1%28pass%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S_1 = SHA1(pass)' title='S_1 = SHA1(pass)' class='latex' />, <img src='http://s.wordpress.com/latex.php?latex=S_2%20%3D%20SHA1%28S_1%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S_2 = SHA1(S_1)' title='S_2 = SHA1(S_1)' class='latex' /> y <img src='http://s.wordpress.com/latex.php?latex=S_3%20%3D%20SHA1%28salt%2BS_2%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S_3 = SHA1(salt+S_2)' title='S_3 = SHA1(salt+S_2)' class='latex' /> (aqui <img src='http://s.wordpress.com/latex.php?latex=%2B&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='+' title='+' class='latex' /> significa concatenación).</li>
<li>Finalmente el cliente transmite <img src='http://s.wordpress.com/latex.php?latex=M%20%3D%20S_3%20%5Coplus%20S_1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='M = S_3 \oplus S_1' title='M = S_3 \oplus S_1' class='latex' />. (aquí <img src='http://s.wordpress.com/latex.php?latex=%5Coplus&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\oplus' title='\oplus' class='latex' /> significa bitwise XOR)</li>
</ol>
<p><strong>Autenticación</strong></p>
<p>El servidor sólo conoce <img src='http://s.wordpress.com/latex.php?latex=H%20%3D%20SHA1%28SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='H = SHA1(SHA1(password))' title='H = SHA1(SHA1(password))' class='latex' />, que está almacenado en la tabla de usuarios, y <img src='http://s.wordpress.com/latex.php?latex=salt&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='salt' title='salt' class='latex' />. Para autenticar hace lo siguiente:</p>
<ol>
<li>Calcula  <img src='http://s.wordpress.com/latex.php?latex=S%27_3%20%3D%20SHA1%28salt%2BH%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S&#039;_3 = SHA1(salt+H)' title='S&#039;_3 = SHA1(salt+H)' class='latex' />.</li>
<li>Calcula  <img src='http://s.wordpress.com/latex.php?latex=S%27_1%20%3D%20M%5Coplus%20S%27_3&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S&#039;_1 = M\oplus S&#039;_3' title='S&#039;_1 = M\oplus S&#039;_3' class='latex' />.</li>
<li>Calcula <img src='http://s.wordpress.com/latex.php?latex=S%27_2%20%3D%20SHA1%28S%27_1%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S&#039;_2 = SHA1(S&#039;_1)' title='S&#039;_2 = SHA1(S&#039;_1)' class='latex' />.</li>
<li>Sólo si <img src='http://s.wordpress.com/latex.php?latex=H%3DS%27_2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='H=S&#039;_2' title='H=S&#039;_2' class='latex' /> la autenticación es exitosa.</li>
</ol>
<p><strong>Observaciones</strong></p>
<p>Nunca se transmite <img src='http://s.wordpress.com/latex.php?latex=S_2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S_2' title='S_2' class='latex' /> ni <img src='http://s.wordpress.com/latex.php?latex=S_1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='S_1' title='S_1' class='latex' />, por lo que la fortaleza está en que este ZKP verifica que el cliente conoce <img src='http://s.wordpress.com/latex.php?latex=SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1(password))' title='SHA1(password))' class='latex' /> y <img src='http://s.wordpress.com/latex.php?latex=SHA1%28SHA1%28password%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='SHA1(SHA1(password))' title='SHA1(SHA1(password))' class='latex' /> pero sin revelar esa información, y que sería casi imposible que un atacante poseyera sin conocer <img src='http://s.wordpress.com/latex.php?latex=password&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='password' title='password' class='latex' />.</p>
<p>También hay que observar que <img src='http://s.wordpress.com/latex.php?latex=salt&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='salt' title='salt' class='latex' /> es una cadena única por cada intento de autenticación, o sea que esa cadena siempre está cambiando.</p>
<p><strong>Implementación</strong></p>
<p>Próximamente trabajaremos en una implementación de este esquema para aplicaciones web usando JavaScript y PHP, que publicaremos bajo licencia LGPL.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2010/06/12/autenticacion-segura-sin-ssl-tls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Malware en Linux</title>
		<link>http://blog.amarello.com.mx/2009/12/09/malware-en-linux/</link>
		<comments>http://blog.amarello.com.mx/2009/12/09/malware-en-linux/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 05:52:56 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=863</guid>
		<description><![CDATA[Recientemente se descubrió un malware para Linux. Alojado en una página muy popular de descargas de temas para Gnome. Este malware viene incorporado en un screensaver contenido en un paquete .deb que requiere privilegios de administrador para instalarse. Específicamente es un troyano diseñado para formar parte de una Botnet y hacer ataques DDoS. Las instrucciones [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente <a href="http://www.omgubuntu.co.uk/2009/12/malware-found-in-screensaver-for-ubuntu.html">se descubrió</a> un malware para Linux. Alojado en una página muy popular de descargas de temas para Gnome.</p>
<p>Este malware viene incorporado en un screensaver contenido en un paquete .deb que requiere privilegios de administrador para instalarse. Específicamente es un troyano diseñado para formar parte de una Botnet y hacer ataques DDoS. </p>
<p>Las instrucciones para eliminarlo revelan dónde se instala y cómo se autoejecuta:</p>
<p><code>sudo rm -f /usr/bin/Auto.bash /usr/bin/run.bash /etc/profile.d/gnome.sh index.php run.bash &#038;&#038; sudo dpkg -r app5552</code></p>
<p>Hace tiempo reflexioné sobre este futuro poco alentador en un artículo sobre <a href="http://blog.amarelloartis.com/2008/01/11/%C2%BFque-no-hay-virus-en-mac-ya-veremos/">un troyano en mac</a>. Lo que me lleva a hacer una reflexión que me gustaría que todos los linuxeros nos hiciéramos: ¿cuántas veces has revisado lo que hace e instala un paquete .deb antes de ponerle tu contraseña de administrador?</p>
<p>Eso de creernos invulnerables por usar Linux o Mac OS pronto va a dar frutos, y son frutos podridos. Si se le sigue diciendo a la gente, sistemáticamente, que es <a href="http://blog.amarelloartis.com/2007/01/17/porque-no-hay-virus-en-linux-unix-ni-mac-os-x/">invulnerable al malware</a> es casi seguro que caiga en un engaño por exceso de confianza. También pasó con el troyano que venía en la <a href="http://blog.amarelloartis.com/2009/01/24/nuevo-trojano-en-iwork%C2%B409-de-bitorrent/">versión de bittorrent de iWork</a> y quién sabe cuántos aún sigan infectados.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2009/12/09/malware-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compara el costo de vivir en un país diferente</title>
		<link>http://blog.amarello.com.mx/2009/11/23/compara-el-costo-de-vivir-en-un-pais-diferente/</link>
		<comments>http://blog.amarello.com.mx/2009/11/23/compara-el-costo-de-vivir-en-un-pais-diferente/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 02:02:34 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=860</guid>
		<description><![CDATA[Cuando planeamos un viaje largo, una estancia universitaria o simplemente tenemos curiosidad económica, es bastante difícil comparar efectivamente la diferencia de precios sin caer en el error de darle demasiada importancia a la evidencia anecdótica de alguien que viajó a ese lugar o extrapolar experencias propias. Para hacer este tipo de cuestiones existe un sitio [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando planeamos un viaje largo, una estancia universitaria o simplemente tenemos curiosidad económica, es bastante difícil comparar efectivamente la diferencia de precios sin caer en el error de darle demasiada importancia a la evidencia anecdótica de alguien que viajó a ese lugar o extrapolar experencias propias.</p>
<p>Para hacer este tipo de cuestiones existe un sitio que nos permite hacer una comparación general de precio en diferentes cosas: restaurantes, productos básicos, transporte, renta de departamentos, gasolina, internet y telefonía. El sitio es:</p>
<p><a href="http://www.numbeo.com/cost-of-living/compare_countries.jsp">http://www.numbeo.com/cost-of-living/compare_countries.jsp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2009/11/23/compara-el-costo-de-vivir-en-un-pais-diferente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de exploits y shellcodes</title>
		<link>http://blog.amarello.com.mx/2009/11/12/tutorial-de-exploits-y-shellcodes/</link>
		<comments>http://blog.amarello.com.mx/2009/11/12/tutorial-de-exploits-y-shellcodes/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 01:02:30 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Seguridad en Información]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=853</guid>
		<description><![CDATA[Normalmente cuando uno busca información sobre exploits y shellcodes es frustrante darse cuenta que mucha de la información está bastante desactualizada y muchas veces no se explican a detalle ciertos pasos que para un novato son un reto resolver cuando se quiere llevar a la práctica lo aprendido. Hoy encuentro una serie de posts referentes [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente cuando uno busca información sobre exploits y shellcodes es frustrante darse cuenta que mucha de la información está bastante desactualizada y muchas veces no se explican a detalle ciertos pasos que para un novato son un reto resolver cuando se quiere llevar a la práctica lo aprendido.</p>
<p>Hoy encuentro una serie de posts referentes a un exploit en concreto en donde explican con cierto grado de detalle los pasos concretos a seguir y los conceptos que hay detrás de un exploit por stack overflow para la aplicación <em>Easy RM to MP3 Conversion Utility</em>.</p>
<p><a href="http://www.corelan.be:8800/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/">Exploit writing tutorial part 1 : Stack Based Overflows</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/07/23/writing-buffer-overflow-exploits-a-quick-and-basic-tutorial-part-2/" title="Exploit writing tutorial part 2 : Stack Based Overflows – jumping to shellcode">Exploit writing tutorial part 2 : Stack Based Overflows – jumping to shellcode</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/09/05/exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-basic-exploit-development/" title="Exploit writing tutorial part 5 : How debugger modules &amp; plugins can speed up basic exploit development">Exploit writing tutorial part 5 : How debugger modules &amp; plugins can speed up basic exploit development</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/07/25/writing-buffer-overflow-exploits-a-quick-and-basic-tutorial-part-3-seh/" title="Exploit writing tutorial part 3 : SEH Based Exploits">Exploit writing tutorial part 3 : SEH Based Exploits</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/09/21/exploit-writing-tutorial-part-6-bypassing-stack-cookies-safeseh-hw-dep-and-aslr/" title="Exploit writing tutorial part 6 : Bypassing Stack Cookies, SafeSeh, HW DEP and ASLR">Exploit writing tutorial part 6 : Bypassing Stack Cookies, SafeSeh, HW DEP and ASLR</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/07/28/seh-based-exploit-writing-tutorial-continued-just-another-example-part-3b/" title="Exploit writing tutorial part 3b : SEH Based Exploits – just another example">Exploit writing tutorial part 3b : SEH Based Exploits – just another example</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/08/12/exploit-writing-tutorials-part-4-from-exploit-to-metasploit-the-basics/" title="Exploit writing tutorial part 4 : From Exploit to Metasploit – The basics">Exploit writing tutorial part 4 : From Exploit to Metasploit – The basics</a></p>
<p><a href="http://www.corelan.be:8800/index.php/2009/11/06/exploit-writing-tutorial-part-7-unicode-from-0x00410041-to-calc/" title="Exploit writing tutorial part 7 : Unicode – from 0×00410041 to calc">Exploit writing tutorial part 7 : Unicode – from 0×00410041 to calc</a></p>
<p>Y sigue actualizándose.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2009/11/12/tutorial-de-exploits-y-shellcodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desmitificando RSA de 1025 bits</title>
		<link>http://blog.amarello.com.mx/2009/03/13/desmitificando-rsa-de-1025-bits/</link>
		<comments>http://blog.amarello.com.mx/2009/03/13/desmitificando-rsa-de-1025-bits/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 14:54:47 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Algoritmia y programación]]></category>
		<category><![CDATA[Matemáticas]]></category>
		<category><![CDATA[Seguridad en Información]]></category>

		<guid isPermaLink="false">http://blog.amarelloartis.com/?p=746</guid>
		<description><![CDATA[Cuando se habla de RSA, se suele especular o fantasear sobre supuesta tecnología ultrasecreta que pudieran tener las agencias de seguridad de los gobiernos de naciones poderosas como Rusia, China o EEUU. Sobre todo se especula que los módulos de 1024 bits podría ya ser factorizables en tiempos razonables. Por lo que muchos, incluyéndome, se [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se habla de RSA, se suele especular o fantasear sobre supuesta tecnología ultrasecreta que pudieran tener las agencias de seguridad de los gobiernos de naciones poderosas como Rusia, China o EEUU. Sobre todo se especula que los módulos de 1024 bits podría ya ser factorizables en tiempos razonables. Por lo que muchos, incluyéndome, se preguntan ¿entonces de cuántos bits debería generar mis llaves si mis temores fueran ciertos?</p>
<p>El NIST, la agencia encargada de definir los estándares tecnológicos para las agencias federales de EEUU, <a href="http://csrc.nist.gov/publications/nistpubs/800-57/SP800-57-Part1.pdf">establece</a> que la información con vigencia menor a 2010 debe usar al menos 1024 bits, con vigencia menor a 2030 deberá usar al menos 2048 bits y con vigencia mayor a 2030 deberá usar 3072.</p>
<p>Bruce Scheiner por otro lado en 2002 <a href="http://www.schneier.com/crypto-gram-0204.html#3">ratificó</a> una tabla publicada anteriormente por él mismo en donde establece los bits recomendados según seas un individuo, una corporación o el gobierno. Ahí estipula que para 2005 los individuos ya deberían usar llaves de 1280 bits, y el gobierno ya debería estar usando 2048 bits.</p>
<p>Algunos más &#8220;inteligentes&#8221; que los anteriores, dicen que todos exageran, y recomiendan 1025 bits, razonando superfluamente que eso duplica la complejidad de la factorización. Ese razonamieto surge de pensar que el mejor algoritmo de factorización es por &#8220;fuerza bruta&#8221; sobre los posibles factores, probando todos los números entre <img src='http://s.wordpress.com/latex.php?latex=2%5E%7B511%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2^{511}' title='2^{511}' class='latex' /> y <img src='http://s.wordpress.com/latex.php?latex=2%5E%7B512%7D-1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2^{512}-1' title='2^{512}-1' class='latex' /> para factorizar un módulo de 1024 bits, pues sus factores primos son de 512 bits.</p>
<p>La realidad es otra, y desde hace tiempo, desde Fermat de hecho, existen métodos sublineales de factorización de enteros respecto al tamaño del entero y los mismos algoritmos son subexponenciales respecto al número de bits del entero. Por lo que aumentar un bit la llave no es tan drástico como aumentarlo en otros algoritmos como AES, como no es tan drástico multiplicar por dos el tamaño del entero, pues eso no duplicaría el tiempo necesariamente. ¿Pero qué tanto aumenta el tiempo un bit más?</p>
<p><strong>Criba General de Campos Numéricos (GNFS)</strong></p>
<p>GNFS es el mejor algoritmo de factorización de enteros, conocido a la fecha, para enteros de 130 digitos al menos (que son aproximadamente 432 bits). En 2005 el algoritmo se utilizó para romper el récord de factorización RSA para un entero de 640 bits, hazaña que fue llevada acabo por un equipo de investigación alemán. Lo interesante de este algoritmo es su complejidad, y en base a ella voy a realizar algunos cálculos para esclarecer qué tan fuerte es aumentar un bit más a un módulo RSA. </p>
<p>La complejidad del algoritmo está dada por</p>
<img src='http://s.wordpress.com/latex.php?latex=O%5Cleft%28%5Cdisplaystyle%20e%5E%7B%5Cdisplaystyle%20%5Cleft%28c%2Bo%281%29%5Cright%29ln%20%28n%29%5E%7B1%2F3%7Dln%28ln%28n%29%29%5E%7B2%2F3%7D%20%7D%5Cright%29%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O\left(\displaystyle e^{\displaystyle \left(c+o(1)\right)ln (n)^{1/3}ln(ln(n))^{2/3} }\right) ' title='O\left(\displaystyle e^{\displaystyle \left(c+o(1)\right)ln (n)^{1/3}ln(ln(n))^{2/3} }\right) ' class='latex' />
<p>donde <img src='http://s.wordpress.com/latex.php?latex=c&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='c' title='c' class='latex' /> es una constante dada por la heurística utilizada en el algoritmo y <img src='http://s.wordpress.com/latex.php?latex=n&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='n' title='n' class='latex' /> es el número a factorizar (no los bits del número). <a href="http://en.wikipedia.org/wiki/Carl_Pomerance">Carl Pomerance</a>, creador del segundo mejor método de factorización, <a href="http://www.ams.org/notices/199612/pomerance.pdf">indica</a> que en este caso <img src='http://s.wordpress.com/latex.php?latex=c%20%3D%20%5Cleft%28%20%7B%5Cfrac%7B64%7D%7B9%7D%7D%5Cright%29%5E%7B1%2F3%7D%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='c = \left( {\frac{64}{9}}\right)^{1/3} ' title='c = \left( {\frac{64}{9}}\right)^{1/3} ' class='latex' />. Por otro lado tenemos que <img src='http://s.wordpress.com/latex.php?latex=o%281%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='o(1)' title='o(1)' class='latex' /> es una función asintótica que tiende a cero, por lo que para los cálculos se va a considerar como cero, pues Pomerance así lo toma.</p>
<p>Teniendo eso, lo que se puede hacer ahora es calcular el tiempo del algoritmo para factorizar un número de 1024 bits y comprarlo respecto al tiempo para factorizar uno de 1025 bits. Por lo que vamos a denotar <img src='http://s.wordpress.com/latex.php?latex=T_%7B1024%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='T_{1024}' title='T_{1024}' class='latex' /> al tiempo de 1024 bits y <img src='http://s.wordpress.com/latex.php?latex=T_%7B1025%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='T_{1025}' title='T_{1025}' class='latex' /> al tiempo de 1025 bits. </p>
<p>Sabemos que un número de 1024 bits se aproxima a <img src='http://s.wordpress.com/latex.php?latex=2%5E%7B1024%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2^{1024}' title='2^{1024}' class='latex' /> y uno de 1025 bits a <img src='http://s.wordpress.com/latex.php?latex=2%5E%7B1025%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='2^{1025}' title='2^{1025}' class='latex' />, por lo que se van a tomar esas aproximaciones para simplificar la exponenciación. Tenemos entonces que</p>
<img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Cdfrac%7B%5Cdisplaystyle%20T_%7B1025%7D%7D%7B%5Cdisplaystyle%20T_%7B1024%7D%7D%20%3D%20%5Cdisplaystyle%5Cdfrac%20%7Bk%20e%5E%7B%5Cdisplaystyle%20c%20%28ln%20%282%5E%7B1025%7D%29%5E%7B1%2F3%7Dln%28ln%282%5E%7B1025%7D%29%29%5E%7B2%2F3%7D%29%20%7D%20%7D%20%7Bk%20e%5E%7B%5Cdisplaystyle%20c%20%28ln%20%282%5E%7B1024%7D%29%5E%7B1%2F3%7Dln%28ln%282%5E%7B1024%7D%29%29%5E%7B2%2F3%7D%29%20%7D%7D%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\dfrac{\displaystyle T_{1025}}{\displaystyle T_{1024}} = \displaystyle\dfrac {k e^{\displaystyle c (ln (2^{1025})^{1/3}ln(ln(2^{1025}))^{2/3}) } } {k e^{\displaystyle c (ln (2^{1024})^{1/3}ln(ln(2^{1024}))^{2/3}) }} ' title='\displaystyle\dfrac{\displaystyle T_{1025}}{\displaystyle T_{1024}} = \displaystyle\dfrac {k e^{\displaystyle c (ln (2^{1025})^{1/3}ln(ln(2^{1025}))^{2/3}) } } {k e^{\displaystyle c (ln (2^{1024})^{1/3}ln(ln(2^{1024}))^{2/3}) }} ' class='latex' />
<p>donde <img src='http://s.wordpress.com/latex.php?latex=k&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='k' title='k' class='latex' /> es la constante de la notación asintótica. </p>
<p>Por lo tanto tenemos que </p>
<img src='http://s.wordpress.com/latex.php?latex=%5Cfrac%7BT_%7B1025%7D%7D%7BT_%7B1024%7D%7D%20%3D%201.0259%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\frac{T_{1025}}{T_{1024}} = 1.0259 ' title='\frac{T_{1025}}{T_{1024}} = 1.0259 ' class='latex' />
<p>Que es muy poco. Pues si el gobierno de algún país contara con los recursos para romper un módulo de 1024 bits en 24 semanas (6 meses), entonces romper uno de 1025 bits les llevaría casi 25 semanas. Esto en el mejor caso, puesto que la complejidad del algoritmo está dada en notación O, así que el algoritmo podría comportarse aún mejor de lo estimado y ser más rápido.</p>
<p>Si hacemos lo mismo y comparamos un módulo de 1024 respecto a uno de 1280, tenemos que <img src='http://s.wordpress.com/latex.php?latex=%5Cfrac%7BT_%7B1280%7D%7D%7BT_%7B1024%7D%7D%20%3D%20447.43&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\frac{T_{1280}}{T_{1024}} = 447.43' title='\frac{T_{1280}}{T_{1024}} = 447.43' class='latex' />. Que es bastante decente, y suponiendo que se pudiera factorizar el módulo de 1024 en una semana, entonces tardarían 8 años y medio en factorizar el de 1280; lo que le da bastante más confiabilidad a ese módulo que a uno de 1025. Aunque un cálculo más correcto sería considerando una ecuación diferencial porque la capacidad de cálculo no va a permanecer 8 años igual, va a ir aumentando.</p>
<p><strong>Pragmáticamente hablando</strong></p>
<p>Seguramente alguno va a desconfiar de este análisis, y necesitará una prueba más terrenal, sin tanta matemática. En ese caso lo invito a bajar un paquete que tenga implementado el algoritmo y factorice un número de unos 450 bits, que se puede hacer en un tiempo bastante decente (unos minutos) y vaya aumentando de bit en bit, para comparar los tiempos. Implementaciones hay varias y se pueden encontrar en la página de la <a href="http://en.wikipedia.org/wiki/General_number_field_sieve">wikipedia sobre GNFS.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amarello.com.mx/2009/03/13/desmitificando-rsa-de-1025-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

