domingo, 31 de julio de 2016

Criptografía


Tradicionalmente se ha definido como el ámbito de la criptografia el que se ocupa de las técnicas decifrado o codificado destinadas a alterar las representaciones lingűisticas de ciertos mensajes con el fin de hacerlos ininteligibles a receptores no autorizados. Estas técnicas se utilizan tanto en el arte como en la . Por tanto, el único objetivo de la criptografía era conseguir la confidencialidad de los mensajes. Para ello se diseñaban sistemas de decifrado y codigos. En esos tiempos la única criptografía existente era la llamada criptografia clasica.

La aparición de la informatica y el uso masivo de las comunicaciones digitales, han producido un número creciente de problemas de seguridad. Las transacciones que se realizan a través de la red pueden ser interceptadas, y por tanto, la seguridad de esta información debe garantizarse. Este desafío ha generalizado los objetivos de la criptografía para ser la parte de la criptologia que se encarga del estudio de los algoritmos, protocolos (se les llama protocolos criptograficos), y sistemas que se utilizan para proteger la información y dotar de seguridad a las comunicaciones y a las entidades que se comunican.

Objetivos de la criptografía

La criptografía actualmente se encarga del estudio de los algoritmos, protocolos y sistemas que se utilizan para dotar de seguridad a las comunicaciones, a la información y a las entidades que se comunican. El objetivo de la criptografía es diseñar, implementar, implantar, y hacer uso de sistemas criptográficos para dotar de alguna forma de seguridad. Por tanto el tipo de propiedades de las que se ocupa la criptografía son, por ejemplo:
  • Comfidencialidad:  Es decir, garantiza que la información sea accesible únicamente a personal autorizado. Para conseguirlo utiliza cofigos y técnicas de cira
  • Integridad:  Es decir garantiza la corrección y completitud de la información. Para conseguirlo puede usar por ejemplo funciones hash criptograficas MDC, protocolos de compromiso de bit, o protocolos de notarizacion electronica
  • Vinculacio: Permite vincular un documento o transacción a una persona o un sistema de gestión criptográfico automatizado. Cuando se trata de una persona, se trata de asegurar su conformidad respecto a esta vinculación (content commitment) de forma que pueda entenderse que la vinculación gestionada incluye el entendimiento de sus implicaciones por la persona. Antiguamente se utilizaba el término "No repudio" que está abandonándose, ya que implica conceptos jurídicos que la tecnología por sí sola no puede resolver. En relación con dicho término se entendía que se proporcionaba protección frente a que alguna de las entidades implicadas en la comunicación, para que no pudiera negar haber participado en toda o parte de la comunicación. Para conseguirlo se puede usar por ejemplo firma digital. En algunos contextos lo que se intenta es justo lo contrario: Poder negar que se ha intervenido en la comunicación. Por ejemplo cuando se usa un servicio de mensajeria instantanea y no queremos que se pueda demostrar esa comunicación. Para ello se usan técnicas como el cifrado negable.
  • Autenticacion: Es decir proporciona mecanismos que permiten verificar la identidad del comunicador. Para conseguirlo puede usar por ejemplo funcion hash criptografica MAC o protocolo de conociento cero.
  • Soluciones a problemas de la falta de simultaneidad en la telefirma digital de contratos. Para conseguirlo puede usar por ejemplo protocolos de transferencia  inconsciente.
Un sistema criptográfico es seguro respecto a una tarea si un adversario con capacidades especiales no puede romper esa seguridad, es decir, el atacante no puede realizar esa tarea específica.

Firma digital


Una firma digital es un mecanismo criptografico que permite al receptor de un mensaje firmado digitalmente determinar la entidad originadora de dicho mensaje (autenticacion de origen y no repudio), y confirmar que el mensaje no ha sido alterado desde que fue firmado por el originador (integridad).

Terminología

  • Un algoritmo de generación de firma digital, también llamado simplemente algoritmo de generación de firma, es un método para producir firmas digitales.
  • Un algoritmo de verificación de firma digital, también llamado simplemente algoritmo de verificación, es un método que permite la verificación de que una firma digital es auténtica.
  • Un esquema o mecanismo de firma digital consiste en un algoritmo de generación de firma y su algoritmo de verificación asociado.
  • Un proceso o procedimiento de firma digital es un algoritmo de generación de firma digital, junto con un método para formatear los datos en mensajes que puedan ser firmados.

ClasificaciónEditar

En función el modo en el que se construye la firmaEditar

Podemos construir esquemas de firma digital basándonos en distintos tipos de técnicas:[6]
  • Basándonos en la supuesta seguridad de dispositivos físicos
  • Basándonos en criptografía de clave simétrica.
  • Basándonos en criptografía de clave asimétrica.


Basándonos en la supuesta seguridad de dispositivos físicos
Editar

