Descargar

Programación segura (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

Security Manager

• Identity – Bases para las decisiones de seguridad • Origin – Desde donde proviene el código • Signature – A qué código corresponde? java.security.CodeSource • Permission – Encapsula el acceso a una operación particular • Incluye un objetivo y una acción p = new SocketPermission(“www.utp.edu.co”, “connect”); p = new FilePermission(“/tmp/file1”, “*”);

edu.red

Arquitectura criptográfica Desde el punto de vista de la seguridad, el conjunto de clases de seguridad distribuidas con el Java 2 SDK pueden dividirse en dos subconjuntos:

Clases relacionadas con el control de acceso y la gestión de permisos.

Clases relacionadas con la Criptografía.

Seguridad en Java Arquitectura Criptográfica de Java (JCA) y la Extension Criptográfica de Java (JCE).

edu.red

Seguridad en Java Certification Path Java Authentication and Authorization Service (JAAS) Java Generic Security Services (Java GSS-API) Java Cryptography Extension (JCE) Java Secure Socket Extension (JSSE) Simple Authentication and Security Layer (SASL)

edu.red

Arquitectura de la Criptografía Java Cryptography Architecture (JCA) Introducción JDK 1.1 Resúmenes de mensajes Firmas digitales Java 2 SDK resúmenes de mensajes X.509 Arquitectura para grano fino, flexible, extensible y control de acceso altamente configurable.

edu.red

Arquitectura de la Criptografía Proveedores de servicios criptográficos Firma digital (DSA) MD5 y SHA-1 Generador de Claves DSA Certificados X.509 KeyStore

edu.red

JCE Java Cryptography Extension (JCE) Introducción Marco de trabajo y de implementación para el cifrado. Generación y comprobación de claves Algoritmos de autenticación de mensajes (MAC)

edu.red

JCE Introducción Ayuda para el cifrado simétrico Ayuda para el cifrado asimétrico Ayuda para el cifrado en bloque Cifradores en flujo Flujos seguros Objetos sellados

edu.red

JCE API JCE Cifrado simétrico en bloque DES, RC2 e IDEA Cifrado simétrico en flujo RC4 Encriptación asimétrica RSA Comprobación de claves

edu.red

JCE API JCE Cifrado Password-Based(PBE) Algoritmo de autentificación de claves (MAC) Proveedor de Servicios SunJCE Una implementación del DES (FIPS PUB 46-1), Triple DES, y algoritmos de encriptación Blowfish en el Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB), y modos Propagating Cipher Block Chaining (PCBC). Un generador de par de claves Diffie-Hellman para generar un par de valores públicos y privados convenientes para el algoritmo de Diffie-Hellman.

edu.red

JCE Proveedor de Servicios SunJCE Una implementación de HMAC-MD5 y algoritmos keyed-hashing HMAC-SHA1 definido en RFC 2104. Una implementación del esquema de relleno descrito en PKCS #5. Una implementación del keystore para el tipo propietario del keystore llamando "JCEKS".

edu.red

Ejemplos HMAC-MD5 import java.security.*;import javax.crypto.*;public class initMac { public static void main(String[] args) throws Exception { KeyGenerator kg = KeyGenerator.getInstance("HmacMD5"); SecretKey sk = kg.generateKey(); Mac mac = Mac.getInstance("HmacMD5"); mac.init(sk); byte[] result = mac.doFinal("Hi There".getBytes()); }}

edu.red

Seguridad en Java Control de acceso – Granularidad Tools (jar, keytool, jarsigner, policytool) Modelo de Permisos Java.security.permission

Políticas de Seguridad PolicyTool Gestor de Seguridad: java.security.manager

edu.red

(Gp:) Clase JCA 1.2 (Gp:) Función (Gp:) java.security.MessageDigest (Gp:) Genera resumen de mensajes (hash). (Gp:) java.security.Signature (Gp:) Firmado de datos y verificación firmas. (Gp:) java.security.KeyPairGenerator (Gp:) Generar pares de claves (pública y privada) para un algoritmo. (Gp:) java.security.KeyFactory (Gp:) Convertir claves de formato criptográfico a especificaciones de claves y vice versa (Gp:) java.security.certificate.CertificateFactory (Gp:) Crear certificados de clave pública y listas de revocación(CRLs). (Gp:) java.security.KeyStore (Gp:) Crear y gestionar un almacen de claves (keystore). (Gp:) java.security.AlgorithmParameters (Gp:) Gestionar los parámetros de un algoritmo, incluyendocodificación y descodificación. (Gp:) java.security.AlgorithmParameterGenerator (Gp:) Generar un conjunto de parámetros para un algoritmo. (Gp:) java.security.SecureRandom (Gp:) Generar números aleatrorios o pseudo aleatrorios

Motor JCA

edu.red

(Gp:) Clase JCE 1.2 (Gp:) Función (Gp:) java.crypto.Cipher (Gp:) Proporciona encriptación y desencriptación. (Gp:) java.crypto.KeyAgreement (Gp:) Proporciona un protocolo de intercambio de claves. (Gp:) java.crypto.KeyGenerator (Gp:) Proporciona un generador de claves simétricas. (Gp:) java.crypto.Mac (Gp:) Proporciona un algoritmo de autentificación de mensajes. (Gp:) java.crypto.SecretKeyFactory (Gp:) Representa una factoría de claves secretas.

Motor JCE

edu.red

Seguridad en Java JCA & JCE (Java Crypto Architecture, Java Crypto Extensions) Javax.crypto.interfaces DHKey DHPrivateKey DHPublicKey Sockets Seguros (JSSE)

