Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización: 30 de Septiembre de 1.999 - Jueves
Registro y Modificación de Nicks
La política de ESNET de cara al registro de nicks es la siguiente:
Todo los registros y modificaciones de nicks se realizan a través de una interfaz web. En todos los casos el sistema enviará al usuario un mensaje electrónico a su buzón informándole de la operación efectuada. El mensaje contiene una cadena codificada que el usuario debe copiar en el formulario web para hacer efectivos los cambios.
El usuario introduce el nick a registrar y su dirección de email. El sistema comprueba que el nick en cuestión no esté ya registrado y que el email pertenezca a un dominio reconocido como válido. Si es el caso, el sistema imprimirá en pantalla un mensaje de "registro en progreso".
Unos minutos más tarde el usuario recibirá en su buzón un mensaje confirmándole el registro y proporcionándole una clave. Ese mensaje contendrá una cadena cifrada que el usuario debe introducir en la página web para confirmar el registro y hacerlo efectivo.
Si el usuario sospecha que su clave ha podido ser comprometida o quiere cambiarla con seguridad, lo puede solicitar introduciendo como datos su nick y su clave actual. El sistema valida esos datos. Si son correctos imprimirá en pantalla un mensaje de "Su clave nueva le será remitida por correo electrónico en unos minutos".
En el mensaje se le indicará la nueva clave y una cadena cifrada que debe introducir en el web para hacer el cambio de forma efectiva.
Si el usuario va a cambiar de dirección de correo debe indicarlo al sistema, para que éste pueda localizarlo. Para poder cambiar el email el sistema solicita el nick, la clave y la nueva dirección de correo.
El sistema enviará un mensaje a la dirección antigua conteniendo una cadena que el usuario debe introducir en la página web para activar los cambios.
Los nicks pueden darse de baja por inactividad, pero si el usuario, por ejemplo, quiere registrar un nuevo nick, tendrá que dar de baja primero el antiguo. Para ello introduce su nick antiguo y su clave.
El sistema enviará por correo un mensaje al usuario, conteniendo una cadena que debe introducir en el servidor web para procesar la baja definitivamente.
Un usuario puede solicitar al sistema toda la información que éste tenga sobre él. Para ello el usuario introduce su nick y su clave.
El sistema enviará a la dirección de correo electrónico registrada para ese nick, al menos, la siguiente información:
Para prevenir que una clave capturada sea utilizada para realizar "mailbombing", el sistema impondrá un retardo mínimo de 15 minutos entre peticiones, lo que supone un máximo de 96 mensajes cada 24horas, por cada nick.
Dado que el Nick está protegido con una clave personal, es necesario indicar dicha clave cuando se desee utilizar. Para ello existen dos posibilidades:
El comando "nick", ahora, admite dos parámetros. El primero de ellos es el nick a utilizar, como siempre. El segundo parámetro, opcional, es la clave.
Algunos clientes de IRC (por ejemplo,el mIRC) sólo transmiten al servidor el primero de los parámetros. Aunque pongamos la clave, entonces, no se nos permitirá utilizar ese nick porque el servidor no llega a verla nunca. Es preciso enviar al servidor el comando sin la manipulación previa de nuestro cliente. Dependiendo de nuestro programa o script, los pasos a seguir son diferentes:
/quote nick <tu_nick> <tu_passwd>
Con esto el nick será autenticado por el server.
También se puede crear y/o añadir al fichero $HOME/.bitchxrc el comando anterior para más comodidad, pero por cuestiones de seguridad y que nadie pueda leerse el fichero .bitchxrc, no se recomienda.
--- BitchX/source/parse.c Fri Feb 26 20:01:55 1999 +++ BitchX-fixed/source/parse.c Tue May 25 18:27:32 1999 @@ -1686,7 +1686,7 @@ { "LIST", NULL, NULL, 0, 0, 0}, { "MODE", p_mode, NULL, 0, 0, 0}, { "NAMES", NULL, NULL, 0, 0, 0}, -{ "NICK", p_nick, NULL, PROTO_NOQUOTE, 0, 0}, +{ "NICK", p_nick, NULL, 0, 0, 0}, { "NOTICE", parse_notice, NULL, 0, 0, 0}, { "OPER", NULL, NULL, 0, 0, 0}, { "PART", p_part, NULL, PROTO_DEPREC, 0, 0},
#!/usr/bin/perl -w # Script de autentificación para el irc-hispano.org # Cliente IRC X-Chat versiones 0.X, 1.0.X, 1.1.X # Fichero: $HOME/.xchat/auth-hispano.pl $mi_nick = "minick"; $mi_password = "mipassword"; IRC::add_message_handler("433", "auth_handler"); sub auth_handler { IRC::send_raw "NICK $mi_nick $mi_password\n"; return 1; }
La mayoría de los clientes de IRC pemiten especificar una clave para cada una de nuestras conexiones habituales. Normalmente se trata de un campo poco utilizado, ya que hay pocas redes que exijan una clave de conexión. En ESNET se emplean estas claves para autentificar un NICK. Es decir, si ponemos la clave correcta en ese campo de configuración, no tendremos que poner ninguna clave al usar el comando "nick".
Los pasos a seguir dependen de cada cliente:
/server <servidor> [puerto] [password]
El esquema propuesto de registro de nicks tiene las siguientes ventajas:
Estos problemas fueron los que motivaron el diseño atípico de ESNET, perfilado en el Libro Blanco de IRC ESNET y definido en Fase 2: Despliegue de la Gestión Distribuída. El sistema de Base de Datos Distribuída implementada para el registro de nicks evita estos problemas asegurándose de que cada nodo verifica los nicks de forma local.
El hecho de difundir entre todos los nodos de la red una base de datos conteniendo nicks y claves supone, no obstante, un riesgo de seguridad importante. El sistema se ha diseñado teniendo en cuenta la posibilidad, en realidad certeza, de que la Base de Datos acabará siendo de dominio público. Se dan algunos principios en Fase 2: Despliegue de la Gestión Distribuída.
Los principios generales son:
Para cumplir "4", el modo de uso del algoritmo de cifrado será CBC (Cipher Block Chaining), usando como clave la clave del usuario, y como texto a cifrar su propio nick. De esta forma el atacante sólo dispone de un único ataque "known plaintext", y no puede comparar el texto cifrado simultaneamente con varios registros (eliminamos así uno de los problemas de las claves UNIX).
El modo CBC es como sigue:
ci=C(ci-1+pi)
pi=D(ci)+ci-1ci: Bloque cifrado
pi: Bloque sin cifrar
C(): Algoritmo de cifrado
D(): Algoritmo de descifrado
"+": Operación XOR
Para poder cumplir "3" las claves deben tener, al menos, 64 bits de entropía.
Se ha elegido el algoritmo TEA (Tiny Encryption Algorithm) por cumplir las siguientes características:
La implementación concreta del registro de nicks es la siguiente:
64 bits son más que suficientes para los criterios de seguridad de una red de IRC (sale más barato secuestrarte y sacarte la clave a base de torturas y mutilaciones };-). La expansión interna 64->128 bits mediante ceros es sencilla y permite optimizar la rutina TEA sin comprometer la seguridad del esquema.
Por tanto en la Base de Datos sólo se guarda una especie de Hash dependiente del nick y de la clave. El nick es conocido por un posible atacante, pero la clave no. El hacer que el Hash dependa tanto del nick como de la clave es para evitar poder verificar claves en paralelo, como ocurre con el esquema utilizado en la claves UNIX. De esta forma, aún usando la misma clave, dos nicks distintos tendrán Hashes distintos.
Al contrario que otras redes de IRC, en ESNET hablas directamente con tu servidor de IRC, no con un bot situado en un punto remoto y sujeto a caídas y splits. Por tanto nadie puede ponerse un nick equívoco para capturar claves. Tu clave está segura.
Aunque puede no ser tu caso, los usuarios suelen elegir sus claves con muy mal criterio, siendo muy previsibles. Haciendo que sea la red quien genere la clave de forma aleatoria evitamos que un atacante pueda averiguar una clave simplemente probando un diccionario.
En realidad no necesitas recordarla; puedes hacerte un script que la utilice o introducir la clave en el campo "password" de tu cliente de IRC. Una clave de 12 caracteres hace imposible casi cualquier ataque. Resulta preferible tener apuntada tu clave en la cartera que utilizar claves más sencillas y previsibles.
Un usuario al que se le haya capturado la clave está sujeto a un "mailbombing" muy sencillo, ya que el atacante sólo debe introducir esos datos y solicitar, por ejemplo, un listado de datos. Los datos los recibe el propietario del nick en su buzón. Si no se impone ninguna restricción en cuanto a velocidad o tiempo entre operaciones, un usuario poco cuidadoso con su clave puede encontrarse un día con un buzón de correo enorme.
Dado que la modificación de los datos de un nick, una vez registrado, es una operación muy infrecuente, nos ha parecido que limitar el número de operaciones que se pueden hacer por unidad de tiempo era la mejor opción.
En principio sencillamente no es posible que alguien utilice tu nick, si mantienes tu clave a buen recaudo :-).
Hay cuatro formas básicas de detectar la ursurpación de un nick:
Debes verificar, mediante whois, que no se trate de un clon tuyo que se ha quedado a la espera de descolgarse con un "ping timeout", debido a una caída por tu parte.
Si esa persona habla con alguien que está usando tu nick, es conveniente que tome buena nota de su IP.
Registros en canales, por ejemplo.
Sin duda la forma má sencilla y fiable.
Recuerda que puede haber nicks similares al tuyo, de grafía ambigua. Por ejemplo, el CERO y la "O" son muy semejantes. Lo mismo para la "I" y la barra vertical "|". Pero, desde el punto de vista del IRC y de ESNET, son nicks diferentes.
Dado que la única forma de que te puedan usar el nick es sabiendo tu clave, y que es tu responsabilidad es protegerla adecuadamente, NO NOS DES LA LATA. Cambia tu clave y protege la nueva mejor que la antigua :-).
Dada la forma en la que se distribuye la Base de Datos, aunque el fichero se haga público no se comprometen seriamente las claves (no se graban las claves, sino un Hash no inversible dependiente de tu nick y tu clave). Por tanto, si alguien tiene la tuya es porque la ha obtenido de algún otro sitio.
La causa más normal de filtración es el empleo poco disciplinado de las claves desde máquinas multiusuario (universidades) o máquinas a las que tienen acceso mucha gente (cibercafés). Como regla general, no emplees nunca tu clave desde un sitio que no sea tu domicilio. Y si no tienes más remedio que hacerlo, haz gala de una sana paranoia y cambia tu clave cuando vuelvas a casa.
La siguiente posibilidad es que estés compartiendo tu disco duro por internet. Si ese es el caso, que te cojan la clave es el menor de tus problemas. También puede ser que tu "script" tenga puertas traseras y te estén pinchando conversaciones, claves, etc. No instales nada que no conozcas al dedillo, y recuerda que en el IRC se puede sobrevivir perfectamente sin scripts. Las sorpresas en este aspecto nunca son agradables.
La última posibilidad es "ingeniería social". La exnovia sabe tu clave, o se la has dicho a un amigo. O te la pregunta alguien en quien confías. Tal vez esas personas no hagan mal uso de ese conocimiento, pero tú no puedes saber si pondrán tanto celo como tú en proteger ese secreto. Recuerda, en definitiva, que tu clave es tuya y nadie más necesita conocerla. ¡¡Ni tu padre!!. Si alguien, incluso un IRCop, te solicita tu clave para poder hacer "pruebas", niégate en redondo. Si alguien te solicita que le envíes un fichero de tu disco duro, y no sabes exactamente qué puede contener, ¡¡Niégate!!.
Pues tienes un problema. ESNET no guarda las claves de ningún usuario, sino sólo un hash no inversible. Osea, que sólo tú conoces tu clave. Si la pierdes...
Protege tu clave como oro en paño, no sólo respecto a otros usuarios sino también contra su pérdida accidental. No te conformes con ponerla en tu programa y nada más, ya que si le pasa algo a tu disco duro y tienes que reinstalar el programa, la perderás.
Pon la clave en el programa, y lleva una copia en tu cartera (por supuesto, no dejes tu cartera a nadie :-). Deja otra copia en un cajón de tu habitación y otra más en casa de tus padres. Si puede ser guarda una quinta copia en la caja de seguridad de algún banco.
Si, a pesar de todo, pierdes la clave... Bueno. Los nicks se dan de baja automáticamente a los dos meses de no ser utilizados. Cuestión de sentarse y esperar...
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS