¿Cómo surgió el nombre de Java? (la verdadera historia)

He leído libros que cuentan cosas diferentes sobre porqué llamaron Java al lenguaje, pero ahora James Gosling, el creador de Java, nos dice la verdad en un mail que le envía a Jonathan Schwartz (CEO de Sun Microsystems).

Pueden verlo aqui en el blog de Jonathan Schwartz y lo copio y pego en la parte de abajo:

De: James Gosling
Fecha: 24 de agosto de 2007 20:16:58 AM PDT
A: Jonathan Schwartz
Asunto: ¿Cómo surgió el nombre de Java?

La historia es la siguiente:

Necesitábamos un nombre. Habíamos estado utilizando la palabra “oak” (roble), que yo había elegido totalmente al azar. Sin embargo, aunque el equipo ya le había cogido cariño, los abogados especialistas en marcas comerciales la rechazaron. Mantuvimos numerosos debates por correo electrónico acerca del nombre, pero no llegamos a ningún acuerdo. Acabamos en una situación muy curiosa: el principal obstáculo para la distribución del producto era el nombre.

(más…)

Autoridades Certificadoras (Certificados de Seguridad)

Como vimos anteriormente la criptografía asimétrica necesita de cuatro llaves para ser segura, pero siempre podemos dudar de que alguien no es quien dice ser. Para aumentar la seguridad se recurre a certificados de seguridad, los clásicos son VeriSign y Geotrust, que para mi punto de vista son muy caros, pero a veces la seguridad cuesta.

¿Cómo funcionan?

Las conexiones seguras en internet se hacen comúnmente usando el protocolo SSL. Cuando nos conectamos a un sitio seguro, leemos https:// en la barra de direcciones, en ocasiones vemos que sale en color amarillo y hasta aparece un candado. ¿Qué seguridad nos están brindando?, lo veremos a continuación:

Cuando inicias una conexión con un servidor, mediante SSL, se transmite la llave pública del servidor, luego tú también mandas tu llave pública, entonces de manera segura, se ponen de acuerdo para usar un sistema de cifrado simétrico; pero antes de establecer la conexión tú necesitas saber que el servidor pertenece realmente a la empresa que dice ser. Aquí entran las Autoridades Certificadoras, que lo único que hacen es dar de alta al servidor en GeoTrust, éstos a su vez mediante un estudio corroboran la identidad del servidor y, después de estar seguros, le otorgan un certificado de seguridad.

Un certificado de seguridad contiene los datos de la empresa y la llave pública del servidor, además está firmado digitalmente por la Autoridad Certificadora. Como los browsers tienen interconstruidas las llaves públicas de varias Autoridades Certificadoras, pueden revisar la firma digital del certificado, y así corroborar la identidad del servidor.

La firma digital de un certificado es simplemente el hash del certificado, que a su vez está encriptado con la llave privada de la Autoridad Certificadora. Para verificar que la firma es correcta y el certificado es válido, lo que se hace es descrifrar el hash del certificado, usando la llave pública de la Autoridad Certificadora; luego el hash desencriptado se compara con el hash del certificado. El proceso verifica implícitamente que: la Autoridad Certificadora en verdad firmó ese certificado, y que el certificado no ha sido alterado; por lo que se puede confiar plenamente en ese servidor para darle nuestro número de tarjeta de crédito, por ejemplo.

¿Pero realmente ésto nos brinda total seguridad?

Pues no, a pesar de todo el servidor nunca sabrá que quien se conecta a él es quien dice ser; pero definitivamente es mucho más seguro usar el certificado de seguridad que no usarlo.

La criptografía asimétrica (que usamos a medias)

La criptografía asimétrica, como ya hemos hablado en el blog, es la que necesita de dos llaves diferentes, una pública y otra privada. Se basa prácticamente que lo que encriptamos con la privada se desencripta con la pública y lo que encriptamos con la pública se desencripta con la privada, aunque en el primer caso cualquiera puede descencriptar el mensaje, pues la llave pública está a la vista de todos.