Un dispositivo, como una tarjeta inteligente , se dice que es resistente a modificaciones (en inglés tamper resistant) si se cree que es difícil acceder a la clave secreta almacenada en él. Por tanto podemos usar una tarjeta inteligente con un algoritmocriptográfico para construir una firma digital de la siguiente forma:
El signatario tienen una tarjeta inteligente que puede sólo cifrar con una clave secreta , y cada verificador tiene una tarjeta inteligente que puede sólo descifrar con una clave secreta  de forma que lo cifrado por  sólo puede ser verificado por . y  pueden ser iguales (clave simétrica) o distintas (claves asimétricas). En este tipo de mecanismo hay que abordar el problema de instalar y almacenar de forma segura las claves en las tarjetas inteligentes. Falsificar una firma es difícil si el dispositivo es resistente a modificaciones.


Basándonos en criptografía de clave simétrica
Editar

Se han propuesto distintos protocolos de firma basados en la criptografia de clave secreta. Sin embargo, a partir de la aparición de la criptografia asimetrica están en recesión debido a su superioridad tanto conceptual como operacional en la mayoría de los contextos de uso.
Los esquemas de firma digital de clave simétrica son los siguientes:
Estos esquemas están basados en el uso una funcion de un solo sentido (en inglés one-way function). La gran desventaja de este tipo de esquemas es el tamaño de las claves y de las firmas y del hecho de que sólo pueden ser usadas un número fijo de veces (frecuentemente una sola vez). Merkle ha propuesto optimizaciones para este tipo de algoritmos. Bleichenbacher y Maurer han proporcionado una generalización de estos métodos. Estos esquemas han servido como primitivas usadas en construcciones más complejas

Basándonos en criptografía de clave asimétricaEditar

Se han propuesto distintos protocolos de firma basados en la criptografia de clave asimetrica. Los más importantes son los siguientes:
El uso de criptografía asimétrica para firma digital se basa en el concepto de funciones de un solo sentido con (en inglés trapdoor one-way functions). Son funciones fáciles de computar en una sola dirección y difíciles de computar en otra dirección, excepto para alguien que conozca la información 'trampa'. La información puede entonces ser firmada digitalmente si el signatario transforma la información con su clave secreta (la información trampa). El verificador puede verificar la firma digital aplicando la transformación en el sentido fácil usando la clave pública.






jueves, 21 de julio de 2016

Sistemas de múltiples procesadores 

El comportamiento cuando se compilan trabajos de IBM® InfoSphere DataStage es ejecutar todas las etapas activas adyacentes en un solo proceso. Esto tiene sentido cuando se ejecuta el trabajo en un sistema de un procesador.
 Cuando se ejecuta en un sistema de múltiples procesadores, es mejor ejecutar cada etapa activa en un proceso diferente, para que los procesos puedan distribuirse entre los procesadores disponibles y ejecutarse en paralelo. Estas mejoras en los trabajos de servidor del Release 6 de InfoSphere DataStagepermiten estipular en el diseño que los trabajos se compilen de esta forman. Hay dos formas de hacerlo

  • Explícitamente, insertando etapas InterProcess (IPC) entre las etapas activas conectadas.
  • Implícitamente, activando el almacenamiento intermedio de filas entre procesos, ya sea en todo el proyecto (utilizando el Administrador de InfoSphere DataStage y QualityStage) o en trabajos individuales (en el recuadro de diálogo Propiedades del trabajo)
El recurso IPC también puede utilizarse para producir varios procesos en los que las etapas pasivas están conectadas directamente. Esto significa que una operación que lee en un origen de datos y graba en otro puede dividirse en un proceso de lectura y un proceso de grabación para aprovechar los sistemas de múltiples procesadores.
El diagrama siguiente ilustra el posible comportamiento de las etapas activas:
Figura 1. Comportamiento predeterminado


Figura 2. Imposición implícita de varios procesos mediante el almacenamiento intermedio de filas entre procesos


Figura 3. Utilización de las etapas de IPC para imponer varios procesos



El diagrama siguiente ilustra el posible comportamiento de las etapas pasivas:
Figura 4. Comportamiento predeterminado con la etapa Transformer invisible insertada en el tiempo de compilación


Figura 5. Utilización de la etapa IPC para imponer varios procesos, con las etapas Transformer invisibles insertadas en el tiempo de compilación



Sistemas de un procesador o de múltiples procesadores
 

