SISTEMAS OPERATIVOS Enmascaramiento de Datos Uso de los Timers Estado del procesador
Enmascaramiento de Datos. Enmascaramiento de Datos o ofuscación de datos es el proceso de ocultar elementos de datos en un almacenamiento. Una de las mayores razones por la cual se utiliza el enmascaramiento de datos es para proteger un dato que es clasificado como identificador o sensible, sea de índole personal o comercial, pero a pesar de todo, debe permanecer utilizable. Incluso debe parecer real y aparentar consistente. Se trata de un proceso de transformación de los datos en el que es primordial el intentar mantener el realismo de los mismos, tratándose a su vez de un proceso que no permite posteriormente retroceder y recobrar los datos iniciales.
Se podría definir como el reemplazo de toda la información que se pueda considerar sensible en cualquier base de datos que uno pueda tener, de manera que la nueva información que se vaya a producir sea real para todos nuestros sistemas y que funcione pero que a la vez sea inútil para la persona que quiera hacer el proceso de reverso, de manera que no pueda regresar el dato a su estado original. El concepto básico de data masking como teóricamente se conoce se basa en “oscurecer los datos” de la base de datos. No obstante, el concepto ha ido evolucionando hasta considerarse como un reemplazo de la información con la misma calidad y con el mismo sentido, sin ocultar, encriptar, o restringir la información a personas no autorizadas, porque inclusive la encriptación o restricción de visibilidad son una parte de los algoritmos que puede tener el data masking, pero son sólo eso, una parte y no el enmascaramiento en sí.
Todo ello debe estar muy claro tanto para el equipo del proyecto, como para los clientes e interesados, ya que en caso contrario los criterios de aceptación se pueden vincular a cosas que en realidad no realiza el data masking. Entender bien el concepto de data masking permite ofrecer una solución entendible para el usuario y que éste pueda manejar la misma expectativa respecto a lo que uno va a ofrecer.
Tipos de enmascaramiento de datos Existen dos maneras de aplicar las técnicas de enmascaramiento de datos. Mientras que el enmascaramiento persistente de datos resguarda los datos, enmascarándolos, en entornos de desarrollo y pruebas, el enmascaramiento persistente dinámico ofrece enmascaramiento en tiempo real y basado en roles de datos sensibles en los entornos de producción (aquellos en los que residen los datos tal y como son). El enmascaramiento persistente garantiza la privacidad de los datos mediante la creación de copias enmascaradas para desarrollo, pruebas y formación, manteniendo unos procesos óptimos. Enmascaramiento de datos escalable para aplicaciones heterogéneas. El enmascaramiento dinámico de datos surgió como una tecnología de protección de datos flexible que aborda una serie de brechas en las soluciones existentes. Ofrece seguridad y supervisión de bases de datos en tiempo real basadas en políticas. Puede integrarse con software de autenticación y ofrece enmascaramiento y bloqueo de datos en tiempo real.
Algoritmos de enmascaramiento de datos Algunos datos de PII siguen un formato y un patrón estricto. Estos campos incluyen elementos como números de tarjetas de crédito, números del Seguro Social de los EE. UU., números del Seguro Social canadiense o del Censo de personas físicas de Brasil. Como los valores respetan un conjunto de reglas que determinan su validez, pueden ser generados mediante un algoritmo. Ambas soluciones proporcionan funciones para ocultar números de tarjetas de crédito de todos los emisores principales e ID nacionales de una variedad de países.
Existe otro conjunto de campos de PII que también respeta un formato estricto pero donde los valores permitidos son más flexibles. Un ejemplo son las direcciones de email, donde cada dirección tiene un nombre de usuario, un nombre de dominio y un símbolo '@'. Ambas solucione brindan funciones para generar direcciones de email nuevas y válidas. Además, en ambas soluciones hay disponible un algoritmo para detectar el formato de los datos o reemplazar el valor con un valor nuevo del mismo formato. Por ejemplo, detectaría la posición del espacio, los caracteres numéricos y los alfanuméricos en un código postal canadiense L6G 1C7, y reemplazaría los valores con valores generados L3R 9Z7, todo sin que especifique el formato con antelación. Enmascaramiento de funciones de búsqueda Existen algunos campos de PII que no pueden generarse fácilmente mediante un algoritmo. Se trata de cuestiones como nombres o apellidos, o direcciones postales. En estos casos, ambas soluciones tienen funciones de búsqueda para buscar valores en tablas completadas previamente que contienen cosas como nombres y direcciones. El índice del valor buscado para reemplazar al original es elegido de manera aleatoria o al generar un valor de ingreso. La generación de un valor de ingreso se realiza para mantener la coherencia cuando se realiza el enmascaramiento. Algunas de estas funciones de enmascaramiento de datos se muestran en la Figura 1.
Figura 1. Un muestreo de los algoritmos de enmascaramiento de datos de Optim para la solución de enmascaramiento de datos
Coherencia Ambas soluciones tienen algoritmos de enmascaramiento que están diseñados con fines de coherencia. No importa cuándo deba ejecutarse el proceso de enmascaramiento, se generarán los mismos valores si los valores de ingreso son iguales. Esto resulta muy útil al volver a completar o ajustar sus conjuntos de datos de prueba sin interrumpir pruebas de regresión existentes que pueden confiar en la presencia de determinados valores en los entornos de prueba. Integridad referencial Algunos valores que están ocultos se ubican en tablas múltiples, y las aplicaciones que se prueban confían en que los valores entre esas tablas son los mismos. Ambas soluciones están diseñadas para permitirle ocultar valores y luego propagar los resultados a las otras tablas.
Personalización Ambas soluciones permiten a los clientes desarrollar funciones de transformación personalizada para extender las que ya vienen con los productos. La opción de enmascaramiento de datos de InfoSphere Optim para la Gestión de datos de prueba le permite desarrollar nuevas funciones de privacidad de datos utilizando las salidas del mapa de la columna en C/C++, o al crear guiones en el lenguaje Lua. DataStage puede extenderse mediante C/C++ o BASIC en las Etapas de transformador, o al crear operadores personalizados en C/C++.
Movimiento de Datos Las dos soluciones extraen datos, los ocultan y luego los colocan en un entorno de destino. Incluso de esta manera, la forma en que mueven los datos es muy diferente. Las diferencias en el movimiento de los datos son el punto focal de la siguiente sección.
Diferencias de la solución Este artículo ha discutido cómo, en términos de funcionalidad de enmascaramiento de datos, ambas soluciones ofrecen un conjunto de funciones similares. Ambas ocultan los datos para que ya no sean sensibles pero sigan siendo realistas. Ambas le permiten hacer esto mientras mantienen la coherencia entre los procesos de enmascaramiento de datos y la integridad referencial entre las tablas. Ambas mueven los datos desde la producción, los ocultan y los colocan en un destino objetivo.
Figura 2. El proceso de enmascaramiento para el enmascaramiento Optim del producto TDM
Los productos InfoSphere Optim funcionan a su mejor nivel cuando se incorporan a una iniciativa de Gestión de datos de prueba más grande en lugar de realizar el enmascaramiento de datos solos. Las soluciones operan en lo que es conocido entre los practicantes de InfoSphere Optim como el objeto comercial completo, que es una lista de tablas y relaciones entre esas tablas que definen un proceso comercial de extremo a extremo. Ambas soluciones de Optim fueron diseñadas específicamente para extraer suficientes datos para sus entornos de prueba, y no más. Hacen esto al atravesar las relaciones
en
los
datos
y
recoger
elementos
de
datos
relacionados.
La
sección Recursos posee un artículo que explica el objeto comercial completo de manera más exhaustiva. Un desarrollo reciente para los productos InfoSphere Optim es que la herramienta de tiempo de diseño fue completamente actualizada y remodelada para convertirse en un componente basado en Eclipse denominado Diseñador de InfoSphere Optim, que se muestra en la Figura 3. Al mismo tiempo, se desarrolló un marco de gestión basado en la Web. Tener una interfaz basada en web separada de la interfaz de diseño le permite brindar control con mayor facilidad a los usuarios de los datos de prueba sobre cuándo y cómo se actualizan sus datos de prueba.
Figura 3. Aplicación de políticas de enmascaramiento de datos mediante el diseñador de Optim
En resumen, en términos de selección de datos para el movimiento de datos, los productos InfoSphere Optim son similares a las herramientas quirúrgicas que disecan casos de prueba de la producción. Esto no quiere decir que las soluciones Optim no puedan manejar grandes cantidades de datos (pueden hacerlo y lo han hecho en el pasado), pero tienen extensas capacidades de subconfiguración que no estaban incluidas con las mismas habilidades de movimiento de datos masivos de las herramientas de Extracción, Transformación y Carga (ETL).
Uso de los controles Timer
Los Timers son controles que se usan en un Form, cuya utilidad es ejecutar una accion a intervalos de tiempo regulares. Su operatoria tiene una diferencia fundamental respecto a los demas controles que conocemos. En un TextBox, en un ComboBox, en un Button o tal, existen los eventos. Los eventos consisten en un determinado hecho que el usuario del sistema puede realizar, ante lo cual nuestro control puede tener programada una acción. El ejemplo mas usual es el evento Click en un Button. Cuando el usuario desplaza la flecha del mouse hasta el area del Button, y presiona el botón principal del mouse. En ese momento, nuestra aplicacion ejecuta lo que hayamos programado en ese evento. El control Timer, en cambio, tiene un unico evento posible antes el cual reaccionar, y este evento NO depende de nada que el usuario pueda hacer, sino que depende de que haya transcurrido un lapso de tiempo desde la ultima vez que se inicio el conteo. Naturalmente, tiene que tener tambien un atributo en el cual especifiquemos la duración de ese lapso de tiempo, un método para iniciar el conteo del temporizador, y otro para deternerlo. El atributo se llama Interval, y su valor esta indicado en milisegundos. El metodo se llama Start, no recibe parametros, y da inicio al conteo del temporizador. El metodo Stop lo detiene. Por último, el evento Tick es el que se dispara cada vez que el conteo del temporizador llega a cero. Todo lo que programemos en ese evento se ejecutará en ese instante, al tiempo que el temporizador inicia nuevamente el conteo. Si no queremos que se inicie un nuevo conteo, invocamos al metodo Stop. Este control no tiene relación con nada de lo que el usuario pueda hacer, ya que su único evento depende del tiempo, y no del usuario. Por tal motivo, cuando lo arrastramos sobre el formulario, veremos que no se incorpora al mismo en la forma habitual, sino que se aloja en una sección especial.
El procesador (CPU, por Central Processing Unit o Unidad Central de Procesamiento), es por decirlo de alguna manera, el cerebro del ordenador. Permite el procesamiento de información
numérica, es decir, información ingresada en formato binario, así como la ejecución de instrucciones almacenadas en la memoria. El primer microprocesador (Intel 4004) se inventó en 1971. Era un dispositivo de cálculo de 4 bits, con una velocidad de 108 kHz. Desde entonces, la potencia de los microprocesadores ha aumentado de manera exponencial. ¿Qué son exactamente esas pequeñas piezas de silicona que hacen funcionar un ordenador? Funcionamiento El procesador (denominado CPU,
por Central
Processing
Unit)
es
un
circuito
electrónico que funciona a la velocidad de un reloj interno, gracias a un cristal de cuarzo que, sometido a una corriente eléctrica, envía pulsos, denominados "picos". La velocidad de reloj (también denominada ciclo), corresponde al número de pulsos por segundo, expresados en Hertz (Hz). De este modo, un ordenador de 200 MHz posee un reloj que envía 200.000.000 pulsos por segundo. Por lo general, la frecuencia de reloj es un múltiplo de la frecuencia del sistema (FSB, Front-Side Buso Bus de la Parte Frontal), es decir, un múltiplo de la frecuencia de la placa madre. Con cada pico de reloj, el procesador ejecuta una acción que corresponde a su vez a una instrucción o bien a una parte de ella. La medida CPI (Cycles Per Instruction o Ciclos por Instrucción) representa el número promedio de ciclos de reloj necesarios para que el microprocesador
ejecute
una
instrucción.
En
consecuencia,
la
potencia
del
microprocesador puede caracterizarse por el número de instrucciones por segundo que es capaz de procesar. Los MIPS (millions of instructions per second o millones de instrucciones por segundo) son las unidades que se utilizan, y corresponden a la frecuencia del procesador dividida por el número de CPI.
Una instrucción es una operación elemental que el procesador puede cumplir.. Las instrucciones se almacenan en la memoria principal, esperando ser tratadas por el procesador. Las instrucciones poseen dos campos: •
el código de operación, que representa la acción que el procesador debe ejecutar;
•
el código operando, que define los parámetros de la acción. El código operando
depende a su vez de la operación. Puede tratarse tanto de información como de una dirección de memoria. Campo de Operación Código de Operación
El número de bits en una instrucción varía de acuerdo al tipo de información (entre 1 y 4 bytes de 8 bits). Las instrucciones pueden agruparse en distintas categorías. A continuación presentamos algunas de las más importantes: •
Acceso a Memoria: acceso a la memoria o transferencia de información entre
registros. •
Operaciones Aritméticas: operaciones tales como suma, resta, división o
multiplicación. •
Operaciones Lógicas: operaciones tales como Y, O, NO, NO EXCLUSIVO, etc.
•
Control: controles de secuencia, conexiones condicionales, etc.
Registros Cuando el procesador ejecuta instrucciones, la información almacena en forma temporal en pequeñas ubicaciones de memoria local de 8, 16, 32 o 64 bits, denominadas registros. Dependiendo del tipo de procesador, el número total de registros puede variar de 10 a varios cientos.
Los registros más importantes son: •
el registro acumulador (ACC), que almacena los resultados de las operaciones
aritméticas y lógicas; •
el registro de estado (PSW, Processor Estado: Word o Palabra de Estado del
Procesador), que contiene los indicadores de estado del sistema (lleva dígitos, desbordamientos, etc.);
el registro de instrucción (RI), que contiene la instrucción que está siendo
•
procesada actualmente; el contador ordinal (OC o PC por Program Counter, Contador de Programa),
•
que contiene la dirección de la siguiente instrucción a procesar; el registro del búfer, que almacena información en forma temporal desde la
•
memoria.
Memoria caché La memoria caché (también memoria buffer) es una memoria rápida que permite reducir los tiempos de espera de las distintas informaciones almacenada en la RAM (Random Access Memory o Memoria de Acceso Aleatorio). En efecto, la memoria principal del ordenador es más lenta que la del procesador. Existen, sin embargo, tipos de memoria que son mucho más rápidos, pero que tienen un costo más elevado. La solución consiste entonces, en incluir este tipo de memoria local próxima al procesador y en almacenar en forma temporal la información principal que se procesará en él. Los últimos modelos de ordenadores poseen muchos niveles distintos de memoria caché: La Memoria caché nivel 1 (denominada L1 Cache, por Level 1 Cache) se
•
encuentra integrada directamente al procesador. Se subdivide en dos partes: •
la primera parte es la caché de instrucción, que contiene instrucciones
de la RAM que fueron decodificadas durante su paso por las canalizaciones. •
la segunda parte es la caché de información, que contiene información
de la RAM, así como información utilizada recientemente durante el funcionamiento del procesador. El tiempo de espera para acceder a las memorias caché nivel 1 es muy breve; es similar al de los registros internos del procesador. •
La memoria caché nivel 2 (denominada L2 Cache, por Level 2 Cache) se
encuentra ubicada en la carcasa junto con el procesador (en el chip). La caché nivel 2 es un intermediario entre el procesador con su caché interna y la RAM. Se puede acceder más rápidamente que a la RAM, pero no tanto como a la caché nivel 1.
La memoria caché nivel 3 (denominada L3 Cache, por Level 3 Cache) se
•
encuentra ubicada en la placa madre. Todos estos niveles de caché reducen el tiempo de latencia de diversos tipos de memoria al procesar o transferir información. Mientras el procesador está en funcionamiento, el controlador de la caché nivel 1 puede interconectarse con el controlador de la caché nivel 2, con el fin de transferir información sin entorpecer el funcionamiento del procesador. También, la caché nivel 2 puede interconectarse con la RAM (caché nivel 3) para permitir la
transferencia
sin
entorpecer
el
funcionamiento
normal
del
procesador.
Señales de Control Las señales de control son señales electrónicas que orquestan las diversas unidades del procesador que participan en la ejecución de una instrucción. Dichas señales se envían utilizando
un
elemento
denominado secuenciador.
Por
ejemplo,
la
señal Leer/Escribir permite que la memoria se entere de que el procesador desea leer o escribir información.
Unidades Funcionales El procesador se compone de un grupo de unidades interrelacionadas (o unidades de control). Aunque la arquitectura del microprocesador varía considerablemente de un diseño a otro, los elementos principales del microprocesador son los siguientes: Una unidad de control que vincula la información entrante para luego
•
decodificarla y enviarla a la unidad de ejecución:La unidad de control se compone de los siguientes elementos: •
secuenciador (o unidad lógica y de supervisión ), que sincroniza la
ejecución de la instrucción con la velocidad de reloj. También envía señales de control: •
contador ordinal, que contiene la dirección de la instrucción que se
está ejecutando actualmente; •
registro de instrucción, que contiene la instrucción siguiente.
Una unidad de ejecución (o unidad de procesamiento), que cumple las tareas que
•
le asigna la unidad de instrucción. La unidad de ejecución se compone de los siguientes elementos: la unidad aritmética lógica (se escribe ALU); sirve para la ejecución
•
de cálculos aritméticos básicos y funciones lógicas (Y, O, O EXCLUSIVO, etc.); la unidad de punto flotante (se escribe FPU), que ejecuta cálculos
•
complejos parciales que la unidad aritmética lógica no puede realizar;
•
•
el registro de estado;
•
el registro acumulador. Una unidad de administración del bus (o unidad de entrada-salida) que
administra el flujo de información entrante y saliente, y que se encuentra interconectado con el sistema RAM El siguiente diagrama suministra una representación simplificada de los elementos que componen el procesador (la distribución física de los elementos es diferente a la disposición):
Transistor Con el fin de procesar la información, el microprocesador posee un grupo de instrucciones, denominado "conjunto de instrucciones", hecho posible gracias a los circuitos electrónicos. Más precisamente, el conjunto de instrucciones se realiza con la ayuda de semiconductores, pequeños "conmutadores de circuito" que utilizan el efecto transistor, descubierto en 1947 por John Barden, Walter H. Brattain y William Shockley, quienes recibieron por ello el premio Nobel en 1956. Un transistor (contracción de los términos transferencia y resistor) es un componente electrónico semi-conductor que posee tres electrodos capaces de modificar la corriente que pasa a través suyo, utilizando uno de estos electrodos (denominado electrodo de control). Éstos reciben el nombre de "componentes activos", en contraste a los "componentes pasivos", tales como la resistencia o los capacitores, que sólo cuentan con dos electrodos (a los que se denomina "bipolares"). El transistor MOS (metal, óxido, silicona) es el tipo de transistor más común utilizado en el diseño de circuitos integrados. Los transistores MOS poseen dos áreas con carga negativa, denominadas respectivamente fuente (con una carga casi nula), y drenaje (con una carga de 5V), separadas por una región con carga positiva, denominada sustrato. El sustrato posee un electrodo de control superpuesto, denominado puerta, que permite aplicar la carga al sustrato.
Cuando una tensión no se aplica en el electrodo de control, el sustrato con carga positiva actúa como barrera y evita el movimiento de electrones de la fuente al drenaje. Sin embargo, cuando se aplica la carga a la puerta, las cargas positivas del sustrato son repelidas y se realiza la apertura de un canal de comunicación con carga negativa entre la fuente y el drenaje.
El transistor actúa entonces como conmutador programable, gracias al electrodo de control. Cuando se aplica una carga al electrodo de control, éste actúa como interruptor cerrado, y cuando no hay carga, actúa como interruptor abierto.
Circuitos Integrados Una vez combinados, los transistores pueden constituir circuitos lógicos que, al combinarse, forman procesadores. El primer circuito integrado data de 1958 y fue construido por Texas Instruments. Los
transistores
MOS
se
componen,
entonces,
de
láminas
de
silicona
(denominadas obleas), obtenidas luego de múltiples procesos. Dichas láminas de silicona se cortan en elementos rectangulares para formar un "circuito". Los circuitos se colocan luego en carcasas con conectores de entrada-salida, y la suma de esas partes compone un "circuito integrado". La minuciosidad del grabado, expresado en micrones
(micrómetros, se escribe µm) define el número de transistores por unidad de superficie. Puede haber millones de transistores en un sólo procesador. La Ley de Moore, escrita en 1965 por Gordon E. Moore, cofundador de Intel, predijo que el rendimiento del procesador (por extensión del número de transistores integrados a la silicona) se duplicaría cada 12 meses. Esta ley se revisó en 1975, y se cambió el número de meses a 18. La Ley de Moore sigue vigente hasta nuestros días. Dado que la carcasa rectangular contiene clavijas de entrada-salida que parecen patas, en Francia se utiliza el término "pulga electrónica" para referirse a los circuitos integrados.
Familias Cada tipo de procesador posee su propio conjunto de instrucciones. Los procesadores se agrupan en las siguientes familias, de acuerdo con sus conjuntos de instrucciones exclusivos: •
80x86: la "x" representa la familia. Se hace mención a 386, 486, 586, 686, etc.
•
ARM
•
IA-64
•
MIPS
•
Motorola 6800
•
PowerPC
•
SPARC
•
...
Esto explica por qué un programa producido para un tipo específico de procesador sólo puede trabajar directamente en un sistema con otro tipo de procesador si se realiza lo que se denomina traducción de instrucciones, o emulación. El término "emulador" se utiliza para referirse al programa que realiza dicha traducción.
Conjunto de Instrucciones Un conjunto de instrucciones es la suma de las operaciones básicas que puede cumplir un procesador. El conjunto de instrucciones de un procesador es un factor determinante
en la arquitectura del éste, aunque una misma arquitectura puede llevar a diferentes implementaciones por diferentes fabricantes. El procesador funciona de forma eficiente gracias a un número limitado de instrucciones, conectadas de forma permanente a los circuitos electrónicos. La mayoría de las operaciones se pueden realizar utilizando funciones básicas. Algunas arquitecturas, no obstante, sí incluyen funciones avanzadas de procesamiento.
Realizado por: Keilyn Contreras, C.I 14.388680.