SlideShare una empresa de Scribd logo
1 de 30
Seguridad Principios de seguridad. Implementación de seguridad de acceso de código. Implementación de seguridad basada en roles. Uso de los servicios de criptografía.
Seguridad Principios de seguridad – Arquitectura en .NET En los sistemas operativos Windows, la seguridad y el control de acceso a los recursos del sistema están basados en la identificación de usuario. Una vez que el usuario se ha identificado en el sistema, todo el código que ejecute tendrá acceso a todos los recursos que dicho usuario tenga a su disposición. Esta es una "vulnerabilidad" habitualmente aprovechada por todo tipo de código malicioso y hackers para hacerse con el control de nuestras máquinas, ya que las solemos utilizar con usuarios con todos los privilegios. .NET Framework añade una capa de seguridad a la del sistema operativo con los siguientes complementos: Permisos de seguridad. Seguridad de tipos. Políticas de seguridad. Autentificación. Autorización.
Seguridad Principios de seguridad – Arquitectura en .NET. Permisos de seguridad: El CLR permitirá al código en ejecución efectuar sólo aquellas operaciones a las que esté autorizado a ejecutar utilizando permissions para ello. Seguridad de tipos: Ya se ha comentado la importancia que tiene este tema dentro del control que efectúa el CLR antes de lanzar cualquier ejecución. Cuando un ensamblado está marcado como type-safe, puede realizarse la ejecución en un entorno aislado, con lo que no se verá afectado pro ninguna acción, ni afectará a otros ensamblados. Políticas de seguridad: Son conjuntos de reglas y autorizaciones de seguridad implementados por los administradores del sistema y aplicadas por el CLR asegurando que el código sólo pueda acceder a los recursos y lanzamiento de ejecuciones de código específicamente autorizados. Autentificación: Asociada a la del sistema y a la seguridad basada en roles para permitir a un determinado usuario identificado el acceso a nuestro código. Autorización: Implementada con la seguridad basada en roles, determina a qué puede tener acceso un determinado usuario o rol.
Seguridad Principios de seguridad – Espacios de nombres.
Seguridad Principios de seguridad – Guías de diseño Validación de entrada No fiarse de la entrada de datos de usuario o cualquier otra fuente. Centralizar el enfoque de la validación para asegurar consistencia. No confiar en las validaciones del lado del cliente, validar en servidor. Limitar los tipos y rangos de datos de la entrada. Validar la entrada de datos en cuanto a tipo, tamaño, formato y rango. Autentificación Utilizar contraseñas fuertes, con la ayuda de expresiones reglares son fáciles de validar. Establecer una política de caducidad de contraseñas y desactivación de cuentas. No almacenar JAMÁS las contraseñas como texto plano, Es mejor almacenar un hash y recalcularlo con la entrada del usuario. Encriptar los canales de comunicaciones, para proteger los tokens de seguridad, evitando que con la captura de una cookie se pueda ganar acceso a nuestro sistema. Autorización Utilizar siempre cuentas con privilegios bajos, para proteger el acceso a los recursos. Restringir el acceso a los recursos del sistema: archivos, carpetas, claves de registro, objetos de Active Directory, objetos de base de datos y registro de eventos.
Seguridad Principios de seguridad – Guías de diseño Gestión de configuración: Añadir sistemas de seguridad a los interfaces de administración  para que sólo puede acceder personal autorizado. No almacenar las configuraciones de seguridad en archivos o, al menos, encriptar esas secciones. Criptografía No desarrollar criptografías personalizadas, por la dificultad de hacerlo adecuadamente, dada su complejidad, usar los del sistema. Utilizar los algoritmos y tamaños de clave adecuados. Proteger las claves de encriptado, con ellas desveladas nuestros datos encriptados dejarán de estar seguros. Sensibilidad de los datos: Gestione los datos secretos con mucho cuidado, no los almacene jamás como texto plano en el código, siempre se puede extraer, encriptelos si no puede evitar su inserción en el código. Maneje la información sensible de usuario cuidadosamente, datos de conexión, códigos de cuenta, tarjetas, … deberán ser solicitadas en el momento adecuado, pero no almacenadas como variables de entorno en memoria.
Seguridad Principios de seguridad – Modelos de amenazas En un sistema de Threat modelling evaluaremos y clasificaremos continua y cíclicamente las potenciales amenazas a nuestro sistema y seleccionaremos la técnicas paliativas adecuadas, ya que no se puede proteger un sistema frente a los ataques si no se comprenden estos y su alcance. El modelo STRIDE representa las 6 categorías de amenazas que nuestro sistema deberá afrontar: (Spoofing identity) Impersonación frente al sistema o usurpación de identidad. (Tampering with data) Modificación maliciosa de datos persistidos o en tránsito. (Repudiation) Negación de responsabilidad (yo no he sido). (Information disclosure) Acceso a información reservada por usuario no autorizados. (Denial of service(DoS)) Denegación de servicio por la sobrecarga del servidor o sistema de validación. (Elevation of privilege) Incremento de los privilegios, accediendo a todo el sistema.
Seguridad Principios de seguridad – Implementar STRIDE El proceso debe ser iterativo, según lo descrito: Hacer una relación con todas las amenazas conocidas, determinando cuanto puede afectar cada una de ellas a nuestro sistema. Clasificar las amenazas por criticidad o impacto y probabilidad. Para criticidad asignar números entre 1 y 10 (más severo). Para probabilidad, seleccione entre 1 y 10 (menos probable). Calcule el riesgo medio dividiendo criticidad por probabilidad. Seleccione una técnica o tecnología apropiada para mitigar cada amenaza. Vuelve a empezar por el primer paso a medida que el proyecto evolucione, ya que nunca se tiene la imagen completa y todos los hechos al principio de un proyecto y realizar una única pasada puede dejar agujeros de vulnerabilidad a los ataques.
Seguridad Seguridad de acceso de código. Nos permite proteger el ordenador frente a ataques de código móvil. Como permitir al código de origen desconocido ejecutarse en un entorno protegido y como evitar que el código marcado como seguro pueda comprometer, voluntaria o involuntariamente, la seguridad. Los elementos que se utilizan son esta técnica son: Building blocks Evidencias Nombres seguros Conjuntos de permisos Code groups Petición de permisos
Seguridad Seguridad de acceso de código – Building blocks. La seguridad del sistema operativo permite evitar que los usuario no autorizados tengan acceso al sistema, pero no puede evitar que los usuarios validados descarguen y ejecuten código malicioso. .NET Framework nos suministra la seguridad de acceso del código para proteger al sistema del código malicioso, pero permitir al código móvil ejecutarse de forma segura. Matizando el nivel de confianza basándose en factores cómo el origen y publicador del código. Y especificando la petición de determinado nivel de privilegios de seguridad al sistema operativo: El nivel de privilegios requeridos para ejecutarse. El nivel de privilegios que pueden utilizarse pero no  requeridos para ejecutarse. El nivel de privilegios no requeridos y que deben ser explícitamente excluidos.
Seguridad Seguridad de acceso de código - Evidencias. Son la denominación de la identificación de la identidad y origen del ensamblado. La información incluida en la evidencia que identifica un  ensamblado es, de mayor a menor seguridad: El nombre seguro del ensamblado. El hash criptográfico del ensamblado. La información incluida en la evidencia que muestra el origen de un  ensamblado es, de mayor a menor seguridad : El publicador del ensamblado, validado con su firma authenticode. La zona en la que se originó el ensamblado: ordenador local, Intranet o Internet. La ubicación de origen del ensamblado: URL, UNC, path o carpeta local del sistema.
Seguridad Seguridad de acceso de código – Nombres seguros. Los Strong Names aseguran que un ensamblado tenga un identificador global único, que luego será usado por el CLR para especificar los permisos requeridos por el ensamblado para ejecutarse correctamente. Un nombre seguro utiliza criptografía de clave pública para asignar el identificador único y una firma digital para asegurar la autenticidad del autor y consta de: El nombre del ensamblado. El número de versión. Información cultural opcional. Una clave pública. Para crear un nombre seguro habremos de: Crear un par de claves criptográficas, mediante la herramienta Sn.exe del SDK o firmando en la pestaña firma de las propiedades del proyecto. Firmar el ensamblado con un nombre seguro usando el par de claves.
Seguridad Seguridad de acceso de código – Permissions sets Las políticas del CAS controlan los otorgados al código para acceder a los recursos, basándose en la identidad y origen, asociando un tipo de evidencia con un conjunto de permisos. Para ver estas políticas habremos de usar: ,[object Object]
Code Access Security tool. Es una herramienta de línea de comandos para ve y modificar las políticas. Nota: Se requieren privilegios de administrador para utilizar estas herramientas
Introduction to Code Groups Seguridad de acceso de código – Code groups. Un grupo de código relaciona un tipo de evidencia a un conjunto de permisos. Permission Grant Evidence ,[object Object]
Read C:oney
Write: C:icrosoft
Internet
Execution
Read:C:datum
All Printer AccessPublisher = Adatum Site = Adatum.com SN Key=25 98… Publisher = Microsoft Zone= Internet SNKey = 9F AD… Una jerarquía de  code groups All Code Nothing Publisher=Microsoft Read:C:icrosoft Zone=Internet Internet Zone=MyComputer Execution SN Key=25 98… Read:C:datum Site = Adatum.com All Printer Access SN Key = 9F AD… Name = Microsoft Money Read:C:oney SN Key = 9F AD… Name = Microsoft.App Write:C:icrosoft
Seguridad Seguridad de acceso de código – Petición de permisos. Es la forma que tenemos de indicarle al CLR, dentro del propio código, que necesidades específicas de permisos se requieren en un momento dado, tanto para reclamar como para denegar, incluso aunque las políticas de seguridad otorguen el permiso. Para ello habremos de utilizar las clases específicas definidas en .NET Framework, todas ellas heredando de CodeAccessPermision, la cual nos provee de los métodos Demand, Assert, Deny, PermitOnly, IsSubsetOf, Intersect y Union. Ejemplo: [C#] using System.IO;  using System.Security;  using System.Security.Permissions;  [assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted=true)]  public class Program {     public static void Main() {        try {           StreamWriter writer = File.AppendText("LogFile.txt");           writer.WriteLine("Hello World.");           writer.Close();        }        catch (SecurityException) {           Console.WriteLine("No permission to write to the disk.");        }    } } [VB] Imports System  Imports System.IO  Imports System.Security  Imports System.Security.Permissions  <Assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted:=True)>  Module Module1     Sub Main()        Try           Dim writer As StreamWriter = File.AppendText("LogFile.txt")           writer.WriteLine("Hello World.")           writer.Close()        Catch ex As SecurityException           Console.WriteLine("No permission to write to the disk.")        End Try     End Sub  End Module Formato general petición permisos: [C#] [assembly: permission-name(SecurityAction.security-action-value, parameters)]  [VB] <Assembly: permission-name(SecurityAction.security-action-value, parameters)>
Seguridad Seguridad basada en roles. Es la técnica utilizada para otorgar o denegar permiso de acceso a recursos basándose en el tipo de usuario. Veremos: ¿Qué es una identidad? ¿Qué es un Security Principal? Cómo crear identidades y objetos Principal. Cómo implementar controles de autentificación. Cómo verificar que un Principal tenga un rol específico.
Seguridad Seguridad basada en roles - ¿Qué es una identidad? Es un objeto que encapsula la información sobre el usuario o entidad que está siendo validado, como el nombre de usuario y el tipo de autentificación, definido en el espacio de nombres System.Security.Principal . Los tipos de identidad en .NET Framework son: Windows: la de acceso al ordenador, impersonable, clase WindowsIdentity. Genérica: Usando un método de identificación personalizado definido por la aplicación, clase GenericIdentity. Personalizada: Clase nuestra, implementando el interfaz. Todas las clases de identidad implementan el interfaz IIdentity, con las propiedades: Nombre: el del usuario actual, de tipo String. IsAuthenticated: Booleano, identificado o no. AuthenticationType: String indicando el tipo de autentificación.
Seguridad Seguridad basada en roles - ¿Qué es un Security Principal? Es un objeto que representa el contexto de seguridad bajo el que está corriendo el código, con su identidad y sus roles , definido en el espacio de nombres System.Security.Principal. Los tipos de Principal en .NET Framework son: Windows principal: el usuario de acceso al ordenador y sus roles (grupos de los que es miembro el usuario), clase WindowsPrincipal. Generic principal: usuarios y roles que existen independientemente de los del sistema y sus roles. Para los métodos de identificación personalizados, clase GenericPrincipal. Custom principal: Información de roles específica de la aplicación, implementando el interfaz. Todas las clases de principal implementan el interfaz IPrincipal, con las propiedades: Identity: recupera el objeto identidad asociado al usuario actual. IsInRole: determina si el usuario actual está en un rol o no.
Seguridad Seguridad basada en roles – Cómo crear identidades y objetos principal. Para crear identidades y objetos principal deberemos: Recuperar la identidad del usuario actual de Windows. Crear un Windows principal a partir de dicha identidad. Para crear identidades y objetos principal genéricos: Crear e inicializar un objeto GenericIdentity. Crear e inicializar un objeto GenericPrincipal. Asociar el principal al hilo actual. [Visual C#]  WindowsIdentity UnaIdentidad = WindowsIdentity.GetCurrent();  WindowsPrincipal UnPrincipal = new WindowsPrincipal(UnaIdentidad);  [Visual Basic]  Dim UnaIdentidad As WindowsIdentity = WindowsIdentity.GetCurrent()  Dim UnPrincipal As New WindowsPrincipal(UnaIdentidad)  [Visual C#]  GenericIdentity UnaIdentidad = new GenericIdentity("Usuario");  String[] UnArray = {"Director", "Cajero"};  GenericPrincipal UnPrincipal = new GenericPrincipal(UnaIdentidad, UnArray);  System.Threading.Thread.CurrentPrincipal = UnPrincipal; [Visual Basic]  Dim UnaIdentidad As New GenericIdentity("Usuario")  Dim UnArray() As String = {"Director", "Cajero"}  Dim UnPrincipal As New GenericPrincipal(UnaIdentidad, UnArray) System.Threading.Thread.CurrentPrincipal = UnPrincipal
Seguridad Seguridad basada en roles - Controles de autentificación Se valida la identidad de un usuario comparando un String introducido por éste contra la propiedad Name de la propiedad Identity del Principal. [Visual C#]  if (String.Compare(UnPrincipal.Identity.Name, "ibis.espepito", true)==0)  {       // Permite el acceso al código.  }  [Visual Basic]  IfString.Compare(UnPrincipal.Identity.Name, " ibis.espepito ", True) = 0 Then       ' Permite el acceso al código.  End If
Seguridad Seguridad basada en roles – Rol específico de un Principal Se comprueba la membresía invocando al método IsInRole del objeto Principal.  [Visual C#]  if (UnPrincipal.IsInRole("BUILTINAdministradores"))  {       // Permite el acceso al codigo.  } if (UnPrincipal.IsInRole(WindowsBuiltInRole.Administrator))  {   // Permite el acceso al codigo. }  [Visual Basic]  If UnPrincipal.IsInRole("BUILTINdministradores") Then       ' Permite el acceso al codigo.  End If  If UnPrincipal.IsInRole(WindowsBuiltInRole.Administrator) Then   ' Permite el acceso al codigo.  End If
Seguridad Seguridad basada en roles – Validación Se realizará utilizando la clase PrincipalPermission para comprobar identidad y membresía.  [Visual C#]  PrincipalPermission principalPerm = new PrincipalPermission("domainjo",  "domainTeller", true);  try  {       principalPerm.Demand();       // Tenía la autorización necesaria.  }  catch  {       // No tenía la autorización necesaria.  }  [Visual Basic]  Dim principalPerm AsNew PrincipalPermission("domaino", _ "domaineller", True)  Try       principalPerm.Demand()       ' Tenía la autorización necesaria.  Catch  ' No tenía la autorización necesaria.  EndTry Creamos el objeto PrincipalPermission, iniciándolo con la identidad, rol y estatus de autentificación que debe cumplir. Invocamos el método Demand para saber si el usuario actual cumple los requisitos.
Seguridad Seguridad basada en roles – Validación También es posible efectuar esta operación declarativamente utilizando el atributo PrincipalPermissionAttribute al nivel de clase o método.  [Visual C#] [PrincipalPermissionAttribute(SecurityAction.Demand, Name = "domainjo", Role = "domainTeller", Authenticated = true)] // Aquí vendrá la definición de clase o método...  [Visual Basic] <PrincipalPermissionAttribute(SecurityAction.Demand, _ Name := "domaino", Role := "domaineller", Authenticated := True)> _  ' Aquí vendrá la definición de clase o método...  Hemos de pasar el flagDemand como SecurityAction. Si omitimos cualquiera de los parámetros, equivaldrá a un comodín.

Más contenido relacionado

La actualidad más candente

Seguridad en la red
Seguridad en la redSeguridad en la red
Seguridad en la redperita p
 
Investigacion de seguridad
Investigacion de seguridadInvestigacion de seguridad
Investigacion de seguridadJulio Cesar
 
Introducción a los ejercicios de Red Team
Introducción a los ejercicios de Red TeamIntroducción a los ejercicios de Red Team
Introducción a los ejercicios de Red TeamEduardo Arriols Nuñez
 
Seguridad En Sistemas Distribuidos
Seguridad En Sistemas DistribuidosSeguridad En Sistemas Distribuidos
Seguridad En Sistemas DistribuidosHECTOR JAVIER
 
Seguridad en la_red
Seguridad en la_redSeguridad en la_red
Seguridad en la_redelenacediel
 
Be Aware Webinar - Su seguridad ha sido vulnerada ahora qué
Be Aware Webinar - Su seguridad ha sido vulnerada ahora quéBe Aware Webinar - Su seguridad ha sido vulnerada ahora qué
Be Aware Webinar - Su seguridad ha sido vulnerada ahora quéSymantec LATAM
 
Comunicaciones industriales opc
Comunicaciones industriales opcComunicaciones industriales opc
Comunicaciones industriales opcCarlos Benito
 
Webinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad GestionadaWebinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad GestionadaArsys
 
Seguridad en redes
Seguridad en redesSeguridad en redes
Seguridad en redes3123753782
 
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Alonso Caballero
 
1739221 seguridad-en-redes-y-servidores
1739221 seguridad-en-redes-y-servidores1739221 seguridad-en-redes-y-servidores
1739221 seguridad-en-redes-y-servidoresMarcelo QL
 
Practica unidad 6 gaby
Practica unidad 6 gabyPractica unidad 6 gaby
Practica unidad 6 gabylagos12
 

La actualidad más candente (17)

Seguridad en la red
Seguridad en la redSeguridad en la red
Seguridad en la red
 
2012temariohackingv9
2012temariohackingv92012temariohackingv9
2012temariohackingv9
 
Investigacion de seguridad
Investigacion de seguridadInvestigacion de seguridad
Investigacion de seguridad
 
Presentación
PresentaciónPresentación
Presentación
 
Introducción a los ejercicios de Red Team
Introducción a los ejercicios de Red TeamIntroducción a los ejercicios de Red Team
Introducción a los ejercicios de Red Team
 
Seguridad En Sistemas Distribuidos
Seguridad En Sistemas DistribuidosSeguridad En Sistemas Distribuidos
Seguridad En Sistemas Distribuidos
 
Seguridad en la_red
Seguridad en la_redSeguridad en la_red
Seguridad en la_red
 
Sistemas de intrusos
Sistemas de intrusosSistemas de intrusos
Sistemas de intrusos
 
Be Aware Webinar - Su seguridad ha sido vulnerada ahora qué
Be Aware Webinar - Su seguridad ha sido vulnerada ahora quéBe Aware Webinar - Su seguridad ha sido vulnerada ahora qué
Be Aware Webinar - Su seguridad ha sido vulnerada ahora qué
 
Comunicaciones industriales opc
Comunicaciones industriales opcComunicaciones industriales opc
Comunicaciones industriales opc
 
Tarea administracion redes
Tarea administracion redesTarea administracion redes
Tarea administracion redes
 
Webinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad GestionadaWebinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad Gestionada
 
Seguridad en redes
Seguridad en redesSeguridad en redes
Seguridad en redes
 
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
 
1739221 seguridad-en-redes-y-servidores
1739221 seguridad-en-redes-y-servidores1739221 seguridad-en-redes-y-servidores
1739221 seguridad-en-redes-y-servidores
 
Virus
VirusVirus
Virus
 
Practica unidad 6 gaby
Practica unidad 6 gabyPractica unidad 6 gaby
Practica unidad 6 gaby
 

Destacado

Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasAntonio Palomares Sender
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redAntonio Palomares Sender
 
Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesAntonio Palomares Sender
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingAntonio Palomares Sender
 

Destacado (6)

Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebas
 
Framework .NET 3.5 10 Linq
Framework .NET 3.5 10 LinqFramework .NET 3.5 10 Linq
Framework .NET 3.5 10 Linq
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la red
 
Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de soluciones
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawing
 
Linq
LinqLinq
Linq
 

Similar a Framework .NET 3.5 11 Seguridad

1. introduccioìn a la seguridad
1. introduccioìn a la seguridad1. introduccioìn a la seguridad
1. introduccioìn a la seguridad1 2d
 
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2Juan Pablo
 
Protección y seguridad en SO
Protección y seguridad en SOProtección y seguridad en SO
Protección y seguridad en SORayzeraus
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De DatosWilliam Suárez
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datosguestb40a1b0
 
Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000teddy666
 
Microsoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 IMicrosoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 Iteddy666
 
Curso basicoseguridadweb slideshare6
Curso basicoseguridadweb slideshare6Curso basicoseguridadweb slideshare6
Curso basicoseguridadweb slideshare6tantascosasquenose
 
Seguridad web
Seguridad webSeguridad web
Seguridad webcamposer
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosRichard J. Nuñez
 
Ciberseguridad: CAso Alma Technologies
Ciberseguridad: CAso Alma TechnologiesCiberseguridad: CAso Alma Technologies
Ciberseguridad: CAso Alma TechnologiesSantiago Toribio Ayuga
 
Seguridad de la informática
Seguridad de la informáticaSeguridad de la informática
Seguridad de la informáticamilkstern
 
Protección y Seguridad en los SO
Protección y Seguridad en los SOProtección y Seguridad en los SO
Protección y Seguridad en los SOAnastasia Vans
 
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTWebinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTJose Gonzales
 
Seguridad y protección en los s.o
Seguridad y protección en los s.oSeguridad y protección en los s.o
Seguridad y protección en los s.oJESÚS GUERRA
 
Seguridad en sitios web
Seguridad en sitios webSeguridad en sitios web
Seguridad en sitios webUTPL
 
Segurida dinformatica
Segurida dinformaticaSegurida dinformatica
Segurida dinformaticahmitre17
 
¿Cómo detectar ataques de red utilizando Snort? | CISObeat
¿Cómo detectar ataques de red utilizando Snort? | CISObeat¿Cómo detectar ataques de red utilizando Snort? | CISObeat
¿Cómo detectar ataques de red utilizando Snort? | CISObeatCISObeat
 
Fundamentos de seguridad y tecnologías de seguridad
Fundamentos de seguridad y tecnologías de seguridadFundamentos de seguridad y tecnologías de seguridad
Fundamentos de seguridad y tecnologías de seguridadSianPealoza
 

Similar a Framework .NET 3.5 11 Seguridad (20)

1. introduccioìn a la seguridad
1. introduccioìn a la seguridad1. introduccioìn a la seguridad
1. introduccioìn a la seguridad
 
Respuestas
RespuestasRespuestas
Respuestas
 
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
 
Protección y seguridad en SO
Protección y seguridad en SOProtección y seguridad en SO
Protección y seguridad en SO
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000
 
Microsoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 IMicrosoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 I
 
Curso basicoseguridadweb slideshare6
Curso basicoseguridadweb slideshare6Curso basicoseguridadweb slideshare6
Curso basicoseguridadweb slideshare6
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas Operativos
 
Ciberseguridad: CAso Alma Technologies
Ciberseguridad: CAso Alma TechnologiesCiberseguridad: CAso Alma Technologies
Ciberseguridad: CAso Alma Technologies
 
Seguridad de la informática
Seguridad de la informáticaSeguridad de la informática
Seguridad de la informática
 
Protección y Seguridad en los SO
Protección y Seguridad en los SOProtección y Seguridad en los SO
Protección y Seguridad en los SO
 
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTWebinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
 
Seguridad y protección en los s.o
Seguridad y protección en los s.oSeguridad y protección en los s.o
Seguridad y protección en los s.o
 
Seguridad en sitios web
Seguridad en sitios webSeguridad en sitios web
Seguridad en sitios web
 
Segurida dinformatica
Segurida dinformaticaSegurida dinformatica
Segurida dinformatica
 
¿Cómo detectar ataques de red utilizando Snort? | CISObeat
¿Cómo detectar ataques de red utilizando Snort? | CISObeat¿Cómo detectar ataques de red utilizando Snort? | CISObeat
¿Cómo detectar ataques de red utilizando Snort? | CISObeat
 
Fundamentos de seguridad y tecnologías de seguridad
Fundamentos de seguridad y tecnologías de seguridadFundamentos de seguridad y tecnologías de seguridad
Fundamentos de seguridad y tecnologías de seguridad
 

Más de Antonio Palomares Sender

Framework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosFramework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosAntonio Palomares Sender
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosAntonio Palomares Sender
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeAntonio Palomares Sender
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Antonio Palomares Sender
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serializaciónAntonio Palomares Sender
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoAntonio Palomares Sender
 

Más de Antonio Palomares Sender (8)

Framework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosFramework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datos
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtime
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entorno
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 

Último (19)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 

Framework .NET 3.5 11 Seguridad

  • 1. Seguridad Principios de seguridad. Implementación de seguridad de acceso de código. Implementación de seguridad basada en roles. Uso de los servicios de criptografía.
  • 2. Seguridad Principios de seguridad – Arquitectura en .NET En los sistemas operativos Windows, la seguridad y el control de acceso a los recursos del sistema están basados en la identificación de usuario. Una vez que el usuario se ha identificado en el sistema, todo el código que ejecute tendrá acceso a todos los recursos que dicho usuario tenga a su disposición. Esta es una "vulnerabilidad" habitualmente aprovechada por todo tipo de código malicioso y hackers para hacerse con el control de nuestras máquinas, ya que las solemos utilizar con usuarios con todos los privilegios. .NET Framework añade una capa de seguridad a la del sistema operativo con los siguientes complementos: Permisos de seguridad. Seguridad de tipos. Políticas de seguridad. Autentificación. Autorización.
  • 3. Seguridad Principios de seguridad – Arquitectura en .NET. Permisos de seguridad: El CLR permitirá al código en ejecución efectuar sólo aquellas operaciones a las que esté autorizado a ejecutar utilizando permissions para ello. Seguridad de tipos: Ya se ha comentado la importancia que tiene este tema dentro del control que efectúa el CLR antes de lanzar cualquier ejecución. Cuando un ensamblado está marcado como type-safe, puede realizarse la ejecución en un entorno aislado, con lo que no se verá afectado pro ninguna acción, ni afectará a otros ensamblados. Políticas de seguridad: Son conjuntos de reglas y autorizaciones de seguridad implementados por los administradores del sistema y aplicadas por el CLR asegurando que el código sólo pueda acceder a los recursos y lanzamiento de ejecuciones de código específicamente autorizados. Autentificación: Asociada a la del sistema y a la seguridad basada en roles para permitir a un determinado usuario identificado el acceso a nuestro código. Autorización: Implementada con la seguridad basada en roles, determina a qué puede tener acceso un determinado usuario o rol.
  • 4. Seguridad Principios de seguridad – Espacios de nombres.
  • 5. Seguridad Principios de seguridad – Guías de diseño Validación de entrada No fiarse de la entrada de datos de usuario o cualquier otra fuente. Centralizar el enfoque de la validación para asegurar consistencia. No confiar en las validaciones del lado del cliente, validar en servidor. Limitar los tipos y rangos de datos de la entrada. Validar la entrada de datos en cuanto a tipo, tamaño, formato y rango. Autentificación Utilizar contraseñas fuertes, con la ayuda de expresiones reglares son fáciles de validar. Establecer una política de caducidad de contraseñas y desactivación de cuentas. No almacenar JAMÁS las contraseñas como texto plano, Es mejor almacenar un hash y recalcularlo con la entrada del usuario. Encriptar los canales de comunicaciones, para proteger los tokens de seguridad, evitando que con la captura de una cookie se pueda ganar acceso a nuestro sistema. Autorización Utilizar siempre cuentas con privilegios bajos, para proteger el acceso a los recursos. Restringir el acceso a los recursos del sistema: archivos, carpetas, claves de registro, objetos de Active Directory, objetos de base de datos y registro de eventos.
  • 6. Seguridad Principios de seguridad – Guías de diseño Gestión de configuración: Añadir sistemas de seguridad a los interfaces de administración para que sólo puede acceder personal autorizado. No almacenar las configuraciones de seguridad en archivos o, al menos, encriptar esas secciones. Criptografía No desarrollar criptografías personalizadas, por la dificultad de hacerlo adecuadamente, dada su complejidad, usar los del sistema. Utilizar los algoritmos y tamaños de clave adecuados. Proteger las claves de encriptado, con ellas desveladas nuestros datos encriptados dejarán de estar seguros. Sensibilidad de los datos: Gestione los datos secretos con mucho cuidado, no los almacene jamás como texto plano en el código, siempre se puede extraer, encriptelos si no puede evitar su inserción en el código. Maneje la información sensible de usuario cuidadosamente, datos de conexión, códigos de cuenta, tarjetas, … deberán ser solicitadas en el momento adecuado, pero no almacenadas como variables de entorno en memoria.
  • 7. Seguridad Principios de seguridad – Modelos de amenazas En un sistema de Threat modelling evaluaremos y clasificaremos continua y cíclicamente las potenciales amenazas a nuestro sistema y seleccionaremos la técnicas paliativas adecuadas, ya que no se puede proteger un sistema frente a los ataques si no se comprenden estos y su alcance. El modelo STRIDE representa las 6 categorías de amenazas que nuestro sistema deberá afrontar: (Spoofing identity) Impersonación frente al sistema o usurpación de identidad. (Tampering with data) Modificación maliciosa de datos persistidos o en tránsito. (Repudiation) Negación de responsabilidad (yo no he sido). (Information disclosure) Acceso a información reservada por usuario no autorizados. (Denial of service(DoS)) Denegación de servicio por la sobrecarga del servidor o sistema de validación. (Elevation of privilege) Incremento de los privilegios, accediendo a todo el sistema.
  • 8. Seguridad Principios de seguridad – Implementar STRIDE El proceso debe ser iterativo, según lo descrito: Hacer una relación con todas las amenazas conocidas, determinando cuanto puede afectar cada una de ellas a nuestro sistema. Clasificar las amenazas por criticidad o impacto y probabilidad. Para criticidad asignar números entre 1 y 10 (más severo). Para probabilidad, seleccione entre 1 y 10 (menos probable). Calcule el riesgo medio dividiendo criticidad por probabilidad. Seleccione una técnica o tecnología apropiada para mitigar cada amenaza. Vuelve a empezar por el primer paso a medida que el proyecto evolucione, ya que nunca se tiene la imagen completa y todos los hechos al principio de un proyecto y realizar una única pasada puede dejar agujeros de vulnerabilidad a los ataques.
  • 9. Seguridad Seguridad de acceso de código. Nos permite proteger el ordenador frente a ataques de código móvil. Como permitir al código de origen desconocido ejecutarse en un entorno protegido y como evitar que el código marcado como seguro pueda comprometer, voluntaria o involuntariamente, la seguridad. Los elementos que se utilizan son esta técnica son: Building blocks Evidencias Nombres seguros Conjuntos de permisos Code groups Petición de permisos
  • 10. Seguridad Seguridad de acceso de código – Building blocks. La seguridad del sistema operativo permite evitar que los usuario no autorizados tengan acceso al sistema, pero no puede evitar que los usuarios validados descarguen y ejecuten código malicioso. .NET Framework nos suministra la seguridad de acceso del código para proteger al sistema del código malicioso, pero permitir al código móvil ejecutarse de forma segura. Matizando el nivel de confianza basándose en factores cómo el origen y publicador del código. Y especificando la petición de determinado nivel de privilegios de seguridad al sistema operativo: El nivel de privilegios requeridos para ejecutarse. El nivel de privilegios que pueden utilizarse pero no requeridos para ejecutarse. El nivel de privilegios no requeridos y que deben ser explícitamente excluidos.
  • 11. Seguridad Seguridad de acceso de código - Evidencias. Son la denominación de la identificación de la identidad y origen del ensamblado. La información incluida en la evidencia que identifica un ensamblado es, de mayor a menor seguridad: El nombre seguro del ensamblado. El hash criptográfico del ensamblado. La información incluida en la evidencia que muestra el origen de un ensamblado es, de mayor a menor seguridad : El publicador del ensamblado, validado con su firma authenticode. La zona en la que se originó el ensamblado: ordenador local, Intranet o Internet. La ubicación de origen del ensamblado: URL, UNC, path o carpeta local del sistema.
  • 12. Seguridad Seguridad de acceso de código – Nombres seguros. Los Strong Names aseguran que un ensamblado tenga un identificador global único, que luego será usado por el CLR para especificar los permisos requeridos por el ensamblado para ejecutarse correctamente. Un nombre seguro utiliza criptografía de clave pública para asignar el identificador único y una firma digital para asegurar la autenticidad del autor y consta de: El nombre del ensamblado. El número de versión. Información cultural opcional. Una clave pública. Para crear un nombre seguro habremos de: Crear un par de claves criptográficas, mediante la herramienta Sn.exe del SDK o firmando en la pestaña firma de las propiedades del proyecto. Firmar el ensamblado con un nombre seguro usando el par de claves.
  • 13.
  • 14. Code Access Security tool. Es una herramienta de línea de comandos para ve y modificar las políticas. Nota: Se requieren privilegios de administrador para utilizar estas herramientas
  • 15.
  • 21. All Printer AccessPublisher = Adatum Site = Adatum.com SN Key=25 98… Publisher = Microsoft Zone= Internet SNKey = 9F AD… Una jerarquía de code groups All Code Nothing Publisher=Microsoft Read:C:icrosoft Zone=Internet Internet Zone=MyComputer Execution SN Key=25 98… Read:C:datum Site = Adatum.com All Printer Access SN Key = 9F AD… Name = Microsoft Money Read:C:oney SN Key = 9F AD… Name = Microsoft.App Write:C:icrosoft
  • 22. Seguridad Seguridad de acceso de código – Petición de permisos. Es la forma que tenemos de indicarle al CLR, dentro del propio código, que necesidades específicas de permisos se requieren en un momento dado, tanto para reclamar como para denegar, incluso aunque las políticas de seguridad otorguen el permiso. Para ello habremos de utilizar las clases específicas definidas en .NET Framework, todas ellas heredando de CodeAccessPermision, la cual nos provee de los métodos Demand, Assert, Deny, PermitOnly, IsSubsetOf, Intersect y Union. Ejemplo: [C#] using System.IO; using System.Security; using System.Security.Permissions; [assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted=true)] public class Program { public static void Main() { try { StreamWriter writer = File.AppendText("LogFile.txt"); writer.WriteLine("Hello World."); writer.Close(); } catch (SecurityException) { Console.WriteLine("No permission to write to the disk."); } } } [VB] Imports System Imports System.IO Imports System.Security Imports System.Security.Permissions <Assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted:=True)> Module Module1 Sub Main() Try Dim writer As StreamWriter = File.AppendText("LogFile.txt") writer.WriteLine("Hello World.") writer.Close() Catch ex As SecurityException Console.WriteLine("No permission to write to the disk.") End Try End Sub End Module Formato general petición permisos: [C#] [assembly: permission-name(SecurityAction.security-action-value, parameters)] [VB] <Assembly: permission-name(SecurityAction.security-action-value, parameters)>
  • 23. Seguridad Seguridad basada en roles. Es la técnica utilizada para otorgar o denegar permiso de acceso a recursos basándose en el tipo de usuario. Veremos: ¿Qué es una identidad? ¿Qué es un Security Principal? Cómo crear identidades y objetos Principal. Cómo implementar controles de autentificación. Cómo verificar que un Principal tenga un rol específico.
  • 24. Seguridad Seguridad basada en roles - ¿Qué es una identidad? Es un objeto que encapsula la información sobre el usuario o entidad que está siendo validado, como el nombre de usuario y el tipo de autentificación, definido en el espacio de nombres System.Security.Principal . Los tipos de identidad en .NET Framework son: Windows: la de acceso al ordenador, impersonable, clase WindowsIdentity. Genérica: Usando un método de identificación personalizado definido por la aplicación, clase GenericIdentity. Personalizada: Clase nuestra, implementando el interfaz. Todas las clases de identidad implementan el interfaz IIdentity, con las propiedades: Nombre: el del usuario actual, de tipo String. IsAuthenticated: Booleano, identificado o no. AuthenticationType: String indicando el tipo de autentificación.
  • 25. Seguridad Seguridad basada en roles - ¿Qué es un Security Principal? Es un objeto que representa el contexto de seguridad bajo el que está corriendo el código, con su identidad y sus roles , definido en el espacio de nombres System.Security.Principal. Los tipos de Principal en .NET Framework son: Windows principal: el usuario de acceso al ordenador y sus roles (grupos de los que es miembro el usuario), clase WindowsPrincipal. Generic principal: usuarios y roles que existen independientemente de los del sistema y sus roles. Para los métodos de identificación personalizados, clase GenericPrincipal. Custom principal: Información de roles específica de la aplicación, implementando el interfaz. Todas las clases de principal implementan el interfaz IPrincipal, con las propiedades: Identity: recupera el objeto identidad asociado al usuario actual. IsInRole: determina si el usuario actual está en un rol o no.
  • 26. Seguridad Seguridad basada en roles – Cómo crear identidades y objetos principal. Para crear identidades y objetos principal deberemos: Recuperar la identidad del usuario actual de Windows. Crear un Windows principal a partir de dicha identidad. Para crear identidades y objetos principal genéricos: Crear e inicializar un objeto GenericIdentity. Crear e inicializar un objeto GenericPrincipal. Asociar el principal al hilo actual. [Visual C#] WindowsIdentity UnaIdentidad = WindowsIdentity.GetCurrent(); WindowsPrincipal UnPrincipal = new WindowsPrincipal(UnaIdentidad); [Visual Basic] Dim UnaIdentidad As WindowsIdentity = WindowsIdentity.GetCurrent() Dim UnPrincipal As New WindowsPrincipal(UnaIdentidad) [Visual C#] GenericIdentity UnaIdentidad = new GenericIdentity("Usuario"); String[] UnArray = {"Director", "Cajero"}; GenericPrincipal UnPrincipal = new GenericPrincipal(UnaIdentidad, UnArray); System.Threading.Thread.CurrentPrincipal = UnPrincipal; [Visual Basic] Dim UnaIdentidad As New GenericIdentity("Usuario") Dim UnArray() As String = {"Director", "Cajero"} Dim UnPrincipal As New GenericPrincipal(UnaIdentidad, UnArray) System.Threading.Thread.CurrentPrincipal = UnPrincipal
  • 27. Seguridad Seguridad basada en roles - Controles de autentificación Se valida la identidad de un usuario comparando un String introducido por éste contra la propiedad Name de la propiedad Identity del Principal. [Visual C#] if (String.Compare(UnPrincipal.Identity.Name, "ibis.espepito", true)==0) { // Permite el acceso al código. } [Visual Basic] IfString.Compare(UnPrincipal.Identity.Name, " ibis.espepito ", True) = 0 Then ' Permite el acceso al código. End If
  • 28. Seguridad Seguridad basada en roles – Rol específico de un Principal Se comprueba la membresía invocando al método IsInRole del objeto Principal. [Visual C#] if (UnPrincipal.IsInRole("BUILTINAdministradores")) { // Permite el acceso al codigo. } if (UnPrincipal.IsInRole(WindowsBuiltInRole.Administrator)) { // Permite el acceso al codigo. } [Visual Basic] If UnPrincipal.IsInRole("BUILTINdministradores") Then ' Permite el acceso al codigo. End If If UnPrincipal.IsInRole(WindowsBuiltInRole.Administrator) Then ' Permite el acceso al codigo. End If
  • 29. Seguridad Seguridad basada en roles – Validación Se realizará utilizando la clase PrincipalPermission para comprobar identidad y membresía. [Visual C#] PrincipalPermission principalPerm = new PrincipalPermission("domainjo", "domainTeller", true); try { principalPerm.Demand(); // Tenía la autorización necesaria. } catch { // No tenía la autorización necesaria. } [Visual Basic] Dim principalPerm AsNew PrincipalPermission("domaino", _ "domaineller", True) Try principalPerm.Demand() ' Tenía la autorización necesaria. Catch ' No tenía la autorización necesaria. EndTry Creamos el objeto PrincipalPermission, iniciándolo con la identidad, rol y estatus de autentificación que debe cumplir. Invocamos el método Demand para saber si el usuario actual cumple los requisitos.
  • 30. Seguridad Seguridad basada en roles – Validación También es posible efectuar esta operación declarativamente utilizando el atributo PrincipalPermissionAttribute al nivel de clase o método. [Visual C#] [PrincipalPermissionAttribute(SecurityAction.Demand, Name = "domainjo", Role = "domainTeller", Authenticated = true)] // Aquí vendrá la definición de clase o método... [Visual Basic] <PrincipalPermissionAttribute(SecurityAction.Demand, _ Name := "domaino", Role := "domaineller", Authenticated := True)> _ ' Aquí vendrá la definición de clase o método... Hemos de pasar el flagDemand como SecurityAction. Si omitimos cualquiera de los parámetros, equivaldrá a un comodín.
  • 31. Seguridad Servicios criptográficos. ¿Qué es la Criptografía simétrica? ¿Cómo se utiliza? ¿Qué es la Criptografía asimétrica? ¿Cómo se utiliza? ¿Qué es una firma digital? Nuevas funcionalidades criptográficas en .NET Framework 3.5
  • 32. Seguridad Servicios criptográficos - ¿Qué es la Criptografía simétrica? Es aquella que utiliza una clave secreta compartida para encriptar y desencriptar los datos. Datos Datos encriptados Datos Clave secreta Clave secreta Algoritmo simétrico Algoritmo simétrico El remitente encripta los datos confidenciales usando una clave secreta El receptor desencripta los datos confidenciales usando una clave secreta
  • 33. Servicios criptográficos - ¿Cómo se utiliza? Se debe generar una clave simétrica. Hay que obtener una contraseña fuerte del usuario. Generar un salt, un número aleatorio criptográfico obtenido con el método GetBytes de la clase RandomNumberGenerator. Crear la clave con el método GetBytes de la clase Rfc2898DeriveBytes. Se encriptan los datos utilizando un algoritmo simétrico. Crear un objeto del algoritmo simétrico y un objeto stream. Escribir el salt y el vector de inicialización (generado por .NET) al stream, ambos sin encriptar para poder operar en la recepción. Escribir los datos encriptados en el stream. Mediante un objeto CryptoStream que arrope al FileStream. Se desencriptan utilizando el mismo algoritmo y la misma clave. [Visual C#] string password = ... ; // Obtener contraseña. // Validar la fuerza de la misma. Regex r = newRegex(@"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*)",RegexOptions.Singleline); if ((password.Length >= 9) && (r.IsMatch(password))) { // Genera un salt de 16 byte (128 bit). RandomNumberGenerator rNum = RandomNumberGenerator.Create(); byte[] salt = newbyte[16]; rNum.GetBytes(salt); // Genera una clave de 16 byte (128 bit). Rfc2898DeriveBytes derBytes = new Rfc2898DeriveBytes(password, salt); byte[] key = derBytes.GetBytes(16); } [Visual Basic] Dim password AsString = ... 'Obtener contraseña. 'Validar la fuerza de la misma. Dim r AsNew Regex("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*)", _ RegexOptions.Singleline) If (password.Length >= 9) AndAlso (r.IsMatch(password)) Then 'Genera un salt de 16 byte (128 bit). Dim rNum As RandomNumberGenerator = RandomNumberGenerator.Create() Dim salt(15) As Byte rNum.GetBytes(salt) 'Genera una clave de 16 byte (128 bit). Dim derBytes AsNew Rfc2898DeriveBytes(password, salt) Dim key() As Byte = derBytes.GetBytes(16) End If Seguridad [Visual C#] // Crea el objeto de algoritmo simétrico, con la clave anterior. Rijndael cryptoAlg = Rijndael.Create(); cryptoAlg.Key = key; // Crea el file stream, y escribe el salt y el vector. FileStream filestream = new FileStream(filename, FileMode.Create); filestream.Write(salt, 0, salt.Length); filestream.Write(cryptoAlg.IV, 0, cryptoAlg.IV.Length); // Crea el CryptoStream y encripta los datos. CryptoStream cryptostream = new CryptoStream(filestream, cryptoAlg.CreateEncryptor(), CryptoStreamMode.Write); cryptostream.Write(output, 0, output.Length); cryptostream.FlushFinalBlock(); cryptostream.Close(); [Visual Basic] ' Crea el objeto de algoritmo simétrico, con la clave anterior. Dim cryptoAlg As Rijndael = Rijndael.Create() cryptoAlg.Key = key ' Crea el file stream, y escribe el salt y el vector. Dim filestream As New FileStream(filename, FileMode.Create) filestream.Write(salt, 0, salt.Length) filestream.Write(cryptoAlg.IV, 0, cryptoAlg.IV.Length) ' Crea el CryptoStream y encripta los datos. Dim cryptostream As New CryptoStream(filestream, _ cryptoAlg.CreateEncryptor(), CryptoStreamMode.Write) cryptostream.Write(output, 0, output.Length) cryptostream.FlushFinalBlock() cryptostream.Close() [Visual C#] // Crea el objeto del algoritmo y el stream. Rijndael cryptoAlg = Rijndael.Create(); FileStream filestream = new FileStream(filename, FileMode.Open); // lee el salt y vector no encriptados del archivo. byte[] salt = new byte[16]; byte[] IV = new byte[cryptoAlg.IV.Length]; filestream.Read(salt, 0, salt.Length); filestream.Read(IV, 0, IV.Length); // Vuelve a generar la clave a partir de la contraseña y el salt y configura el algoritmo. Rfc2898DeriveBytes derBytes = new Rfc2898DeriveBytes(password, salt); byte[] key = derBytes.GetBytes(16); cryptoAlg.Key = key; cryptoAlg.IV = IV; // Crea el CryptoStream y lee los datos. CryptoStream cryptostream = new CryptoStream(filestream, cryptoAlg.CreateDecryptor(), CryptoStreamMode.Read); int bytesRead = 0; byte[] buffer = new byte[256]; do { bytesRead = cryptostream.Read(buffer, 0, 256); // Usar aquí los datos desencriptados del buffer. } while (bytesRead > 0); cryptostream.Close();
  • 34. Seguridad Servicios criptográficos - ¿Qué es la Criptografía asimétrica? Aquella en la que las claves de encriptado y desencriptado son distintas (clave pública y clave privada). Los datos se encriptan con la clave pública del receptor y éste los desencripta con su clave privada. De esta forma no hay problema en transmitir la clave pública, ya que aunque se intercepte, no se podrán desencriptar los datos con ella. Lógicamente los algoritmos en encriptación asimétricos no son los mismos que los de encriptación simétrica. Aunque esta encriptación es bastante más pesada que la simétrica, motivo por el que, normalmente, se utiliza la encriptación asimétrica para intercambiar la clave pública y la encriptación simétrica para los datos a enviar.
  • 35. Seguridad [Visual C#] public class StoreKey { public static void Main() { // Crea el objeto CspParameters e inicializa el contenedor del // nombre de la clave CspParameters cp = new CspParameters(); cp.KeyContainerName = "My RSA Key"; // Instancia el rsa acediendo al contenedor de la clave RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp); // Escribe el par de claves Console.WriteLine("Key is : " + rsa.ToXmlString(true)); } } // Encripta usando la clave generada byte[] encryptedData = rsa.Encrypt(unencryptedData, false); [Visual Basic] Public Class StoreKey Public Shared Sub Main() ' Crea el objeto CspParameters e inicializa el contenedor del ' nombre de la clave Dim cp As New CspParameters() cp.KeyContainerName = "My RSA Key" ' Instancia el rsa acediendo al contenedor de la clave RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp Dim rsa As New RSACryptoServiceProvider(cp) ' Escribe el par de claves Console.WriteLine("Key is : " & rsa.ToXmlString(True)) End Sub End Class ' Encripta usando la clave generada Dim encryptedData As Byte() = rsa.Encrypt(unencryptedData, False)
  • 36. Seguridad Servicios criptográficos - ¿Qué es una firma digital? Manifiestos ClickOnce Disponemos de nuevas clases que nos permiten acceder a los manifiestos firmados de los ensamblados desplegados con la tecnología ClickOnce. La clase ManifestSignatureInformation recupera la información de la firma del manifiesto cuando utilizamos el método VerifySignature. La enumeración ManifestKinds nos permite especificar el manifiesto a verificar, devolviendo un valor de la enumeración SignaruteVerificationResult. La clase ManifestSignatureInformationCollection nos devuelve una colección de objetos ManifestSignatureInformation de las firmas verificadas. Soporte para la suite B Disponemos de soporte para los siguientes algoritmos de la nueva suite de criptografía publicada por la National Security Agency (NSA). Advanced Encryption Standard (AES), claves de 128, 192 y 256 bits. Secure Hash Algorithms SHA-1, SHA-256, SHA-384 y SHA-512 para hashing. Elliptic Curve Digital Signature Algorithm (ECDSA), usando curvas de 256-bit, 384-bit y 521-bit módulos primos para firma. Este algoritmo está soportado por la clase ECDsaCng y permite firmar con una clave privada y verificar la firma con una clave pública. Elliptic Curve Diffie-Hellman (ECDH), usando curvas de 256-bit, 384-bit y 521-bit módulos primos para intercambio de claves y acuerdos de secreto, soportado por la clase ECDiffieHellmanCng. Wrappers para código manejado para las implementaciones certificadas del estándar Federal Information Processing Standard (FIPS), mediante las clases AesCryptoServiceProvider, SHA256CryptoServiceProvider, SHA384CryptoServiceProvider y SHA512CryptoServiceProvider. Clases para la nueva generación de criptografía La cual nos permitirá una manipulación más sencilla de las claves, tanto públicas como los pares de claves pública/privada de la encriptación asimétrica, utilizando para referenciarlas un simple string.
  • 37. Seguridad Nuevas funcionalidades criptográficas en .NET Framework 3.5 Es una forma de asegurarnos de que los datos recibidos no han sido alterados y nos permite identificar el remitente. El remitente codifica un hash de los datos y encripta el hash con una clave privada para generar la firma 1 Valor del Hash Algoritmo de Hash Algoritmo asimétrico Firma Data Clave privada del remitente El receptor desencripta la firma con la clave pública del remitente y compara el valor con el hash de los datos 2 Firma Algoritmo asimétrico ¿Son iguales los valores? Algoritmo de Hash Valor del Hash Firma des- encriptada Datos Clave pública del remitente