lunes, 19 de julio de 2010

Sistemas Operativos: Diferencias entre Microsoft Windows y GNU Linux

windowsvslinuxjpgthumbwp6.jpg


Requerimientos del cliente
LINUX
Windows 2000
aplicaciones
·          No existe el empeño por dar compatibilidad hacia atrás,  frecuentemente hay la necesidad de recompilar para diferentes distribuciones.
·          A menudo no se provee el condigo fuente.
·          De manera principal basadas en script similares a UNIX (CGI, PERL, PHP)
·          No existe un marco para el desarrollo de aplicaciones distribuidas o aplicaciones Web.
·          No existe una implementación de: COM, CORBA, EJB, o middleware de transacciones habilitado.
·          No hay un sistema de monitoreo al procesamiento de transacciones (TP)  o un sistema de colas.
·          Ejemplos de código, kit de desarrollo (hardware, software y dispositivos) y selected source of code licencing.
·          Modelo integrado COM para procesamiento distribuido y Web, colas de mensajes procesamiento de transacciones y servicios multimedia.
·          Amplio rango de lenguajes incluyendo ASP.
·          Ínter operación de bases de datos con soporte a transacciones distribuidas (DTC)
·          Mas de 100 aplicaciones certificadas Windows y 2000 aplicaciones basadas en servicios de directorio e integración con seguridad.
·          Aplicaciones de directorio integradas habilitadas
confiabilidad
·          Bueno para servir aplicaciones simples de contenido estático, en maquinas de bajo nivel, de único procesador.
·          Pocas garantías  OEM de tiempo arriba en sistemas Linux
·          Falta de pruebas extensivas que garanticen la compatibilidad entre componentes y aplicaciones.
·          Gran numero de pruebas externas e internas de drivers, integración de aplicaciones, pruebas de stress beta (para garantizar la compatibilidad entre los componentes, servicios y aplicaciones)
·          Alto tiempo arriba (uptime) por parte de OEM que garantizan Windows 2000 server.
·          Sistema dinámico de configuración (plug and play, hot swap) sistema de protección de archivos y certificación de drivers.
·          Soporte por modo de kernel de protección de escritura, cluster de alta disponibilidad de aplicaciones, servidor Web de aplicaciones y balanceador de cargas de red.
·          Sistema de archivos journal (para mejorar la confiabilidad y recuperación rápida)
·          Soporte de compresión de archivos y encripcion.
seguridad
·          Todo o nada no se pueden delegar privilegios administrativos
·          No hay una ruta de resolucion (metodología) para arreglo de BUG, con una forma clara de contabilizacion.
·          No existe seguridad centralizada, incluyendo auditoria.
·          Sitema de Single, sign-on (SSO) o usuario único que permite a un solo usuario acceder a distintos sistemas en un entorno de RED.
·          Servicios de sistema corren con altos niveles de seguridad para servicios multiusuarios.
·          Soporte a los últimos Standard de seguridad (kerberos, PKI, smart-cards, encripted files system, IPSec, y VPN)
escalabilidad
·          Soporte de forma predeterminada de solo 960M RAM, tiene que recompilarse y aplicar parches para soportar  2G RAM y un maximo por archivo de 2G
·          I/O sincronico introduce una limitante de contencion a la escalabilidad SMP  (multi procesador)
·          Optimizado para hardware de bajo perfil.
·          Falta de un “threading” a nivel de kernel para un manejo eficiente de el procesamiento de aplicaciones.
·          Pobre desempeño de servidor Web (comparativa de apache contra IIS)
·          no se conoce un benchmarks TCP-C disponible.
·          Windows 2000 Server default 4G RAM; Windows 2000 Advanced server 8G RAM default; Windows 2000 Datacenter Server 64G RAM (default) máximo tamaño de archivo de 16T.
·          Soporte integrado de balance de cargas basado en TCP/IP
·          Escalabilidad SMP hasta 32 CPU
·          Desempeño de servidor Web probado
·          I/O asincrono  “threads” pueden procesar otras tareas mientras esperan al I/O mejorando el desempenio y la escalabilidad.
·          Record mundial en TCP-C precio/desempeño
·          Magnificos resultados en  doble y cuádruple procesador sobre SPECWeb
Administracion
·          No infraestructura de administración.
·          Bajo grado de integración de seguridad entre los componentes y las aplicaciones, incrementando costos y riesgo tecnico.
·          Servicios prestados d manera no integrada, desarrollados por equipos o personas independientes.
·          No estudios de TCO disponibles
·          Administración Centralizada , Servicios De Directorio Integrados, Delegacion De Administración Y Administración Basada En Políticas.
·          Capacidad De Elegir Entre GUI O Línea De Comandos Para Administración.
·          Directorio Activo Para Administración Integrada, Delegacion, Administración Y Scripting.
·          Tegnologias De INTELLIMIRROR, SysPrep, sistemas de instalación remota, Wizards de configuración, y herramientas de actualizacion.
Time to market
·          Limitado soporte de hardware y drivers.
·          No hay una lista HCL compilada.
·          Se requiere personal altamente entrenado para administración (frecuentemente desarrolladores) los que deben recompilar el kernel para agregar características .
·          Usuarios finales forzados a hacer la integración y pruebas de paquetes desarrollados por diferentes proveedores.
·          Soporte a las ultimas innovaciones de hardware (plug-n-play, power management, infrared file transfer)
·          Lista HCL compilada concertificacion y soporte OEM.
·          Plataforma integrada alrededor de la facilidad de uso.
·          Herramientas GUI para simplificar tareas complejas.
·          Administración vía scripts para automatizar  tareas y administración remota.
·          Pruebas extensas y soporte a nuevos dispositivos.
Accountability
·          No hay mapa de desarrollo, las características son adicionadas o evolucionan deacuerdo con las necesidades de los desarrolladores. No hay un compromiso en el desarrllo.
·          Bajo GPL cualquier trabajo derivado (su ventaja competitiva) debe darse a la comunidad de desarrollo.
·          No hay un proceso de certificación para las aplicaciones.
·          Mapa claro a largo plazo de desarrollo.
·          $10millones/día se gastan en investigación y desarrollo para lograr cumplir el mapa de desarrollo.
·          Amplia red Micosoft certified profesional,.solution developers, consultores, engineers.
·          Red de soporte dedicada.


viernes, 16 de julio de 2010

Inteligencia Artificial: Autómatas

Autómata del griego automatos, espontáneo o con movimiento propio. Se define como una máquina que imita la figura y los movimientos de un ser animado. Un equivalente tecnológico en la actualidad serían los robots autónomos. Si el robot es antropomorfo se conoce como androide.

Androide es la denominación que se le da a un robot antropomorfo que, además de imitar la apariencia humana, imita algunos aspectos de su conducta de manera autónoma. Etimológicamente "androide" se refiere a los robots humanoides de fisionomía masculina, a los robots de apariencia femenina se les llama ocasionalmente ginoides, principalmente en las obras de ciencia ficción, aunque en el lenguaje coloquial el término androide suele usarse para ambos casos.

El mundo de los autómatas es tan amplio como su definición. En términos Biónicos podríamos considerar al hombre como el primer autómata, pues aparte de imitar el movimiento de os animales que lo redeaban, posee libre albedrío que le permite decidir por sí mismo. Esa distinción ha hecho que el ser humano haya querido imitar el acto de la creación desde el mismo inicio de su historia, construyendo mecanismos artificiales para todo tipo de fines desde científicos, de investigación, para agilizar sus tareas o por mero entretenimiento.

En electrónica un autómata es un sistema secuencial, aunque en ocasiones la palabra es utilizada también para referirse a un robot. Puede definirse como un equipo electrónico programable en lenguaje no informático y diseñado para controlar, en tiempo real y en ambiente industrial, procesos secuenciales. Sin embargo, la rápida evolución de los autómatas hace que esta definición no esté cerrada.

Teoría de los Autómatas

En la Teoría de los lenguajes formales, disciplina perteneciente a la informática, se describen tres tipos de autómatas que reconocen tipos diferentes de lenguajes: los autómatas finitos, los autómatas a pila y las máquinas de Turing.

El autómata es la primera máquina con lenguaje, es decir, un calculador lógico cuyo juego de instrucciones se orienta hacia los sistemas de evolución secuencial.

La aparición de los ordenadores a mediados de los 50's inauguró el campo de la lógica programada para el control de procesos industriales. No obstante, aunque estos ordenadores resolvían los inconvenientes de un Sistema cableado o la llamada lógica cableada, presentaban nuevos problemas:

- Mala adaptación al entorno industrial.
- Coste elevado de los equipos.
- Necesidad de personal informático para la realización de los programas.
- Necesidad de personal especializado para el mantenimiento.

Estos problemas se solucionarían con la aparición del autómata programable o PLC (Controlador Lógico Programable; en inglés Programable Logic Controler).

Estructura general

Un autómata programable se puede considerar como un sistema basado en un microprocesador, siendo sus partes fundamentales la Unidad Central de Proceso (CPU), la Memoria y el Sistema de Entradas y Salidas (E/S).

La CPU realiza el control interno y externo del autómata y la interpretación de las instrucciones del programa. A partir de las instrucciones almacenadas en la memoria y de los datos que recibe de las entradas, genera las señales de las salidas. La memoria se divide en dos bloques, la memoria de solo lectura o ROM (Read Only Memory) y la memoria de lectura y escritura o RAM (Random Access Memory).

En la memoria ROM se almacenan programas para el correcto funcionamiento del sistema, como el programa de comprobación de la puesta en marcha y el programa de exploración de la memoria RAM.

La memoria RAM a su vez puede dividirse en dos áreas:

Memoria de datos, en la que se almacena la información de los estados de las entradas y salidas y de variables internas.

Memoria de usuario, en la que se almacena el programa con el que trabajará el autómata.

El sistema de Entradas y Salidas recoge la información del proceso controlado (Entradas) y envía las acciones de control del mismo (salidas). Los dispositivos de entrada pueden ser Pulsadores, interruptores, finales de carrera, termostatos, presostatos, detectores de nivel, detectores de proximidad, contactos auxiliares, etc.

Por su parte, los dispositivos de salida son también muy variados: Pilotos indicadores, relés, contactores, arrancadores de motores, válvulas, etc. En el siguiente punto se trata con más detalle este sistema.

Sistema de entradas y salidas

En general, las entradas y salidas (E/S) de un autómata pueden ser discretas, analógicas, numéricas o especiales.

Las E/S discretas se caracterizan por presentar dos estados diferenciados: presencia o ausencia de tensión, relé abierto o cerrado, etc. Su estado se puede visualizar mediante indicadores tipo LED que se iluminan cuando hay señal en la entrada o cuando se activa la salida. Los niveles de tensión de las entradas más comunes son 5 V cc, 24 V cc/ca, 48 V cc/ca y 220 V ca.

Los dispositivos de salida más frecuentes son relés, transistores y triacs.