El comportamiento cuando se compilan trabajos de IBM® InfoSphere DataStage es ejecutar todas las etapas activas adyacentes en un solo proceso. Esto tiene sentido cuando se ejecuta el trabajo en un sistema de un procesador. Cuando se ejecuta en un sistema de múltiples procesadores, es mejor ejecutar cada etapa activa en un proceso diferente, para que los procesos puedan distribuirse entre los procesadores disponibles y ejecutarse en paralelo. Estas mejoras en los trabajos de servidor del Release 6 de InfoSphere DataStagepermiten estipular en el diseño que los trabajos se compilen de esta forman. Hay dos formas de hacerlo:

  • Explícitamente, insertando etapas InterProcess (IPC) entre las etapas activas conectadas.
  • Implícitamente, activando el almacenamiento intermedio de filas entre procesos, ya sea en todo el proyecto (utilizando el Administrador de InfoSphere DataStage y QualityStage) o en trabajos individuales (en el recuadro de diálogo Propiedades del trabajo)
El recurso IPC también puede utilizarse para producir varios procesos en los que las etapas pasivas están conectadas directamente. Esto significa que una operación que lee en un origen de datos y graba en otro puede dividirse en un proceso de lectura y un proceso de grabación para aprovechar los sistemas de múltiples procesadores.

El diagrama siguiente ilustra el posible comportamiento de las etapas activas:
Figura 1. Comportamiento predeterminado


Figura 2. Imposición implícita de varios procesos mediante el almacenamiento intermedio de filas entre procesos



Figura 3. Utilización de las etapas de IPC para imponer varios procesos



El diagrama siguiente ilustra el posible comportamiento de las etapas pasivas:
Figura 4. Comportamiento predeterminado con la etapa Transformer invisible insertada en el tiempo de compilación


Figura 5. Utilización de la etapa IPC para imponer varios procesos, con las etapas Transformer invisibles insertadas en el tiempo de compilación




viernes, 8 de julio de 2016

INTERBLOQUEO (SISTEMA OPERATIVO)

En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compit

en por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.

En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.

Interbloqueo
Se dice que dos o más procesos están bloqueados, cuando están suspendidos en espera de un evento que sólo puede ser activado por uno de los procesos bloqueados, y por lo tanto dicho evento nunca sucederá


Postergación indefinida o Inanición (Starving)
Se dice que uno o más procesos están en postergación indefinida cuando la política de planificación del sistema permite que un proceso quede en espera de un evento por un tiempo indefinido. Esto puede suceder, por ejemplo, cuando la asignación de recursos se realiza por prioridad. De este modo un proceso de baja prioridad estará suspendido mientras existan otros procesos de mayor prioridad.
Envejecimiento: aumentar la prioridad de los procesos conforme pasa el tiempo

iberación del recurso que utiliza el otro proceso.

Clasificación de recursos

Para el estudio del interbloqueo, los recursos se pueden clasificar en:
·     Compartido/exclusivos: Se dice que un recursos es compartido si puede ser utilizado por más de un proceso al mismo tiempo. Son exclusivos los que pueden ser utilizados sólo por un proceso a la vez
·     Apropiativos/inapropiativos: Son apropiativos los recursos asignados a un proceso, que pueden ser desasignados del proceso, por al sistema para asignarlos a otro proceso.Los recursos involucrados en los interbloqueos son los exclusivos e inapropiativos


Condiciones necesarias para el interbloqueo


Coffman, Elphuck y Shoshani, establecieron cuatro condiciones, necesarias y suficientes, para que se dé un interbloqueo:


Exclusión mutua

Si dos procesos solicitan un recurso exclusivo, uno de los dos quedará suspendido hasta que el favorecido libere el recurso.

Contención o retención y espera

Si un proceso necesita más de un recurso para realizar su trabajo, conservará en su poder los recursos exclusivos ya asignados, mientras espera por otro recurso adicional.

Inapropiatividad

Los recursos asignados a un proceso, sólo pueden ser liberados por el proceso mismo y no pueden ser desasignados por el sistema, cuando otro proceso los necesite.

Espera circular

Dependencia: Si un proceso P1 está suspendido en espera de un recurso exclusivo que está asignado a otro proceso P2, entonces decimos que P1 depende de P2 (P1 <= P2).
Espera circular: Existe una cadena circular de procesos en espera de un recurso, si existe una cadena de dependencias entre procesos de la forma P1 <= P2 <= P3 <= ... <= Pn <= P1
Ejemplos:
Asignación de recursos sin ciclos


Formas de enfrentar los interbloqueos


Existen varias políticas y estrategias que el sistema operativo puede tomas, para tratar con los interbloqueos:
  • Indiferencia:Problema del usuario y del programador, lograr que no se dé el interbloqueo.
  • Prevención:Consisten en condicionar el sistema con una serie de restricciones a los programadores, para que no se den al menos una de las condiciones del interbloqueo, por lo que éste nunca sucederá.
  • Evitación o predicción: Esta estrategia consiste en dejar que las condiciones para el interbloqueo se puedan dar, pero en el momento de asignar recursos, y se detecte que puede ocurrir un interbloqueo, deniega la asignación del recurso que puede desencadenar el interbloqueo.
  • Detección y recuperación: En esta política, el sistema deja que suceda el interbloqueo, pero se implementan procesos encargados de revisar el estado de asignación de los procesos, para detectar los interbloqueo. Una vez detectado, se pueden implementar políticas de recuperación de interbloqueo, que básicamente consisten en matar procesos.

