Sie sind auf Seite 1von 3

ESPECIFICACIN DE PROTOCOLOS DE

SEGURIDAD
Un protocolo de seguridad es un conjunto de intercambios en los que intervienen
normalmente dos o tres entidades: La entidad iniciadora del protocolo (entidad a), la
entidad receptora (entidad b) y una tercera entidad opcional (entidad c) con la misin de
autenticacin de los intercambios, distribucin de claves pblicas y/o claves de sesin.
El objetivo principal de un protocolo de seguridad es distribuir una clave de sesin de
forma segura entre las entidades a y b con el objetivo de tener un canal seguro de datos
entre estas entidades.
Una forma de definir los intercambios que comprenden un protocolo de seguridad es
utilizar especificaciones formales. En la figura vemos la especificacin formal que
utilizaremos para representar protocolos de seguridad. En este ejemplo solo intervienen
dos entidades a y b:
PROTOCOL SPECIFICATION
CONSTANTS
a,b:address;
hola,req,ok:data.
MESSAGES
1:a->b:KPA;
2:b->a:encrypt(KPA,KS).
3:a->b:encrypt(KS,hola).
RELATIONS
1:public_key(a,KPA);
2:sesion_key(KS).

Fig 1: Ejemplo de especificacin formal de protocolo de seguridad


La especificacin formal que utilizaremos para representar protocolos de seguridad se
compone de cuatro campos Identificador de inicio de la especificacin, Declaracin de
Constantes, Mensajes implicados en el protocolo de seguridad, Declaracin de
Relaciones asociadas a mensajes:
Identificador de inicio de la especificacin: Este elemento determina el comienzo de la
especificacin formal de un protocolo de seguridad y est formado nicamente por la
cadena de caracteres PROTOCOL SPECIFICATION.
Declaracin de Constantes: Este elemento contiene las cadenas de caracteres que
denominaremos identificadores constantes que se utilizarn en la definicin del
protocolo de seguridad. Es decir este campo comienza con la cadena de caracteres
CONSTANTS seguida en lneas distintas de los identificadores presentes en la
especificacin agrupados por tipos. Cada tipo de constantes aparecer en una lnea y
separado del siguiente por el carcter ; y a su vez los identificadores asociados a un
tipo concreto aparecern dentro del tipo separados por comas (,). El elemento finaliza
con el carcter (.) despus del ltimo tipo de identificadores.

Pg 1 de 3

Mensajes implicados en el protocolo de seguridad: Este campo contiene los mensajes


implicados en el protocolo de seguridad identificados por un nmero entero y
precedidos por la entidad origen y destinataria del mensaje (entidad_origen
entidad_destino). Un mensaje es una secuencia de identificadores constantes y/o
variables y/o elementos de cifrado. Los identificadores constantes aparecen
representados por cadenas en minsculas (este es su valor) y los identificadores
variables aparecen representados por cadenas en maysculas. La sintaxis de un
elemento cifrado es: encrypt(clave, datos a cifrar), donde se representa un conjunto
de datos cifrados por la clave. El cifrado puede ser simtrico o asimtrico dependiendo
de la naturaleza de la clave. El valor de los identificadores variables hay que evaluarlo a
partir de las funciones definidas en el campo RELATIONS o bien a partir de los
mensajes anteriores recibidos (u opcionalmente creados por una entidad). La estructura
de este campo es la siguiente: Comienza con la cadena de caracteres MESSAGES
seguida en lneas distintas de los mensajes implicados en el protocolo de seguridad que
aparecern en lneas distintas y separados por el carcter ;. El elemento finaliza con el
carcter (.) a continuacin del ltimo mensaje.
Declaracin de Relaciones asociadas a mensajes. Este elemento contiene un conjunto
de funciones o procedimientos que una entidad debe aplicar a la hora de obtener los
identificadores variables que aparecen en un mensaje. Este campo comienza con la
cadena de caracteres RELATIONS seguida en lneas distintas de las relaciones
asociadas a cada uno de los mensajes implicados en el protocolo de seguridad. Las
relaciones asociadas a un mensaje concreto aparecern en una lnea especfica separadas
por comas (,) y en su conjunto separadas de las relaciones asociadas a otro mensaje
por el carcter ;.El elemento finaliza con el carcter (.) a continuacin de las
relaciones aplicables al ltimo mensaje. Puede ocurrir que un mensaje no tenga ninguna
relacin asociada.
Las relaciones que utilizaremos sern las siguientes: obtencin de clave pblica,
obtencin de clave privada, obtencin de clave de sesin, generacin de sello de
tiempo, generacin de nmero aleatorio.
La especificacin public_key(propietario_clave, clave pblica) significa que la
entidad correspondiente tiene que obtener la clave pblica de una entidad. Por ejemplo,
public_key(a, KPA) significa que el identificador variable KPA es la clave pblica de
la entidad a, que deber obtener a partir de un fichero o memoria. La clave pblica de
una entidad puede ser conocida por otras entidades.
La especificacin secret_key(propietario_clave, clave privada) significa que la
entidad correspondiente tiene que obtener la clave secreta o privada de una entidad. Por
ejemplo, secret_key(a, KSA) significa que el identificador variable KSA es la clave
secreta de la entidad a, que deber obtener a partir de un fichero o memoria.
Lgicamente, solo la entidad a puede poseer y obtener su clave secreta.
La especificacin sesion_key(clave_sesion) significa que la entidad correspondiente
tiene que obtener una clave de sesin. Por ejemplo, sesion_key(KS) significa que el
identificador variable KS es una clave de sesin generada por una entidad. La forma de
generar la clave puede ser simplemente a travs de una funcin generadora de nmeros
psedoaleatorios.