Las E/S analógicas tienen como función la conversión de una magnitud analógica (tensión o corriente) equivalente a una magnitud física (temperatura, presión, grado de acidez, etc.) en una expresión binaria de 11, 12 o más bits, dependiendo de la precisión deseada. Esto se realiza mediante conversores analógico-digitales (ADC's).

Las E/S numéricas permiten la adquisición o generación de información a nivel numérico, en códigos BCD, Gray u otros (véase código binario). La información numérica puede ser entrada mediante dispositivos electrónicos digitales apropiados. Por su parte, las salidas numéricas suministran información para ser utilizada en dispositivos visualizadores (de 7 segmentos) u otros equipos digitales.

Por último, las E/S especiales se utilizan en procesos en los que con las anteriores E/S vistas son poco efectivas, bien porque es necesario un gran número de elementos adicionales, bien porque el programa necesita de muchas instrucciones. Entre las más importantes están:

Entradas para termopar y termorresistencia: Para el control de temperaturas.
Salidas de trenes de impulso: Para el control de motores paso a paso (PAP).

Entradas y salidas de regulación P+I+D (Proporcional + Integral + Derivativo): Para procesos de regulación de alta precisión.

Salidas ASCII: Para la comunicación con periféricos inteligentes (equipo de programación, impresora, PC, etc.).

Ciclo de funcionamiento

Cuando se pone en marcha el PLC se realizan una serie de comprobaciones:

Funcionamiento de las memorias.
Comunicaciones internas y externas.
Elementos de E/S.
Tensiones correctas de la fuente de alimentación.

Una vez efectuadas estas comprobaciones y si las mismas resultan ser correctas, la CPU... inicia la exploración del programa y reinicializa. Esto último si el autómata se encuentra en modo RUN (marcha), ya que de estar en modo STOP (paro) aguardaría, sin explorar el programa, hasta la puesta en RUN.

Al producirse el paso al modo STOP o si se interrumpe la tensión de alimentación durante un tiempo lo suficientemente largo, la CPU realiza las siguientes acciones:

Detiene la exploración del programa.
Pone a cero, es decir, desactiva todas las salidas.

Mientras se está ejecutando el programa, la CPU realiza en sucesivos intervalos de tiempo distintas funciones de diagnóstico (watch-dog en inglés). Cualquier anomalía que se detecte se reflejará en los indicadores de diagnóstico del procesador y dependiendo de su importancia se generará un código de error o se parará totalmente el sistema.

El tiempo total del ciclo de ejecución viene determinado por los tiempos empleados en las distintas operaciones. El tiempo de exploración del programa es variable en función de la cantidad y tipo de las instrucciones así como de la ejecución de subrutinas. El tiempo de exploración es uno de los parámetros que caracteriza a un PLC y generalmente se suele expresar en milisegundos por cada mil instrucciones. Para reducir los tiempos de ejecución, algunas CPU's constan de dos o más procesadores que operan simultáneamente y están dedicados a funciones específicas. También se puede descargar de tareas a la CPU incorporando módulos inteligentes dedicados a tareas específicas.

Equipos de programación

La misión principal de los equipos de programación, es la de servir de interfaz entre el operador y el autómata para introducir en la memoria de usuario el programa con las instrucciones que definen las secuencias de control.

Dependiendo del tipo de autómata, el equipo de programación produce unos códigos de instrucción directamente ejecutables por el procesador o bien un código intermedio, que es interpretado por un programa residente en el procesador (firmware).

Las tareas principales de un equipo de programación son:

Introducción de las instrucciones del programa.
Edición y modificación del programa.
Detección de errores.
Archivo de programas (cintas, discos).

Básicamente existen tres tipos de equipos de programación:

Consola con teclado y pantalla de tubo de rayos catódicos (CRT) o de cristal líquido (LCD).
Programador manual, semejante a una calculadora de bolsillo, más económico que la anterior.
Ordenador personal con el software apropiado.

La conexión de la consola u ordenador al autómata programable se realiza mediante una conexión en serie (generalmente la RS-232C o la RS-422).

Equipos periféricos

Además de los equipos de programación, existen numerosos dispositivos que sin formar parte directa del autómata, pueden conectarse al mismo para realizar distintas funciones. Normalmente se conectan a las salidas ASCII o a los canales de comunicación del autómata.

Seguidamente se describen algunos de los equipos periféricos más comunes:
Módulos de ampliación de entradas y salidas: Necesarios para aquellos procesos en los que la estructura de E/S del autómata sea insuficiente.

Módulos de tratamiento de datos: Son pequeños ordenadores que manejan distintos datos (contaje, tiempo, estado de E/S, etc.), para la elaboración de informes, gráficos, etc.

Impresoras.

Visualizadores alfanuméricos.

Lectores de código de barras.

La forma de comunicarse el autómata con sus periférícos puede ser unidireccional, cuando se establece en un sólo sentido, o bien bidireccional, cuando se establece en los dos sentidos. Los enlaces para ambos tipos de comunicación suelen ser por lo general del tipo serie, siendo los más empleados los anteriormente mencionados RS-232C y RS-422, ambos de acuerdo con las normas de la EIA (Electronic Industries Association).

El RS-232C es el método de transmisión de datos más difundido, pero tiene la limitación de la distancia máxima de transmisión a 15 metros y la velocidad máxima de transmisión de 19.200 baudios (1 baudio = 1 bit/segundo). 

El RS-422 resuelve en parte las limitaciones del RS-232C. La distancia de transmisión puede superar un kilómetro y la velocidad puede llegar a 10 Mbaudios.

Programación del autómata

Para controlar un determinado proceso, el autómata realiza sus tareas de acuerdo con una serie de sentencias o instrucciones establecidas en un programa. Dichas instrucciones deberán haber sido escritas con anterioridad por el usuario en un lenguaje comprensible para la CPU. En general, las instrucciones pueden ser de funciones lógicas, de tiempo, de cuenta, aritméticas, de espera, de salto, de comparación, de comunicación y auxiliares.

Dependiendo del fabricante, los lenguajes de programación son muy diversos, sin embargo, suelen tener alguna relación más o menos directa con los lenguajes Ladder o GRAFCET.

Los programas para autómata pueden realizarse de forma lineal o de forma estructurada. En la programación lineal el programa consta de una serie de instrucciones que se van ejecutando una tras de otra de modo cíclico. Este modo de programación se suele emplear en programas no demasiado complejos o en autómatas que no posean el modo estructurado. Cuando los programas son muy complejos, la programación estructurada es más aconsejable ya que puede dividirse el proceso general en subprogramas con diferentes subprocesos tecnológicos. Otras de las ventajas de este modo de programación es que da un carácter más panorámico al programa, lo que conlleva una más fácil identificación de errores así como una mayor facilidad de comprensión por otros programadores.

Programar un automata no es realmente algo imposible, pero si se necesita paciencia. Como ejemplo tenemos un enlace en la sección de enlaces externos que conduce a una página que nos lleva a donde se encuentra un archivo hecho en java con código fuente para que se pueda analizar y comprender de una manera mas sencilla como funciona un automata finito deterministico (AFD)

Teoría de autómatas

La teoría de automatas es una rama de las ciencias de la computación que estudia de manera abstracta y con problemas que éstas son capaces de resolver. La teoría de autómatas está estrechamente relacionada con la teoría del lenguaje formal ya que los autómatas son clasificados a menudo por la clase de lenguajes formales que son capaces de reconocer.

El Dr. Frank Sinphilin es considerado el padre de los autómatas y uno de los mayores precursores de la computación y su destacada investigación en el desarrollo de modelos matemáticos apropiados para la comprensión de fenómenos de modelación instrumental,puesto que al tener una discapacidad motriz a falta de un miembro corporal (el cual no es espescíficado en los textos), el comienza a idear métodos y técnicas que le ayuden a tener una vida normal a razón de dicha discapacidad y vive enclaustrado y desarrollando modelos adecuados para dar inicio al primer lenguaje basado en razonamiento autodidacta, este lenguaje fue llamado TOPIT.OS, el cual evolucionó hasta los lenguajes que hoy en día se conocen.

Un autómata es un modelo matemático para una máquina de estado finita (FSM sus siglas en inglés). Una FSM es una máquina que, dada una entrada de símbolos, "salta" a través de una serie de estados de acuerdo a una función de transición (que puede ser expresada como una tabla). En la variedad común "Mealy" de FSMs, esta función de transición dice al autómata a que estado cambiar dados unos determinados estado y símbolo.

La entrada es leída símbolo por símbolo, hasta que es "consumida" completamente (piense en esta como una cinta con una palabra escrita en ella, que es leída por una cabeza lectora del autómata; la cabeza se mueve a lo largo de la cinta, leyendo un símbolo a la vez) una vez la entrada se ha agotado, el autómata se detiene.

Dependiendo del estado en el que el autómata finaliza se dice que este ha aceptado o rechazado la entrada. Si este termina en el estado "acepta", el autómata acepta la palabra. Si lo hace en el estado "rechaza", el autómata rechazó la palabra, el conjuto de todas las palabras aceptadas por el autómata constituyen el lenguaje aceptado por el mismo.

Vocabulario

Los conceptos básicos de símbolos, palabras, alfabetos y strings son comunes en la mayoría de las descripciones de los autómatas. Estos son:Símbolo Un dato arbitrario que tiene algún significado a o efecto en la máquina. A estos símbolos también se les llama "letras" o "átomos".1PalabraUna cadena finita formada por la concatenación de un número de símbolos.Alfabeto Conjunto finito de símbolos. Un alfabeto se indica normalmente con Σ, que es el conjunto de letras en un alfabeto.Lenguaje Un conjunto de palabras, formado por símbolos en un alfabeto dado. Puede o no puede ser infinito.Clausura de Kleene Un lenguaje se puede considerar como un subconjunto de todas las posibles palabras. El conjunto de todas las palabras puede, a su vez, ser considerado como el conjunto de todas las posibles concatenaciones de cadenas. Formalmente, este conjunto de todas las cadenas se llama en inglés free monoid. Se indica como Σ * , y el superíndice * se llama la estrella de Kleene.

Autómatas finitos

Formalmente, un autómata finito (AF) puede ser descrito como una 5-tupla .

Existen tres tipos de autómatas finitosAutómata finito determinista (AFD)Cada estado de un autómata de este tipo tiene una transición por cada símbolo del alfabeto.

AFD.

Autómata finito no determinista (AFND)Los estados de un autómata de este tipo pueden, o no, tener una o más transiciones por cada símbolo del alfabeto. El autómata acepta una palabra si existe al menos un camino desde el estado q0 a un estado final F etiquetado con la palabra de entrada. Si una transición no está definida, de manera que el autómata no puede saber como continuar leyendo la entrada, la palabra es rechazada.Autómata finito no determinista con transiciones ε (AFND-ε)Además de ser capaz de alcanzar más estados leyendo un símbolo, permite alcanzarlos sin leer ningún símbolo. Si un estado tiene transiciones etiquetadas con ε, entonces el AFND puede encontrarse en cualquier de los estados alcanzables por las transiciones ε, directamente o a través de otros estados con transiciones ε. El conjunto de estados que pueden ser alcanzados mediante este método desde un estado q, se denomina la clausura ε de q.

Sin embargo, puede observarse que todos estos tipos de autómatas pueden aceptar los mismos lenguajes. Siempre se puede construir un AFD que acepte el mismo lenguaje que el dado por un AFND.

Extensiones a los autómatas finitos

Los lenguajes aceptados por los autómatas descritos más arriba se denominan lenguajes regulares. Autómatas más potentes pueden aceptar lenguajes más complejos. Algunos de estos autómatas son:Autómata con pila Son máquinas idénticas a los AFD (o AFI), exceptuando el hecho de que disponen de una memoria adicional, haciendo uso de una pila. La función de transición δ ahora dependerá también de los símbolos que se encuentren al principio de la pila. Esta función determinará como cambia la pila en cada transición. Este tipo de autómatas aceptan los lenguajes independientes del contexto.Autómata linealmente acotadoSe trata de una máquina de Turing limitada.Máquina de Turing Son las máquinas computacionales más potentes. Poseen una memoria infinita en forma de cinta, así como un cabezal que puede leer y cambiar esta cinta, y moverse en cualquier dirección a lo largo de la cinta.

jueves, 15 de julio de 2010

inteligencia Artificial: Sistemas Expertos





Es una aplicación informática capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee información de uno o más expertos en un área específica. Se puede entender como una rama de la inteligencia artificial, donde el poder de resolución de un problema en un programa de computadora viene del conocimiento de un dominio específico. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta índole (no necesariamente tiene que ser de inteligencia artificial). También se dice que un SE se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (información sobre el seguimiento de una acción).

Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo:
Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas, que a la vez se basan en hechos.
Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza.

Debido a esto en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en línea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.



s un software que imita el comportamiento de un experto humano en la solución de un problema. Pueden almacenar conocimientos de expertos para un campo determinado y solucionar un problema mediante deducción lógica de conclusiones. 

Son SE aquellos programas que se realizan haciendo explicito el conocimiento en ellos, que tienen información específica de un dominio concreto y que realizan una tarea relativa a este dominio. 

Programas que manipulan conocimiento codificado para resolver problemas en un dominio especializado en un dominio que generalmente requiere de experiencia humana.

Programas que contienen tanto conocimiento declarativo (hechos a cerca de objetos, eventos y/o situaciones) como conocimiento de control (información a cerca de los cursos de una acción), para emular el proceso de razonamiento de los expertos humanos en un dominio en particular y/o área de experiencia. 

Software que incorpora conocimiento de experto sobre un dominio de aplicación dado, de manera que es capaz de resolver problemas de relativa dificultad y apoyar la toma de decisiones inteligentes en base a un proceso de razonamiento simbólico. 

APLICACIONES

Sus principales aplicaciones se dan en las gestiones empresariales debido a que;

a) Casi todas las empresas disponen de un ordenador que realiza las funciones básicas de tratamiento de la información: contabilidad general, decisiones financieras, gestión de la tesorería, planificación, etc.