Condiciones necesarias para la detección

1. Conocer los procesos: acceso al PCB
2. Conocer los recursos: acceso a la tabla de recursos del sistema
3. Conocer la asignación: debemos poder saber qué recursos está asignado a cada proceso
4. Conocer la espera: debemos poder saber en que recursos está esperando (suspendido) un proceso

 

 

Recuperación


Una vez que se detecta un interbloqueo, corresponde la decisión sobre la recuperación del sistema sobre ese interbloqueo, que básicamente se trata de matar un proceso y recuperar sus recursos.
Esta recuperación puede ser manual o automática. La recuperación automática es un tema difícil, ya que no se pueden establecer, fácilmente, condiciones determinísticas para saber cuál es el proceso más adecuado de eliminar. Existen algunas posibilidades:
  • El proceso con más recursos: se libera la mayor cantidad cantidad de recursos, lo que permite continuar a la mayor cantidad de procesos. Se deshace el "nudo" principal. Sin embargo tiene la desventaja que normalmente será el proceso más importante, lo que implica el mayor daño, o el mayor tiempo de repetición.
  • El proceso con menos recursos: se busca el menor daño, pero puede ser que pocos procesos puedan continuar.
  • El proceso que esté involucrado en más ciclos o interbloqueos: se deshace el mayor número de interbloqueos.
Sin embargo, hay que tomar en cuenta un criterio subjetivo: la importancia del proceso, lo cual no está dado ni por la cantidad de recursos que tiene asignados el proceso ni el número de interbloqueos en que está involucrado. Lo cuál hace de la recuperación manual, una forma muy recomendable, siempre y cuando se cuente con un operador entrenado en el funcionamiento de los procesos del usuario.

Herramientas para el interbloqueo en los sistemas operativos existentes

SOLARIS

Utiliza la herramienta CAT (Crash Analysis Tool), que es parte del entorno del sistema, y ayuda a analizar los archivos centrales del sistema. Esta herramienta consiste en analizar la salida del desplome o error que se dio. Esta herramienta genera archivos de salida en los cuales se describen las causas que provocaron este estado en el sistema.

LINUX

Utiliza las siguientes herramientas:
GDB: Es una herramienta de rastreo y debugeo del kernel, con la información obtenida en un error en el sistema.
INGO: Es un “perro guardián” que sirve para detectar y reportar los interbloqueos.
SYSREQ: Permite observar las tareas, procesos y registros dentro del kernel en caso de fallo.
KDB: Es un debugeador del kernel en línea de comando que sirve para inspeccionar el estado de los procesos.

WINDOWS

Utiliza las siguientes herramientas:
WINDBG:
DBGMON:
I386KD: Es utilizado para cargar el archivo MEMORY.DMP, el que fue generado por una computadora con WINDOWS NT. Este archivo contiene información que puede ser observada para verificar la integridad del sistema.
KD:
En general, la mayoría de herramientas sirven para observar el estado del sistema, ya sea por el kernel o por archivos generados conteniendo la información, y así poder saber el estado del sistema y que situaciones, procesos y recursos se encuentran involucrados en llevar al sistema a su estado actual.
Verifier.exe:a partir de WinXp, detecta interbloqueos en drivers
En Windows® XP La detección se presentó por medio del control orientado a excepciones, que permite interceptar la cadena de control de excepciones con propósitos de registro y diagnóstico. En Windows Vista™ Windows Vista tiene una nueva API muy interesante denominada Cruce encadenado con esperas (WCT). API Cruce permite determinar cuándo y por qué se produce interbloqueo en un proceso. WCT notifica exactamente en qué objeto de sincronización se encuentra el interbloqueo. Pero esta sólo notifica un conjunto limitado de primitivas de sincronización. Aun con esta limitante, resulta una API muy útil y que deseará tener en su kit de herramientas de depuración. API de WCT Uso y sus limitaciones Uso examina si un subproceso se encuentra en espera en una llamada de bloqueo. Si el subproceso se encuentra en una llamada de bloqueo, busca el objeto que el subproceso bloquea y determina, si es apropiado, el nombre del objeto y qué subprocesos o procesos poseen ese objeto. Por ejemplo, si el subproceso A espera que el proceso B complete la ejecución y el proceso B invoca SendMessage para el proceso A, existe un interbloqueo que WCT puede detectar y notificar. Limitaciones El único problema que observo con la API de WCT es que no notifica interbloqueos cuando se usa WaitForMultipleObjects, lo que reduce su utilidad en muchas aplicaciones.