Pero realmente ¿Cómo se se supone que se debería usar?

La idea de la criptografía asimétrica es que ambos lados tengan un par de llaves, o sea, ejemplificándolo debería ser así:

Criptografía Asimetrica

Imaginemos que se va a enviar un mensaje, entonces primero la computadora A encripta el mensaje con su llave privada, y después lo encripta con la pública de la computadora B, luego le manda el mensaje; y, cuando la computadora B recibe dicho mensaje, lo desencripta con su llave privada primero (lo cual asegura que él es el destinatario correcto) y el resultado luego lo desencripta con la llave pública del emisor (lo cual asegura que el único que la pudo haber encriptado fué el emisor que nosotros conocemos). Todo esto suponiendo que las computadoras conocen la verdadera llave pública del otro.

De esa manera si alguien intercepta la comunicación no podrá obtener su contenido, y estamos seguros que tanto el emisor como el receptor son quienes dicen ser.

Ahora veamos cómo lo usamos cotidianamente

En el protocolo SSL, por ejemplo, el servidor le manda su llave pública al cliente y el cliente manda su llave pública al servidor, con ellas se ponen de acuerdo para usar algún sistema de criptografía simétrica y la llave que van a usar en él; así se logra que la comunicación de ahora en adelante esté cifrada con una sola llave, y se resuelve el problema que presenta la criptografía simétrica cuando no se sabe si el medio de transmisión es seguro.

¿Por qué no usamos criptografía asimétrica en toda la comunicación? Principalmente porque es muy tardado el proceso de crifrar y descrifrar algo con las llaves públicas y privadas, mientras que los algoritmos de criptografía simétrica son más rápidos.

Ahora ¿Cómo sabemos que el servidor realmente es el servidor con el que nosotros queremos comunicarnos?, ésto no lo podemos saber mediante más criptografía. Lo que se hace para resolver el problema es que se usa un tercero confiable (Autoridad Certificadora) que nos asegura que realmente alguien es quien dice ser; y, ¿cómo funciona una autoridad certificadora? lo veremos después en otro post.

Internet Explorer para Linux

iE4Linux

Si tenemos linux y queremos entrar a una página de un banco como Banamex, esto representa problemas; primero porque por alguna razón no detecta bien la versión del netscape para linux, pues seguramente no hacen bien el proceso de validación para el browser, pero en fin. El problema es que muchas páginas piensan que todo el mundo usa Internet Explorer y aunque alguna vez fue cierto, hoy en día no lo es (y que bueno que no lo es).

Tatanka nos trae una versión del Internet Explorer que corre sobre Wine. Para quienes no lo sepan, Wine es un emulador de Windows en Linux. Corre bastante bien, y para mi punto de vista está perfecto. Pueden descargarlo siguiendo unas instrucciones en la terminal. Aunque la verdad es sólo copiar, pegar y listo, tienes Internet Explorer en linux.

iE4LinuxGde

Firmas Digitales

waxseal.jpg

Imagínese la siguiente situación: usted recibe una carta del gobierno ruso en donde se le informa que un familiar muy lejano ha muerto y nadie ha reclamado sus restos; le informan que ellos saben que usted es su familiar más cercano, por lo que si usted quisiera podría mandar el dinero necesario para darle un entierro digno.

(más…)

Alucinante escalamiento de imágenes

sierpinski-powerball.png

Si creían que Photoshop ya era la octava maravilla, quizá ahora lo sea aún más pues Adobe ha contratado a un colaborador de una nueva investigación sobre escalamiento de imágenes ALUCINANTE: el Dr. Shai Avidan.

El algoritmo fue presentado en la SIGGRAPH 2007 por dos Doctores israelíes en Ciencias de la Computación: Ariel Shamir y Shai Avidan.

Lo que logra este algoritmo es el escalamiento de imágenes con la mínima pérdida de calidad en las regiones más relevantes, detectando éstas de manera automática en un mapa y con la posibilidad de definirlas manualmente. Aquí pueden ver un video con una muestra de su trabajo (vale la pena verlo todo):

(más…)