b) Este trabajo implica manejar grandes volúmenes de información y realizar operaciones numéricas para después tomar decisiones. Esto crea un terreno ideal para la implantación de los SE.

Además los SE también se aplican en la contabilidad en apartados como: Auditoria(es el campo en el que más aplicaciones de SE se esta realizando) Fiscalidad, planificación, análisis financiero y la contabilidad financiera.

ÁREAS DE APLICACIÓN

Los SE se aplican a una gran diversidad de campos y/o áreas. A continuación se listan algunas de las principales:


Militar 

Informática 

Telecomunicaciones


Química 

Derecho 

Aeronáutica


Geología 

Arqueología 

Agricultura


Electrónica 

Transporte 

Educación


Medicina 

Industria 

Finanzas y Gestión


VENTAJAS

Estos programas proporcionan la capacidad de trabajar con grandes cantidades de información, que son uno de los grandes problemas que enfrenta el analista humano que puede afectar negativamente a la toma de decisiones pues el analista humano puede depurar datos que no considere relevantes, mientras un SE debido a su gran velocidad de proceso analiza toda la información incluyendo las no útiles para de esta manera aportar una decisión más sólida.

LIMITACIONES

Es evidente que para actualizar se necesita de reprogramación de estos (tal vez este sea una de sus limitaciones más acentuadas) otra de sus limitaciones puede ser el elevado costo en dinero y tiempo, además que estos programas son poco flexibles a cambios y de difícil acceso a información no estructurada. 

Debido a la escasez de expertos humanos en determinadas áreas, los SE pueden almacenar su conocimiento para cuando sea necesario poder aplicarlo. Así mismo los SE pueden ser utilizados por personas no especializadas para resolver problemas. Además si una persona utiliza con frecuencia un SEaprenderá de el.

Por otra parte la inteligencia artificial no ha podido desarrollar sistemas que sean capaces de resolver problemas de manera general, de aplicar el sentido común para resolver situaciones complejas ni de controlar situaciones ambiguas.

El futuro de los SE da vueltas por la cabeza de cada persona, siempre que el campo elegido tenga la necesidad y/o presencia de un experto para la obtención de cualquier tipo de beneficio. 

ARQUITECTURA BÁSICA DE LOS SISTEMAS EXPERTOS

Base de conocimientos. Es la parte del sistema experto que contiene el conocimiento sobre el dominio. hay que obtener el conocimiento del experto y codificarlo en la base de conocimientos. Una forma clásica de representar el conocimiento en un sistema experto son lar reglas. Una regla es unaestructura condicional que relaciona lógicamente la información contenida en la parte del antecedente con otra información contenida en la parte del consecuente.

Base de hechos (Memoria de trabajo ). Contiene los hechos sobre un problema que se han descubierto durante una consulta. Durante una consulta con el sistema experto, el usuario introduce la información del problema actual en la base de hechos. El sistema empareja esta información con el conocimiento disponible en la base de conocimientos para deducir nuevos hechos.

Motor de inferencia. El sistema experto modela el proceso de razonamiento humano con un módulo conocido como el motor de inferencia. Dicho motor de inferencia trabaja con la información contenida en la base de conocimientos y la base de hechos para deducir nuevos hechos. Contrasta los hechos particulares de la base de hechos con el conocimiento contenido en la base de conocimientos para obtener conclusiones acerca del problema.

Subsistema de explicación. Una característica de los sistemas expertos es su habilidad para explicar su razonamiento. Usando el módulo del subsistema de explicación, un sistema experto puede proporcionar una explicación al usuario de por qué está haciendo una pregunta y cómo ha llegado a una conclusión. Este módulo proporciona beneficios tanto al diseñador del sistema como al usuario. El diseñador puede usarlo para detectar errores y el usuario se beneficia de la transparencia del sistema.

Interfaz de usuario. La interacción entre un sistema experto y un usuario se realiza en lenguaje natural. También es altamente interactiva y sigue el patrón de la conversación entre seres humanos. Para conducir este proceso de manera aceptable para el usuario es especialmente importante el diseñodel interfaz de usuario. Un requerimiento básico del interfaz es la habilidad de hacer preguntas. Para obtener información fiable del usuario hay que poner especial cuidado en el diseño de las cuestiones. Esto puede requerir diseñar el interfaz usando menús o gráficos. 



viernes, 9 de julio de 2010

Sistemas Operativos: Protección (Hacking)



La Ética hacker es una nueva ética surgida, y aplicada, de las comunidades virtuales o cibercomunidades, aunque no exclusivamente. La expresión se suele atribuir al periodistaSteven Levy en su ensayo seminal Hackers: Heroes of the Computer Revolution, publicado en 1984, donde describe y enuncia con detalle los principios morales que surgieron a finales de los años cincuenta en el Laboratorio de Inteligencia Artificial del MIT y, en general, en la cultura de los aficionados a la informática de los años sesenta y setenta. Aquellos principios --que se resumen en el acceso libre a la información y en que la informática puede mejorar la calidad de vida de las personas-- han constituido la base de la mayor parte de definiciones que se han elaborado posteriormente. Uno de sus mentores actuales ha sido el finlandés Pekka Himanen.

Los términos hacker y hack tienen connotaciones positivas e, irónicamente, también negativas. Los programadores informáticos suelen usar las hacking y hacker para expresar admiración por el trabajo de un desarrollador de software calificado, pero también se puede utilizar en un sentido negativo para describir una solución rápida pero poco elegante a un problema. Algunos desaprueban el uso del hacking como un sinónimo de cracker, en marcado contraste con el resto del mundo, en el que la palabra hacker se utiliza normalmente para describir a alguien que "hackea" un sistema con el fin de eludir o desactivar las medidas de seguridad.
Controversia y ambigüedad

En un principio se utilizaba "hack" como verbo para expresar "perder el tiempo" (e.j. "Puedo hackear con el ordenador"), el significado del término ha cambiado a lo largo de décadas desde que empezó a utilizarse en un contexto informático. Como su uso se ha extendido más ampliamente, el significado primario de la palabra, por parte de los nuevos usuarios, ha pasado a uno que entra en conflicto con el énfasis original.


Himanen, en su obra La ética del hacker y el espíritu de la era de la información (que contiene un prólogo de Linus Torvalds y un epílogo de Manuel Castells), comienza por rescatar una de las acepciones originales del término 'hacker'. Según Himanen, un hacker no es un delincuente, vándalo o pirata informático con altos conocimientos técnicos (a los que prefiere llamar crackers), sino que hacker es todo aquel que trabaja con gran pasión y entusiasmo por lo que hace. De ahí que el término 'hacker' pueda y deba extrapolarse a otros ámbitos como ser, por ejemplo, el científico. Así Himanen escribe,

En el centro de nuestra era tecnológica se hallan unas personas que se autodenominan hackers. Se definen a sí mismos como personas que se dedican a programar de manera apasionada y creen que es un deber para ellos compartir la información y elaborar software gratuito. No hay que confundirlos con los crackers, los usuarios destructivos cuyo objetivo es el de crear virus e introducirse en otros sistemas: un hacker es un experto o un entusiasta de cualquier tipo que puede dedicarse o no a la informática. En este sentido, la ética hacker es una nueva moral que desafía la ética protestante del trabajo, tal como la expuso hace casi un siglo Max Weber en su obra clásica La ética protestante y el espíritu del capitalismo, y que está fundada en la laboriosidad diligente, la aceptación de la rutina, el valor del dinero y la preocupación por la cuenta de resultados.

Frente a la moral presentada por Weber, la ética del trabajo para el hacker se funda en el valor de la creatividad, y consiste en combinar la pasión con la libertad. El dinero deja de ser un valor en sí mismo y el beneficio se cifra en metas como el valor social y el libre acceso, la transparencia y la franqueza.

Sistemas Operativos: Protección (Virus)

Los virus informáticos son pequeños programas de software diseñados para propagarse de un equipo a otro y para interferir en el funcionamiento del equipo.

Un virus puede dañar o eliminar datos del equipo, usar el programa de correo electrónico para propagarse a otros equipos o incluso borrar todo el contenido del disco duro.

Los virus se propagan más fácilmente mediante datos adjuntos incluidos en mensajes de correo electrónico o de mensajería instantánea. Por este motivo es fundamental no abrir nunca los datos adjuntos de correo electrónico a menos que sepa de quién proceden y los esté esperando.

Los virus se pueden disfrazar como datos adjuntos de imágenes divertidas, tarjetas de felicitación o archivos de audio y video.

Los virus también se propagan como descargas en Internet. Se pueden ocultar en software ilícito u otros archivos o programas que puede descargar.

Para prevenirse contra los virus, es fundamental que mantenga el equipo actualizado con las actualizaciones y herramientas antivirus más recientes, que esté informado acerca de las últimas amenazas y que siga unas reglas básicas cuando explore la Web, descargue archivos o abra archivos adjuntos.

Si un virus infecta su equipo, el tipo al que pertenece y el método usado para adquirir acceso al equipo no son cuestiones tan importantes como su rápida eliminación y la interrupción de su propagación.


Adware

Un programa de clase adware es cualquier programa que automáticamente se ejecuta, muestra o baja publicidad web al computador después de instalado el programa o mientras se está utilizando la aplicación. 'Ad' en la palabra 'adware' se refiere a 'advertisement' (anuncios) en inglés.

Algunos programas adware son también shareware, y en estos los usuarios tiene la opción de pagar por una versión registrada o con licencia, que normalmente elimina los anuncios.

Algunos programas adware han sido criticados porque ocasionalmente incluyen código que realiza un seguimiento de información personal del usuario y la pasa a terceras entidades, sin la autorización o el conocimiento del usuario. Esta práctica se conoce como spyware, y ha provocado críticas de los expertos de seguridad y los defensores de la privacidad, incluyendo el Electronic Privacy Information Center. Otros programas adware no realizan este seguimiento de información personal del usuario.

Existen programas destinados a ayudar al usuario en la búsqueda y modificación de programas adware, para bloquear la presentación de los anuncios o eliminar las partes de spyware. Para evitar una reacción negativa, con toda la industria publicitaria en general, los creadores de adware deben equilibrar sus intentos de generar ingresos con el deseo del usuario de no ser molestado.

Efectos del adware
Los anuncios emergentes aparecen durante la navegación web en el navegador como una ventana emergente o también durante el uso de programa el ordenador. Esta publicidad es molesta en algunos casos, pero lo que mas molesta es que deteriora el rendimiento del sistema. El adware también puede recopilar información de usuario, lo que provoca preocupación por la privacidad


Malware

El malware suele ser representado con símbolos de peligro. Malware (del inglés malicious software), también llamado badware, software malicioso o software malintencionado es un tipo de software que tiene como objetivo infiltrarse o dañar una computadora sin el consentimiento de su propietario. El término malware es muy utilizado por profesionales de lainformática para referirse a una variedad de software hostil, intrusivo o molesto. 1 El término virus informático es utilizado en muchas ocasiones para referirse a todos los tipos de malware, incluyendo los verdaderos virus.

