• No results found

La mayor´ıa de las propuestas de seguridad en la literatura tienen su base en algunas de las operaciones u algoritmos criptogr´aficos cl´asicos de la seguridad en c´omputo. El caso de esta propuesta no es la excepci´on, aqu´ı se har´a uso de la criptograf´ıa asim´etrica, sim´etrica y de la operaci´on hash.

IV.2.1

Criptograf´ıa asim´etrica

En cuanto a la criptograf´ıa asim´etrica (espec´ıficamente firmas digitales), se cuenta con varios algoritmos que se pueden utilizar, como el caso del algoritmo RSA, ECC, El- Gamal y Diffie-Helman. Los algoritmos m´as utilizados en la actualidad son RSA y ECC, adem´as, existen implementaciones para TinyOS, por lo cual el enfoque estar´a en escoger entre estos dos.

En cuanto a la elecci´on de usarRSAoECC, se eligi´oECC por las siguientes razones:

• ECC yRSAtienen tiempos muy similares en la realizaci´on de la operaci´on p´ublica (RSA marginalmente inferior) la cual se usa en la verificaci´on de firma. Sin embargo, en la operaci´on privada la cual involucra firmar un mensaje, RSA tiene un orden de tiempo y c´omputo mucho mayor que su operaci´on p´ublica, esto ocasiona que la operaci´on privada no sea factible que la realicen los nodos sensores con recursos limitados. En cambio, la operaci´on privada de ECC tiene tiempos

y c´omputo similares a su operaci´on p´ublica. Esto abre la puerta a que los nodos tengan la capacidad de poder firmar mensajes, lo cual aunque no se utilice en esta propuesta, se podr´ıa utilizar en alguna extensi´on a este trabajo.

• ECC usa llaves de menor tama˜no que RSA para un mismo nivel de seguridad, v´ease la Figura II. Esto influye en la propuesta en el tama˜no de la firma que se tiene que transmitir y en el espacio que se tiene que reservar en memoria para la llave p´ublica (n´otese que el tama˜no m´aximo de un paquete en TinyOS es de 102 bytes). Esta es una de las razones m´as fuertes de elegir ECC sobre RSA, ya que m´as bytes por transmitir y la gesti´on de una llave m´as grande equivale a mayor gasto de energ´ıa en el protocolo.

Tabla II: Recomendaciones de NIST de los tama˜nos de llave p´ublica para AES. N´otese la gran diferencia en el tama˜no de la llave de ECC y RSA. Fuente NIST ANSI X9F1

Tama˜no Tama˜no Raz´on de Tama˜no

llave ECC llave RSA tama˜no de llave llave AES

(bits) (bits) (bits)

163 1024 1:6

256 3072 1:12 128 384 7680 1:20 192 512 15360 1:30 256

En cuanto a cual implementaci´on de ECC utilizar, se escogi´o TinyECC (Liuet al., 2007) por las siguientes razones:

• Est´a disponible p´ublicamente para descargarse desde su p´agina web, cuenta con algunos ejemplos de los cuales se pueden partir.

• Cuenta con optimizaciones para las plataformas de hardware de nodos sensores MicaZ y TelosB, reportando tiempos de alrededor de 4 segundos para TelosB (MicaZ menos tiempo ya que cuenta con otra optimizaci´on que TelosB no tiene).

• Es la implementaci´on que utilizan algunas de las propuestas anteriores de se- guridad en el protocolo de reprogramaci´on (Lanigan et al., 2006) (Deng et al., 2006).

En cuanto a las instanciaciones que se eligieron del algoritmoECC, se eligi´o la curva SECP128R2 (v´ease el est´andar de certicom (Certicom, 2000)), la cual genera:

• Un tama˜no de llave p´ublica de 32 bytes.

• Un tama˜no de llave privada de 16 bytes.

• Un tama˜no de firma digital de 32 bytes.

El m´ınimo grado de seguridad recomendado por la NIST es de 160 bits, se us´o 128 bits (SECP128R2 es de 128 bits) ya que aunque est´a abajo del valor m´ınimo recomen- dado, estas recomendaciones no consideran las caracter´ısticas de las redes de sensores. Por ende, se consider´o prudente usar el m´ınimo grado de seguridad posible pero que no haya sido roto, para compensar por las limitantes de las redes de sensores. Para mayor informaci´on sobre el esquema de cifrado ECC v´ease Ap´endice A.

