domingo, 13 de febrero de 2011

OpenSSH

Instalación OpenSSH en 
LinuX



OpenSSH reúne un conjunto de herramientas del protocolo de seguridad Secure Shell (SSH) para la transferencia codificada de información a través de una red.
Contiene aplicaciones como el servicio de SSH, llamado sshd, un cliente, un generador de claves públicas, un agente de autentificación, un registrador de contraseñas, etc.
En la práctica todos estos programas sirven a un mismo propósito: manejar remotamente la consola de comandos del ordenador en el que se haya instalado el servicio SSH. De esta manera, una vez introducido nuestro nombre de usuario y contraseña, accederemos a todas las partes del ordenador permitidas al usuario con el que nos hayamos identificado.
La instalación de todos los componentes se realiza de manera automática, sin embargo, las claves hay que activarlas manualmente con los comandos que aparecen en el manual del programa. Ejecutando el subprograma de creación de clave privada registraremos nuestra contraseña de Windows. Así, los dos sistemas de acceso, vía remota por SSH y vía local con Windows comparten las claves de acceso.
En resumen, OpenSSH nos brinda una manera segura y eficaz de interactuar con nuestro ordenador donde quiera que estemos. Aunque la creación de claves no resulte sencilla a un usuario inexperto, tampoco requiere conocimientos avanzados. De todas formas, recomendamos tener nociones de seguridad informática a quien quiera activar este servicio SSH.


LinuX


Si necesitas conectar a tu maquina remotamente y quieres emplear un protocolo seguro esta es una buena opcion. Para la gente menos experta podriamos decir que SSH es como una conexion mediante telnet pero la informacion viaja de manera encriptada.

Con SSH te validas en el servidor y ya puedes introducir comandos de manera remota y segura. No es lo mismo que por ejemplo ejecutes un comando pasando un usuario y contraseña y esa informacion pueda ser capturada mediante un sniffer y sea facilmente legible, a que lo hagas con un protocolo seguro y aunque no imposible si que al menos es mucho mas dificil de descifrar.
Un buen servidor es “open ssh server“. Para instalarlo ejecuta el siguiente comando:



Y reiniciamos el equipo para que se apliquen los cambios.

Una vez instalado prueba a conectar con tu maquina.

Deberas obtener algo similar a lo siguiente:


Luego nos pide la contraseña del usuario. La primera vez que nos conectemos a un servidor tarda un poco más y nos pide confirmación tecleando "yes" con todas sus letras, las subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto.
Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarán en la máquina a las que nos hayamos conectado, utilizando los recursos del host remoto (CPU, memoria, disco, etc.). Esta arquitectura puede utilizarse, por ejemplo, para tener un servidor más potente y varios clientes que ejecutan aplicaciones en dicha máquina.
Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.

La primera vez que conectas con una maquina nueva a la que no has conectado antes, te aparece el mensaje:


Si aceptas se guarda la entrada de la clave en tu directorio HOME en el directorio .ssh

Las claves se guardan en un fichero denominado “know_hosts”, la proxima vez que conectes con una máquina a la que ya conectaste si su entrada esta en este fichero no te volvera a preguntar.
Una aclaración, si cuando intentas conectar con tu servidor, tuvieras problemas de conexión con tu máquina o de conexión con otra máquina remota, comprueba que no tienes deshabilitado el acceso remoto:
Sistema > Administracion > Ventana de Entrada (Pestaña Remota y Accesibilidad)


Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.
$ export DISPLAY=host_local:0.0

Este mecanismo no se recomienda por motivos de seguridad (el protocolo X11 no se encuentra cifrado) y, además, pueden encontrarse problemas porque cortafuegos intermedios bloqueen ese tráfico (puertos 600x TCP).

Una solución mejor es utilizar un túnel SSH para encapsular el protocolo X11, lo que transmite la información de manera segura y, además, no suele dar problemas con los cortafuegos intermedios.
Para poder ejecutar aplicaciones gráficas en el host remoto de forma segura, necesitamos dos cosas. La primera, que en la configuración del servidor SSH del host remoto (/etc/ssh/sshd_config) se encuentre activada la siguiente opción:
  
           X11Forwarding yes
Para aprovechar esta característica, hemos de conectarnos usando el parámetro -X, lo que exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:

$ ssh -X usuario_remoto@host_remoto
Ahora si ejecutas el programa xclock verás que la ventana sale en tu escritorio: 
 
$ xclock



Evitar que nos pida el password cada vez

Siempre que conectemos a un ordenador remoto con SSH nos va a pedir el password de acceso para asegurarse de que tenemos permisos. Hay una forma de evitar que nos pida el password siempre haciendo que el ordenador remoto confíe en nosotros. Para ello hemos de generar un par de claves DSA que se usarán en la relación de confianza:

Una vez generada la copiamos al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id. Este es un ejemplo del uso con la salida del programa:

$ ssh-copy-id usuario_remoto@192.168.0.1

Now try logging into the machine, with "ssh 
 
'usuario_remoto@192.168.0.1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys
that you weren't expecting.
Imagen:Nota clasica.png Si te da el error No identities found prueba a indicarle la ruta de la clave pública con -i


Imagen:Nota clasica.png Para que funcione correctamente el comando ssh-copy-id el agente tiene que estar activo para la sesión. Si no lo has puesto que lo arranque al inicio como se explica un poco más abajo, tendrás que arrancarlo desde la consola ejecutando ssh-add.

Ahora solo hay que arrancar el agente SSH para que recuerde nuestra contraseña. Nos pregunta la contraseña y ahora ya podemos acceder al ordenador remoto sin tener que escribir el password cada vez.
               $ ssh-add
El agente sólo dura mientras esté activa nuestra consola. O sea que  si la cerramos y la volvemos a abrir ya no está activo el agente y nos  volverá a pedir el password cada vez. Para evitar esto lo que podemos  hacer es añadir el agente a la sesión para que se ejecute cada vez que  se inicie GNOME. Al iniciar saldrá un diálogo que nos preguntará por la  contraseña. 

Cómo nota


Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo /home/[nuestro_usuario]/.ssh/known_host una entrada para esa IP.

Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo known_host, en caso de variar supone que el ordenador es distinto -por ejemplo, porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP-. Ese es el error man-in-the-middle y significa: "el ordenador cuya IP es esa, no es el mismo que yo conocía.

Puede ser que alguien se esté haciendo pasar por él" y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo known_host.

Video explicativo (INGLÉS): http://www.youtube.com/watch?v=d1u6TnN3YEw









miércoles, 9 de febrero de 2011

Caso Práctico 8

Definir Listas de control de acceso en Ubuntu para restringir el acceso a los archivos

En primer lugar, para poder hacer uso de las listas de control de acceso debemos comunicarle al sistema en qué particiones vamos a querer usarlas. Para ello, necesitamos configurar el archivo o fichero  /etc/fstab.

Nos mostrará el siguiente contenido:


Los sistemas de ficheros montados con ACL, tendrán la palabra clave << acl >> en las opciones de montaje de dicho fichero.

Todo esto se realiza en el fichero mostrado en la imagen superior.

A continuación, vamos a proceder a montar una partición nuevamente:



Para realizar el ejemplo, root (miguel) ha creado un fichero llamado prueba:



A continuación, mediante la orden o comando getfacl, vamos a ver la información que almacena la lista de control de acceso del fichero prueba y del directorio actual.


Nos informa del nombre del fichero, del propietario, del grupo y lo que más nos interesa, los permisos del propietario (user::rw-), del grupo (group::r--) y del mundo (other::r--). Lo mismo para el directorio actual:


A continuación, vamos a darle permisos a "Miguel1", para que pueda leer y modificar el fichero prueba. Para ello, debemos utilizar el comando setfacl con la opción "-m" que nos permite modificar la ACL, y por último, comprobamos que se ha realizado la modificación solicitada:


Caso Práctico 9

Definir listas de control de acceso en Windows utilizando el comando cacls para evitar el acceso a los ficheros a usuarios no autorizados

En primer lugar, deberemos tener  creado almenos 2 usuarios: Usuario1 y Usuario2.

Para ello, accedemos a Panel De Control - Cuentas de Usuarios:

Y escogemos la opción:


Y crearemos los user: Usuario1 y Usuario2

Posteriormente, en la carpeta Mis Documentos del Usuario1, crearemos otro dos directorios: Confidencial y Datos Compartidos.

Por lo cual, iniciamos sesión con el Usuario1, como se muestra en la imagen:

E iniciaremos sesión:


Y creamos los dos directorios llamados Confidencial y Datos Compartidos sobre el directorio Mis Documentos:


El Usuario1 quiere permitir que Usuario2 pueda leer documentos que hay almacenados en Datos Compartidos. En estos momentos eso es imposible, debido a que el Usuario2 no tiene permisos para acceder a Datos Compartidos.

¿Qué podemos hacer? Modificar la lista de control de acceso para permitirle entrar a la carpeta Datos Compartidos. Además, debemos permitir el acceso a la carpeta Usuario1 de Documents and Settings y al directorio Mis Documentos.

Para realizarlo, debemos ejecutar la instrucción cacls, cuya sintaxis es:

               Cacls fichero   /parámetros