El software es considerado malware en base a las intenciones del autor a la hora de crearlo. El término malware incluye virus, gusanos, troyanos, la mayoría de los rootkits, spyware, adware intrusivo, crimeware y otros software maliciosos e indeseables.2

Malware no es lo mismo que software defectuoso, este último contiene bugs peligrosos pero no de forma intencionada.

Resultados preliminares de Symantec publicados en 2008 sugieren que "La tasa de liberación de código malicioso y otros programas no deseados podría superar a la de aplicaciones de software legítimo".3 Según F-Secure, "Se produjo tanto malware en 2007 como en los 20 años anteriores juntos".4 El modo más común que tienen los criminales para infectar a los usuarios con malware es a través de Internet, sobre todo vía e_mail y Web


Spyware

Un programa espía, traducción del inglés spyware, es un programa, dentro de la categoría malware, que se instala furtivamente en un ordenador para recopilar información sobre las actividades realizadas en éste. La función más común que tienen estos programas es la de recopilar información sobre el usuario y distribuirlo a empresas publicitarias u otras organizaciones interesadas, pero también se han empleado en organismos oficiales para recopilar información contra sospechosos de delitos, como en el caso de la piratería de software. Además pueden servir para enviar a los usuarios a sitios de internet que tienen la imagen corporativa de otros, con el objetivo de obtener información importante. Dado que el spyware usa normalmente la conexión de una computadora a Internet para transmitir información, consume ancho de banda, con lo cual, puede verse afectada la velocidad de transferencia de datos entre dicha computadora y otra(s) conectada(s) a la red

Entre la información usualmente recabada por este software se encuentran: los mensajes, contactos y la clave del correo electrónico; datos sobre la conexión a Internet, como ladirección IP, el DNS, el teléfono y el país; direcciones web visitadas, tiempo durante el cual el usuario se mantiene en dichas web y número de veces que el usuario visita cada web;software que se encuentra instalado; descargas realizadas; y cualquier tipo de información intercambiada, como por ejemplo en formularios, con sitios web, incluyendo números de tarjeta de crédito y cuentas de banco, contraseñas, etc.

Los programas espía pueden ser instalados en un ordenador mediante un virus, un troyano que se distribuye por correo electrónico, como el programa Magic Lantern desarrollado por el FBI, o bien puede estar oculto en la instalación de un programa aparentemente inocuo. Algunos programas descargados de sitios no confiables pueden tener instaladores con spyware y otro tipo de malware.

Los programas de recolección de datos instalados con el conocimiento del usuario no son realmente programas espías si el usuario comprende plenamente qué datos están siendo recopilados y a quién se distribuyen.

Los cookies son archivos en los que almacena información sobre un usuario de internet en su propio ordenador, y se suelen emplear para asignar a los visitantes de un sitio de Internet un número de identificación individual para su reconocimiento subsiguiente. La existencia de los cookies y su uso generalmente no están ocultos al usuario, quien puede desactivar el acceso a la información de los cookies; sin embargo, dado que un sitio Web puede emplear un identificador cookie para construir un perfil de un usuario y que dicho usuario no conoce la información que se añade a este perfil, se puede considerar al software que transmite información de las cookies, sin que el usuario consienta la respectiva transferencia, una forma de spyware. Por ejemplo, una página con motor de búsqueda puede asignar un número de identificación individual al usuario la primera vez que visita la página, y puede almacenar todos sus términos de búsqueda en una base de datos con su número de identificación como clave en todas sus próximas visitas (hasta que el cookie expira o se borra). Estos datos pueden ser empleados para seleccionar los anuncios publicitarios que se mostrarán al usuario, o pueden ser transmitidos (legal o ilegalmente) a otros sitios u organizaciones. Algunos ejemplos de programas espía conocidos son Gator, o Bonzi Buddy



jueves, 8 de julio de 2010

Sistemas Operativos: Seguridad y Protección

El Sistema operativo es normalmente solo una porción del total de software que corre en un sistema particular. Pero el Sistema Operativo controla el acceso a los recursos del sistema. La seguridad de los Sistemas Operativos es solo una pequeña parte del problema total de la seguridad en los sistemas de computación, pero éste viene incrementándose en gran medida. Hay muchas razones para que la seguridad de los Sistemas Operativos reciba especial atención hoy en día.

La evolución de los sistemas de computación, ha sido en las últimas décadas de una magnitud asombrosa. Las computadoras se han tornado más accesibles, también se tiene un aumento en los riesgos vinculados con la seguridad. Pero hay una cosa que se ha mantenido constante a través de todo este tiempo, y es que los sistemas digitales se han vuelto cada vez más complejos. Los microprocesadores se han vuelto más complejos. Los sistemas operativos se han vuelto más complejos. Los ordenadores se han vuelto más complejos. Las redes se han vuelto más complejas. Las redes individuales se han combinado y han aumentado todavía más su complejidad. Ejemplo claro de ello es Internet, la gran red de computadoras, a medida que aumenta su complejidad va tornándose más insegura.

Si tenemos en cuenta que todo software no está libre fallos, entonces un software complejo es probable que falle y un porcentaje de estos fallos afecte a la seguridad.

También es importante mencionar que los sistemas complejos son necesariamente modulares, ya que de otra manera no se podría manejar su complejidad. Pero el aumento de la modularidad significa que la seguridad disminuye porque falla a menudo donde dos módulos se comunican.

La única manera razonable de probar la seguridad de un sistema es realizar evaluaciones de seguridad en él. Sin embargo, cuanto más complejo es el sistema, más dura se vuelve la evaluación de su seguridad. Un sistema más complejo tendrá más errores relacionados con la seguridad en su análisis, diseño y programación. Y desgraciadamente, el número de errores y la dificultad de evaluación no crece de acuerdo con la complejidad, crece mucho más rápido.

Cuanto más complejo es un sistema, más difícil es de entender. Hay toda clase de puntos de vulnerabilidad -interface entre usuario y máquina, interacciones del sistema- esto crece exponencialmente cuando no se puede mantener el sistema completo en la cabeza.

Cuanto más complejo es un sistema, más duro es hacer este tipo de análisis. Todo es más complicado: su análisis, su diseño, su programación y su uso.

Los sistemas operativos no escapan a esta realidad y se tornan cada vez más complejos. Un ejemplo es Microsoft Windows, que cuando se publicó en 1992 (Versión 3.1) tenía alrededor de 3 millones de líneas de código; Windows 95 alcanzó a los 15 millones y Windows 98 tiene 18 millones; Windows NT lanzado en 1992 tenía 4 millones de líneas de código; Windows NT 4.0 tiene 16.5 millones; Windows 2000 tiene entre 35 y 80 millones de líneas.

Como punto de comparación tenemos a Solaris que mantuvo su código fuente en aproximadamente 7 a 8 millones de líneas y Linux (Incluso con la suma del entorno gráfico X Windows y de Apache) que todavía se mantiene por debajo de los 5 millones de líneas.

En el pasado la seguridad física fue suficiente para resguardar un computadora contra ataques de intrusos, actualmente controles sofisticados deben instrumentarse para prevenir intentos de login desde terminales remotas y sobre otras redes de comunicación.