IV.2.2

Operaci´on hash

El algoritmo de operaci´on hash utilizado fue el SHA-1. Se eligi´o este algoritmo ya que viene con la distribuci´on de TinyECC por la raz´on que se ocupa para obtener la firma digital (algoritmo EDCSA de firmas digitales con ECC). Se hubiera podido es- coger alg´un otro algoritmo como por ejemplo MD5, sin embargo se hubiera tenido que cambiar el bloque hash del algoritmo de firma o agregar m´as c´odigo para calcular el otro hash. En conclusi´on se eligi´o aSHA-1 por conveniencia y disponibilidad; por otro lado, es el algoritmo est´andar de la NIST, adem´as que es ampliamente utilizado por la comunidad de seguridad.

El algoritmoSHA-1 recibe una mensaje de tama˜no variable como entrada y produce una salida de 20 bytes. En esta propuesta se trabajar´a en ocasiones con el valor hash truncado a 10 bytes, aunque el truncamiento rompe la confianza del algoritmo a resistir a cualquier ataque conocido hasta la actualidad, para la aplicaci´on que se les va a dar ofrecen suficiente resistencia a poder obtener el valor inverso del hash.

Para mayor informaci´on sobre como funciona el algoritmo SHA-1 v´ease Ap´endice A.

IV.2.3

Criptograf´ıa sim´etrica

El algoritmo de cifrado sim´etrico que se eligi´o fue SkipJack, se eligi´o SkipJack por ser un algoritmo de cifrado ligero, r´apido e ideal para dispositivos con recursos limitados como SmartCards o en este caso nodos sensores. Los autores de TinySec, el cual es una paquete de seguridad distribuido con TinyOS, tambi´en eligen a SkipJack como su cifrador de bloque. En (Karlofet al., 2004) se dan argumentos de por que eligir a este algoritmo en vez de los otros muchos como AES, RC5, TripleDES, etc. En cuanto al modo de operaci´on1 existenCBC,ECB,CTR, entre otros. Pero se eligi´o aCBC ya que

es elegido por los autores de TinySec y en (Karlof et al., 2004) dan sus razones de por qu´e es apto para las redes de sensores.

La implementaci´on del algoritmo SkipJack y CBC se obtuvieron de la implemen- taci´on de TinySec que ya viene en TinyOS. No se us´o todo el paquete TinySec, solo se extrajeron los componentes espec´ıficos del cifrado. El cifrador de bloque SkipJack utiliza una llave sim´etrica de 10 bytes, opera sobre bloques de 8 bytes y produce un bloque de 8 bytes cifrado. CBC utiliza un valor IV con el cual empieza la secuencia 1Modo de operaci´on se le llama a c´omo se transforma un cifrador de bloque a uno de mensaje de

de cifrado de los bloques, este valor IV es del tama˜no del bloque.

Para mayor informaci´on sobre el funcionamiento del algoritmo SkipJack y el modo de cifrado CBC, v´ease Ap´endice A.

IV.2.4

Herramientas de seguridad para la estaci´on base

Para realizar el cifrado asim´etrico, sim´etrico, operaci´on hash y generaci´on de llaves en la PC (lo cual est´a implementado en el lenguaje Java), se utiliza el API Bouncy- Castle (BouncyCastle, 2007), el cual es un proveedor de seguridad de Java JCE (Java Criptography Extension). BouncyCastle contiene una gran colecci´on de algoritmos crip- togr´aficos, entre los cuales est´an firmas con ECC, SkipJack y SHA-1.

Se tuvo que modificar y agregar algunas clases al paquete BouncyCastle, ya que no soportaba la curvaECC SECP128R2, necesaria para tener una firma digital de solo 32 bytes al igual que se usa en TinyECC. Adem´as, tambi´en se tuvo que modificar un poco a TinyECC ya que la forma de firmar y la representaci´on de las llaves privada/p´ublica entre las dos herramientas difiere en unos detalles.

IV.3

Autenticaci´on e integridad del c´odigo de ac-

Related documents