05. Tema 6. Departament d Informàtica. Universitat de València. 1. Applets 2

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia Tema 6 Applets. Applets Firmados. Encriptaci´ on. Departament d’Inform`atica. Universitat de Val`encia ´Indice 1. Applets 2 1.1. Un primer ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2. Otro ejemplo con par´ ametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3. Formas de visualizar un applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4. El plugin de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2. Applets firmados 11 2.1. Seguridad en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1. Administradores de seguridad y permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3. Seguridad en la plataforma Java 2 14 3.1. Archivos de pol´ıtica de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2. Firmas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.1. Compendio de mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.2. Mensajes firmados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.3. Autenticaci´ on de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4. Encriptaci´ on 28 4.1. Codificadores sim´etricos sobre bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 [email protected] P´ agina: 1 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia 4.2. Codificadores asim´etricos o de clave p´ ublica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1. Applets Un applet est´a formado por una clase o conjunto de clases escritas en Java que est´ a insertado en una p´agina Web. Cuando un usuario carga la p´agina en la que est´a el applet, ´este se ejecuta localmente (en la m´aquina cliente donde se est´a ejecutando el navegador Web) y no remotamente (sobre el sistema que est´a ejecutando el servidor HTTP). El navegador recibe el código HTML y ejecuta el applet Envía el código HTML y las clases Internet Servidor HTTP Cliente El hecho de que el c´odigo se ejecute localmente implica que la seguridad sea crucial. Los applets est´an sometidos a unas restricciones de seguridad por defecto. Por ejemplo, nadie desea que un applet cargado visitando una p´agina Web borre sus ficheros. O que ese applet realice conexiones a otras m´aquinas para transferir informaci´ on. Estas restricciones est´an impuestas por un objeto del tipo SecurityManager en el sistema cliente, que especifica qu´e acciones est´an permitidas y cuales no. [email protected] P´ agina: 2 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia A partir de la versi´on 1.1 de la plataforma Java, las clases se pueden firmar digitalmente, estas clases (si el usuario conf´ıa en quien las firma) pueden realizar acciones no permitidas a las clases no firmadas. Por defecto, el gestor de seguridad de los navegadores verifica entre otras cosas que los applets No puedan leer los ficheros locales. No puedan escribir en los discos locales. No puedan establecer conexiones a otras m´aquinas salvo con el servidor que contiene el applet. No ejecutar programas locales. No puedan obtener informaci´on privada sobre el usuario. Los applets deben ser subclases de la clase Applet (si se van a utilizar clases de AWT) o de JApplet (si se van a utilizar clases de Swing). A diferencia de las aplicaciones vistas hasta el momento, la ejecuci´on de un applet no comienza en el m´etodo main(.). Hay una serie de m´etodos que son llamados cuando ocurren determinadas circunstancias. Estos m´etodos de Applet o de JApplet son los que hay que sobreescribir. La siguiente figura muestra cuando llama el navegador a estos m´etodos: Hay que redibujar el applet init() start() paint() Se carga la pagina que contiene el applet Se cierra el navegador o se cambia a otra pagina stop() destroy() El esqueleto de un applet basado en la clase Applet se muestra a continuaci´on: import import java . a p p l e t . Applet ; j a v a . awt . ∗ ; [email protected] P´ agina: 3 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia c l a s s UnApplet e x t e n d s A p p l e t { // D e c l a r a c i o ´ n de a t r i b u t o s p u b l i c void init (){ // I n i c i a c i o ´ n de l a s v a r i a b l e s // C o n s t r u c c i o n d e l a GUI } p u b l i c void start () { // S e n t e n c i a s } p u b l i c v o i d stop () { // S e n t e n c i a s } p u b l i c v o i d destroy () { // S e n t e n c i a s } p u b l i c v o i d paint ( Graphics g ) { // O p e r a c i o n e s d e d i b u j o ( s i } las hay ) } Un applet concreto puede sobreescribir todos estos m´etodos o solamente algunos de ellos en funci´ on de la tarea que deba realizar. En los ejemplos de c´odigo proporcionados, en el directorio ejemplos/applets/OrdenMetodos hay un applet firmado (para poder acceder al disco local) que guarda en el fichero que se le pasa como par´ ametro desde el c´odigo HTML la secuencia de llamadas a los diferentes m´etodos. Este applet se puede utilizar para ver las posibles diferencias entre los navegadores a la hora de llamar a estos m´etodos. La jerarqu´ıa de las clases Applet y JApplet es la siguiente: Object O Object O Component O Component O Container O Container O Panel O Panel O Applet Applet O JApplet [email protected] P´ agina: 4 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia Adem´ as de los m´etodos que controlan el ciclo de vida del applet hay otros m´etodos disponibles, entre los cuales destacan: public A u d i o C l i p g e t A u d i o C l i p (URL u r l C l i p ) public A u d i o C l i p g e t A u d i o C l i p (URL u r l , String fichero ) Obtienen un fichero de audio y MIDI desde una URL y lo asignan a un objeto del tipo AudioClip que permite los mensajes play(), loop() y stop(). La versi´ on JDK 1.1 soporta ficheros en formato .au. A partir de la versi´on 1.2 se soportan .aiff y .wav adem´as de MIDI tipo 0, MIDI tipo 1 y ficheros en formato RMF. public Image g e t I m a g e (URL u r l I m a g e n ) public Image g e t I m a g e (URL u r l , String fichero ) Estos m´etodos obtienen una imagen desde una URL y crean un objeto del tipo Image. public void showStatus ( S t r i n g mensaje ) Este m´etodo muestra la cadena pasada como argumento en la barra de estado (en la parte inferior del navegador). public v o i d showDocument (URL htmlDoc ) public v o i d showDocument (URL htmlDoc , String frame ) Estos m´etodos se pueden utilizar para indicar al navegador que muestre una determinada p´ agina Web. En realidad est´an definidos en la clase AppletContext por lo que para utilizarlos hay que hacer lo siguiente: getAppletContext().showDocument(...) Como ya se ha comentado, el applet debe estar incluido en una p´agina Web. El lenguaje de marcado HTML contiene etiquetas para indicar que un elemento es un applet. El esqueleto de c´odigo HTML de una p´agina que contenga un applet se muestra a continuaci´ on: Applet [email protected] P´ agina: 5 LP (Telem´atica) Universitat de Val`encia Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 Elementos Significado ARCHIVE Especifica el archivo jar donde se encuentran las clases y otros recursos que utilice el applet. CODE Especifica la clase que extiende a Applet o a JApplet. Se asume que la clase se puede encontrar en el mismo sitio que la p´agina web a no ser que se proporcione CODEBASE. CODEBASE Designa la URL donde encontrar la clase o el fichero jar. WIDTH Especifica la anchura que tendr´a el applet. HEIGHT Especifica la altura que tendr´a el applet. ALIGN Especifica c´omo se debe colocar el applet dentro del espacio disponible (LEFT, RIGHT, TOP, BOTTOM, MIDDLE). PARAM Se puede utilizar para pasar par´ametros al applet. En NAME se especifica el nombre del par´ametro y en VALUE se especifica el valor. 1.1. Un primer ejemplo j a v a . awt . ∗ ; java . applet . ∗ ; import import /∗ ∗ E s t a c l a s e e s un Banner en e l q u e a p a r e c e r a t e x t o d e s p l a z a n d o s e ∗/ p u b l i c c l a s s Banner e x t e n d s A p p l e t i m p l e m e n t s Runnable { p r i v a t e S t r i n g msg = ” E s t a f r a s e s e d e s p l a z a Esta f r a s e s e p r i v a t e Thread t = n u l l ; p r i v a t e b o o l e a n parado ; /∗ ∗ O c u l t a m o s e l metodo i n i t d e A p p l e t < b r> ∗ Se e s t a b l e c e n l o s c o l o r e s d e l f o n d o y d e ∗ ademas d e l t i p o d e f u e n t e ∗/ p u b l i c void init (){ setBackground ( Color . blue ) ; setForeground ( Color . white ) ; s e t F o n t ( new Font ( ” A r i a l ” , Font . BOLD, 1 8 ) ) ; } la desplaza ”; fuente /∗ ∗ O c u l t a m o s e l metodo s t a r t ( ) d e A p p l e t < b r> ∗ Se c r e a un h i l o y s e l a n z a ∗/ p u b l i c void start () { // E s t o s e p u e d e h a c e r ya q u e e s t a c l a s e i m p l e m e n t a a R u n n a b l e t = new Thread ( t h i s ) ; parado = f a l s e ; t . start () ; } /∗ ∗ I m p l e m e n t a m o s e l metodo r u n ( ) ya q u e l a c l a s e Banner ∗ i m p l e m e n t a a l a i n t e r f a z R u n n a b l e . < b r> ∗ En e s t e metodo h a y un b u c l e i n f i n i t o d e l t r o d e l c u a l ∗ s e r e p i n t a e l a p p l e t , s e duerme d u r a n t e ∗ 2 5 0 m i l i s e g u n d o s , y e l primer c a r a c t e r s e pone a l f i n a l ∗ d e l a c a d e n a . < b r> ∗ Si se debe parar e l h i l o se s a l e d e l b u c l e . ∗/ p u b l i c v o i d run ( ) { c h a r ch ; for ( ; ; ){ try{ repaint () ; Thread . s l e e p ( 2 5 0 ) ; ch = msg . c h a r A t ( 0 ) ; msg = msg . s u b s t r i n g ( 1 , msg . l e n g t h ( ) ) ; msg = msg + ch ; i f ( parado ) break ; } c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) {} } } /∗ ∗ O c u l t a m o s e l metodo s t o p ( ) d e A p p l e t < b r> ∗ S i s e d e b e p a r a r e l a p p l e t s e pone e l i n d i c a d o r a ∗ y se asigna la r e f e r e n c i a al h i l o a n u l l . [email protected] false P´ agina: 6 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia ∗/ p u b l i c v o i d stop () { parado = t r u e ; t = null ; } /∗ ∗ O c u l t a m o s e l metodo p a i n t ( G r a p h i c s g ) d e A p p l e t < b r> ∗ Se l i m i t a a p i n t a r e l mensage . E s t e metodo s e r a l l a m a d o ∗ cuando s e l l a m e a r e p a i n t ( ) ∗/ p u b l i c v o i d paint ( Graphics g ) { g . d r a w S t r i n g ( msg , 5 0 , 3 0 ) ; } } Y el c´ odigo HTML donde se utiliza este applet es: Ejemplo de a p p l e t Ejemplo de a p p l e t Este ejemplo se encuentra en el directorio ejemplos/applets/Ejemplo1 1.2. Otro ejemplo con par´ ametros Ahora vamos a modificar el c´odigo anterior para pasar como argumentos al applet la siguiente informaci´ on: El texto a mostrar El intervalo de tiempo entre actualizaciones Las coordenadas donde debe mostrar el texto El sentido de desplazamiento del texto import import j a v a . awt . ∗ ; java . applet . ∗ ; /∗ ∗ E s t a c l a s e e s un Banner en e l q u e a p a r e c e r a t e x t o d e s p l a z a n d o s e ∗/ p u b l i c c l a s s B a n n e r P a r a m e t r o s e x t e n d s A p p l e t i m p l e m e n t s Runnable { p r i v a t e S t r i n g msg ; p r i v a t e i n t tiempo ; p r i v a t e i n t cx ; p r i v a t e i n t cy ; p r i v a t e String sentido ; p r i v a t e Thread t = n u l l ; p r i v a t e b o o l e a n parado ; /∗ ∗ O c u l t a m o s e l metodo i n i t d e A p p l e t < b r> ∗ Se e s t a b l e c e n l o s c o l o r e s d e l f o n d o y d e ∗ ademas d e l t i p o d e f u e n t e [email protected] la fuente P´ agina: 7 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia ∗/ p u b l i c void init (){ setBackground ( Color . blue ) ; setForeground ( Color . white ) ; s e t F o n t ( new Font ( ” A r i a l ” , Font . BOLD, 1 8 ) ) ; } /∗ ∗ O c u l t a m o s e l metodo s t a r t ( ) d e A p p l e t < b r> ∗ Se o b t i e n e n l o s p a r a m e t r o s , s e c r e a un h i l o ∗/ p u b l i c void start () { S t r i n g parametro ; // O b t e n c i o n d e los y se lanza parametros msg = g e t P a r a m e t e r ( ”TEXTO” ) ; i f ( msg== n u l l ) msg = ” Texto p o r d e f e c t o ” ; msg = ” ” + msg + ” ”; s e n t i d o = g e t P a r a m e t e r ( ”SENTIDO” ) ; i f ( s e n t i d o== n u l l ) sentido = ”I” ; p a r a m e t r o = g e t P a r a m e t e r ( ”TIEMPO” ) ; try{ i f ( p a r a m e t r o != n u l l ) tiempo = I n t e g e r . p a r s e I n t ( parametro ) ; else t i e m p o = 2 5 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero tiempo = 2 5 0 ; } p a r a m e t r o = g e t P a r a m e t e r ( ”CX” ) ; try{ i f ( p a r a m e t r o != n u l l ) cx = I n t e g e r . p a r s e I n t ( p a r a m e t r o ) ; else cx = 5 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero cx = 5 0 ; } p a r a m e t r o = g e t P a r a m e t e r ( ”CY” ) ; try{ i f ( p a r a m e t r o != n u l l ) cy = I n t e g e r . p a r s e I n t ( p a r a m e t r o ) ; else cy = 3 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero cy = 3 0 ; } // E s t o s e p u e d e h a c e r ya q u e t = new Thread ( t h i s ) ; parado = f a l s e ; t . start () ; esta clase valido valido valido implementa a Runnable } /∗ ∗ I m p l e m e n t a m o s e l metodo r u n ( ) ya q u e l a c l a s e Banner ∗ i m p l e m e n t a a l a i n t e r f a z R u n n a b l e . < b r> ∗ En e s t e metodo h a y un b u c l e i n f i n i t o d e l t r o d e l c u a l ∗ s e r e p i n t a e l a p p l e t , s e duerme d u r a n t e ∗ 2 5 0 m i l i s e g u n d o s , y e l primer c a r a c t e r s e pone a l f i n a l ∗ d e l a c a d e n a . < b r> ∗ Si se debe parar e l h i l o se s a l e d e l b u c l e . ∗/ p u b l i c v o i d run ( ) { c h a r ch ; for ( ; ; ){ try{ repaint () ; Thread . s l e e p ( t i e m p o ) ; // En f u n c i o n d e s e n t i d o d e s p l a z a m o s // i z q u i e r d a o a l a d e r e c h a if la frase a la ( s e n t i d o . compareTo ( ” I ” ) ==0){ ch = msg . c h a r A t ( 0 ) ; msg = msg . s u b s t r i n g ( 1 , msg . l e n g t h ( ) ) ; msg = msg + ch ; } else{ ch = msg . c h a r A t ( msg . l e n g t h ( ) −1) ; msg = msg . s u b s t r i n g ( 0 , msg . l e n g t h ( ) −1) ; msg = ch + msg ; } [email protected] P´ agina: 8 Applets. Applets Firmados. Encriptaci´ on. Curso 04/05 LP (Telem´atica) Universitat de Val`encia ( parado ) break ; } c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) {} if } } /∗ ∗ O c u l t a m o s e l metodo s t o p ( ) d e A p p l e t < b r> ∗ S i s e d e b e p a r a r e l a p p l e t s e pone e l i n d i c a d o r a ∗ y se asigna la r e f e r e n c i a al h i l o a n u l l . ∗/ p u b l i c v o i d stop () { parado = t r u e ; t = null ; } false /∗ ∗ O c u l t a m o s e l metodo p a i n t ( G r a p h i c s g ) d e A p p l e t < b r> ∗ Se l i m i t a a p i n t a r e l mensage . E s t e metodo s e r a l l a m a d o ∗ cuando s e l l a m e a r e p a i n t ( ) ∗/ p u b l i c v o i d paint ( Graphics g ) { g . d r a w S t r i n g ( msg , cx , cy ) ; } } Y el c´ odigo HTML donde se utiliza este applet y se le pasan los par´ametros es: Ejemplo de a p p l e t con p a r a m e t r o s Ejemplo de a p p l e t con p a r a m e t r o s parte i n f e r i o r ” /> 0) s a l i d a = c o d i f i c a d o r . d o F i n a l ( e n t r a d a , 0 , numLeidos ) ; else s a l i d a = c o d i f i c a d o r . doFinal () ; out . w r i t e ( s a l i d a ) ; } } import import import import java . io . ∗ ; java . s e c u r i t y . ∗ ; javax . crypto . ∗ ; javax . crypto . spec . ∗ ; p u b l i c c l a s s Encripta { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { // Modo de o p e r a c i o n : encriptar i n t modo = Cipher .ENCRYPT MODE; i f ( a r g s . l e n g t h !=4) { System . out . p r i n t l n ( ” \nNumero i n c o r r e c t o de e n t r a d a s . ” ) ; System . out . p r i n t l n ( ”Uso : ” ) ; System . out . p r i n t l n ( ” j a v a E n c r i p t a a l g o r i t m o f i c h e r o C l a v e f i c h e r o E n t r a d a f i c h e r o C o d i f i c a d o \n” ) ; }else{ try { // L e c t u r a de l a cl

22 downloads 45 Views 1MB Size

Recommend Stories


UNIVERSITAT POLITÈCNICA DE VALÈNCIA. Departament de Biotecnologia
UNIVERSITAT POLITÈCNICA DE VALÈNCIA Departament de Biotecnologia Tesis para la obtención del Título de Doctora en Biotecnología CARACTERIZACIÓN Y ME

Generalitat de Catalunya Departament d Educació Departament de Salut
© Generalitat de Catalunya Departament d’Educació Departament de Salut Edició: Servei de Difusió i Publicacions Elaboració: Programa d’Educació per a

UNIVERSITAT AUTONOMA DE BARCELONA DEPARTAMENT DE MEDICINA HOSPITAL VALL D HEBRON
UNIVERSITAT AUTONOMA DE BARCELONA DEPARTAMENT DE MEDICINA HOSPITAL VALL D´HEBRON FISIOPATOLOGIA ANORECTAL TESIS DOCTORAL presentada por Xose Luis Fe

Departament de Medicina Facultat de Medicina UNIVERSITAT AUTÒNOMA DE BARCELONA
Departament de Medicina Facultat de Medicina UNIVERSITAT AUTÒNOMA DE BARCELONA PREVENCION DE LA RECIDIVA HEMORRAGICA POR VARICES ESOFAGICAS. LIGADURA

DEPARTAMENT D HISTÒRIA DE L ART DE LA UNIVERSITAT DE VALÈNCIA EN EL CURSO
E L DEPARTAMENT D’HISTÒRIA DE L’ART DE LA UNIVERSITAT DE VALÈNCIA EN EL CURSO 2012-2013 FELIPE JEREZ MOLINER Departament d’Història de l’Art. Univers

Story Transcript

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

Tema 6 Applets. Applets Firmados. Encriptaci´ on. Departament d’Inform`atica. Universitat de Val`encia

´Indice 1. Applets

2

1.1. Un primer ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2. Otro ejemplo con par´ ametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.3. Formas de visualizar un applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.4. El plugin de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. Applets firmados

11

2.1. Seguridad en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1. Administradores de seguridad y permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3. Seguridad en la plataforma Java 2

14

3.1. Archivos de pol´ıtica de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2. Firmas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.1. Compendio de mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.2. Mensajes firmados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.3. Autenticaci´ on de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4. Encriptaci´ on

28

4.1. Codificadores sim´etricos sobre bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 [email protected]

P´ agina: 1

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

4.2. Codificadores asim´etricos o de clave p´ ublica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1.

Applets Un applet est´a formado por una clase o conjunto de clases escritas en Java que est´ a insertado en una p´agina Web. Cuando un usuario carga la p´agina en la que est´a el applet, ´este se ejecuta localmente (en la m´aquina cliente donde se est´a ejecutando el navegador Web) y no remotamente (sobre el sistema que est´a ejecutando el servidor HTTP).

El navegador recibe el código HTML y ejecuta el applet

Envía el código HTML y las clases

Internet Servidor HTTP

Cliente

El hecho de que el c´odigo se ejecute localmente implica que la seguridad sea crucial. Los applets est´an sometidos a unas restricciones de seguridad por defecto. Por ejemplo, nadie desea que un applet cargado visitando una p´agina Web borre sus ficheros. O que ese applet realice conexiones a otras m´aquinas para transferir informaci´ on. Estas restricciones est´an impuestas por un objeto del tipo SecurityManager en el sistema cliente, que especifica qu´e acciones est´an permitidas y cuales no.

[email protected]

P´ agina: 2

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

A partir de la versi´on 1.1 de la plataforma Java, las clases se pueden firmar digitalmente, estas clases (si el usuario conf´ıa en quien las firma) pueden realizar acciones no permitidas a las clases no firmadas. Por defecto, el gestor de seguridad de los navegadores verifica entre otras cosas que los applets No puedan leer los ficheros locales. No puedan escribir en los discos locales. No puedan establecer conexiones a otras m´aquinas salvo con el servidor que contiene el applet. No ejecutar programas locales. No puedan obtener informaci´on privada sobre el usuario.

Los applets deben ser subclases de la clase Applet (si se van a utilizar clases de AWT) o de JApplet (si se van a utilizar clases de Swing). A diferencia de las aplicaciones vistas hasta el momento, la ejecuci´on de un applet no comienza en el m´etodo main(.). Hay una serie de m´etodos que son llamados cuando ocurren determinadas circunstancias. Estos m´etodos de Applet o de JApplet son los que hay que sobreescribir.

La siguiente figura muestra cuando llama el navegador a estos m´etodos:

Hay que redibujar el applet

init()

start()

paint()

Se carga la pagina que contiene el applet

Se cierra el navegador o se cambia a otra pagina

stop()

destroy()

El esqueleto de un applet basado en la clase Applet se muestra a continuaci´on: import import

java . a p p l e t . Applet ; j a v a . awt . ∗ ;

[email protected]

P´ agina: 3

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

c l a s s UnApplet e x t e n d s A p p l e t { // D e c l a r a c i o ´ n de a t r i b u t o s p u b l i c void init (){ // I n i c i a c i o ´ n de l a s v a r i a b l e s // C o n s t r u c c i o n d e l a GUI } p u b l i c void start () { // S e n t e n c i a s } p u b l i c v o i d stop () { // S e n t e n c i a s } p u b l i c v o i d destroy () { // S e n t e n c i a s } p u b l i c v o i d paint ( Graphics g ) { // O p e r a c i o n e s d e d i b u j o ( s i }

las

hay )

}