Por último, cabe destacar que el nivel de seguridad apropiado para un sistema en particular depende del valor de los recursos que se aseguran. Más información en www.kriptopolis.com 


Seguridad Interna y Externa 

La seguridad interna está relacionada a los controles incorporados al hardware y al Sistema Operativo para asegurar los recursos del sistema.
La seguridad externa está compuesta por la seguridad física y la seguridad operacional. La seguridad física incluye la protección contra desastres (como inundaciones, incendios, etc.) y protección contra intrusos. 


Seguridad Operacional 

La seguridad operacional consiste en varias políticas y procedimientos implementados por el administrador del sistema de computación.
Mediante la autorización se determina qué acceso se permite y a qué entidad.
Como punto crítico se destaca la selección del personal y la asignación del mismo. Generalmente se dividen responsabilidades, de esta manera un operario no debe conocer la totalidad del sistema para cumplir con esas responsabilidades.
Se deben instrumentar diversos controles, y el personal debe saber de la existencia de dichos controles, pero desconocer cuáles son, para reducir la probabilidad de que intrusos puedan evadirlos. 


Protección. Metas de la protección 

Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo. 

Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan ejecutarse solo dentro de sus propios espacios de dirección. El timer asegura que los procesos no obtengan el control de la CPU en forma indefinida.

La protección se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computación. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos.

Hay importantes razones para proveer protección. La más obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las políticas fijadas para el uso de esos recursos.

Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la protección proveen maneras de distinguir entre uso autorizado y desautorizado. 

Mecanismos y Políticas 

El rol de la protección es proveer un mecanismo para el fortalecimiento de las políticas que gobiernan el uso de recursos. Tales políticas se pueden establecer de varias maneras, algunas en el diseño del sistema y otras son formuladas por el administrador del sistema. Otras pueden ser definidas por los usuarios individuales para proteger sus propios archivos y programas. 

Las políticas son diversas, dependen de la aplicación y pueden estar sujetas a cambios a lo largo del tiempo. 

Un principio importante es la separación de políticas de los mecanismos. ‘Los mecanismos determinan cómo algo se hará. Las políticas deciden que se hará’. La separación es importante para la flexibilidad del sistema. 

Vigilancia 

La vigilancia se compone de la verificación y la auditoria del sistema, y la identificación de usuarios. En la vigilancia se utilizan sistemas muy sofisticados, a tal punto, que a veces pueden surgir problemas en la autentificación generando un rechazo al usuario legítimo. 


Monitoreo de amenazas 

Una manera de reducir los riesgos de seguridad es tener rutinas de control en el sistema operativo para permitir o no el acceso a un usuario. Estas rutinas interactúan con los programas de usuario y con los archivos del sistema. De esta manera, cuando un usuario desea realizar una operación con un archivo, las rutinas determinan si se niega o no el acceso y en caso de que el mismo fuera permitido devuelven los resultados del proceso. 

Además las rutinas de control permiten detectar los intentos de penetración al sistema y advertir en consecuencia. 


Amplificación 

Como ya dijimos, los programas de vigilancia interactúan con los programas de usuario y los archivos del sistema. A veces estos programas (los primeros) requieren de más derechos de acceso de los que posee el usuario para realizar una operación determinada. Esto se conoce como amplificación. 


Protección por contraseña 

Existen tres clases principalmente de elementos que permiten establecer la identidad de un usuario:
· Algo sobre las personas. Esto incluye huellas digitales, reconocimiento de voz, fotografía y firmas.
· Algo poseído por la persona. Esto incluye distintivos, tarjetas de identificación y llaves.
· Algo conocido por el usuario. Esto incluye contraseñas, nombre de la suegra, combinación de cerraduras.El esquema de autentificación más común es la simple protección por contraseña. El usuario elige una palabra que se le viene a la memoria, y la tipea de inmediato para ganar admisión al sistema de computación. 

Muchos sistemas no muestran la contraseña tal como ha sido ingresada (mostrar asteriscos en lugar de letras). 

La protección por contraseña es un esquema débil. En el sentido de que los usuarios tienden a elegir contraseñas fáciles de recordar. Entonces alguien que conoce al usuario podría intentar ingresar al sistema usando nombres de gente que la persona conoce. Esto puede resultar en una violación de la seguridad por los intentos repetitivos de ingreso.

Algunos sistemas usan contraseñas cortas lo que facilita la conformación rápida de la lista de todas las posibles combinaciones. Los sistemas actuales utilizan contraseñas largas para frenar tales intentos de penetración. 

Auditoría 

La auditoria normalmente es realizada en sistemas manuales “después del hecho”. Los auditores son llamados periódicamente para examinar las transacciones recientes de una organización y para determinar si ha ocurrido actividad fraudulenta. 

El registro de auditoria es un registro permanente de acontecimientos de importancia que ocurren en el sistema de computación. Se produce automáticamente cada vez que ocurren los eventos y es almacenado en un área protegida del sistema. 

Las auditorias periódicas prestan atención regularmente a problemas de seguridad; las auditorias al azar ayudan a detectar intrusos. 


Controles de acceso 

Los derechos de acceso definen qué acceso tienen los sujetos sobre los objetos. Los objetos son entidades que contienen información, pueden ser físicos o abstractos. Los sujetos acceden a los objetos, y pueden ser usuarios, procesos, programas u otras entidades. 

Los derechos de accesos más comunes son: acceso de lectura, acceso de escritura y acceso de ejecución. Estos derechos pueden implementarse usando una matriz de control de acceso. 

Matriz de acceso 

El modelo de protección del sistema se puede ver en forma abstracta como una matriz, la matriz de acceso.

Políticas 

El esquema de matriz de acceso provee el mecanismo para especificar una variedad de políticas. Se debe asegurar que un proceso que se ejecuta en el dominio Di puede acceder sólo a aquellos objetos especificados en la fila i.

Las decisiones de política concernientes a la protección pueden implementarse por la matriz de acceso. Las decisiones políticas definen qué derechos deben estar incluidos en las entradas (i,j). A veces decide el dominio de cada proceso ejecutable. Esta última política es generalmente decidida por el sistema operativo.

Los usuarios normalmente deciden el contenido de las entradas de la matriz de acceso. Cuando un usuario crea un nuevo objeto Oj, la columna Oj es agregada a la matriz de acceso con las entradas de inicialización apropiadas. 


Criptografía 

La criptografía es usada para la transformación de datos para hacerlos incomprensibles para todos, excepto para el usuario destinatario. El problema de la privacidad tiene relación con la prevención de la no autorización para la extracción de información desde un canal de comunicación. Los problemas de autentificación están relacionados con la prevención contra intrusos que intentan modificar una transmisión o insertar falsos datos dentro de una transmisión. Los problemas de disputa están relacionados con la providencia de reserva de un mensaje con prueba legal de la identidad enviada. 

Sistema de privacidad criptográfico 

En un sistema de privacidad criptográfico, el remitente desea transmitir cierto mensaje no cifrado a un receptor legítimo, la transmisión ocurre sobre un canal inseguro asume ser monitoreado o grabado en cinta por un intruso.

