STANDAR
Pretty
GoodMR Privacy (PGP), "Intimidad
bastante buena", de Phil's Pretty Good Software, es
una aplicación informática de criptografía de alta
seguridad para MSDOS, Unix, VAX/VMS y otros ordenadores.
PGP permite intercambiar ficheros y mensajes con
intimidad, autenticación y comodidad. 'Intimidad' quiere
decir que sólo podrán leer el mensaje aquellos a
quienes va dirigido. 'Autenticación' quiere decir que
los mensajes que parecen ser de alguien sólo pueden
venir de esa persona en particular. 'Comodidad' quiere
decir que la intimidad y la autenticación se consiguen
sin los problemas de gestión de claves asociados a otros
programas de criptografía convencional. No se necesitan
canales seguros para intercambiar claves entre usuarios,
por lo que PGP resulta mucho más fácil de utilizar.
Esto se debe a que PGP está basado en una potente nueva
tecnología llamada criptografía de "clave
pública". OpenPGP proporciona servicios de la integridad de los datos para mensajes y los archivos de datos usando estas tecnologías como base: - Firmas digitales - Encriptación -
Compresión -
conversión radix-64 Además, OpenPGP proporciona claves de la gerencia y servicios certificados, pero muchos de éstos están más allá del alcance de este documento. OpenPGP utiliza dos métodos de encriptación para proporcionar a confidenciabilidad: encriptación clave-simétrica y encriptación clave-pública. Con la encriptación clave-pública, el objeto es encriptado usando un algoritmo simétrico de encriptación. Cada clave simétrica se utiliza solamente una vez. Un nueva " sesión clave "
se genera como número al azar para cada mensaje. Puesto
que se utiliza solamente una vez, la clave sesión está
limitado al mensaje y transmitida con él. Para proteger
la clave, esta es encriptada con clave- pública
del receptor. La secuencia es como sigue: 1. El remitente crea un mensaje. 2. El OpenPGP que envía genera un número al azar que se utilizará como clave de la sesión para este mensaje solamente. 3. Se encripta la clave de la sesión usando una clave pública para cada recipiente. Éstas " Claves encriptadas de la sesión " comienzan el mensaje. 4. El OpenPGP que envía el mensaje encriptado usando la clave de la sesión, que forma el resto del mensaje. Observe que el mensaje también está comprimido generalmente. 5. El OpenPGP que recibe desencripta la clave de la sesión usando la clave privada del recipiente. 6. El OpenPGP que recibe desencripta el mensaje usando la clave de la sesión. Si el mensaje fue comprimido, será descomprimido. Con el encriptación clave-simétrica, un objeto se puede encriptar con una clave simétrica derivada del passphrase (o el otro secreto compartido), o de un mecanismo de dos etapas similar al método de clave-pública descrito arriba en el cuál una clave de sesion es encriptada con un algoritmo simétrico afinado de un secreto compartido. Ambas firmas digitales y servicios de confidenciabilidad pueden ser aplicados al mismo mensaje. Primero, una firma se genera para el mensaje y se asocia al mensaje. Entonces, el mensaje más firma se encripta usando una clave simétrica de la sesión. Finalmente, la clave de la sesión es encriptada usando encriptacion clave-pública y se prefija el al bloque encriptado.
Materias de la carrera con las que se relaciona el tema?
Compiladores:
Aquí nos interesaría ver el tipo de encriptación
utilizado y la codificación del programa fuente. Da. y
Estr. De Alm.: La forma de manejo de los datos seria lo
mas importante a observar en esta materia. Teleprocesos
:
En esta materia se centraría en la forma de transmisión
de los datos y los tipos de protocolos necesarios para su
uso, el tipo de enlace y los el volumen de los paquetes
enviados. Teo. de
la comp. 2: En esta
materia al igual que en compiladores nos interesa el tipo
de encriptación, la codificación del programa fuente,
nada mas que aquí yo añadiría el estudio de los tipos
de datos codificados, es decir el uso de enteros,
caracteres y números de punto flotante y su
representación en 32 y 64 bits. Que otras materias externas servirían? Todas aquellas
materias en las cuales se maneje el envió de datos
cifrado, para transferencias de passwords, datos
privados, números de tarjetas de crédito y
transferencias de DVD y otros formatos encriptados.
Además para un mejor entendimieto, pienso que seria
necesaria una materia de Lenguajes Formales o una
ampliación al temario de Teo de la comp. 2. Alguna
materia de S.O. en la cual se lleve el manejo de Unix o
cual quiera de su variantes (linux, sun , silicon, rs,
solaris, HP-UX, irix , etc).
PSEUDOCODIGO DE ALGORITMOS: LOS
ALGORITMOS DE PGP
El programa
PGP emplea tres algoritmos de encriptado : el RSA, de
clave pública, el IDEA, de clave única, y el MD5 para
producir digests, combinados de una forma que se
explicará más adelante para conseguir la máxima
seguridad y la mayor rapidez y comodidad. EL ALGORITMO RSA:
RSA, diseñado por Ron Rivest, Adi Shamir y Leonard Adleman, basa su seguridad en la pertenencia al grupo de los problemas difíciles de la clase NP del problema de la factorización de números grandes. La clave pública y la privada están en función de un par de números primos grandes (de 100 o 200 dígitos). Es decir, hallar la clave privada supondría encontrar por factorización los dos números primos que la forman, un cálculo hoy en día todavía imposible para claves de al menos 1024 bits (recordad: "hoy en día", otoño de 1999). Para generar
las dos claves, se toman aleatoriamente dos números
primos grandes, p y q. Para una mayor
seguridad, p y q son de la misma
longitud. Se calcula n = p*q. A
continuación, se elige aleatoriamente la clave de
encriptación, e, de tal manera que e y (p-1)*(q-1)
son primos relativos (es decir, de manera que el máximo
común divisor de e y (p-1)*(q-1) sea
1; o dicho en otras palabras, que el único factor que
compartan e y (p-1)*(q-1) sea 1). Por último,
se calcula la clave de descifrado, d, tal que: d = e-1
mod ((p-1)*(q-1)) d y n
también son primos relativos. Los números e y n
son la clave pública; d es la clave privada. Los
dos números primos, p y q, dejan de ser
necesarios al terminar el proceso. Pueden ser
descartados, pero nunca han de ser revelados. Para
encriptar un mensaje m en primer lugar se divide
en bloques numéricos mi menores
que n (por ejemplo, en el caso de datos binarios,
se toma la mayor potencia de 2 menor que n),
obteniéndose un mensaje encriptado, c formado
por varios bloques ci. La
fórmula de encriptación es: ci
= mie mod n
Para
desencriptar, se toma cada bloque ci
y se calcula: mi
= cid mod n
Igualmente,
se podría haber encriptado el mensaje con d y
descifrarlo con e. SEGURIDAD DE RSA:
Se supone (no es demostrable matemáticamente) que la seguridad de RSA se basa totalmente en el problema de factorización de números grandes, es decir, la factorización de n, hoy en día virtualmente imposible, como se ha dicho, con claves de al menos 1024 bits (conviene ir siempre por delante, y usar ya las de 2048). También sería posible atacar RSA descubriendo el valor (p-1)*(q-1), pero este ataque equivale a una factorización de n. Otra
posibilidad es un ataque de fuerza bruta probando
cualquier d posible hasta dar con el valor
correcto, pero es un ataque aún menos eficiente. Han surgido
diversos estudios sobre nuevos posibles ataques, pero
hasta la fecha no ha surgido ninguno sencillo. Otra
cuestión podría surgir en cuanto a p y q.
La mayoría de los algoritmos empleados para calcular
primos grandes son probabilísticos; por tanto, ¿qué
ocurriría si no son primos?. El problema se resuelve
haciendo disminuir esta posibilidad al mínimo, (y así
ocurre en PGP, que emplea alugnos algoritmos de
detección de primalidad) y aunque se diera el caso, el
proceso de cifrado y descifrado daría errores con estos
números, por lo que el problema sería rápidamente
descubierto. Hay unos pocos números, los números de
Carmichael, que no son detectados por algunos algoritmos
de primalidad y son inseguros. Pero si alguien da
aleatoriamente al generar las claves con uno de estos
números, entonces es al día siguiente le caerá un rayo
justo después de enterarse de que ha acertado la
quiniela y la primitiva. :-) Existen
asimismo varios ataques, no contra el algoritmo en
sí, sino contra la forma de implementarlo. Explicarlos
aquí haría que nos extendiéramos demasiado, y que se
sepa hasta la fecha, la implementación de PGP no es
vulnerable a ellos. EL ALGORITMO IDEA
El algoritmo de clave única IDEA utiliza texto en bloques de 64 bits y una clave de 128 bits. Ha sido diseñado de tal manera que el proceso de encriptado consiste en ocho pasos de encriptación que son idénticos excepto en los sub-bloques de la clave utilizados, terminando con una transformación de la salida. En cada paso se utilizan tres operaciones : suma modular con módulo 216, multiplicación modular con módulo 216 +1 y OR exclusivo. Hay un total
de ocho rondas de encriptación. En cada ronda se divide
el bloque de 64 bits en cuatro bloques de 16 bits: X1,
X2, X3 y X4, siendo
combinados con las operaciones indicadas entre sí y con
seis sub-bloques de 16 bits de la clave (subclaves).
Entre ronda y ronda, se cambia de posición a los bloques
2 y 3. Finalmente, se combinan los cuatro sub-bloques con
cuatro subclaves. Los pasos de
cada ronda son los siguientes:
La salida producida por la ronda son los cuatro sub-bloques resultado de los pasos 11, 12, 13 y 14. Se cambia el bloque 2 por el 3 (excepto en la última ronda), y ésta será la entrada de la siguiente ronda. Tras la
octava ronda, hay una transformación final de la salida:
El algoritmo emplea 52 subclaves,
que son creadas de la siguiente manera: se divide la
clave de 128 bits en ocho subclaves de 16 bits. Éstas
serán las ocho primeras subclaves del algoritmo (seis
para la primera ronda, y dos para la segunda). Después,
se rotan 25 bits de la clave hacia la izquierda y de
nuevo se divide en ocho subclaves. Las cuatro primeras
son para la segunda ronda; las otras cuatro para la
tercera. Se realiza otra rotación de 25 bits a la
izquierda, se vuelve a dividir en ocho subclaves... hasta
el final del algoritmo. El proceso de descifrado es prácticamente el mismo
que el de encriptación, con la diferencia de que las 52
subclaves son las inversas de las empleadas en la
encriptación respecto de la operación en la que fueron
usados, además de utilizarse en el orden inverso. SEGURIDAD DE IDEA:
La longitud de la clave de IDEA es de 128 bits. Suponiendo que un ataque de fuerza bruta fuera el más eficiente, haría falta calcular 2128 (1038) encriptaciones para encontrar la clave. Si se lograra diseñar un chip que probara mil millones de claves por segundo y se fabricaran mil millones de ellos, aún harían falta 1013 años - más que la edad del Universo. Con 1024 chips como éste se podría encontrar la clave en un día, pero no hay suficientes átomos de silicio en el Universo para construirlos. En cuanto a
los ataques basados en criptoanálisis, por ahora, sólo
unos pocos estudios, como el de Willi Meier, han logrado
ataques más eficientes que el de fuerza bruta (empleando
242 operaciones), pero contra una
implementación de IDEA con dos rondas. El IDEA normal,
con ocho rondas, es por ahora seguro. Por último,
John Daemen descubrió algunas claves débiles de IDEA,
pero la posibilidad de generar aleatoriamente alguna de
estas claves es de una entre 296. Y si
incluso queremos eliminar esta posibilidad, basta con
calcular el XOR de cada subclave y 0x0dae antes de
emplearla. EL ALGORITMO MD5:
El algoritmo MD5 de message digests está publicado en la Request For Comment 1321. La RFC incluye una implementación en C. Se comienza
suponiendo que se tiene un mensaje de b bits de longitud,
escritos m0, m1,...m(b-1). El algoritmo tiene cinco pasos
: Paso 1 :
Adición de bits de relleno. El mensaje es
rellenado con n bits, de tal manera que le falte a su
longitud 64 bits para ser un múltiplo de 512. De esos n
bits, el primero es 1 y el resto son 0. Paso 2 :
Adición de la longitud. La nueva
longitud tras añadir los bits de relleno es almacenada
en una representación de 64 bits y añadida al final del
mensaje en forma de dos palabras de 32 bits, yendo en
primer lugar la que contiene los bits menos
significativos. Si la longitud del mensaje fuera mayor
que 264, solamente se usan los 64 bits menos
significativos. De esta
manera, la longitud del mensaje es ahora múltiplo de
512. M0...Mn-1 denotan las palabras
de 32 bits del mensaje. Paso 3 :
Inicialización de los bufferes. Se usan
cuatro bufferes, A,B,C y D, que son registros de 32 bits.
Son inicializados a los siguientes valores : A: 01 23 45
67 Paso 4 :
Procesado del mensaje en bloques de 16 bits. En primer
lugar se definen cuatro funciones auxiliares que tienen
como entrada tres palabras de 32 bits y como salida una
palabra de 32 bits. F(X,Y,Z) = (X
AND Y) OR ((NOT(X)) AND Z) En este paso
se usa una tabla de 64 elementos T[1 ... 64] construida
con la función seno, siendo Ti la parte entera de
4294967296 * abs(sen(i)) (i en radianes). El proceso es
el siguiente: /*Procesar
cada bloque de 16 bits. */ /*Copiar
bloque i en X. */ /* Grabar A
como AA, B como BB, C como CC, y D como DD. */ /* Primera
etapa. */ /*Segunda
etapa. */ /*Tercera
etapa. */ /*Cuarta
etapa. */ /* Incrementar los registros*/ end /* del bucle i */ Paso 5 : Salida. El message digest producido es A, B, C, D, empezando
con los bits menos significativos de A y terminando con
los más significativos de D. Independientemente de la
longitud del mensaje, el digest será de 128 bits. SEGURIDAD DE MD5:
Berson trató de utilizar el criptoanálisis diferencial contra una sola ronda de MD5, pero su ataque no es efectivo contra las cuatro rondas. Hay un ataque más efectivo de den Boer y Bosselaers, en el que se producen colisisones en la función de compresión. En principio, esto no tendría un impacto práctico en la seguridad del hash, pero a fin de cuentas es una violación de los principios de diseño de MD5, por lo que convendría la cautela. Hay que tener en cuenta, por otro lado, que en el caso que nos ocupa, PGP, aunque se pudiera explotar esta debilidad, no afectaría a la seguridad de la encriptación, sino a la veracidad de las firmas digitales. En el difícil caso de que se lograra un ataque efectivo, bastaría recurrir a una versión superior de PGP o a gnuPG y emplear firmas DSA/SHA-1.
Como prever errores? PGP (Pretty Good Privacy)
versión 5.0 puede generar claves de muy baja calidad (es
decir, predecibles por un atacante), dependiendo de las
circunstancias y el sistema operativo empleado. PGP es un popular programa
de cifrado y firma digital, que emplea tecnología de
clave pública. El usuario genera sus propias claves una
vez, empleando el propio programa. La clave pública
puede ser distribuida libremente, y la clave privada debe
ser poseída exclusivamente por su propietario. Existe un fallo en la
versión 5.0 de PGP, que se manifiesta cuando el usuario
genera una clave asimétrica en un entorno Unix que
proporcione un dispositivo "/dev/random" (por
ejemplo, Linux o *BSD). La rutina de lectura de dicho
fichero contiene un fallo de programación que provoca
que no se recoja NINGUNA entropía a través suya. Ello
hará que el programa "piense" que cuenta con
valores aleatorios de suficiente calidad como para
generar una clave segura, cuando en realidad esto no es
así. Las claves resultantes, por tanto, serán
predecibles e inseguras. Las versiones 2.* y 6.5 de
PGP no están afectadas por este problema. Se recomienda
a los usuarios que hayan generado su clave con la
versión 5.0 que generen una revocación de la misma y
que creen una clave nueva con una versión inmune. Los usuarios que no quieran
instalar una versión inmune en su sistema, pueden
continuar usando la versión 5.0, corrigiendo el bug
ellos mismos. Ello es tan fácil como editar el fichero
"src/lib/ttyui/pgpUserIO.c" y modificar la
línea 1324. Esa línea pone RandBuf = read(fd, &RandBuf, count);
cuando
debería poner read(fd, &RandBuf, count); Luego
sólo queda compilar y reinstalar. Más
información: ·
Security flaw in PGP 5.0
Esta versión contiene
soporte para nuevos métodos de cifrado, mediante
algoritmos todavía más rápidos y seguros, como el
DSS/Diffie-Hellman, soporte para servidores de claves
integrado en el propio programa (protocolo HKP), mayor
integración en programas de correo, etc. Lamentablemente
también han aparecido dos tipos de licencias, la
comercial y la de toda la vida ó "freeware",
haciendo distinciones entre las prestaciones de las dos
versiones. Centrándonos en la
versión Unix, encontramos -como es tradicional- el
paquete que contiene el código fuente del programa, a
fin de que nosotros mismos lo compilemos y lo instalemos,
una práctica muy recomendable en este tipo de software y
que (como veremos) nos reportará ventajas sustanciales
en comparación con las versiones ya compiladas (para
Windows, por ejemplo). Como decíamos, existen ahora dos
versiones de PGP 5.0i: la comercial (de pago) y la
freeware, que es la que se obtiene gratis de cualquier
servidor de FTP. Una de las desventajas de los usuarios
de la versión freeware 5.0 es que no permite generar
claves RSA, es decir, el anterior formato de claves
(versión 2.6.x y anteriores), con lo que
automáticamente los nuevos usuarios de la versión 5.0
perderían compatibilidad con los usuarios que tienen
claves RSA (por cierto, la gran mayoría). En la
práctica, lo que se recomienda hacer a los nuevos
usuarios es instalarse una versión antigua (2.6.3i),
generarse la pareja de claves RSA y después instalarse
la 5.0 y generarse aquí las nuevas claves DSS/DH, a fin
de no perder compatibilidad; sin duda una solución poco
elegante pero la única factible si no queremos pagar la
licencia de la versión 5.0 comercial. Pues bién; la
principal ventaja de usar PGP 5.0i freeware
compilándola en nuestra máquina UNIX es que SÍ
SE PUEDEN GENERAR CLAVES RSA. Simplemente nos
pedirá el tipo de clave que queremos generar, RSA ó
DSS/DH. Es una buena idea generarse ambas a fin de poder
mantener compatibilidad con ambos tipos, teniendo en
cuenta que las claves RSA son todavía usadas por la
mayoría de usuarios. Esto se hace con "pgpk
-g" (ver las páginas del manual del programa): polaris:~>pgpk -g
Choose the type of your public key:
1) DSS/Diffie-Hellman - New algorithm for 5.0 (default)
2) RSA
Choose 1 or 2: 2
[...]
QUÉ ERRORES,
QUE AVISOS? Ningún programa está 100% libre de
errores. PGP 2.6.3i es probablemente la versión de PGP
más libre de errores disponible hasta ahora PUNTOS DÉBILES Y PRECAUCIONES
PGP ha
demostrado ampliamente su gran seguridad, y todavía
ningún experto ha podido romper sus claves. Sin embargo,
por razones ajenas al programa y que caen fuera de sus
posibilidades, puede no ser impenetrable en algunos casos
a los ataques destinados a hacerse con nuestros datos. El
principio fundamental que hay que tener en mente es
evaluar si la información que se protege es más valiosa
que los medios para obtenerla; de esta manera,
aprenderemos a defendernos de los ataques poco costosos
(en los que valga la pena emplear recursos en atacarnos
porque la información es más valiosa que los recursos
empleados) y a ignorar los caros (en los que el coste que
supondría atacarnos no es rentabilizado por el valor de
nuestra información). - Descubrimiento
de la contraseña (pass phrase) Es sin duda
el ataque más simple, y depende completamente del
propietario de la clave. Las medidas son las obvias
habituales : el único lugar completamente seguro para la
contraseña es la cabeza ; hay que procurar guardar bien
la clave secreta ; hay que buscar una contraseña
compleja... - Claves
públicas falsas Este tema ya
fue comentado en el apartado de manejo de claves. PGP
proporciona muchas opciones para protegerse contra las
claves falsas, pero una vez más depende de la
inteligencia del usuario. - Archivos
no del todo borrados Este problema
surge del proceso de borrado de los archivos realizado
por el sistema operativo. Cuando hemos encriptado el
mensaje y borramos el original sin encriptar, el sistema
realmente no borra físicamente el archivo del disco,
sino que simplemente marca los sectores que ocupa como
libres, quedando los datos en el disco hasta que sean
sobreescritos por otro archivo que ocupe su lugar. Si el
atacante es rápido, puede leer esos sectores antes de
que se sobreescriban. Y no digamos lo que puede ocurrir
con esas "bonitas" utilidades Norton y
similares que recuperan archivos borrados... PGP tiene una
opción prevista para estos casos. A la hora de
encriptar, se puede añadir la opción "w", que
hará que el programa no sólo borre el archivo del texto
original, sino que además lo sobreescriba grabando el
archivo encriptado en sus sectores (el archivo encriptado
siempre es mayor que el original). A pesar de
todo esto, aún podrían quedar pequeñas trazas
magnéticas de los datos en el disco, que pueden ser
suficientes para hardware especializado en estas
operaciones ; sin embargo, no son equipos al alcance de
cualquiera. - Virus y
caballos de Troya Otro problema puede surgir con la creación de algún
virus destinado a capturar la pass phrase o la clave
secreta, dejando la información en un archivo o
enviándola a otro ordenador si estamos en una red. Esto
no puede ser controlado por PGP, y es una tarea que ha de
recaer en programas antivirus. Por otro lado, se podría crear un "caballo de
Troya" a partir de PGP, es decir una versión falsa
que tenga su mismo aspecto pero no funcione
correctamente. Por ejemplo, podría diseñarse de tal
manera que admita firmas falsas. La única protección
posible es conseguir nuestra copia de PGP de fuentes
fiables (por ejemplo, de las páginas web de gente que ha
participado en su desarrollo, de determinadas
universidades, de estas páginas ;-)...), u obtener
varias copias de sitios muy dispersos y compararlas para
ver si todas son iguales. Por otro lado, las versiones
auténticas de PGP siempre van acompañadas de un archivo
de claves que contiene la firma de Philip Zimmermann y la
de otros de los programadores que han participado en la
creación de PGP. - Fallas de seguridad "físicos" También podría ocurrir que alguien entrara en
nuestra casa y robara de nuestro ordenador la clave
secreta. O en una empresa, algún empleado podría ser
sobornado. Es importante vigilar dónde se deja la clave.
Si por ejemplo se usa PGP en el trabajo, se puede llevar
y traer una copia en un diskette cada dia. - Escuchas Atacantes bien preparados pueden ser capaces de
detectar remotamente las señales electromagnéticas del
ordenador con un equipo de escuchas, pudiendo coger todo
lo que se teclee o lo que se vea en pantalla. Este ataque
puede evitarse blindando electromagnéticamente todo el
equipo y cables con la tecnología llamada Tempest,
fabricada en Estados Unidos y utilizada por gobiernos y
grandes empresas. - Inseguridad en equipos multiusuario PGP fue diseñado originalmente en una PC. Sin
embargo, se han creado versiones para sistemas
multiusuario. En sistemas así, alguien puede colarse en
nuestro directorio (empezando por el root) y ver nuestros
datos o hacerse con nuestras claves. La seguridad en
estos casos dependerá de la situación. Puede ser que se
pueda confiar en todos los usuarios de un sistema, por
ejemplo en un pequeño departamento de una empresa, o
quizás puede que no haya intrusos interesados en los
datos. PGP no puede garantizar la seguridad del texto sin
encriptar. - Análisis del tráfico Aunque el atacante no pueda leer los textos
encriptados, quizás pueda hacer un análisis del
tráfico, es decir, averiguar de dónde vienen y a dónde
van los mensajes, su tamaño, la hora a la que se
envían... PGP no tiene protección contra esta técnica,
y pueden ser necesarios protocolos de comunicación
especializados. O en Internet puede probar a usarse un
remailer anónimo que ayude a despistar al atacante. - Criptoanálisis El criptoanálisis es un conjunto de técnicas
destinadas a buscar puntos débiles de los algoritmos de
encriptación para romperlos. PGP quizás podría sufrir un ataque con éxito
mediante criptoanálisis hecho por alguien con enormes
recursos de supercomputadores, como una agencia de
inteligencia de un país desarrollado. Quizás, como se
señaló al hablar del algoritmo RSA, han encontrado
algún método para romperlo, en lugar del
"imposible" cálculo de factores. O quizás hay
algún método para el IDEA. De todas maneras se puede ser algo optimista. Es importante señalar por ejemplo que según Ron Rivest, el gobierno americano usa entre otras cosas el RSA para proteger los códigos de sus armas nucleares. Expertos civiles en criptografía han atacado sin éxito el RSA desde 1978. El IDEA ha sido creado por los que son quizá los mejores criptógrafos de Europa, y también ha resistido todo ataque. Y la compresión que realiza PGP antes de encriptar pone
Soluciones a los
problemas mas comunes: Compile el problema en Irix y Solaris Si usted está teniendo problemas con el fichero - pgpLeaksSuspended(void) boleano boleano + estático en
línea estático { sSuspendCount de vuelta! = 0; }
Gracias a Thomas C. Fischer y Payl
C. Leyland por señalar esto hacia fuera. Error en
el bus en Solaris 2,5,1 Hi, En la
compilación del PGP 5.0i en un ambiente Solaris
2,5,1 (Sparc20) con GCC 2,7,1 he tenido éxito, pero los
abortos del código resultan con un error en el bus al
ejecutar la generación dominante (pgpk - g). Rastreé
acerca del problema al struct MD5Context, que contiene un
condicional para HAVE64, que se fija junto con typedefs
en include/pgpUsuals.h. No estoy seguro porqué, pero con
que auto-muve-auto-resolving encuentra un tipo de 64bit
tan ' largo sin firmar ', y fijo así HAVE64. Con todo y
cuanto código está utilizando en esto falla. Pienso que
esto pudo ser un problema con la interacción de
GCC/Solaris . Me suena como un problema de
alineación en el bus. Invalidé
manualmente el cheque HAVE64, de modo que el código
utilice dos palabras de 32bit, y ése solucionó el
problema. Problema
con configuraciones 64-bit
*** src/lib/pgp/include/pgpUsuals.h~ se sentó agosto 9
22:44:58 1997 --- src/lib/pgp/include/pgpUsuals.h Tue de agosto 12 el
16:57:16 1997 * / # del **** del *** 50.57 del *************** si
ULONG_MAX > 0xfffffffful # si == 0xfffffffffffffffful de ULONG_MAX!
ulong bnword64 del typedef; # definen BNWORD64 bnword64 # definen
HAVE64 1 # endif # endif --- 50.56 * / # si ULONG_MAX > 0xfffffffful #
si == 0xfffffffffffffffful de ULONG_MAX! ulong word64 del typedef; #
defina HAVE64 1 # endif # endif
Gracias a Paul C Leyland <
[email protected] > por señalar esto. Usando PGP
2.6.3i y PGP 5,0 paralelamente. También
todavía necesito los viejos binaries alrededor, así que
he realzado los makefiles un poco. Con Maker " para
instalar INSTPGP=pgp5 " es posible ahora instalar el
PGP de modo que el binario principal (que usted nunca
necesita llamar de todos modos) y la paginación
principal del hombre ahora escucha " pgp5 " en
vez del " PGP ". Puesto que los cambios están
al " Makefile.in"s (de modo que pueda ser
incluido en la distribución, * INDIRECTA *), usted
necesita ejecutar " config " otra vez luego (o
aplique la corrección manualmente a los makefiles). Vea las dif.
abajo. Puesto que tengo mismo problema de Solaris 2,5,1
que Juergen, no puedo utilizar actualmente el PGP,
tampoco. - - Marcel el diff - r - el *** pgp50i-b8/src/apps/pgp/Makefile.in Mon
de agosto 11 el 15:41:37 de c pgp50i-b8/src/apps/pgp/Makefile.in old/pgp50i-b8/src/apps/pgp/Makefile.in 1997 - ---
old/pgp50i-b8/src/apps/pgp/Makefile.in sentó de agosto 9 el 23:45:38 1997 **** del *** 7.15 del *************** # PROG = PGP! # fije esto a " pgp5 " si usted desea las viejas y nuevas
versiones del mantiene en paralelo! INSTPGP = PGP! INSTALLPROGS =
OMMON=../common Localincludes = - I$(common) - I$(srcdir)/$(COMMON) -
--- 7.13 #
PROG = PGP! INSTALLPROGS = $(prog)
OMMON=../common Localincludes = - I$(common) - **** Del *** 22.32 Del
*************** De I$(srcdir)/$(COMMON)
instale:: $(prog) (\! $(install) - PGP de m 755 $(destdir)$(bindir)/$(instpgp); \ Cd $(destdir)$(bindir); \ $(rm) pgp_old del pgpv de los pgps del pgpe; \! $(ln_s) $(instpgp) pgpe; \! $(ln_s) $(instpgp) pgps; \! $(ln_s) $(instpgp) pgpv; \!
$(ln_s) $(instpgp) pgp_old \) - --- 20.30
instale:: $(prog) (\! $(install) - PGP de m 755 $(destdir)$(bindir); \ Cd $(destdir)$(bindir); \ $(rm) pgp_old del pgpv de los pgps del
pgpe; \! $(ln_s) pgpe del PGP; \! $(ln_s) pgps del PGP; \! $(ln_s) pgpv del PGP; \! $(ln_s) el pgp_old del PGP \) el diff - r - el *** pgp50i-b8/src/man/Makefile.in Mon de agosto 11 el 16:01:48 de c pgp50i-b8/src/man/Makefile.in old/pgp50i-b8/src/man/Makefile.in 1997 -
--- old/pgp50i-b8/src/man/Makefile.in sentó de agosto 9 el 23:45:36
1997 **** del *** 6.20 del *************** # $$Id: Makefile.in, v
1,3,2,4 1997/06/24 quark Exp de 23:03:16 $ #
# cambio esto a pgp5 si usted desea viejas y nuevas versiones en paralelo! INSTPGP=pgp! MAN1=$(INSTPGP).1 pgpe.1 pgpk.1 pgps.1 pgpv.1 MAN5=pgp.cfg.5
$(instpgp).1: pgp.1! $(ln_s) $
<$@
!
! install:: $(INSTPGP).1
if test 'x$(MAN1)' != x; then \
if test ! -d $(DESTDIR)$(mandir)/man1; then \
mkdir -p $(DESTDIR)$(mandir)/man1; \
- --- 6,15 ----
# $Id: Makefile.in,v 1.3.2.4 1997/06/24 23:03:16 quark Exp $
#
! MAN1=pgp.1 pgpe.1 pgpk.1 pgps.1 pgpv.1
MAN5=pgp.cfg.5
! install::
if test 'x$(MAN1)' != x; then \
if test ! -d $(DESTDIR)$(mandir)/man1; then \
mkdir -p $(DESTDIR)$(mandir)/man1; \
Seguridad:
PGP se basa
en algoritmos cuya robustez ante ataques está muy lejos
del alcance de cualquier hacker profesional. La
criptografía de claves públicas y los algoritmos
utilizados se vienen estudiando desde hace 25 años y son
los más robustos que existen. Más específicamente, PGP
fue diseñado y probado por los criptógrafos más
competentes del mundo y, hasta el momento, nadie ha sido
capaz de romper su código. Para descifrar un mensaje
encriptado con PGP haría falta tal poder de computación
que resulta impensable que ningún individuo o compañía
privada pudiera hacer frente a los costes. Nótese que,
con las computadoras que existen hoy día, harían falta
muchos años de cálculos constantes para acercarse al
éxito. Sin embargo,
esto es sólo válido para el mundo de los ciudadanos de
a pie. La pesadilla de todo criptógrafo es el poder de
computación del que, supuestamente, disponen los
gobiernos de las grandes potencias mundiales. No se sabe
si gobiernos como el estadounidense son ya capaces de
descifrar a bajo coste mensajes encriptados con PGP. Si
necesitáramos protegernos de este tipo de ataques
institucionales, posiblemente una solución estándar
como PGP se nos quedaría corta pero, ¿a cuánta gente
conocemos que necesite proteger su información de los
gobiernos extranjeros? Ahora bien,
por muy seguro que sea PGP, la falta de sentido común y
los descuidos pueden hacer vulnerable hasta el más
complicado de los algoritmos de encriptación. Ejemplos
de malas prácticas pueden ser: permitir que alguien
copie nuestra clave privada, utilizar contraseñas muy
fáciles de adivinar o no eliminar archivos
comprometedores completamente. En el mundo real, la
inmensa mayoría de los ataques a la seguridad y la
privacidad de las comunicaciones no los llevan a cabo
hackers inadaptados y superdotados, sino nuestros propios
compañeros y empleados, pues es hacia donde nuestras
defensas se presentan más débiles. Una
vulnerabilidad de PGP, aunque no es un problema del
programa en sí, es la posibilidad de que otros se hagan
pasar por quienes no son. Por ejemplo, cualquiera podría
crear una pareja de claves con el nombre de una
personalidad de la vida pública y empezar a firmar
mensajes con esa clave. Los usuarios más inexpertos o
más crédulos podrían pensar que han recibido un
mensaje de esa persona con sólo ver que su nombre
aparece en la firma digital. Pues bien, para confiar al
100% en una clave pública o una firma, es necesario que
se den una de las dos condiciones siguientes:
Aún así,
puede quedarnos un cierto poso de incertidumbre. Para
resolverlo, lo mejor que se puede hacer es utilizar
certificados digitales, que no son más que la firma de
una autoridad reconocida sobre nuestra propia firma
digital. Esto, a diferencia de PGP, no es gratuito. El mayor problema de PGP:
Pese a lo que
pudiera parecer, el mayor problema de PGP no tiene nada
que ver con los hackers, los algoritmos y demás
cuestiones técnicas. En realidad, su mayor desventaja es
que sus usuarios son, en términos relativos, escasos,
aunque su número aumenta a pasos agigantados. Si bien
existen decenas de miles de usuarios de PGP, esta cifra
es pequeña si se compara con el total de internautas. Hay pocos
motivos para no usar PGP, pues sus características
suponen un salto cualitativo en lo que a nuestra forma de
usar Internet se refiere, pero la mayoría de los
internautas simplemente desconocen su existencia. No
obstante, el número de usuarios de PGP es infinitamente
superior al de las demás aplicaciones gratuitas de
seguridad que podemos encontrar, por lo que no deja de
ser el líder en su sector con una gran ventaja sobre sus
competidores. Puntos vulnerables: Ningún
sistema de seguridad de datos es impenetrable. PGP puede
burlarse de diversas maneras. Los posibles puntos
vulnerables que hay que tener en cuenta son, entre otros,
el compromiso de la contraseña o de la clave secreta, la
manipulación de las claves públicas, los ficheros que
se han borrado pero que siguen todavía en el disco, los
virus y caballos de Troya, los fallos en la seguridad
física, las emisiones electromagnéticas, la exposición
en sistemas multiusuario, el análisis de tráfico, y
quizá incluso el criptoanálisis directo. COMO VALIDAR LOS
DATOS RECIBIDOS? A veces, no sólo nos gustaría evitar que cualquiera que no sea el destinatario del mensaje pueda leerlos. También puede ser necesario el asegurarse de que la persona con la que nos comunicamos no ha sido suplantada por alguien. En el mundo real las cartas pueden firmarse, pero, ¿ que ocurre con el correo electrónico ? Para ello se recurre a la autenticación. El programa de encriptado añade al final del mensaje una firma electrónica creada encriptando un extracto del mensaje (message digest)con la clave secreta. El receptor del mensaje puede probar a desencriptar esta firma con la clave pública del emisor. Si se puede, esto prueba que el emisor es quien esperamos que sea, ya que - se supone - sólo él posee su clave secreta, y así, sólo él puede firmar. La firma digital utiliza un codigo hash o algoritmo de resumen del mensaje, y un algoritmo clave-pública de la firma . La secuencia es como sigue:
PGP
utiliza "resúmenes de mensaje" para elaborar
las firmas. Un resumen de mensaje es una función
"distribución" ("hash")
unidireccional de 128 bits, criptográficamente
resistente, de ese mensaje. Es análogo a una "suma
de verificación" o código CRC de comprobación de
errores: "representa" el mensaje de forma
compacta y se utiliza para detectar cambios en él. A
diferencia de un CRC, sin embargo, resulta
computacionalmente impracticable para un atacante idear
un mensaje sustitutivo que produzca un resumen idéntico.
El resumen del mensaje se encripta con la clave secreta
para elaborar la firma. Los
documentos se firman añadiéndoles como prefijo un
certificado de firma, junto con el identificador de la
clave que se utilizó para realizarla, un resumen de
mensaje del documento (firmado con la clave secreta) y un
sello de hora del momento de la firma. El destinatario
utiliza el identificador de la clave para buscar la clave
pública del remitente y comprobar
la firma. El programa busca automáticamente la clave
pública y el identificador de usuario en el fichero de
claves correspondiente. Los ficheros cifrados llevan como
prefijo el identificador de la clave pública con la que
se han encriptado. El destinatario utiliza este prefijo
de identificación para encontrar la clave secreta y
poder desencriptar el mensaje. Su programa busca
automáticamente la clave secreta en el fichero de claves
correspondiente. Estos
dos tipos de fichero constituyen el método principal
para almacenar y gestionar las claves públicas y
secretas. En lugar de mantener las claves individuales en
ficheros separados, se reúnen en anillos para facilitar
la búsqueda automática, ya sea por identificador de
clave o por identificador de usuario. Cada usuario
mantiene su propio par de anillos. Las claves públicas
individuales se guardan en ficheros aparte durante el
tiempo necesario para enviarlas a algún amigo, que las
añadirá entonces a su propio anillo de claves. INTEGRIDAD DEL MENSAJE
También podría ser necesario estar seguros de que nadie ha interceptado el mensaje, lo ha modificado y nos lo ha enviado alterado. Para ello se emplean las mismas firmas digitales obtenidas para la autenticación. Dado que para crear esta firma se usan message digests, y los algoritmos que los crean garantizan que nunca dos mensajes distintos tendrán el mismo digest, si el texto es alterado, ya no se corresponderá con la firma electrónica que le acompaña.
CONCLUSIONES Recomendaciones de uso: PGP (tm) utiliza criptografía de clave pública
para proteger el correo electrónico y los ficheros de
datos. Comunícate con seguridad con personas a las que
nunca has visto, sin necesidad de canales seguros para
intercambiar claves. PGP es rápido y ofrece muchas prestaciones, entre ellas una completa gestión
de claves, firmas digitales, compresión de datos y un
buen diseño ergonómico. En general, la encriptación y la firma de
mensajes debería usarse aunque la información que
manejamos no sea especialmente sensible. Normalmente,
cuando echamos una carta al buzón de correos, cerramos
el sobre. Esto es así porque no queremos que otros lean
su contenido. ¿Por qué vamos a exigirnos menos al
enviar un mensaje por Internet? PGP es el programa que
sirve de sobre a nuestras cartas por Internet. Por si todo esto fuera poco, PGP es gratuito para fines no comerciales. Las versiones profesionales, además, tienen precios inferiores a los 25 Euros, lo que convierte al programa en una solución de seguridad enormemente económica. REFERENCIAS: INTERNET-DRAFT OpenPGP Message Format August 31, 1998 Expires Feb 28,
1999 Callas, et al.
http://www.arnal.es/free/cripto/pgp/histor.htm Autor: Jose Luis Martín Mas http://www.geocities.com/SiliconValley/Pines/2332/ Todo sobre el pgp Autor: Javier González Ultima modificación : 29 de Marzo
de 1998. http://www.argo.es/~jcea/artic/hispasec70.htm Última
Actualización: 8 de Junio de 2.000 – Jueves Artículo
publicado en el boletín Una-Al-Día de Hispasec,
el 24 de Mayo de 2.000. http://glub.ehu.es/seguridad/pgp5unix.html Roberto Cano 28 Marzo 1998. http://www.pgpi.org/doc/faq/pgpi/es/ Traducido por Mariano Absatz |
![]() |