Java.security.Cert X509Certificate, X509CRL X509Extension

edu.red

El paquete java.security

El paquete java.security consiste básicamente en clases abstractas e interfaces que encapsulan conceptos de seguridad como certificados, claves, resumenes de mensajes y firmas digitales.

En el JCA los proveedores pueden implementar tres clases: KeyPairGenerator. Se emplea para crear claves públicas y privadas. MessageDigest. Prorciona la funcionalidad de algoritmos de resumen de mensajes como el MD5 y el SHA. Signature. Se emplea para el firmado digital de mensajes.

KeyPairGenerator kpg = KeyPairGenerator.getInstance ("DSA"); Seguridad en Java

edu.red

El paquete java.security.cert

Añade soporte para generar y usar certificados, incluye clases e interfaces específicas para soportar certificados X.509.

CertificateFactory. Se emplea para generar certificados y listas de revocación (CRL). Certificate. Es una clase para agrupar certificados de diferentes formatos pero usos comunes importantes CRL. Clase abstracta para gestionar distintos tipos de listas de revocación de certificados. X509Certificate. Clase abstracta para representar certificados X.509. X509CRL. Clase abstracta para una lista de revocación de certificados X.509. X509CRLEntry. Es una clase abstracta para las entradas de las listas de revocación

Seguridad en Java

edu.red

Seguridad en Java Ejemplos: Perm = new java.io.FilePermission(“/tmp/abc”,”read”) //AWT Permission, NetPermission MessageDigest m = MessageDiggest.getInstance(“MD5”) Java.security.MessageDiggest Java.security.signature Java.security.KeyPairGenerator

edu.red

Extensión de Sockets Seguros de Java (JSSE) http://java.sun.com/products/jsse/ Servicio de Autentificación y Autorización de Java (JAAS) http://java.sun.com/products/jaas/

Seguridad en Java

edu.red

Arquitectura de seguridad de .NET

edu.red

Arquitectura de seguridad de ASP.NET

edu.red

Configurar la Seguridad en .NET

edu.red

ACCESO SEGURO A DATOS EN .NET Acceso a BD de datos mediante ADO.NET Formas seguras de acceder a la BD Almacenamiento seguro de secretos AUTENTICACIÓN MEDIANTE FORMULARIOS EN .NET Autenticación mediante formularios básica Autenticación mediante formularios y XML Autenticación mediante formularios y base de datos Autenticación mediante formularios y tickets personalizados Autenticación mediante formularios sin cookies AUTENTICACIÓN MEDIANTE WINDOWS EN .NET Autenticación básica Autenticación mediante resúmenes Autenticación integrada de Windows Protección de directorios y documentos Representación de usuario AUTENTICACIÓN MEDIANTE CERTIFICADOS EN .NET Introducción a los certificados digitales Criptografía con .NET Autoridades de certificación Canales seguros con SSL Autenticación mediante certificados digitales Acceso a la información de los certificados desde ASP.NET SEGURIDAD EN SQL SERVER SEGURIDAD EN SERVICIOS WEB XML DESARROLLADOS CON .NET

Seguridad en .NET

edu.red

Seguridad de códigoSeguridad en Windows Autenticación de usuarios Logon interactivo Autenticación en red Control de acceso basado en objetos Permite limitar los recursos al usuario autenticado Limitación con aplicaciones no confiadas por el usuario Mecanismo Todo – Nada

edu.red

Seguridad de códigoSolución .NET Desarrollada sobre la seguridad Windows Nunca podremos tener mayores privilegios Centrada en el código, no en el usuario Identificación del código por evidencias Permite distintos niveles de seguridad Muy granular Conjunto estándar de permisos ampliable Fácil de administrar Distintos niveles de administración

edu.red

Seguridad de códigoPermisos Protección de recursos y operaciones SecurityPermission SocketPermission WebPermission PrintingPermission Acceso al interfaz de usuario UIPermission Protección de ficheros y directorios FileIOPermission FileDialogPermission

edu.red

Seguridad de códigoPermisos (II) Acceso al entorno, registro y metadatos EnvironmentPermission RegistryPermission ReflectionPermission DNSPermission EventLogPermission ServiceControllerPermission

edu.red

Seguridad de códigoPermisos (III) Protección de datos DirectoryServicesPermission IsolatedStorageFilePermission OleDbPermission SqlClientPermission MessageQueuePermission PerformanceCounterPermission Autenticación PrincipalPermission

edu.red

Seguridad basada en rolesAutenticación y autorización Autenticación Proceso que verifica la identidad del usuario Autorización Proceso que determina si el usuario puede realizar una operación determinada Autenticación .NET Windows Personalizable Sólo en ASP.NET Forms && Passport Autorización .NET

edu.red

Seguridad basada en rolesIdentities, principals Identity Encapsula información sobre un usuario Principal Representa el contexto de seguridad sobre el que corre la aplicación Incluye: Usuario actual Roles del usuario actual Tres tipos Windows Generic Custom

edu.red

Seguridad basada en rolesAutorización de Principals If (MyPrincipal.IsInRole(…)) De forma imperativa con PrincipalPermission p = new PrincipalPermission(“DOMAIN/Usuario”…)p.Demand() De forma declarativa con PrincipalPermissionAttribute [PrincipalPermissionAttribute(SecurityAction.Demand, Name = “DOMAIN/Usuario”,…] Válido para cualquier tipo de Principal Sin necesidad de cambios

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente