Mostrando entradas con la etiqueta Criptografía. Mostrar todas las entradas
Mostrando entradas con la etiqueta Criptografía. Mostrar todas las entradas

martes, 20 de diciembre de 2011

Certificados, ficheros y claves privadas

Últimamente por motivos relacionados con mi trabajo me he tenido que ir introduciendo cada vez más y más en el mundo de la seguridad informática. Es un campo muy extenso e interesante pero también un tanto oscuro en algunos puntos. (sobre todo si no das con las fuentes de información adecuadas)

En este ecosistema de seguridad, como ya conocemos todos en mayor o menor medida, los certificados de seguridad juegan un papel de lo más importante. ¿Quien no ha oído hablar de los certificados X509?

Windows incluye una herramienta para gestionar los certificados que tenemos instalados en la máquina/máquinas. Más concretamente es un complemento de la Microsoft Management Console (a.k.a. navaja suiza) llamado “Certificates”. Esta herramienta es de lo más conocida y podéis encontrar mucha documentación sobre ella en el MSDN, por ejemplo aquí.

Curioseando con la instalación de los certificados me surgió la pregunta sobre donde Windows almacena la clave privada de los mismos. Leyendo una poco al respecto, encontré una herramienta que nos aporta dicha información llamada Find Private Key Tool.

Dicha herramienta nos permite a través de la línea de comandos, preguntar sobre un determinado certificado ( filtrando por diferentes características como su subject, thumbprint…). En caso de existir un certificado que se adapte a los parámetros solicitados,  nos retornara el nombre del fichero que le da soporte. Esta información nos puede ser necesaria en caso de tener que ajustar los permisos de las acciones que sobre el mismo se deben permitir. El caso más típico es acceder a la clave privada de un certificado (por código) con un usuario con permisos restringidos (por ejemplo el application pool identity de una aplicación ASP.NET)

Según la especificación de la herramienta:

  1: Usage: FindPrivateKey <storeName> <storeLocation> [{ {-n <subjectName>} | {-t <thumbprint>} } [-f | -d | -a]]
  2:        <subjectName> subject name of the certificate
  3:        <thumbprint>  thumbprint of the certificate (use certmgr.exe to get it)
  4:        -f            output file name only
  5:        -d            output directory only
  6:        -a            output absolute file name

Ejemplos de comandos:


Buscar en StoreName “My”  y Store Location “CurrentUser” un certificado con el Subject  CN=TESTCERT (CN es el Common Name, que forma parte del Subject)

  1: FindPrivateKey My CurrentUser -n "CN=TESTCERT"

Buscar en StoreName “My” y Store Location “LocalMachine” un certificado con el Thumbprint pasado por parámetro

  1: FindPrivateKey My LocalMachine -t "40 ee 7b 2f 10 59 38 99 4f 65 9f 8f 92 38 85 a3" –c

En caso de que el certificado solicitado exista, la herramienta nos devolverá algo como:

  1: Private key directory:
  2: C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
  3: Private key file name:
  4: <GUID>

Siendo el GUID el nombre del fichero asociado que almacena la clave privada. Una vez localizado podemos modificar sus permisos si para alguno de nuestros procesos esto es necesario.

sábado, 15 de julio de 2006

El cuadrado de Julio Cesar

Como ya hemos citado anteriormente, el emperador romano Julio Cesar ya empleaba un mecanismo de codificación de mensajes muy sencillo pero efectivo en su época.
Los mensajes se escribían como una secuencia de caracteres sin sentido, un galimatias para los enemigos desconocedores del mecanismo de codificación/decodificación. Los pasos para desencriptarlo ha seguir debían ser:
  1. El número de caracteres escritos siempre constituían un cuadrado perfecto.(Cuadrado perfecto es aquel número cuya raíz cuadrada es un número entero)

  2. Colocar en una tabla de idéntico numero de filas y columnas dichos caracteres. (2x2, 3x3, 4x4...)

  3. Leer el mensaje de arriba hacia abajo sobre dicha tabla comenzando por la columna de la izquierda.
Con estos simples pasos el emperador romano que conquisto la Galia y gobernó Roma (¿Con un golpe de estado?...eso ya lo discutiremos) conseguía preservar los principios básicos de la criptografia en sus comunicaciones.

VES NCELE DH OONI IQHTDCU AEOO

viernes, 14 de julio de 2006

Conceptos básicos sobre Criptografía

A día de hoy, con el desarrollo y las perspectivas de Internet, los usuarios de la red de redes no solo debemos conocer nuestros derechos sino asumir ciertas responsabilidades, concienciandonos de dos hechos reales como la vida misma:
  1. No estamos solos en Internet.
  2. No todo el mundo es bueno.
Con esta base, deberemos ser consciente de que toda la información que transite por la red es susceptible de ser interceptada por cualquier usuario con conocimientos básicos de informática.
Podemos elegir que cualquier ciber-cotilla lea nuestros datos, pero también podemos elegir que no lo haga y aqui es donde encaja la criptografía.

Solo para abrir boca comentemos algunos aspectos esenciales relacionados:
  • La privacidad, la información sólo pueda ser leída por personas autorizadas.
  • La integridad la información no pueda ser alterada en el transcurso de su transferencia.
  • La autenticidad permite que pueda confirmar que el mensaje recibido haya sido mandado por quien dice lo mando o que el mensaje recibido es el que se esperaba.
  • El no rechazo implica que no se pueda negar la autoría de un mensaje enviado.
Continuaremos hablando de criptografía pero de momento con tener claros estos conceptos es un buen inicio.

Origenes de la criptografía

Uno de los precursores de la criptografía moderna fue el emperador Romano Julio Cesar.

Cansado de los continuos ataques que sufrían sus mensajeros y de las consiguientes filtraciones hacia sus enemigos de informaciones sensibles para sus campañas ideó un mecanismo de encriptar la información de los mensajes que comunico a sus aliados.

Este mecanismo es conocido como el "Cuadrado de Cesar"...