Los parámetros son los siguientes:

  • /t.- Cambia las ACLS de los archivos especificados en el directorio actual y en todos sus subdirectorios.
  • /e.- Modifica la ACL en vez de reemplazarla. Este parámetro es muy importante, supongamos que queremos darle permisos al Usuario2 y no utilizamos este modificador; entonces se reemplaza la ACL antigua por la nueva, no permitiendo al Usuario1 acceder a su información.
  • /c.- Fuerza la modificación aunque encuentre errores.
  • /g usuario:permisos; R (lectura); E (escritura); C (cambiar), y F (control total).-
         Concede derechos de acceso al usuario.
  • /R usuario.- Suspende los derechos al usuario.
  • /p usuario:perm.-Sustituye los derechos del usuario especificado.
  • /d usuario.- Deniega el acceso al usuario especificado.

La instrucción cacls permite modificar las listas de control de acceso a los ficheros.




Según la sixtasis anterior, debemos ejecutar el comando que aparece a continuación:

Y nos aparecerá un resultado como el siguiente:


El resultado es que el Usuario2 puede entrar a todos los directorios y ficheros que cuelguen del directorio Usuario1, o lo que es lo mismo, puede visualizar cualquier documento de dicho usuario.

Como toda la información del Usuario1 esdtá almacenada en dos carpetas, Confidencial y Datos Compartidos, para que no tenga acceso el Usuario2 al directorio Confidencial del Usuario1, debemos ejecutar la siguiente orden:


Y nos aparecerá un mensaje indicado que todo ha salido correctamente:


Por último señalar que si fallamos en alguna orden al teclear la línea de comandos, nos aparecerá la siguiente imagen dónde nos especifica  los parámetros y su función principal:


FIN

martes, 25 de enero de 2011

Acceso a contraseña del root GNU/Linux

Acceder a la contraseña del Root
mediante el GRUB



Es probable que alguna vez necesitemos acceder a un sistema Linux sin saber la contraseña del usuario del sistema (que algunas veces puede ser el administrador), para estos casos y cuando el Grub no está protegido podemos realizar el proceso que se describe a continuación:

1. Arrancamos la máquina y esperamos a que se nos muestre el menú de arranque:


2. Elegimos el kernel con el que queremos arrancar y oprimimos la tecla e encima de la opción (eso sería edit), aparece la siguiente pantalla:

     
3. Nos posicionamos sobre la entrada del kernel tal y como se muestra en la figura anterior y de nuevo oprimimos e (de nuevo editar).

4. Escribimos al final rw init=/bin/bash (esto es Directo a la consola).
Nota: el símbolo de igualdad = puede sacarse con el código ascii Alt + 61.


5. Damos enter y luego en el menú anterior encima del kernel recién editado presionamos la tecla b (eso sería boot ó arrancar).

Al arrancar se nos muestra la consola y estamos autenticados como root (administrador), ahora listamos los usuarios del sistema:
                                   
 
# cat /etc/passwd | cut -d: -f1
o sólo:
# cat /etc/passwd
                                                                                           

Elegimos un usuario y le cambiamos la contraseña (ojo que puede suceder que la consola no haga eco (echo) y además sólo pude poner contraseñas de un caracter de longitud, igual eso es más que suficiente):
# passwd paquito
Si se quiere cambiar la contraseña de administrador entonces simplemente digitamos:
# passwd
Por último reiniciamos (o también puede escribir startx en consola para iniciar el modo gráfico) y nos autenticamos como el usuario al que le modificamos el pass y listo.

Si el GRUB tiene contrasena, hay problemas, entonces toca utilizar un live cd o el primer disco de instalacion:

Cambiar contraseña desde el disco de instalacion/rescate:
  1. Iniciar con el primer disco de instalación. No importa si se trata de una versión o distribución diferente a la que está en el equipo.
  2. Cuando se presente el texto boot, escribir linux rescue para entrar en modo de rescate.
  3. Una vez que se ha entrado al sistema, ejecutamos este comando para asignar el permiso a root:  chroot /mnt/sysimage
  4. Así, ya podemos cambiar la contraseña de root y reiniciamos el equipo para que tome efecto el cambio.
         passwd root
         reboot

Forma Similar para Recuperar Contraseña:


Al cargar el GRUB apretamos la tecla E sobre el kernel con el cual queria iniciar, permitiendome asi editarlo, en pantalla se mostro lo siguiente:

1. Debian GNU/Linux, kernel 2.6.22-2-486
2. (hd0,3)
3. /boot/vmlinuz-2.6.22-2-486 root=/dev/sda4 ro vga=791
4. /boot/initrd.img-2.6.22-2-486

Seleccionamos la tercera línea y sobre ella clic en  la tecla E para asi poder editarla, al final de esta agregue lo siguiente init=/bin/sh, quedando asi:

/boot/vmlinuz-2.6.22-2-486 root=/dev/sda4 ro vga=791 init=/bin/sh
 
Apretamos ESC e iniciamos normalmente.

Al iniciar la shell SH, nos encontramos logueado como root (sin necesidad de una contraseña), por lo cual me diriji al archivo /etc/shadow y con editor de texto borramos el campo de la contraseña en el usuario root

