<?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>José Miguel Parrella Romero &#187; Planeta Debian</title>
	<atom:link href="http://blog.bureado.com.ve/?feed=rss2&#038;cat=13" rel="self" type="application/rss+xml" />
	<link>http://blog.bureado.com.ve</link>
	<description>bureado.com</description>
	<lastBuildDate>Wed, 08 Sep 2010 19:21: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>Presentación sobre virtualización interoperable utilizando opensource</title>
		<link>http://blog.bureado.com.ve/?p=747</link>
		<comments>http://blog.bureado.com.ve/?p=747#comments</comments>
		<pubDate>Wed, 26 May 2010 02:38:12 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[interop]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=747</guid>
		<description><![CDATA[El 15 de abril fui invitado a una presentación técnica en el Instituto de Prácticas Bancarias y Financieras en Quito, con el objeto de mostrar el estado del arte en técnicas de virtualización y aprovechamiento de hardware utilizando software libre, de código y estándares abiertos y sus capacidades de interoperatibilidad. Entre los participantes había unos [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://fotos.bureado.com.ve:8000/main.php?g2_view=core.DownloadItem&#038;g2_itemId=2286&#038;g2_serialNumber=1" style="width: 50%; height: 50%;" /></p>
<p>El 15 de abril fui invitado a una presentación técnica en el Instituto de Prácticas Bancarias y Financieras en Quito, con el objeto de mostrar el estado del arte en técnicas de virtualización y aprovechamiento de hardware utilizando software libre, de código y estándares abiertos y sus capacidades de interoperatibilidad.</p>
<p>Entre los participantes había unos 50 representantes de empresas, consultoras y estudiantes universitarios, que asistieron a la actividad para ver la comparativa de interoperatibilidad que preparé junto a <a href="http://msmvps.com/blogs/tech-steps/">Pablo Toapanta</a>, quien es un reconocido profesional en tecnologías Microsoft en Ecuador.</p>
<p>Preparé unas <a href="http://www.scribd.com/doc/31734385/Tecnicas-de-aprovechamiento-de-hardware-open-source">láminas guía</a> muy básicas con el propósito de presentarle a los participantes la idea de que no todo es virtualización, sino que antes de considerar la virtualización (y algunos temas más complejos como cloud o utility computing) hay muchos pasos a tomar en cuenta como la emulación y la clusterización.</p>
<p>Si bien hice un gran énfasis en la capacidad de paravirtualizadores como Xen, resaltando algunos casos de uso importantes como el trabajo de Joanna Rutkowska con Qubes, los escenarios de interoperatibilidad que preparé fueron esencialmente con Sun VirtualBox, y no me queda ninguna duda de que el producto es muy completo, fácil de usar y flexible para entornos altamente complejos, con el impacto en performance asociado a esta técnica de virtualización.</p>
<p>Utilizando solamente un cable Ethernet entre dos laptops, una con Microsoft Windows Server 2008 utilizando HyperV y otra con Debian GNU/Linux utilizando VirtualBox, y en menos de una hora preparamos y mostramos estos escenarios:</p>
<ul>
<li>Linux como un miembro de dominio utilizando Kerberos y Samba, iniciando sesión en un Active Directory de Microsoft Windows Server 2008</li>
<li>Linux como un servidor de recursos compartidos, específicamente impresoras, utilizando IPP y drivers Postscript, con lo que logramos imprimir desde Microsoft Windows Server a la impresora virtual PDF de CUPS</li>
<li>Linux como un proveedor de aplicaciones Web y de administración accesible vía RDPv5, totalmente &#8216;consumible&#8217; desde Windows de forma nativa</li>
<li>Linux como un host de Microsoft Windows 7 y Microsoft Windows Server 2003, utilizando RDPv5 para acceso único, o bien Terminal Services con SeamlessRDP para integración total con el escritorio Linux</li>
</ul>
<p>También presentamos escenarios &#8216;no-interoperables&#8217; como por ejemplo Android corriendo como una máquina virtual en Linux, o clústeres de Microsoft SQL Server usando HyperV. Pero, sinceramente, creo que la gente fue a ver que podíamos hacer en cuanto a interoperatibilidad, y a eso dedicamos la mayor parte del tiempo.</p>
<p>La importancia de estos escenarios radica en que no sólo son el resultado de una hora de preparación sino que en los últimos dos años me he enfrentado profesionalmente en varios proyectos en Venezuela y Ecuador a estos casos. Por ejemplo, ayudé a la Compañía Anónima Nacional de Teléfonos de Venezuela, CANTV, a implementar Canaima GNU/Linux 2.0 en sus estaciones de trabajo corporativas (unas 15 mil) utilizando SeamlessRDP para aplicaciones legadas que no pueden ejecutar en Linux, o al Complejo de Refineración de Paraguaná, una de las refinerías más grandes del mundo, a implementar máquinas virtuales para migrar parcialmente servicios de su infraestructura local, como impresoras auditadas o metadirectorios.</p>
<p>Otra ventaja de este enfoque comparado con los procedimientos tradicionales, tipo receta, en los que instalamos &#8220;Linux como un controlador de dominio&#8221;, &#8220;Windows como host de Linux&#8221;, etc., es que la virtualización y el incremento en la adopción de estándares abiertos de la industria da por sentadas muchas cosas fácilmente como por ejemplo integración del DNS, DHCP, NTP, aplicaciones vía HTTP/S, etc.</p>
<p>Pasé un excelente rato dando la presentación, el público estuvo muy interesado, tuve la oportunidad de poner en práctica de forma muy ágil muchas técnicas interesantes y la interacción con Pablo fue excelente, ¡buen trabajo!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=747</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Una breve PoC del SDK de Windows Azure para PHP</title>
		<link>http://blog.bureado.com.ve/?p=662</link>
		<comments>http://blog.bureado.com.ve/?p=662#comments</comments>
		<pubDate>Tue, 30 Mar 2010 02:23:16 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[interoperatibility]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows azure]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=662</guid>
		<description><![CDATA[Hace varios meses conseguí acceso al CTP de Windows Azure, el servicio de cloud computing de Microsoft. Este servicio ofrece capacidad de cómputo (CPU, RAM), networking y almacenamiento de data estructurada (tablas) y no estructurada (colas, blobs) en centros de datos ubicados en Europa, Asia y los Estados Unidos, aunque AFAICT sólo está operando el [...]]]></description>
			<content:encoded><![CDATA[<p>Hace varios meses conseguí acceso al CTP de Windows Azure, el servicio de <em>cloud computing</em> de Microsoft. Este servicio ofrece capacidad de cómputo (CPU, RAM), networking y almacenamiento de data estructurada (tablas) y no estructurada (colas, blobs) en centros de datos ubicados en Europa, Asia y los Estados Unidos, aunque AFAICT sólo está operando el de Estados Unidos.</p>
<p>Con estas claves se podía usar Windows Azure durante el <em>preview</em> de tecnología, lo cual ya venció IIRC. Windows Azure será accesible para ciertos países bajo una estructura de costos particular. Realmente para las organizaciones asumo que la ventaja competitiva de usar Azure (vs. Amazon, e.g.) radicará en la integración que ya tiene con el IDE Microsoft Visual Studio y las tecnologías asociadas al desarrollo en plataforma Microsoft. Digamos que se promete poder migrar una aplicación .NET existente a la nube.</p>
<p>Yo me propuse usar Windows Azure con una aplicación libre, hecha en PHP, para probar. El <a href="http://phpazure.codeplex.com/">SDK de Windows Azure para PHP</a> realmente son sólo unas librerías que se incluyen en un proyecto PHP. Una vez incluídas, estas librerías hacen disponibles funciones para crear, listar, acceder, agregar, modificar y/o eliminar elementos de datos en la nube como: blobs, tablas y colas. Todo esto se hace con funciones REST. El SDK necesita CURL y la librería php-curl.</p>
<p>Es importante resaltar que en el caso de las tablas, si bien se conoce que Windows Azure utiliza SQL Server como almacén de datos en la nube esto es transparente para el desarrollador. Simplemente se crean entities en PHP con campos arbitrarios y esos se mandan completos a la tabla; en el backoffice ya se encargará el RDBMS de crear columnas, tipos de datos y demás. Tampoco hay que saber SQL ni T-SQL para hacer consultas, sino que hay una sintaxis simplificada y además las librerías ayudan. Piense en algo como CouchDB con SQL Server como un backend.</p>
<p>No es de sorprender que el almacenamiento de tablas de Windows Azure presenta características en línea con tendencias alejadas de SQL como prevalencia del modelo key-value para manejadores de bases de datos en aplicaciones de alto rendimiento, con ejemplos como Facebook, eBay y Elgg y cierta orientación a un modelo de DB basado en &#8220;documentos&#8221; que realmente se tratan de estructuras de datos arbitrarias enviadas al manejador para su almacenamiento. Esto en definitiva es positivo para el desarrollador y es curioso ya que hace muy pocos años esto no estaba en el panorama.</p>
<p>El SDK para PHP es licenciado bajo BSD lo que lo hace software libre y de código abierto. Las librerías no las hizo Microsoft sino un tercerizador (RealDolmen) y personalmente considero que se pudo haber usado librerías de REST un poco más elaboradas. Para cuando probé Windows Azure habían proyectos para Java y Ruby, en esencia patrocinados por Microsoft. En MLs japonesas ya habían módulos (al menos para Tablas) para lenguajes como Perl.</p>
<p>Un ejemplo muy sencillo para empezar con tablas sería (y aquí <a href="http://phpazure.codeplex.com/wikipage?title=Getting%20Started">más ejemplos</a>):</p>
<pre>
require_once 'Microsoft/WindowsAzure/Storage/Table.php';

$svc = 'table.core.windows.net';
$act = 'act'; # el prefijo de *.table.core.windows.net que crean en la página, identifica al 'usuario'
$key = 'key'; # una clave binaria en base64 que generan en la página, completa la credencial

$storageClient = new Microsoft_WindowsAzure_Storage_Table($svc, $act, $key);
$result = $storageClient->createTable('PrimaTabla');

$result = $storageClient->listTables();
foreach ($result as $table)
{ echo 'Tabla: ' . $table->Name . "\n"; }
</pre>
<p>Los <em>drawbacks</em> que veo radican en la ubicación geográfica de las infraestructuras físicas que se están utilizando, y obviamente el impacto estratégico que tiene en algunas aplicaciones, así como las amenazas tradicionales para aplicaciones sensibles de servicios de <em>cloud computing</em>. Sin embargo, es bueno saber que es posible desarrollar en PHP (y otros lenguajes de stack abierto, FWIW) usando Azure como <em>backend</em> y sin estar atado a un IDE o a un software de gestión de ciclo de vida específico.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=662</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stressting LDAP for fun and profit</title>
		<link>http://blog.bureado.com.ve/?p=650</link>
		<comments>http://blog.bureado.com.ve/?p=650#comments</comments>
		<pubDate>Wed, 17 Mar 2010 04:50:46 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[slapd]]></category>
		<category><![CDATA[stress testing]]></category>
		<category><![CDATA[stresst]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=650</guid>
		<description><![CDATA[Hace casi dos años, el grupo de Software Libre de PDVSA, la petrolera estatal venezolana, estaba indeciso sobre la utilización de OpenLDAP como solución de directorio compatible con LDAPv3 que les permitiera sustituir parcial o totalmente Microsoft Active Directory. Ellos/as me plantearon su mayor duda: ¿qué tan robusto es OpenLDAP en entornos empresariales? Yo ya [...]]]></description>
			<content:encoded><![CDATA[<p>Hace casi dos años, el grupo de Software Libre de PDVSA, la petrolera estatal venezolana, estaba indeciso sobre la utilización de <a href="http://www.openldap.org/">OpenLDAP</a> como solución de directorio compatible con LDAPv3 que les permitiera sustituir parcial o totalmente Microsoft Active Directory. Ellos/as me plantearon su mayor duda: ¿qué tan robusto es OpenLDAP en entornos empresariales?</p>
<p>Yo ya había utilizado OpenLDAP extensivamente en entornos empresariales, incluso en convivencia con Microsoft Active Directory cuando trabajé en el Centro de Cómputo de EDELCA, la principal empresa eléctrica en Venezuela. Ese setup ahora está utilizando <a href="http://directory.fedoraproject.org/">389</a> (antes Fedora Directory Server) para sincronizar claves con MSAD para más de 17 mil personas y centenares de miles de objetos, y a pesar de que lo había visto funcionar bajo cargas muy inusuales, y usábamos clusters con distribución geográfica, yo también tenía la duda de los números.</p>
<p>Decidí probar esto en varios frentes. El primero, generar LDIFs muy grandes, y averiguar cuánto representarían en disco una vez almacenados en Berkeley DB, suponiendo que se fuera a utilizar ese popular backend para OpenLDAP. Esto nos daría una idea, exceptuando índices y optimizaciones, de los requerimientos en memoria de un producto como OpenLDAP en escenarios muy grandes. El segundo frente estaba limitado a las pruebas de tiempo de respuesta de la aplicación ante escenarios de búsqueda.</p>
<p>La razón por la que pruebo búsquedas es porque esta es la aplicación más común de un directorio LDAP. Mis pruebas fueron locales usando TCP/IP porque, aparte de contaminar los tiempos, en mi experiencia los tiempos de respuesta de un directorio LDAP, cuando está <em>networked</em>, se diluyen en los tiempos de procesamiento de la aplicación; en EDELCA preparé un informe que estudiaba la razón de un problema con GNOME Evolution en el cual el autocompletado tardaba varios segundos en responder, aunque en trazas de red se evidenciaba que el directorio LDAP había respondido en milisegundos (un <a href="https://bugzilla.gnome.org/show_bug.cgi?id=378057">bug</a> en la aplicación) Imagine otro escenario: en la firma y la comprobación de firma de una infraestructura de llave pública dependiente de LDAP, ¿será el tiempo de respuesta de LDAP determinante cuando estamos potencialmente sobrecargando al cliente calculando hashes para la firma de un documento?</p>
<p>Por esto, el tiempo de respuesta local vs. networked no sería un indicativo de la experiencia del usuario final con el directorio, en parte el motivo de la preocupación del cliente. Además hay proxys en LDAP (montamos uno en PDVSA CRP, junto con <a href="http://docs.safehaus.org/display/PENROSE/Home">Penrose</a> como integrador de directorios, o como lo llaman en el mercado, un virtual directory) y estrategias de infraestructura para atacar esto de manera estructural.</p>
<p>Como no quería pasar seis meses de mi vida diseñando experimentos y ya que supuse que nadie iba a estar demasiado interesado en los resultados, dejé de lado algunos escenarios de borde y preparé un par de scripts, en Perl como es natural, para escribir LDIFs muy rápido y para consultar LDAPs muy rápido. Utilicé threads en Perl para su implementación (quería consultar en paralelo), aunque estoy prácticamente convencido por Luis Muñoz, Alejandro Imass y Ernesto Hernández-Novich de <a href="http://mail.pm.org/pipermail/caracas-pm/2010-March/thread.html">no repetir el uso de threads jamás</a>.</p>
<p>De allí nació un <em>pedestrian LDAP tester</em>, que luego extendí a un <em>stresster</em> de MTAs a través de SMTP y a uno de procesos de autenticación en aplicaciones Web utilizando WWW::Mechanize. Esto es porque el proyecto con PDVSA involucraba las tres cosas: implementamos un cluster de Zimbra Collaboration Suite Community y 389 (FDS) utilizando Debian GNU/Linux en ocho servidores con Xen y NFSv3 para un poco más de 25 mil cuentas, a la fecha 18 meses en producción. Voy a subir los otros scripts pronto, pero vamos con los <em>findings</em> de LDAP, de mi nota informal de Julio 2008:</p>
<p>Cargar 200 mil registros (un LDIF de 66 MB.) en la base de datos tiene una representación en BDB de unos 928 MB. Asumamos que requeriríamos, <em>worst case scenario</em> ese espacio en memoria, sin índices ni los registros de replicación. Cargar esos 200 mil registros en OpenLDAP (<tt>slapadd</tt>) se toma entre 135 y 180 minutos aproximadamente. Afortunadamente la carga se hace sólo una vez. Indizar la base de datos (<tt>slapindex</tt>) es relativamente rápido y el tiempo se mantiene igual con 1 mil o 200 mil registros. Esto es lógico y bueno.</p>
<p>Hice una búsqueda similar a una consulta de una libreta de direcciones popular. Esa búsqueda generó 15 mil resultados (el número de resultados se puede restringir en OpenLDAP, pero a efectos de la prueba lo desactivé) &#8212; en mis pruebas, 100 clientes consultando paralelamente por TCP/IP y obteniendo los 15 mil resultados, sin limitar los atributos más allá de las ACLs se tomó:</p>
<pre>
real    0m12.048s
user    0m10.413s
sys     0m0.768s
</pre>
<p>Lo cual es más que aceptable. Ahora bien, el uso en memoria RAM del servicio está en los 640 MB. de memoria virtual y casi 200 MB. en memoria residente. Esto representa el 15% de la memoria del servidor que utilicé, un HP Integrity descontinuado para 2008, que tiene 2 GB. de RAM. Al introducir índices, estos se cargan en memoria, así como el número de objetos que se quiere tener en caché (yo coloqué 50 mil) por lo que habría que pensar en al menos unos 4 GB. de RAM para un volumen así.</p>
<p>Creando índices para los atributos <tt>cn</tt>, <tt>sn</tt>, <tt>givenName</tt> y <tt>mail</tt>, y ajustando un poco los parámetros de configuración de BerkeleyDB (tabulado del FAQ-O-Matic) la indización se toma un tiempo bastante mayor, para un tiempo de respuesta con la misma búsqueda no mucho menor:</p>
<pre>
real    0m10.540s
user    0m8.593s
sys     0m0.480s
</pre>
<p>Por lo que, en general, optimizar poco los índices tendría mucho impacto en las cargas y poco impacto en las búsquedas: si vas a indizar, indiza todo lo que quieras y puedas. Lo otro crítico de optimizar es el <tt>DBCONFIG</tt>; para 2008, y gracias en parte al oscurantismo de Oracle, era más arte que ciencia. El <a href="http://www.openldap.org/faq/data/cache/1.html">FAQ-O-Matic</a> de OpenLDAP, como siempre, da la mejor información, ver los artículos 1072, 1075, 42, 738 y 893.</p>
<p>Now for the goodies, hay tres scripts que publiqué en mi carpeta de CPAN. El primero genera LDIFs, de forma muy básica, entradas tipo libreta de direcciones (<a href="http://www.cpan.org/authors/id/B/BU/BUREADO/plt-ldif-generator-0.1">plt-ldif-generator</a>); el segundo hace las consultas con threads (<a href="http://www.cpan.org/authors/id/B/BU/BUREADO/plt-bambam-0.1">plt-bambam</a>) y el tercero es una muestra del patrón de uso del tester (<a href="http://www.cpan.org/authors/id/B/BU/BUREADO/plt-usage-pattern-0.1">plt-usage-pattern</a>), en shell script.</p>
<p>Necesita un Perl razonablemente moderno, compilado con soporte para threads, la librería de Threads de Perl y el módulo Net::LDAP. Un <tt>aptitude install libthreads-perl libnet-ldap-perl</tt> es suficiente. El primer script también espera que usted provea un <tt>root.ldif</tt> (el nombre se puede cambiar en el código) con la entrada base del directorio (<tt>dc=foo,dc=bar</tt>; por ejemplo) y un <tt>model.ldif</tt> que tenga la entrada modelo con tags que el script sustituirá (obvio, puede usar un LDIF prehecho), algo como:</p>
<pre>
dn: cn=#CN#,dc=foo,dc=bar
objectClass: top
objectClass: inetorgperson
uid: #USER#
cn: #CN#
sn: #SN#
givenName: #FN#
</pre>
<p><strong>Importante:</strong> como ya dije antes, algunos casos de uso están fuera de la prueba que realicé, en la mayoría de los casos porque no impactan la prueba sensiblemente (por ejemplo, autenticar las conexiones usando credenciales, cifrado con TLS/SSL y otros, no sería un problema grave) aunque sí podría nombrar algunos elementos que influyen en el <em>performance</em> cuando se lleva OpenLDAP a la práctica en escenarios distintos al trivial, como por ejemplo el uso de muchos schemas y de atributos divergentes en las entradas del directorio, sobrecargar el servicio con temas administrativos como largas ACLs dinámicas y sobre todo altos niveles de verbosidad y overlays de terceros. Afortunadamente, ninguno de estos es un must para un setup grande de LDAP. El código de mis scripts también debe tener bugs y está terriblemente documentado, pero le cumple el propósito perfectamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=650</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Estampillado de tiempo según RFC 3161 con software libre</title>
		<link>http://blog.bureado.com.ve/?p=626</link>
		<comments>http://blog.bureado.com.ve/?p=626#comments</comments>
		<pubDate>Sun, 17 Jan 2010 21:51:55 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[timekeeping]]></category>
		<category><![CDATA[timestamping]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=626</guid>
		<description><![CDATA[Desde hace un año he estado trabajando con OpenTSA, un conjunto de parches a OpenSSL para incorporar soporte al estampillado de tiempo en la popular suite de criptografía de llave pública. Muy a grandes rasgos, el estampillado de tiempo llena una necesidad corporativa e individual de certificar que una data existía a partir de cierto [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://img97.imageshack.us/img97/6663/closingopentsa.png" /></p>
<p>Desde hace un año he estado trabajando con <a href="http://www.opentsa.org/">OpenTSA</a>, un conjunto de parches a OpenSSL para incorporar soporte al estampillado de tiempo en la popular suite de criptografía de llave pública.</p>
<p>Muy a grandes rasgos, el estampillado de tiempo llena una necesidad corporativa e individual de certificar que una data existía a partir de cierto momento en el tiempo. Adicionalmente, al estar involucrado en una infraestructura de llave pública, nos trae las ventajas de la autenticidad y la integridad. Lamentablemente, hoy en día organizaciones en todo el Mundo hacen inversiones de varios cientos de miles de dólares en tecnología para estampillado de tiempo.</p>
<p>Hace un año OpenTSA tenía muchos problemas, ya que se necesitaba bastante OpenSSL-fu para parchar la popular y sobre todo ubicua suite de criptografía. En distribuciones mainstream como Debian tenemos gran cantidad de software que se enlaza con OpenSSL y con muchas otras cosas (p.ej., Apache con MySQL y Postgres&#8230; out of the box) y eso dificulta mucho la accesibilidad de las tecnologías que van saliendo.</p>
<p>En Noviembre 2009, OpenSSL publicó la beta4 de OpenSSL 1.0.0, que absorbe el valioso trabajo de Zoltan Glozik y sus colaboradores. Junto a mod_tsa del proyecto OpenTSA original, hoy en día es más que feasible poner a operar un servicio de estampillado de tiempo bajo HTTP(S) POST que le permita a un/a usuario/a relativamente lego en cuanto a criptografía poder hacer estampillados de su data.</p>
<p>A la fecha, no existe en Debian un paquete disponible de OpenSSL 1.0.0. Un paquete de este tipo no puede entrar en una distribución no autocontenida como <tt>experimental</tt> ya que hay demasiados paquetes compilados contra la versión 0.9.8. Así que en principio hay dos formas de hacer esto: con chroots o máquinas virtuales o esperar que el paquete entre en <tt>unstable</tt>. Yo utilizo <tt>equivs</tt> para crear los paquetes de <tt>openssl</tt>, <tt>libssl0.9.8</tt> y <tt>libssl0.9.8-dev</tt> y no romper el sistema de paquetes. Espere que paquetes como <tt>wget</tt> o <tt>curl</tt> que hacen uso extensivo desde su arranque de SSL no funcionen o tenga que recompilarlos.</p>
<p>No es necesario aplicar parches en OpenSSL. Ya OpenSSL 1.0.0-beta4 tiene soporte para timestamping. Lo único que se necesita compilar es mod_tsa para Apache, y como Apache y sus dependencias también dependen extensivamente de SSL, lo mejor es compilar directo httpd 2.2 desde los repositorios fuente. Finalmente se compila mod_tsa, que necesita una DB para guardar las estampillas: MySQL, PostgreSQL o Firebird. Sólo se necesita una tabla sin funciones complejas: MySQL es lo más NoSQL que es accesible colocar.</p>
<p>¿Cómo se usa? Cuando se tiene un archivo o una data, se aplica <tt>openssl ts</tt> para obtener el <em>timestamping request</em> y luego se manda a firmar el <em>request</em> en la autoridad de estampillado de tiempo. El emisor distribuye la estampilla junto con la data, y el/la interesado/a puede verificar la integridad y existencia de la data teniendo la data, la estampilla y el certificado de la autoridad de estampillado.</p>
<p>Una reflexión final: sigo abogando por el uso de <a href="http://gnupg.org/">GnuPG</a> para garantizar autenticidad, integridad y cifrado en todas las comunicaciones vía electrónica. Sin embargo, GnuPG carece de mecanismos pulidos para estampillado de tiempo y aunque la mayor parte de nuestras comunicaciones las hacemos vía correo electrónico, ni siquiera allí podemos contar con las estampas de los servidores de correo intermedio. Por esto considero que enfocar el uso de OpenSSL sólo para TSA puede ser una muy buena idea, complementada con GnuPG.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=626</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Debian en Acer Aspire 1420P</title>
		<link>http://blog.bureado.com.ve/?p=596</link>
		<comments>http://blog.bureado.com.ve/?p=596#comments</comments>
		<pubDate>Thu, 17 Dec 2009 18:40:33 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[laptops]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=596</guid>
		<description><![CDATA[Hace un poco más de un mes tuve la oportunidad de hacerme con una versión especial de la Acer Aspire 1420P. Este es un convertible Tablet PC con un CPU Intel Core 2 Duo U2300, chipset Intel Mobile GS45 Express, 2 GB. de memoria RAM en dos slots soDIMM, una pantalla HD de 11.6&#8243; que [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bureado.com.ve/PDC_img_10.jpg" style='width: 50%; height: 50%;' /></p>
<p>Hace un poco más de un mes tuve la oportunidad de hacerme con una versión especial de la Acer Aspire 1420P. Este es un <em>convertible Tablet PC</em> con un CPU Intel Core 2 Duo U2300, chipset Intel Mobile GS45 Express, 2 GB. de memoria RAM en dos slots soDIMM, una pantalla HD de 11.6&#8243; que da 1366&#215;768 px., WWAN UMTS/HSDPA y GSM/GPRS/EDGE multibanda integrada, una Intel WiFi Link 1000 BGN, Bluetooth, HDMI, multitouch y un disco de 250 GB en 1.72 kg. de peso. Outstanding.</p>
<p>La laptop traía Microsoft Windows 7 Ultimate para arquitecturas de 64-bit y fue exitosamente reemplazado por Debian GNU/Linux. El procedimiento no fue tan escabroso como pensé; básicamente tuve que <a href="http://www.debian.org/releases/stable/i386/ch04s03.html.en">instalar vía USB Debian 5.0 (Lenny)</a> y renunciar temporalmente a la mayor parte del hardware (principalmente Ethernet y WiFi) hasta que subí a un RC del kernel de Linux 2.6.32, con lo que pude usar la red y gracias a un proxy-caché APT en mi laptop principal (Thinkpad T400) subir la máquina completa a Debian Unstable (Sid) que es la distribución que uso. Todo el proceso tomó unos 15 minutos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=596</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haciendo que el FLOSS sea más competitivo</title>
		<link>http://blog.bureado.com.ve/?p=579</link>
		<comments>http://blog.bureado.com.ve/?p=579#comments</comments>
		<pubDate>Tue, 03 Nov 2009 20:23:36 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[interoperatibilidad]]></category>
		<category><![CDATA[laboratorio]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=579</guid>
		<description><![CDATA[En el año 2003, las redes de la Universidad Bolivariana de Venezuela aun estaban interconectadas con las redes de PDVSA. Recuerdo que una vez fui con varios/as hacktivistas a dar un curso de software libre en la UBV y, usando Knoppix, tuvimos acceso a la red de PDVSA utilizando herramientas de software libre disponibles en [...]]]></description>
			<content:encoded><![CDATA[<p>En el año 2003, las redes de la Universidad Bolivariana de Venezuela aun estaban interconectadas con las redes de PDVSA. Recuerdo que una vez fui con varios/as hacktivistas a dar un curso de software libre en la UBV y, usando Knoppix, tuvimos acceso a la red de PDVSA utilizando herramientas de software libre disponibles en el mismo disco.</p>
<p>Si bien en el aspecto profesional he sido arquitecto de varias de las implementaciones más importantes 100% FLOSS del país (Canaima, CANTV, EDELCA y muchas otras organizaciones medianas a grandes; hoy en día calculo que habrán allá afuera unas 7 mil personas con relación directa y varios cientos de miles más indirectas) también he trabajado y trabajo en proyectos híbridos; es decir, donde coexisten tecnologías privativas con tecnologías libres y abiertas.</p>
<p>Los ambientes híbridos son parte de nuestra realidad, y también son un primer paso muy importante hacia una adopción exclusiva de software libre, que pienso que continúa siendo una idea que hace mucho sentido en cualquier unidad de tecnología pública o privada hoy en día (en el sector público pienso, además, que es un deber) y en cualquier parte del globo.</p>
<p>Por ejemplo, hoy en día es posible plantearse seriamente escenarios de interoperatibilidad en los que el <em>backoffice</em> sea FLOSS y el usuario final continúe utilizando una plataforma privativa, y también es muy posible y hoy en día hay escenarios en Venezuela donde se implementa una plataforma de usuario final FLOSS y el <em>backoffice</em> se mantiene. También hay muchos tonos de grises entre ambos escenarios; pueden haber <em>backoffices</em> mixtos, <em>end users</em> mixtos, sólo aplicaciones de negocio, etc.</p>
<p>El problema radica en que tradicionalmente los desarrolladores de software privativo han utilizado estrategias para eliminar o disminuir amenazas a su dominio tecnológico en una organización. Esto impide que los responsables de toma de decisiones planteen estrategias básicas que se orienten a diversificar su plataforma usando FLOSS, con las ventajas documentadas que esto tiene.</p>
<p>Estas amenazas van desde el FUD (¡eso no va a funcionar! o ¡eso va a hacer lenta la red!) hasta problemas administrativos importantes como por ejemplo la suspensión de soporte o garantía o incluso (ha pasado) el aumento de costos por no exclusividad de la plataforma. Todas estas son situaciones intolerables,  tergiversaciones del mercado y que rayan casi en lo inhumano de la tecnología.</p>
<p>Mientras estas grandes empresas deciden flexibilizar sus políticas en torno a ambientes híbridos -poco a poco y gracias no solo a su burocracia sino a su condición federada- yo aporto mi grano de arena no solo como unidad productiva sino como desarrollador independiente, que un día hace 7 años decidió dedicarse al conocimiento libre.</p>
<p>Es por ello que desde hace varias semanas dedico con mi equipo de trabajo una parte de nuestro tiempo a probar -en laboratorio oficial- escenarios de interoperatibilidad en conjunto con una conocida empresa de software. Es una experiencia muy interesante, esencialmente pragmática y que se diferencia mucho de lo que en algún momento hacen o hicieron Robbins, Hilf y Hanrahan.</p>
<p>La experiencia que he tenido en implementaciones híbridas me hace estar seguro del éxito de estos escenarios de interoperatibilidad, y con toda seguridad publicaré algunos de estos resultados. En la medida en que se avalen los resultados se podrá incrementar la adopción de FLOSS en las instituciones de cualquier tipo. Son pequeños pasos que cuentan.</p>
<p>Estoy seguro de que -con los valores y expectativas bien fijadas- este tipo de actividades benefician al desarrollo del FLOSS.</p>
<p>Es un gusto saber, por ejemplo, que bajo actividades de este tipo la gente del Proyecto Samba puede tener un <a href="http://people.samba.org/people/2009/10/05#drs-success">controlador de dominio de confianza en redes híbridas</a> o que gracias a un reporte de error se fuerza a una corporación trasnacional a <a href="http://lists.samba.org/archive/samba-technical/2009-January/062827.html">cambiar algo para admitir la interoperatibilidad</a>.</p>
<p>Viendo en retrospectiva aquella actividad del 2003 me alegro de formar parte de un movimiento tan grande de gente interesada en desarrollar su conocimiento y compartirlo con los demás. Estoy seguro de que es la vía.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=579</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bandas de operación del OpenMoko Neo Freerunner</title>
		<link>http://blog.bureado.com.ve/?p=560</link>
		<comments>http://blog.bureado.com.ve/?p=560#comments</comments>
		<pubDate>Wed, 03 Jun 2009 17:29:24 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[gsm]]></category>
		<category><![CDATA[openmoko]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=560</guid>
		<description><![CDATA[En Diciembre 2008 estaba haciendo una prueba por curiosidad para saber si el OpenMoko Neo Freerunner tenía capacidad de operar en varias bandas o sólo se trataba de las bandas en las que se comercializaba. En ese momento tenía al Freerunner operando con la imagen ASU 2008.8 y estaba etiquetado para 800/1800/1900 MHz., por lo [...]]]></description>
			<content:encoded><![CDATA[<p>En Diciembre 2008 estaba haciendo una prueba por curiosidad para saber si el OpenMoko Neo Freerunner tenía capacidad de operar en varias bandas o sólo se trataba de las bandas en las que se comercializaba. En ese momento tenía al Freerunner operando con la imagen ASU 2008.8 y estaba etiquetado para 800/1800/1900 MHz., por lo que me extrañaba que funcionara en Digitel en Venezuela a 900 MHz.</p>
<p>En este sistema operativo los desarrolladores usaron el stack de telefonía de Qtopia (¡uno que sí funciona, aunque ahora está descontinuado!) por lo que ya no se usa <tt>gsmd</tt>. Eso complica un poco la consulta de la banda en la que opera el teléfono.</p>
<p>El dispositivo <tt>/dev/ttySAC0</tt> es el módem GSM, que está en uso por parte de <tt>qpe</tt>, el demonio de telefonía de Qtopia. Por lo tanto, hay que matar <tt>qtopia</tt> y evitar reiniciarlo por <tt>illume</tt>, la GUI de ASU (Enlightenment)</p>
<p>Con esto se libera el dispositivo <tt>/dev/ttySAC0</tt>. Por otro lado, hay que desactivar el control de flujo por hardware para interactuar por la consola con el dispositivo:</p>
<pre>
  stty -F /dev/ttySAC0 -crtscts
</pre>
<p>Yo utilicé <tt>cu</tt> para conectarme con el módem, pero pudimos hacerlo con <tt>socat</tt> o con <tt>minicom</tt>. Revisando la tabla de comandos AT que puedo pasarle al dispositivo para consultar el status, mandé:</p>
<pre>
  AT%EM=2,1
</pre>
<p>que corresponde a &#8220;Serving Cell Information&#8221;, el resultado fue:</p>
<pre>
%EM: 119,26,26,32,32,512,18,1,1,0,0,0,0,0,0,3005,0,0,2,255
</pre>
<p>siendo el primer campo devuelto (valor: 119) el canal de operación del teléfono con la red GSM con la que está asociada mi chip (Digitel, 734-02 en Venezuela)</p>
<p>Segun las tablas de la especificación GSM, a partir de este valor se puede calcular la frecuencia en la que opera el dispositivo, y más aun la banda de la misma. La tabla indica:</p>
<pre>
if 172 < arfcn <  252 then freq = 869 + (arfcn -127) x 0.2 MHz    # 850 band
if 511 < arfcn <  811 then freq = 1930 + (arfcn - 511) x 0.2 MHz  # 1900 band
if   1 < arfcn <  124 then freq = 935 + (arfcn * 0.2) MHz         # 900 band (original alloc)
if 974 < arfcn < 1023 then freq = 925 + (arfcn - 974) x 0.2 MHz   # 900 band E-GSM
if 511 < arfcn <  886 then freq = 1805 + (arfcn - 511) x 0.2 MHz  # 1800 band
</pre>
<p>Por lo tanto, estando el valor en 119 indica que estoy en la banda de 900 MHz., en particular en la frecuencia 958.8 MHz. Quise confirmar, sin embargo y envié el comando:</p>
<pre>
  AT%EM=2,3
</pre>
<p>este comando me arroja la misma información anterior pero con un máximo de seis celdas adyacentes. En mi caso sólo detecta cinco, y los valores para los canales que me arroja son:</p>
<pre>
  124,114,121,116,117,0
</pre>
<p>todos estos valores están dentro del conjunto de los números naturales entre 1 y 124 inclusive, por lo tanto las celdas adyacentes también están operando en 900 MHz.</p>
<p>Por si acaso identifiqué la red, para descartar estuviera haciendo roaming en otra red con un chip de Digitel. <tt>AT%EM=2,4</tt> arroja:</p>
<pre>
  %EM: 3,40,734,002,95147409
</pre>
<p>Donde se aprecia el MCC 734 y el MNC 02, correspondientes a la red original de Digitel en la región Central y Capital.</p>
<p>Sin embargo estuve consultando datasheets de otros proveedores ya que me parecía muy 'oscuro' el mecanismo para obtener los valores, así que viendo la lista de comandos disponibles con <tt>AT+CLAC</tt> encontré:</p>
<pre>
  AT@BAND
</pre>
<p>que simplemente arroja:</p>
<pre>
  GSM 900
</pre>
<p>Resuelta esta duda, y como curiosidad, los valores que arroja el comando AT también me indican que estoy a menos de 550 metros de la base, lo cual es bastante correcto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=560</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobre los mensajes de error no permanente en listas grises</title>
		<link>http://blog.bureado.com.ve/?p=558</link>
		<comments>http://blog.bureado.com.ve/?p=558#comments</comments>
		<pubDate>Thu, 07 May 2009 19:26:19 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[ASLE/PLEC]]></category>
		<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[antispam]]></category>
		<category><![CDATA[correo]]></category>
		<category><![CDATA[greylist]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[uce]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=558</guid>
		<description><![CDATA[Por favor no uses /grey/i en tus mensajes de error no permanente para rechazar correos por listas grises. Hace ya algún tiempo se convirtió en un vector claro de ataque, eliminando la efectividad de la lista gris. Un mensaje en castellano si tu organización sólo maneja clientes en castellano podría ayudar, pero probablemente lo mejor [...]]]></description>
			<content:encoded><![CDATA[<p>Por favor no uses <tt>/grey/i</tt> en tus mensajes de error no permanente para rechazar correos por listas grises. Hace ya algún tiempo se convirtió en un vector claro de ataque, eliminando la efectividad de la lista gris. Un mensaje en castellano si tu organización sólo maneja clientes en castellano podría ayudar, pero probablemente lo mejor sea algo como:</p>
<pre>
  System's busy, try again later or contact postmaster@fqdn
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=558</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OMFG 102144</title>
		<link>http://blog.bureado.com.ve/?p=511</link>
		<comments>http://blog.bureado.com.ve/?p=511#comments</comments>
		<pubDate>Sat, 27 Dec 2008 16:37:00 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[canaima]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[no comments]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=511</guid>
		<description><![CDATA[102144 cumplió siete años en Junio 2008, cuando fue responsable de que las versiones iniciales de Canaima GNU/Linux 2.0 fallaran una prueba funcional con sistemas de archivos separados. Hay un parche publicado en los reportes de error, y de hecho Canaima utiliza su propia versión parcheada de dpkg con el parche, probada por miles de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=102144">102144</a> cumplió siete años en Junio 2008, cuando fue responsable de que las versiones iniciales de <a href="http://canaima.proyectos.onuva.com/">Canaima GNU/Linux 2.0</a> fallaran una prueba funcional con sistemas de archivos separados. Hay un parche publicado en los reportes de error, y de hecho <a href="http://www.ohloh.net/p/canaima-gnu-linux">Canaima</a> utiliza su propia versión parcheada de <tt>dpkg</tt> con el parche, probada por miles de usuarios a nivel nacional. Yet, el bug sigue <tt>pending</tt>. Sigh.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=511</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usar una tarjeta inteligente como factor adicional de autenticación en GnuPG</title>
		<link>http://blog.bureado.com.ve/?p=526</link>
		<comments>http://blog.bureado.com.ve/?p=526#comments</comments>
		<pubDate>Sat, 27 Dec 2008 16:31:42 +0000</pubDate>
		<dc:creator>bureado</dc:creator>
				<category><![CDATA[Planeta Debian]]></category>
		<category><![CDATA[Planeta Linux Venezuela]]></category>
		<category><![CDATA[Planeta Ubuntu Venezuela]]></category>
		<category><![CDATA[gnupg]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[smartcards]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://blog.bureado.com.ve/?p=526</guid>
		<description><![CDATA[Desde DC8 tengo un lector USB de tarjetas inteligentes y una tarjeta inteligente preprogramada para ser utilizada en GnuPG que he estado utilizando principalmente para investigar el impacto de tener un factor adicional de autenticación en GnuPG. En principio, no se trata de un mecanismo asequible para el usuario final a través de las interfaces [...]]]></description>
			<content:encoded><![CDATA[<p>Desde DC8 tengo un lector USB de tarjetas inteligentes y una <a href="http://www.g10code.com/p-card.html">tarjeta inteligente preprogramada para ser utilizada en GnuPG</a> que he estado utilizando principalmente para investigar el impacto de tener un factor adicional de autenticación en GnuPG.</p>
<p>En principio, no se trata de un mecanismo asequible para el usuario final a través de las interfaces gráficas que están disponibles en el mercado para Linux, sobre todo si se quiere aprovechar en términos de seguridad el tener un segundo factor de autenticación. Esto es una lástima. El lector de tarjetas, sin embargo, sí puede usarse para otras cosas interesantes.</p>
<p>Supongamos que tiene una llave GPG. En este momento no importa mucho si la llave ha sido utilizada para algo útil, aunque esto tendrá algunas repercusiones en la usabilidad del factor adicional a futuro.</p>
<p>Su llave GPG tiene una subclave principal de cifrado, probablemente creada utilizando ElGamal y probablemente con una longitud de 2048 bits.</p>
<p>El objetivo de utilizar una tarjeta inteligente es eliminar la llave secreta y la subclave principal de cifrado de su llave GPG y sustituirla por tres llaves en la tarjeta inteligente que son utilizadas para cifrar, firmar y autenticar. Estas llaves se crean usando RSA y tienen una longitud de 1024 bits. Para acceder a las llaves necesita introducir un código de identificación denominado PIN. Al eliminar estos dos elementos de la llave, se fuerza a cualquier atacante a tener la tarjeta inteligente y el PIN para ejecutar cualquier acción que comprometa la llave.</p>
<p>Obviamente, el estado de su llave GPG antes de hacer este cambio puede (y debe) ser guardado en un dispositivo de almacenamiento externo que se resguarde físicamente de forma segura. Así podrá tener acceso a la llave secreta principal y a la subclave principal de cifrado en caso de algún problema. Esto lo puede hacer a nivel del sistema de archivos respaldando su directorio <tt>.gnupg</tt> o bien a nivel de la aplicación utilizando <tt>--export-keys</tt> y <tt>--export-secret-keys</tt>.</p>
<p>Otro aspecto importante a tener en cuenta es el mecanismo que utilizará para acceder a la tarjeta inteligente. Puede usar PC/SC a través del demonio <tt>pcscd</tt>, o puede usar CCID directamente de acuerdo a la implementación de GnuPG. Para usar la tarjeta con el segundo mecanismo necesita privilegios de administrador o configurar udev para otorgar permisologías a un usuario o grupo en particular.</p>
<p>En cualquier momento puede usar <tt>gpg --card-status</tt> para verificar no solo que el lector y la tarjeta funcionan, sino que la lógica de la tarjeta arroja datos con sentido. También puede usar <tt>gpg --card-edit</tt> para agregar información adicional de contexto, además de configurar el PIN de la tarjeta. Hay dos PIN, uno de uso cotidiano y uno administrativo. Asegúrese de estar consciente de cual PIN se le solicita para evitar bloquear la tarjeta.</p>
<p>Una vez que tenga todo listo, utilice <tt>gpg --edit-key LLAVE</tt> para editar su llave GPG, y el comando <tt>addcardkey</tt> para añadir las tres subclaves en la tarjeta inteligente. El orden en que debe seleccionar las claves es: <strong>autenticación</strong>, <strong>firma</strong> y <strong>cifrado</strong>, ya que GnuPG seleccionará automáticamente la última subclave creada para cifrar.</p>
<p>Guarde los cambios y seleccione la subclave principal de cifrado utilizando <tt>key 1</tt>. En este punto debe haber hecho los respaldos y creado las tres subclaves en la tarjeta inteligente. Ahora está listo para eliminar la subclave principal de cifrado de su llave GPG utilizando <tt>delkey</tt> y guardar los cambios en la misma. Con esto remueve una parte del material sensible de su llave GPG.</p>
<p>El siguiente es un procedimiento un poco extraño. Ya ha borrado la subclave principal de cifrado. Ahora quiere borrar la llave secreta de su llave GPG. Y en ambos casos quiere borrar solo la porción secreta, no la pública. La opción <tt>--delete-secret-keys</tt> de GnuPG eliminará las claves y subclaves secretas, por lo que primero debe respaldar las subclaves:</p>
<p><tt>gpg --export-secret-subkeys LLAVE &gt; sub.secring</tt></p>
<p>luego debe eliminar las claves y subclaves secretas:</p>
<p><tt>gpg --delete-secret-keys LLAVE</tt></p>
<p>y luego debe importar las subclaves secretas:</p>
<p><tt>gpg --import &lt; sub.secring</tt></p>
<p>Anteriormente dijimos que el objetivo era borrar de la llave el material secreto, y no las porciones públicas, por lo que debe importar las porciones públicas de las subclaves, siendo la forma más sencilla importar todo el keyring público del respaldo que haya realizado</p>
<p><tt>gpg --import &lt; pubring.backup</tt></p>
<p>El momento de la verdad es cuando sube a un servidor de llaves públicas su llave pública incluyendo las nuevas subclaves. De hecho, el gran problema en la usabilidad de este mecanismo es que las subclaves anteriores no desaparecen de la memoria colectiva y usted depende de que todas las personas que tengan su llave pública descarguen la nueva desde los servidores, de otra forma, continuará recibiendo material cifrado usando la subclave pública anterior. Por eso recomiendo que <em>sólo utilice este modelo de seguridad con dos factores con llaves nuevas y desde el principio</em>.</p>
<p>Aparte del cliente de GnuPG en consola, también utilizo la extensión Enigmail para Mozilla Thunderbird, y ésta es lo suficientemente inteligente como para pedirme el PIN de la tarjeta inteligente para las operaciones de firma y cifrado que realizo a futuro con la tarjeta inteligente en el lector. Así mismo, necesito la tarjeta y el PIN para descifrar cualquier material sensible que hayan enviado firmado a mi subclave. Este es el nivel de funcionalidad esperado.</p>
<p>Como nota final, puede regenerar las subclaves de firma, autenticación y cifrado en la tarjeta. Sin embargo, mi experiencia personal con la tarjeta g10 es que debe utilizar el protocolo ccid nativo de GnuPG para acceder a la tarjeta. Para esto hay que tener privilegios sobre el dispositivo, por lo que hay un <a href="http://www.fsfe.org/en/content/download/17665/125518/file/gnupg-ccid.rules">conjunto de reglas de udev</a> disponibles para configurar los permisos a un grupo adicional.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bureado.com.ve/?feed=rss2&amp;p=526</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