Un applet concreto puede sobreescribir todos estos m´etodos o solamente algunos de ellos en funci´ on de la tarea que deba realizar. En los ejemplos de c´odigo proporcionados, en el directorio ejemplos/applets/OrdenMetodos hay un applet firmado (para poder acceder al disco local) que guarda en el fichero que se le pasa como par´ ametro desde el c´odigo HTML la secuencia de llamadas a los diferentes m´etodos. Este applet se puede utilizar para ver las posibles diferencias entre los navegadores a la hora de llamar a estos m´etodos. La jerarqu´ıa de las clases Applet y JApplet es la siguiente:

Object O

Object O

Component O

Component O

Container O

Container O

Panel O

Panel O

Applet

Applet O

JApplet [email protected]

P´ agina: 4

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

Adem´ as de los m´etodos que controlan el ciclo de vida del applet hay otros m´etodos disponibles, entre los cuales destacan: public

A u d i o C l i p g e t A u d i o C l i p (URL u r l C l i p )

public

A u d i o C l i p g e t A u d i o C l i p (URL u r l ,

String

fichero )

Obtienen un fichero de audio y MIDI desde una URL y lo asignan a un objeto del tipo AudioClip que permite los mensajes play(), loop() y stop(). La versi´ on JDK 1.1 soporta ficheros en formato .au. A partir de la versi´on 1.2 se soportan .aiff y .wav adem´as de MIDI tipo 0, MIDI tipo 1 y ficheros en formato RMF. public