Guardamos los cambios y reiniciamos.
#:reboot
4-Al iniciar nuevamente, procedemos a abrir la sesión de root
$:su root
Y directamente, no nos pedira ninguna contraseña, por lo cual ahora le estableceremos una:
#:passwd root
Escribimos la contraseña dos veces, para asegurarnos que no halla errores (recordemos que BASH no nos mostrara los * de la contraseña por seguridad). Y listo, hemos reestablecido la contraseña para root.
5-asi que ahora simplemente escribimos:
#:exit

FIN

jueves, 20 de enero de 2011

Esteganografía para ocultar un mensaje detrás de una imagen

Esteganografía a través de imagen
Cloak V.7

La esteganografía es la disciplina en la que se estudian y aplican técnicas que permiten el ocultamiento de mensajes u objetos, dentro de otros, llamados portadores, de modo que no se perciba su existencia. Es una mezcla de artes y técnicas que se combinan para conformar la práctica de ocultar y enviar información sensible en un portador que pueda pasar desapercibido.


Para ello procedemos a descargarnos el programa gratuito Cloak v 7.0 desde una web (por ejemplo: http://www.redsofts.com/soft/188/20358/Cloak_v70.html) y abrimos la aplicación:


Hacemos clic sobre Try para la versión gratuita.

Y nos aparecerá la pantalla principal:


Una vez abierto el programa, haremos clic sobre el File, y a continuación Open Image:

 
Seleccionamos la imagen que deseemos, y hacemos clic sobre Cloaking y después en Cloak File.


 
Posteriormente procedemos a seleccionar el fichero que queremos ocultar, en nuestro caso prueba:


Cuyo archivo la información que contiene es la siguiente:

Y a continuación nos aparecerá el siguiente menú en el cual debemos de rellenar una contraseña y escoger un método de cifrado, en nuestro caso con Scatter.

Una vez realizado los pasos anteriores deberá aparecer la siguiente información indicando que el archivo se ha ocultado correctamente.
Nos mostrará el mensaje "File Cloacked"



 
A continuación, procedemos a la desencriptación del archivo, para ello accedemos a Uncloak File...

Nos aparecerá la siguiente ventana donde introduciremos la contraseña puesta anteriormente del archivo:


 
Y nos aparecerá un explorador dónde indicaremos dónde queremos descomprimir el fichero, el cual no debe de ser el mismo directorio que el del archivo comprimido:


 
Y nos aparecerá el fichero descomprimido en el directorio indicado en la imagen superior:


 
En el cual podremos ver la información que contenía anteriormente del cifrado:






domingo, 12 de diciembre de 2010

Criptografía y Algoritmos

  Criptografía 
y
Algorítmos


Criptografía
Ciencia que estudia la manera de cifrar y descifrar los mensajes para que resulte imposible conocer su contenido a los que no dispongan de unas claves determinadas.

  • En informática el uso de la criptografía es muy habitual, utilizándose en comunicaciones y en el almacenamiento de ficheros.

  • En comunicaciones, se altera mediante una clave secreta la información a transmitir, que circula cifrada hasta que llega al punto de destino, donde un sistema que conoce la clave de cifrado es capaz de descifrar la información y volverla inteligible.

Tipos de Criptografías

Criptografía Simétrica
La criptografía simétrica es un método criptográfico en el cual se usa una misma clave para cifrar y descifrar mensajes.
Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Una vez ambas tienen acceso a esta clave, el remitente cifra un mensaje usándola, lo envía al destinatario, y éste lo descifra con la misma.


Criptografía Asimétrica

La criptografía asimétrica es el método criptográfico que usa un par de claves para el envío de mensajes.

Las dos claves pertenecen a la misma persona a la que se ha enviado el mensaje.

Una clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella. Además, los métodos criptográficos garantizan que esa pareja de claves sólo se puede generar una vez, de modo que se puede asumir que no es posible que dos personas hayan obtenido casualmente la misma pareja de claves.



Criptografía Simétrica Algoritmos

DES

Data Encryption Standard (DES) es un algoritmo de cifrado, es decir, un método para cifrar información, escogido como FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido al principio, con algunos elementos de diseño clasificados, una longitud de clave relativamente corta, y las continuas sospechas sobre la existencia de alguna puerta trasera para la National Security Agency (NSA). Posteriormente DES fue sometido a un intenso análisis académico y motivó el concepto moderno del cifrado por bloques y su criptoanálisis.

Estructura básica

La estructura básica del algoritmo se divide en 16 fases idénticas de proceso, denominadas rondas.
Antes de las rondas, el bloque es dividido en dos mitades de 32 bits y procesadas alternativamente.
Este entrecruzamiento se conoce como esquema Feistel.
La estructura de Feistel asegura que el cifrado y el descifrado sean procesos muy similares — la única diferencia es que las subclaves se aplican en orden inverso cuando desciframos.
El resto del algoritmo es idéntico.
El símbolo rojo "⊕" representa la operación OR exclusivo (XOR).
La función-F mezcla la mitad del bloque con parte de la clave. La salida de la función-F se combina entonces con la otra mitad del bloque, y los bloques son intercambiados antes de la siguiente ronda.
Una característica de la estructura de Feistel es que hace que el cifrado y el descifrado sean procesos parecidos.

La estructura de Feistel se basa en dividir un bloque (Texto el cual queremos descifrar) en 2 mitades (generalmente llamadas L y R).

A continuación un esquema del funcionamiento del algoritmo DES:




Triple DES

En criptografía el Triple DES se llama al algoritmo que hace triple cifrado del DES. También es conocido como TDES o 3DES, fue desarrollado por IBM en 1998.
El Triple DES está desapareciendo lentamente, siendo reemplazado por el algoritmo AES.
Sin embargo, la mayoría de las tarjetas de crédito y otros medios de pago electrónicos tienen como estándar el algoritmo Triple DES (anteriormente usaban el DES).
Por su diseño, el DES y por lo tanto el TDES son algoritmos lentos. AES puede llegar a ser hasta 6 veces más rápido y a la fecha no se ha encontrado ninguna vulnerabilidad.

Seguridad

Cuando se descubrió que una clave de 56 bits no era suficiente para evitar un ataque de fuerza bruta, TDES fue elegido como forma de agrandar el largo de la clave sin necesidad de cambiar de algoritmo de cifrado. Este método de cifrado es inmune al ataque por encuentro a medio camino, doblando la longitud efectiva de la clave (112 bits), pero en cambio es preciso triplicar el número de operaciones de cifrado, haciendo este método de cifrado muchísimo más seguro que el DES.
Por tanto, la longitud de la clave usada será de 192 bits, aunque como se ha dicho su eficacia solo sea de 112 bits
RC5
RC5 es una unidad de cifrado por bloques notable por su simplicidad..
Diseñada por Ronald Rivest en 1994, RC son las siglas en inglés de "Cifrado de Rivest". El candidato para AES, RC6, estaba basado en RC5.
Una característica importante de RC5 es el uso de rotaciones dependientes de los datos; uno de los objetivos de RC5 era promover el estudio y evaluación de dichas operaciones como primitivas de criptografía. RC5 también contiene algunas unidades de sumas modulares y de Puertas O-exclusivo (XOR).
La estructura general del algoritmo es una red tipo Feistel.
La simplicidad del algoritmo junto con la novedad de las rotaciones dependientes de los datos han hecho de RC5 un objeto de estudio atractivo para los criptoanalistas.

Esquema de funciomaniento del algoritmo RC5:
AES
Advanced Encryption Standard (AES), también conocido como Rijndael (pronunciado "Rain Doll" en inglés), es un esquema de cifrado por bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos.
El AES es uno de los algoritmos más populares usados en criptografía simétrica.
El cifrador fue desarrollado por dos criptólogos belgas, Joan Daemen y Vincent Rijmen, y enviado al proceso de selección AES bajo el nombre "Rijndael".

Blowfish

Blowfish es un codificador de bloques simétricos, diseñado por Bruce Schneier en 1993 e incluido en un gran número de conjuntos de codificadores y productos de cifrado. Mientras que ningún analizador de cifrados de Blowfish efectivo ha sido encontrado hoy en día, se ha dado más atención de la decodificación de bloques con bloques más grandes, como AES y Twofish.
Schneier diseñó Blowfish como un algoritmo de uso general, que intentaba reemplazar al antiguo DES y evitar los problemas asociados con otros algoritmos. Al mismo tiempo, muchos otros diseños eran propiedad privada, patentados o los guardaba el gobierno.
Schneier declaró “Blowfish no tiene patente, y así se quedará en los demás continentes. El algoritmo está a disposición del público, y puede ser usado libremente por cualquiera”.
A continuación un esquema del diagráma de Blowfish:

IDEA
International Data Encryption Algorithm o IDEA (Algoritmo Internacional de Cifrado de Datos) es un cifrador por bloques diseñado por Xuejia Lai y James L. Massey de la Escuela Politécnica Federal de Zúrich y descrito por primera vez en 1991.
Fue un algoritmo propuesto como reemplazo del DES (Data Encryption Standard) .
IDEA fue una revisión menor de PES (Proposed Encryption Standard, Estándar de Cifrado Propuesto), un algoritmo de cifrado anterior. Originalmente IDEA había sido llamado IPES (Improved PES, del inglés PES Mejorado).
IDEA es libre para uso no comercial, aunque fue patentado y sus patentes se vencerán en 2010 y 2011. El nombre "IDEA" es una marca registrada y está licenciado mundialmente por MediaCrypt.
IDEA fue utilizado como el cifrador simétrico en las primeras versiones de PGP (PGP v2.0) y se lo incorporó luego de que el cifrador original usado en la v1.0 ("Bass-O-Matic") se demostró insegura. Es un algoritmo óptimo en OpenPGP.


Criptografía Asimétrica Algorítmos

Diffie-Hellman



El protocolo Diffie-Hellman (creado por Whitfield Diffie y Martin Hellman) permite el intercambio secreto de claves entre dos partes que no han tenido contacto previo, utilizando un canal inseguro, y de manera anónima (no autenticada).
Se emplea generalmente como medio para acordar claves simétricas que serán empleadas para el cifrado de una sesión.
Siendo no autenticado, sin embargo provee las bases para varios protocolos autenticados.
Su seguridad radica en la extrema dificultad (conjeturada, no demostrada) de calcular logaritmos discretos en un campo finito.


RSA

RSA es un sistema criptográfico de clave pública desarrollado en 1977. En la actualidad, RSA es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.
La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto.
Se prevé que su tamaño aumente con el aumento de la capacidad de cálculo de los ordenadores.
Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.
Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. La computación cuántica podría proveer de una solución a este problema de factorización.
RSA es mucho más lento que DES y que otros criptosistemas simétricos.


DSA

DSA (Digital Signature Algorithm, en español Algoritmo de Firma digital) es un estándar del Gobierno Federal de los Estados Unidos de América o FIPS para firmas digitales.
Fue un Algoritmo propuesto por el Instituto Nacional de Normas y Tecnología de los Estados Unidos para su uso en su Estándar de Firma Digital (DSS).
DSA se hizo público el 30 de agosto de 1991, este algoritmo como su nombre lo indica, sirve para firmar y no para cifrar información.
Una desventaja de este algoritmo es que requiere mucho más tiempo de cómputo que RSA.

Cifrado ElGamal

El procedimiento de cifrado/descifrado ElGamal se refiere a un esquema de cifrado basado en problemas matemáticos de logaritmos discretos.
Es un algoritmo de criptografía asimétrica basado en la idea de Diffie-Hellman y que funciona de una forma parecida a este algoritmo discreto.
El algoritmo de ElGamal puede ser utilizado tanto para generar firmas digitales como para cifrar o descifrar.
Fue descrito por Taher Elgamal en 1984 y se usa en software GNU Privacy Guard, versiones recientes de PGP, y otros sistemas criptográficos.
Este algoritmo no esta bajo ninguna patente lo que lo hace de uso libre.
La seguridad del algoritmo se basa en la suposición que la función utilizada es de un sólo sentido y la dificultad de calcular un logaritmo discreto.

Criptografía de curva elíptica

La Criptografía de Curva Elíptica (CCE) es una variante de la criptografía asimétrica o de clave pública basada en las matemáticas de las curvas elípticas.
Sus autores argumentan que la CCE puede ser más rápida y usar claves más cortas que los métodos antiguos — como RSA — al tiempo que proporcionan un nivel de seguridad equivalente.
La utilización de curvas elípticas en criptografía fue propuesta de forma independiente por Neal Koblitz y Victor Miller en 1985.


Merkle-Hellman

Merkle-Hellman (MH) fue uno de los primeros criptosistemas de llave pública y fue inventado por Ralph Merkle y Martin Hellman en 1978.

Aunque sus ideas eran elegantes, y mucho más simples que RSA, no tuvo el mismo éxito que éste último, debido a que MH ya fue roto, y además no ofrece funcionalidades para firmar.


Merkle-Hellman es un criptosistema asimétrico, esto significa que para la comunicación, se necesitan dos llaves: una llave pública y una privada.
Otra diferencia con RSA, es que sirve sólo para cifrado, es decir, la llave pública es usada sólo para cifrar (no para verificar firma) y la llave privada es usada sólo para descifrar (no para firmar). De este modo, no se puede usar para tareas de autentificación por firma electrónica.
El algoritmo de Merkle-Hellman está basado en el problema de la mochila de decisión :
Dados una secuencia de números y un número, determinar si existe un subconjunto de la secuencia cuya suma dé dicho número. Sin embargo, si la secuencia de números es supercreciente -- esto es, si cada elemento de la secuencia es mayor que la suma de todos los anteriores -- el problema es "fácil", y es posible resolverlo en tiempo polinomial con un simple algoritmo voraz.
FUNCIONES HASH MÁS UTILIZADAS


Hash se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc., resumir o identificar un dato a través de la probabilidad, utilizando una función hash o algoritmo hash. Un hash es el resultado de dicha función o algoritmo.
Una función de hash es una función para resumir o identificar probabilísticamente un gran conjunto de información, dando como resultado un conjunto imagen finito generalmente menor.
Es posible que existan claves resultantes iguales para objetos diferentes, ya que el rango de posibles claves es mucho menor que el de posibles objetos a resumir.
Son usadas en múltiples aplicaciones, como en la criptografía, procesamiento de datos y firmas digitales, entre otros.
Una buena función de hash es una que experimenta pocas colisiones en el conjunto esperado de entrada; es decir que se podrán identificar unívocamente las entradas.
Muchos sistemas relacionados con la seguridad informática usan funciones o tablas hash.


Funciones más Utilizadas


MD5
MD5 (abreviatura de Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado.
Es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest del MIT (Instituto Tecnológico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad.



MD4
MD4 es un algoritmo de resumen del mensaje (el cuarto en la serie). Implementa una función criptográfica de hash para el uso en comprobaciones de integridad de mensajes. La longitud del resumen es de 128 bits. El algoritmo ha influenciado diseños posteriores, tales como el MD5, el SHA o el RIPEMD-160.
Ciertas debilidades en MD4 fueron demostradas por Den Boer y Bosselaers.
Muchos de los diseños posteriores de resumen del mensaje basados en él siguen siendo seguros, en el sentido que no se ha publicado ningún ataque eficaz contra ellos.
MD2
MD2 ( Algoritmo de Resumen del Mensaje 2) es una función de hash criptográfica. El algoritmo está optimizado para computadoras de 8 bits. . Para el cálculo real, se utiliza un bloque auxiliar 48 bytes y una tabla de 256 bytes que contiene dígitos al azar del número pi.
Una vez que todos los bloques del mensaje alargado se han procesado, el primer bloque parcial del bloque auxiliar se convierte en el valor de hash del mensaje.


Secure Hash Algorithm
La familia SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es un sistema de funciones hash criptográficas relacionadas de la Agencia de Seguridad Nacional de los Estados Unidos y publicadas por el National Institute of Standards and Technology (NIST).
Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes más que se han publicado desde entonces cuyas diferencias se basan en un diseño algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (llamándose SHA-2 a todos ellos).
En 1998, un ataque a SHA-0 fue encontrado pero no fue reconocido para SHA-1, se desconoce si fue la NSA quien lo descubrió pero aumentó la seguridad del SHA-1.
SHA-1 ha sido examinado muy de cerca por la comunidad criptográfica pública, y no se ha encontrado ningún ataque efectivo.
SHA-0 y SHA-1 producen una salida resumen de 160 bits (20 bytes) de un mensaje que puede tener un tamaño máximo de 264 bits.


Secure Hash Algorithm
Tiger es una función de hash , en previsión de eficiencia para plataformas de 64 bits. El tamaño de la función es de 192 bits, aunque hay versiones de 128 y 169 bits de la misma, llamadas Tiger/128 y Tiger/160, que devuelven versiones truncadas de la versión Tiger/192.
Se usa frecuentemente en árboles de hash, llamados a veces árboles de hash de Merkle, denominándose entonces TTH (Tiger Tree Hash). TTH es usado por redes P2P.
Tiger tenía la posibilidad de ser incluido en el estándar OpenPGP, aunque ha sido abandonado en favor de RIPEMD-160.
Se está desarrollando una versión de Tiger, llamada Tiger2.



WHIRLPOOL
Es una función de hash. El hash ha sido recomendado por el proyecto NESSIE y ha sido adoptado por la Organización Internacional de Estandarización (ISO) y la Comisión Electrotécnica Internacional (IEC) .
WHIRLPOOL fue desarrollado después del algoritmo de cifrado por bloques Square.
Dado un mensaje de un tamaño menor de 2256 bits, devuelve un hash de 512 bits.
Los autores han declarado que WHIRLPOOL no está patentado (ni lo estará). Puede ser usado libremente para cualquier propósito y las implementaciones de referencia son de dominio público.



RIPEMD-160
Es un algoritmo del resumen del mensaje de 160 bits (y función criptográfica de hash)
Es una versión mejorada de RIPEMD, que estaba basado sobre los principios del diseño del algoritmo MD4, y es similar en seguridad y funcionamiento al más popular SHA-1.
También existen versiones de 128, 256 y 320 bits de este algoritmo, llamadas RIPEMD-128, RIPEMD-256 y RIPEMD-320 respectivamente.


Nanotecnología e Informática 


Aproximadamente para el año 2012, el tamaño de los transistores o chips llegará a límites de integración con la tecnología actual, y ya no se podrán empaquetar más transistores en un área de silicio, entonces se entrará al nivel atómico o lo que se conoce como mecánica cuántica.
Las computadoras cuánticas, sin embargo, utilizan un fenómeno físico conocido como “superposición”, donde objetos de tamaño infinitesimal como electrones o átomos pueden existir en dos o más lugares al mismo tiempo, o girar en direcciones opuestas al mismo tiempo. Esto significa que las computadoras creadas con procesadores superpuestos puedan utilizar bits cuánticos –llamados qubits- que pueden existir en los estados de encendido y apagado simultáneamente.
De esta manera, estas computadoras cuánticas pueden calcular cada combinación de encendido y apagado al mismo tiempo, lo que las haría muchísimo más veloces que los actuales procesadores de datos a la hora de resolver ciertos problemas complejos de cálculos matemáticos.
Reducir el tamaño de los circuitos integrados implica una respuesta más rápida y un menor consumo de energía.

Informática a nanoescala
La Ley de Moore, afirma que la capacidad de los ordenadores se dobla cada 18 meses. La alternativa para que el progreso no se detenga es crear los dispositivos de almacenamiento a escala molecular, nuevos métodos de cálculo, interruptores moleculares y cables de tubos de carbono estirados. En definitiva, lo que se conoce como ordenadores cuánticos.
Empresas como IBM o Intel  siguen de cerca estos ordenadores cuánticos. En concreto Intel desvelaba por primera vez públicamente sus planes para el desarrollo de chips de tamaño inferior a 10 nanómetros, combinando el silicio con otras tecnologías que están aún en sus primeras fases de investigación.
Tan importante como la velocidad de procesamiento es la capacidad de almacenamiento. NRAM se trata de un chip de memoria de acceso aleatorio no volátil y basada en nanotubos. Sus creadores aseguran que podría reemplazar a las actuales memorias SRAM, DRAM y flash. 

Computadoras casi invisibles
La nanotecnología será un salto importante en la reducción de los componentes.
El tamaño de las computadoras del futuro también podría sorprender, ya que podría ser cincuenta veces menor de una computadora actual de semiconductores que contuviera similar número de elementos lógicos.
La reducción del tamaño desemboca en dispositivos más veloces; las computadoras podrán operar a velocidades mil veces mayores que las actuales.




Los avances tecnológicos no cesan y para el 2011 ya se define una lista “top 10″ con las mayores innovaciones en materia tecnológica.
A continuación el detalle de los avances tecnológicos para el 2011:
  • El Grafeno: Denominado como “el material del futuro”, es un derivado del grafito, de bajo coste, flexible, transparente y de gran conductividad.. El grafeno puede ser utilizado en procesadores, pantallas táctiles, celulares y paneles solares. Es hasta 10 veces más rápido que el silicio, un excelente conductor y permite enrollarse y plegarse. Se espera en el 2011 su producción a gran escala.
  • Letreros interactivos: Se trata de pantallas LCD táctiles e interactivas con cristal holográfico que permitirán mejorar la experiencia de consumo ofreciendo información sobre el producto y la forma adecuada para su aplicación. Serán pantallas sensibles al tacto con video y reconocimiento del rostro.
  • Robots enfermeras: Tendrán la capacidad para realizar análisis de sangre, guiar y asistir a los pacientes, medir la presión y la fiebre. Estos humanoides contarán con sistemas de videoconferencia móvil para interactuar con los pacientes.
  • Vehículos inteligentes con Internet: Actualmente ya existen varios fabricantes dedicados a la creación de vehículos con Internet. Este avance permitirá que los viajeros puedan conocer el estado de las vías, escoger rutas alternativas y tener acceso a contenido online como archivos de música y videos.
  • Celulares 3D: Mediante un software creado por Julien Flack, director de tecnología de Dynamic Digital Depth será posible que las imágenes del celular cambien de 2D a 3D, ofreciendo una experiencia mucho más real sin necesidad de gafas.
  • Redes de sensores inalámbricos: Son redes de computadoras en miniatura equipadas para una tarea común, autoconfigurables, de fácil instalación y capaces de concretar el proceso de emisión y recepción de datos en segundos. Servirían para detectar actividad sísmica, el estado del tránsito y movimientos militares.
  • TV de LED: Se trata de pantallas 30% más eficientes en el ahorro de energía que los LCD tradicionales, eco-friendly, con menor generación de calor, no utilizan materiales tóxicos ni generan residuos. Además, tienen una mayor duración, brindan una mejor experiencia visual, no deforman la imagen ni cambian el color.

  • Componentes fotovoltaicos: Son células solares de película fina capaces de convertir de un 8 a un 12% de la luz que captan en electricidad. Este avance implicaría un enorme avance de la energía solar por encima de los combustibles fósiles.
  • Computación ubicua: Esta tecnología conocida también como Ubicomp, se refiere a la integración de la informática en el entorno humano o real, al punto que la computadora no sea percibida como un objeto diferenciado. Con ello el hombre podrá interactuar de forma natural con chips informáticos para que realicen cualquier tarea diaria mediante órdenes sólo con la voz.
  • Implantes cibernéticos: Los nuevos dispositivos médicos implantables se basarán en materiales ópticos y electrónicos capaces de almacenar datos sobre el estado de salud e historial del paciente, además de monitorear sus signos vitales.