El remitente pasa el texto a una unidad de encriptación que transforma el texto a un texto cifrado o criptograma; el mismo no es entendible por el intruso. El mensaje es transmitido entonces, sobre un canal seguro. Al finalizar la recepción el texto cifrado pasa a una unidad de descripción que regenera el texto. 

Criptoanálisis 

Criptoanálisis es el proceso de intentar regenerar el mensaje desde el texto cifrado pero sin conocimiento de las claves de encriptación. Esta es la tarea normal de los intrusos. Si el intruso o criptoanalista no puede determinar un mensaje desde el texto cifrado (sin la clave), entonces el sistema de criptografiado es seguro. 

Metodos y técnicas de encriptación 

Cesar 

Está técnica consistía simplemente en sustituir una letra por la situada tres lugares más allá en el alfabeto esto es la A se transformaba en D, la B en E y así sucesivamente hasta que la Z se convertía en C. 

Gronsfeld 

Este método utiliza más de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según se pasa de una letra del texto en claro a otra.
Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos. 

RSA 

En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aquí es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave pública la clave de cifrado, pues un tiempo enormemente de ordenador es necesario para encontrar una transformación de descifrado a partir de la de cifrado. 

DES 

DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseño, su tamaño de clave de 56 bits es demasiado pequeño para los patrones de hoy.

DES (Data Encryption Standard) es un mecanismo de encriptación de datos de uso generalizado. Hay muchas implementaciones de hardware y software de DES. Este transforma la información de texto llano en datos encriptados llamados texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. Si el receptor conoce la clave, podrá utilizarla para convertir el texto cifrado en los datos originales. Es un mecanismo de encriptado simétrico. 

Chaffing & Winnowing 

Esta técnica propuesta por Donald Rivest. Es más un intento de esquivar las restricciones a la criptografía en EE.UU. (y otros países) que una propuesta razonable debido al tamaño de los mensajes resultantes.

El término inglés “winnowing” se tomará como aventar es decir separar el grano de la paja y el término “chaffing” por el castellano empajar (cubrir o rellenar con paja). La idea básica consiste en mezclar la información real (grano) con otra de relleno (paja) de modo que sea imposible separarlas excepto para el destinatario. 

SKIPJACK 

Este algoritmo fue descalificado por el gobierno de Estados Unidos. Algunos detalles sobre el algoritmo en sí y sus aplicaciones en la práctica a los chips Clipper y Capstone.
Skipjack fue desarrollado por la NSA inicialmente para los chips Clipper y Capstone. Su diseño comenzó en 1985 y se completó su evaluación en 1990. 

BÍFIDO 

El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos, y donde se trabaja con estos símbolos más que con las letras mismas. 

WLBYKYAAOTB 

Este método altera la frecuencia de los caracteres a diferencia de lo que ocurre por ejemplo con los cifrados monoalfabéticos. Admite algunas variaciones como por ejemplo dividir la lista en 3,4,..., n partes. 

Cifrado exponencial 

Es un sistema basado en la exponenciación modular, debido Pohlig y Hellman (1978). Este método es resistente al criptoanálisis. 

Blowfish 

Este algoritmo realiza un cifrado simple en 16 ciclos, con un tamaño de bloque de 64 bytes para un total de 448 bits. Aunque hay una fase compleja de la inicialización. El cifrado de datos es muy eficiente en los microprocesadores grandes. 


Sistemas de clave pública 

Un sistema criptográfico de clave pública es tan seguro como su clave. La distribución de las claves debe ser manejada sobre canales altamente seguros. Esto suele consumir mucho tiempo. A veces, tales canales de seguridad no están disponibles.

Los sistemas de clave pública no tienen tal problema en la distribución de la clave. En el sistema criptográfico convencional el cifrado y descifrado están íntimamente relacionados. Estos sistemas usan una clave encriptada, E, y una clave descifrado, D, de manera que no es computacionalmente viable (dentro de un tiempo razonable) determinar E a partir de D.

De esta forma, E puede ser hecha pública sin comprometer la seguridad de D. Esto simplifica el problema de la distribución de la clave. Cada usuario genera una clave de cifrado y una de descifrado, la clave de cifrado está hecha pública y la clave cifrada se mantiene secreta. Así cualquiera puede enviar un mensaje encriptado a un usuario particular (porque la clave de cifrado es pública), pero solo aquellos usuarios pueden descifrar el mensaje (porque la clave de descifrado es privada). E es llamada una clave pública y D es llamada una clave privada. 

Firmas digitales 

Para que una firma digital sea aceptada como sustituta de una firma escrita debe ser:

· Fácil de autentificar (reconocer) por cualquiera.
· Producible únicamente por su autor. 

En los cripto-sistemas de clave pública el procedimiento es:

· El remitente usa la clave privada para crear un mensaje firmado.
· El receptor:
o Usa la clave pública del remitente para descifrar el mensaje
o Guarda el mensaje firmado para usarlo en caso de disputas 


Medidas básicas de seguridad 

En general se puede afirmar que si la llave privada solo es conocida y accesible por el sujeto A, sería prácticamente imposible, para otro sujeto B, falsificar una firma digital del sujeto A, o abrir un sobre digital dirigido al sujeto A, utilizando métodos matemáticos. El atacante de un sistema va a centrar su esfuerzo en encontrar debilidades en la implementación del software o hardware de seguridad. A continuación se mencionan los dos puntos de ataque más comunes:

· Generación de números aleatorios

La generación de las llaves utiliza métodos pseudoaleatorios por lo que es muy importante que un sujeto B no puede replicar el procedimiento que siguió un sujeto A cuando este generó sus llaves. 

· Ataque a la Llave Privada

La llave privada, que normalmente reside en un archivo debe mantenerse encriptada con un algoritmo simétrico, utilizando como llave una contraseña. La contraseña debe ser elegida por el usuario en forma tal que resulte impredecible para quien intente adivinarlo por asociación de ideas. La encriptación por contraseña es normalmente presa de ataques denominados de diccionario que buscan exhaustivamente entre un conjunto de palabras formadas por letras del abecedario. Otro ataque más sutil se concentra en intentar por prueba y error las posibles contraseñas que un sujeto utiliza en base a acciones de ideas, por ejemplo, su apodo, el nombre de su esposa, su apodo y fecha de nacimiento, etc.

La llave privada solo se debe de encontrar desencriptada cuando está en la memoria de la computadora y mientras el programa de seguridad esté funcionando. Si el sujeto se encuentra en un entorno de cómputo en donde sea posible que un atacante realice un vaciado a disco del estado de la memoria del programa de seguridad, entonces la llave privada está en peligro. Si se está en un entorno de cómputo en donde sea posible que un atacante intercepte el teclado entonces, su llave privada está en peligro. Si se está en un entorno de cómputo en donde sea posible sustituir el programa de seguridad por uno falso que capture su contraseña y su llave privada encriptada entonces, su llave privada está en peligro. 


Las formas más seguras de evitar el robo de llaves privadas es de firmar y abrir sobres en una computadora aislada física y virtualmente del mundo exterior. A dicha computadora deben de entrar mensajes a firmar y deben de salir mensajes firmados, nunca debe de salir ni exponer la llave privada. Este es el caso de por ejemplo, los Agentes Certificadores, Autoridades Certificadoras y en general aplicaciones altamente sensitivas.