Image g e t I m a g e (URL u r l I m a g e n )

public

Image g e t I m a g e (URL u r l ,

String

fichero )

Estos m´etodos obtienen una imagen desde una URL y crean un objeto del tipo Image. public

void

showStatus ( S t r i n g

mensaje )

Este m´etodo muestra la cadena pasada como argumento en la barra de estado (en la parte inferior del navegador). public

v o i d showDocument (URL htmlDoc )

public

v o i d showDocument (URL htmlDoc ,

String

frame )

Estos m´etodos se pueden utilizar para indicar al navegador que muestre una determinada p´ agina Web. En realidad est´an definidos en la clase AppletContext por lo que para utilizarlos hay que hacer lo siguiente: getAppletContext().showDocument(...) Como ya se ha comentado, el applet debe estar incluido en una p´agina Web. El lenguaje de marcado HTML contiene etiquetas para indicar que un elemento es un applet. El esqueleto de c´odigo HTML de una p´agina que contenga un applet se muestra a continuaci´ on: Applet

[email protected]

P´ agina: 5

LP (Telem´atica) Universitat de Val`encia

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

Elementos

Significado

ARCHIVE

Especifica el archivo jar donde se encuentran las clases y otros recursos que utilice el applet.

CODE

Especifica la clase que extiende a Applet o a JApplet. Se asume que la clase se puede encontrar en el mismo sitio que la p´agina web a no ser que se proporcione CODEBASE.

CODEBASE

Designa la URL donde encontrar la clase o el fichero jar.

WIDTH

Especifica la anchura que tendr´a el applet.

HEIGHT

Especifica la altura que tendr´a el applet.

ALIGN

Especifica c´omo se debe colocar el applet dentro del espacio disponible (LEFT, RIGHT, TOP, BOTTOM, MIDDLE).

PARAM

Se puede utilizar para pasar par´ametros al applet. En NAME se especifica el nombre del par´ametro y en VALUE se especifica el valor.

1.1.

Un primer ejemplo j a v a . awt . ∗ ; java . applet . ∗ ;

import import

/∗ ∗ E s t a c l a s e e s un Banner en e l q u e a p a r e c e r a t e x t o d e s p l a z a n d o s e ∗/ p u b l i c c l a s s Banner e x t e n d s A p p l e t i m p l e m e n t s Runnable { p r i v a t e S t r i n g msg = ” E s t a f r a s e s e d e s p l a z a Esta f r a s e s e p r i v a t e Thread t = n u l l ; p r i v a t e b o o l e a n parado ; /∗ ∗ O c u l t a m o s e l metodo i n i t d e A p p l e t < b r> ∗ Se e s t a b l e c e n l o s c o l o r e s d e l f o n d o y d e ∗ ademas d e l t i p o d e f u e n t e ∗/ p u b l i c void init (){ setBackground ( Color . blue ) ; setForeground ( Color . white ) ; s e t F o n t ( new Font ( ” A r i a l ” , Font . BOLD, 1 8 ) ) ; }

la

desplaza

”;

fuente

/∗ ∗ O c u l t a m o s e l metodo s t a r t ( ) d e A p p l e t < b r> ∗ Se c r e a un h i l o y s e l a n z a ∗/ p u b l i c void start () { // E s t o s e p u e d e h a c e r ya q u e e s t a c l a s e i m p l e m e n t a a R u n n a b l e t = new Thread ( t h i s ) ; parado = f a l s e ; t . start () ; } /∗ ∗ I m p l e m e n t a m o s e l metodo r u n ( ) ya q u e l a c l a s e Banner ∗ i m p l e m e n t a a l a i n t e r f a z R u n n a b l e . < b r> ∗ En e s t e metodo h a y un b u c l e i n f i n i t o d e l t r o d e l c u a l ∗ s e r e p i n t a e l a p p l e t , s e duerme d u r a n t e ∗ 2 5 0 m i l i s e g u n d o s , y e l primer c a r a c t e r s e pone a l f i n a l ∗ d e l a c a d e n a . < b r> ∗ Si se debe parar e l h i l o se s a l e d e l b u c l e . ∗/ p u b l i c v o i d run ( ) { c h a r ch ; for

( ; ; ){ try{ repaint () ; Thread . s l e e p ( 2 5 0 ) ; ch = msg . c h a r A t ( 0 ) ; msg = msg . s u b s t r i n g ( 1 , msg . l e n g t h ( ) ) ; msg = msg + ch ; i f ( parado ) break ; } c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) {}

} } /∗ ∗ O c u l t a m o s e l metodo s t o p ( ) d e A p p l e t < b r> ∗ S i s e d e b e p a r a r e l a p p l e t s e pone e l i n d i c a d o r a ∗ y se asigna la r e f e r e n c i a al h i l o a n u l l .

[email protected]

false

P´ agina: 6

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

∗/ p u b l i c v o i d stop () { parado = t r u e ; t = null ; } /∗ ∗ O c u l t a m o s e l metodo p a i n t ( G r a p h i c s g ) d e A p p l e t < b r> ∗ Se l i m i t a a p i n t a r e l mensage . E s t e metodo s e r a l l a m a d o ∗ cuando s e l l a m e a r e p a i n t ( ) ∗/ p u b l i c v o i d paint ( Graphics g ) { g . d r a w S t r i n g ( msg , 5 0 , 3 0 ) ; } }

Y el c´ odigo HTML donde se utiliza este applet es: Ejemplo de a p p l e t Ejemplo de a p p l e t

Este ejemplo se encuentra en el directorio ejemplos/applets/Ejemplo1

1.2.

Otro ejemplo con par´ ametros

Ahora vamos a modificar el c´odigo anterior para pasar como argumentos al applet la siguiente informaci´ on:

El texto a mostrar El intervalo de tiempo entre actualizaciones Las coordenadas donde debe mostrar el texto El sentido de desplazamiento del texto

import import

j a v a . awt . ∗ ; java . applet . ∗ ;

/∗ ∗ E s t a c l a s e e s un Banner en e l q u e a p a r e c e r a t e x t o d e s p l a z a n d o s e ∗/ p u b l i c c l a s s B a n n e r P a r a m e t r o s e x t e n d s A p p l e t i m p l e m e n t s Runnable { p r i v a t e S t r i n g msg ; p r i v a t e i n t tiempo ; p r i v a t e i n t cx ; p r i v a t e i n t cy ; p r i v a t e String sentido ; p r i v a t e Thread t = n u l l ; p r i v a t e b o o l e a n parado ; /∗ ∗ O c u l t a m o s e l metodo i n i t d e A p p l e t < b r> ∗ Se e s t a b l e c e n l o s c o l o r e s d e l f o n d o y d e ∗ ademas d e l t i p o d e f u e n t e

[email protected]

la

fuente

P´ agina: 7

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

∗/ p u b l i c void init (){ setBackground ( Color . blue ) ; setForeground ( Color . white ) ; s e t F o n t ( new Font ( ” A r i a l ” , Font . BOLD, 1 8 ) ) ; } /∗ ∗ O c u l t a m o s e l metodo s t a r t ( ) d e A p p l e t < b r> ∗ Se o b t i e n e n l o s p a r a m e t r o s , s e c r e a un h i l o ∗/ p u b l i c void start () { S t r i n g parametro ; // O b t e n c i o n d e

los

y se

lanza

parametros

msg = g e t P a r a m e t e r ( ”TEXTO” ) ; i f ( msg== n u l l ) msg = ” Texto p o r d e f e c t o ” ; msg = ”

” + msg + ”

”;

s e n t i d o = g e t P a r a m e t e r ( ”SENTIDO” ) ; i f ( s e n t i d o== n u l l ) sentido = ”I” ; p a r a m e t r o = g e t P a r a m e t e r ( ”TIEMPO” ) ; try{ i f ( p a r a m e t r o != n u l l ) tiempo = I n t e g e r . p a r s e I n t ( parametro ) ; else t i e m p o = 2 5 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero tiempo = 2 5 0 ; } p a r a m e t r o = g e t P a r a m e t e r ( ”CX” ) ; try{ i f ( p a r a m e t r o != n u l l ) cx = I n t e g e r . p a r s e I n t ( p a r a m e t r o ) ; else cx = 5 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero cx = 5 0 ; } p a r a m e t r o = g e t P a r a m e t e r ( ”CY” ) ; try{ i f ( p a r a m e t r o != n u l l ) cy = I n t e g e r . p a r s e I n t ( p a r a m e t r o ) ; else cy = 3 0 ; // Por d e f e c t o } c a t c h ( NumberFormatException e ) { // S i s e ha p r o p o r c i o n a d o e l p a r a m e t r o p e r o no e s un numero cy = 3 0 ; } // E s t o s e p u e d e h a c e r ya q u e t = new Thread ( t h i s ) ; parado = f a l s e ; t . start () ;

esta

clase

valido

valido

valido

implementa a Runnable

} /∗ ∗ I m p l e m e n t a m o s e l metodo r u n ( ) ya q u e l a c l a s e Banner ∗ i m p l e m e n t a a l a i n t e r f a z R u n n a b l e . < b r> ∗ En e s t e metodo h a y un b u c l e i n f i n i t o d e l t r o d e l c u a l ∗ s e r e p i n t a e l a p p l e t , s e duerme d u r a n t e ∗ 2 5 0 m i l i s e g u n d o s , y e l primer c a r a c t e r s e pone a l f i n a l ∗ d e l a c a d e n a . < b r> ∗ Si se debe parar e l h i l o se s a l e d e l b u c l e . ∗/ p u b l i c v o i d run ( ) { c h a r ch ; for

( ; ; ){ try{ repaint () ; Thread . s l e e p ( t i e m p o ) ; // En f u n c i o n d e s e n t i d o d e s p l a z a m o s // i z q u i e r d a o a l a d e r e c h a if

la

frase a la

( s e n t i d o . compareTo ( ” I ” ) ==0){ ch = msg . c h a r A t ( 0 ) ; msg = msg . s u b s t r i n g ( 1 , msg . l e n g t h ( ) ) ; msg = msg + ch ;

} else{ ch = msg . c h a r A t ( msg . l e n g t h ( ) −1) ; msg = msg . s u b s t r i n g ( 0 , msg . l e n g t h ( ) −1) ; msg = ch + msg ; }

[email protected]

P´ agina: 8

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

( parado ) break ; } c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) {} if

} } /∗ ∗ O c u l t a m o s e l metodo s t o p ( ) d e A p p l e t < b r> ∗ S i s e d e b e p a r a r e l a p p l e t s e pone e l i n d i c a d o r a ∗ y se asigna la r e f e r e n c i a al h i l o a n u l l . ∗/ p u b l i c v o i d stop () { parado = t r u e ; t = null ; }

false

/∗ ∗ O c u l t a m o s e l metodo p a i n t ( G r a p h i c s g ) d e A p p l e t < b r> ∗ Se l i m i t a a p i n t a r e l mensage . E s t e metodo s e r a l l a m a d o ∗ cuando s e l l a m e a r e p a i n t ( ) ∗/ p u b l i c v o i d paint ( Graphics g ) { g . d r a w S t r i n g ( msg , cx , cy ) ; } }

Y el c´ odigo HTML donde se utiliza este applet y se le pasan los par´ametros es: Ejemplo de a p p l e t con p a r a m e t r o s Ejemplo de a p p l e t con p a r a m e t r o s

parte

i n f e r i o r ” />



0) s a l i d a = c o d i f i c a d o r . d o F i n a l ( e n t r a d a , 0 , numLeidos ) ; else s a l i d a = c o d i f i c a d o r . doFinal () ; out . w r i t e ( s a l i d a ) ; } }

import import import import

java . io . ∗ ; java . s e c u r i t y . ∗ ; javax . crypto . ∗ ; javax . crypto . spec . ∗ ;

p u b l i c c l a s s Encripta { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { // Modo de o p e r a c i o n :

encriptar

i n t modo = Cipher .ENCRYPT MODE; i f ( a r g s . l e n g t h !=4) { System . out . p r i n t l n ( ” \nNumero i n c o r r e c t o de e n t r a d a s . ” ) ; System . out . p r i n t l n ( ”Uso : ” ) ; System . out . p r i n t l n ( ” j a v a E n c r i p t a a l g o r i t m o f i c h e r o C l a v e f i c h e r o E n t r a d a f i c h e r o C o d i f i c a d o \n” ) ; }else{ try { // L e c t u r a de l a

clave

O b j e c t I n p u t S t r e a m c l = new O b j e c t I n p u t S t r e a m ( new F i l e I n p u t S t r e a m ( a r g s [ 1 ] ) ) ; Key c l a v e = ( Key ) c l . r e a d O b j e c t ( ) ; cl . close () ; InputStream i n = new F i l e I n p u t S t r e a m ( a r g s [ 2 ] ) ; OutputStream out = new F i l e O u t p u t S t r e a m ( a r g s [ 3 ] ) ; Cipher c o d i f i c a d o r = Cipher . g e t I n s t a n c e ( a r g s [ 0 ] ) ; c o d i f i c a d o r . i n i t ( modo , c l a v e ) ; C i f r a . c i f r a ( in , out , c o d i f i c a d o r ) ; in . close () ; out . c l o s e ( ) ; } c a t c h ( IOException e ) { System . e r r . p r i n t l n ( ” E r r o r E/S” ) ; } catch ( GeneralSecurityException e ) { System . e r r . p r i n t l n ( ” E r r o r en e l a l g o r i t m o de e n c r i p t a c i o n . ” ) ; } c a t c h ( ClassNotFoundException e ) { System . e r r . p r i n t l n ( ” E r r o r en l a r e c u p e r a c i o n de l a c l a v e ” ) ;

[email protected]

P´ agina: 32

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

} } } }

java . io . ∗ ; java . s e c u r i t y . ∗ ; javax . crypto . ∗ ; javax . crypto . spec . ∗ ;

import import import import

p u b l i c c l a s s Desencripta { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { // Modo de o p e r a c i o n :

desencriptar

i n t modo = Cipher .DECRYPT MODE; i f ( a r g s . l e n g t h !=4) { System . out . p r i n t l n ( ” \nNumero i n c o r r e c t o de e n t r a d a s . ” ) ; System . out . p r i n t l n ( ”Uso : ” ) ; System . out . p r i n t l n ( ” j a v a D e s e n c r i p t a a l g o r i t m o f i c h e r o C l a v e f i c h e r o C o d i f i c a d o f i c h e r o D e c o d i f i c a d o \n” ) ; }else{ try { // L e c t u r a de l a

clave

O b j e c t I n p u t S t r e a m c l = new O b j e c t I n p u t S t r e a m ( new F i l e I n p u t S t r e a m ( a r g s [ 1 ] ) ) ; Key c l a v e = ( Key ) c l . r e a d O b j e c t ( ) ; cl . close () ; InputStream i n = new F i l e I n p u t S t r e a m ( a r g s [ 2 ] ) ; OutputStream out = new F i l e O u t p u t S t r e a m ( a r g s [ 3 ] ) ; Cipher c o d i f i c a d o r = Cipher . g e t I n s t a n c e ( a r g s [ 0 ] ) ; c o d i f i c a d o r . i n i t ( modo , c l a v e ) ; C i f r a . c i f r a ( in , out , c o d i f i c a d o r ) ; in . close () ; out . c l o s e ( ) ; } c a t c h ( IOException e ) { System . e r r . p r i n t l n ( ” E r r o r E/S” ) ; } catch ( GeneralSecurityException e ) { System . e r r . p r i n t l n ( ” E r r o r en e l a l g o r i t m o de e n c r i p t a c i o n . ” ) ; } c a t c h ( ClassNotFoundException e ) { System . e r r . p r i n t l n ( ” E r r o r en l a r e c u p e r a c i o n de l a c l a v e ” ) ; } } } }

4.2.

Codificadores asim´ etricos o de clave p´ ublica

La idea b´ asica es que se dispone de un par de claves: una clave p´ ublica y otra privada. Alguien que desee enviar un mensaje secreto a otra persona o entidad debe utilizar la clave p´ ublica de la otra parte para encriptar el mensaje. La mayor parte de los algoritmos de clave p´ ublica son codificadores que act´ uan sobre bloques de datos, que tratan el mensaje como una secuencia de enteros y se basan su seguridad en la dificultad de resolver un determinado problema matem´atico.

[email protected]

P´ agina: 33

Applets. Applets Firmados. Encriptaci´ on. Curso 04/05

LP (Telem´atica) Universitat de Val`encia

