Usar el DNS como un sistema de cacheo mundial. <a href="https://podcast.jcea.es/podcastz/6">https://podcast.jcea.es/podcastz/6</a>
<p><p>Notas:

<ul>
<p><li><b>00:30:</b> El proyecto es confidencial, pero quiero exponer algunas técnicas que pueden
ser útiles para otros programadores.

<p><li><b>02:50:</b> El programa requiere actualizarse constantemente de forma automática.

<p><li><b>04:30:</b> El usuario solo instala manualmente un "descargador".

<p><li><b>05:50:</b> Descripción del proceso de actualización.

<p><li><b>06:30:</b> Firma digital, imprescindible cuando hay actualizaciones constantes a través de
redes no confiables.

<p><li><b>08:00:</b> En la primera versión del proyecto, el programa se descargaba en cada ejecución (20KBytes).

<p><li><b>09:00:</b> Pero esto no escala cuando el número de usuarios crece, o el tamaño del fichero crece.

<p><li><b>13:30:</b> Usar el DNS para comprobar las versiones, utilizándolo de caché. A nivel mundial
y de forma simple.

<p><li><b>15:20:</b> Cuando un ordenador pide a su ISP que haga una petición de DNS, dicho ISP cachea
el resultado y está disponible para otros clientes. Y el tiempo de cacheo es configurable en el servidor
origen.

<p><li><b>17:30:</b> Problema: sin instalar librerías adicionales, Python tiene una capacidad de interacción
con el DNS muy limitada. Hay que buscarse la vida.

<p><li><b>19:30:</b> En vez de decir a través del DNS qué versión es la más moderna, lo que hacemos es
permitir que el cliente confirme si su versión es la última o no. Comprobamos si el registro
"HASH_MD5.md5.DOMINIO" existe o no.

<p><li><b>22:40:</b> Ojo con los ISPs puñeteros que resuelven a sus propias IPs las resoluciones DNS inexistentes.
Solución: Comprobamos que la IP resuelta sea la esperada.

<p><li><b>25:00:</b> Firma digital por <a href="https://en.wikipedia.org/wiki/ElGamal_signature_scheme">El Gamal</a>.

<p><li><b>27:20:</b> El actualizador no hace más descargar la versión actual (con todas las verificaciones)
y luego le pasa el control. Actualizar el actualizador es "complicado" :).
</ul>

Podcast Z

Jesús Cea & Pablo Lobariñas

Podcast Z #6: Proyecto X - DNS como base de datos distribuida mundial

JAN 22, 201229 MIN
Podcast Z

Podcast Z #6: Proyecto X - DNS como base de datos distribuida mundial

JAN 22, 201229 MIN

Description

Usar el DNS como un sistema de cacheo mundial. <a href="https://podcast.jcea.es/podcastz/6">https://podcast.jcea.es/podcastz/6</a> <p><p>Notas: <ul> <p><li><b>00:30:</b> El proyecto es confidencial, pero quiero exponer algunas técnicas que pueden ser útiles para otros programadores. <p><li><b>02:50:</b> El programa requiere actualizarse constantemente de forma automática. <p><li><b>04:30:</b> El usuario solo instala manualmente un "descargador". <p><li><b>05:50:</b> Descripción del proceso de actualización. <p><li><b>06:30:</b> Firma digital, imprescindible cuando hay actualizaciones constantes a través de redes no confiables. <p><li><b>08:00:</b> En la primera versión del proyecto, el programa se descargaba en cada ejecución (20KBytes). <p><li><b>09:00:</b> Pero esto no escala cuando el número de usuarios crece, o el tamaño del fichero crece. <p><li><b>13:30:</b> Usar el DNS para comprobar las versiones, utilizándolo de caché. A nivel mundial y de forma simple. <p><li><b>15:20:</b> Cuando un ordenador pide a su ISP que haga una petición de DNS, dicho ISP cachea el resultado y está disponible para otros clientes. Y el tiempo de cacheo es configurable en el servidor origen. <p><li><b>17:30:</b> Problema: sin instalar librerías adicionales, Python tiene una capacidad de interacción con el DNS muy limitada. Hay que buscarse la vida. <p><li><b>19:30:</b> En vez de decir a través del DNS qué versión es la más moderna, lo que hacemos es permitir que el cliente confirme si su versión es la última o no. Comprobamos si el registro "HASH_MD5.md5.DOMINIO" existe o no. <p><li><b>22:40:</b> Ojo con los ISPs puñeteros que resuelven a sus propias IPs las resoluciones DNS inexistentes. Solución: Comprobamos que la IP resuelta sea la esperada. <p><li><b>25:00:</b> Firma digital por <a href="https://en.wikipedia.org/wiki/ElGamal_signature_scheme">El Gamal</a>. <p><li><b>27:20:</b> El actualizador no hace más descargar la versión actual (con todas las verificaciones) y luego le pasa el control. Actualizar el actualizador es "complicado" :). </ul>