Pg 2 de 3

La especificacin time(tiempo) significa que la entidad correspondiente tiene que


obtener el tiempo actual del mensaje a partir del sistema. Por ejemplo, time(T1)
significa que el identificador variable T1 es un tiempo obtenido de nuestro sistema, que
incorporamos al mensaje y que nos permitir garantizar la actualidad de los mensajes.
La especificacin random(num_aleatorio) significa que la entidad correspondiente
tiene que obtener un nmero aleatorio e incorporarlo a un mensaje. Por ejemplo,
random(N1) significa que el identificador variable N1 es un nmero aleatorio
obtenido a partir de una funcin generadora de nmeros psedoaleatorios. La entidad
receptora de un mensaje que incorpore un nmero aleatorio responder a este mensaje
con otro que incorpore una funcin de ese nmero aleatorio lo que nos permitir
garantizar la actualidad de los mensajes.
En la especificacin de la figura 1 tenemos un ejemplo de un protocolo de dos
intercambios:
En el primer intercambio la especificacin formal indica que la entidad a enva a la
entidad b el identificador variable KPA. Accediendo al campo RELATIONS
observamos que el identificador variable KPA es en realidad la clave pblica de a.
As pues la entidad a, obtiene su clave pblica (de un fichero o memoria) y se la enva a
la entidad b.
En el segundo intercambio la especificacin formal indica que la entidad b enva a la
entidad a un identificador variable KS cifrado por un identificador variable KPA. El
valor del identificador KS lo obtenemos a partir del campo RELATIONS si es que
hubiera una relacin con este identificador, o bien, de mensajes anteriores recibidos (u
opcionalmente creados por una entidad). Puesto que existe una relacin
sesion_key(KS), se deduce que KS es una clave de sesin que la entidad debe de
generar. Una forma de generarla es a travs de una funcin de generacin de nmeros
aleatorios.
Una vez obtenido el valor de KS la entidad b debe cifrar este valor con el valor de KPA.
Pero KPA es un identificador variable que no tiene asociada relacin. La entidad b
deber obtener su valor del mensaje 1 recibido. Finalmente, quedara por cifrar el valor
de KS con el valor de la clave pblica KPA.*
En el tercer intercambio la especificacin formal indica que la entidad a enva a la
entidad b la cadena hola cifrada con el identificador variable KS. Como este
identificador no tiene relacin asociada, su valor es obtenido del mensaje anterior
recibido.*
* En general, se recomienda guardar en una tabla el valor de cualquier identificador
variable recibido por una entidad, a partir de un mensaje recibido de otra entidad
cualquiera. De esta forma se puede acceder a su valor cuando lo requiera el protocolo.
Adicionalmente, por idnticos motivos, se recomienda guardar en una tabla, el valor de
cualquier identificador variable generado por una entidad.

Pg 3 de 3

Das könnte Ihnen auch gefallen