El algoritmo m´as conocido es el RSA (Rivest, Shamir y Adleman) en el que el problema matem´ atico es el de la factorizaci´on de un n´ umero en dos n´ umeros primos. Para que el c´odigo resultante sea seguro, el tama˜ no de las claves y los bloques debe se grande. El tama˜ no de bloque t´ıpico en codificadores sim´etricos es de 64 o 128 bits, mientras que el tama˜ no de clave t´ıpico para RSA es de al menos 640 bits y el tama˜ no de los bloques de 1024 o 2048 bits. Debido al mayor tama˜ no de los bloques y las claves, los codificadores asim´etricos son m´ as lentos que los sim´etricos por lo que son m´as utilizados para firmas digitales y para codificar claves sim´etricas. En el directorio Ejemplos/Encriptacion/Asimetrico hay una serie de directorios que contienen las clases que se detallan a continuaci´on. Estas clases muestran el uso de conjunto de la criptograf´ıa de clave sim´etrica y asim´etrica.

Clase

Descripci´ on

GeneraClavesRSA

Genera una clave p´ ublica y otra privada utilizando RSA y las almacena en ficheros. Clase que genera una clave sim´etrica, encripta un fichero con esta clave y encripta la clave sim´etrica utilizando la clave p´ ublica. Desencripta la clave sim´etrica utilizando la clave privada. Una vez ha desencriptado la clave sim´etrica desencripta el mensaje.

EncriptaMensaje DesencriptaMensaje

La secuencia de acciones a realizar por los dos actores (Destinatario y Remitente) es:

Destinatario 1) Genera claves p´ ublica y privada

Remitente 2) Obtiene clave p´ ublica del destinatario 3) Genera clave sim´etrica y encripta el mensaje usando la clave sim´etrica 4) Encripta la clave sim´etrica con la clave p´ ublica del destinatario 5) Env´ıa la clave sim´etrica encriptada con la clave p´ ublica y el mensaje encriptado con la clave sim´etrica.

6) Desencripta la clave sim´etrica con la clave privada 7) Desencripta el mensaje

[email protected]

P´ agina: 34

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.