Canales Secretos
El uso de los canales secretos compartió recursos como trayectorias de la comunicación. Esto requiere compartir del espacio o compartir del tiempo.
Un canal secreto de la sincronización se define generalmente en términos de un reloj en tiempo real o de un contador de tiempo, pero las relaciones temporales no utilizan a veces ni unos ni otros. El ordenar de acontecimientos implica una relación tiempo-basada que implique ni un reloj en tiempo real ni un contador de tiempo. Una segunda característica distingue entre un canal secreto a el cual solamente el remitente y el receptor tengan acceso y un canal secreto que otras tengan acceso a también.
La diferencia entre estos dos tipos de canales miente en la necesidad de filtrar hacia fuera la información extraña. Cualquier información que el receptor obtenga de un canal silencioso viene del remitente. Sin embargo, en un canal ruidoso, la información del remitente se mezcla con la información sin setido, o el ruido, de otras entidades usando el recurso. Un canal secreto ruidoso requiere un protocolo reducir al mínimo esta interferencia. Las características dominantes de canales secretos son existencia y anchura de banda. La existencia nos dice que haya un canal a lo largo de el cual la información puede ser transmitida. La anchura de banda nos dice cómo la información puede ser enviada rápidamente. El análisis del canal secreto establece ambas características. Entonces los canales pueden ser eliminados o sus anchuras de banda pueden ser reducidas. Detección de canales secretosLos canales secretos requieren compartir. La manera de la cual se comparte el recurso controla que los temas pueden enviar y recibir la información usando ese recurso compartido. Los métodos de detección comienzan con esta observación. Porras y Kemmerer han ideado un acercamiento a representar las violaciones de la seguridad que sueltan del uso de los árboles de avería. Modelan el flujo de la información a través de recursos compartidos con un árbol. Las trayectorias del flujo se identifican en esta estructura. El analista se determina si cada flujo es legítimo o secreto. Un árbol secreto del flujo es una representación tree-structured de la secuencia de las operaciones que mueven la información a partir de un proceso a otro. Consiste en cinco tipos de nodos.
Construir el árbol es un proceso three-step. Para hacer los pasos concreto, presentamos un sistema simple de operaciones y después preguntamos si pueden crear un canal secreto. EJEMPLO: Considere un sistema de ficheros en el cual cada archivo tenga tres cualidades. Las cualidades boleanas se trabaron e isopen son verdades cuando el archivo es bloqueado o abierto, respectivamente, y es falso de otra manera. La tercera cualidad, inuse, es un sistema que contiene la identificación del proceso de cada proceso que tenga el archivo abierto. El read_access(p de la función, f) es verdad si el proceso p ha leído las derechas sobre el archivo f, y el empty(s) es verdad si el sistema s no tiene ningún miembro. Las vueltas al azar una de la función de sus discusiones elegidas al azar. Se definen las operaciones siguientes. (* trabe el archivo si no es bloqueado y no abierto *) (* indique de otra manera que es trabado volviendo falso *) procedimiento Lockfile(f: archivo): boleano; comience si no f.locked y empty(f.inuse) entonces f.locked: = verdad; extremo; (* abra el archivo *) procedimiento Unlockfile(f: archivo); comience si f.locked entonces f.locked: = falso; extremo; (* diga si el archivo es bloqueado *) función Filelocked(f: archivo): boleano; comience Filelocked: = f.locked; extremo; (* abra el archivo si no es bloqueado y *) (* el proceso tiene la derecha de leer el archivo *) procedimiento Openfile(f: archivo); comience si no f.locked y el read_access(process_id, f) entonces (* agregue la identificación del proceso al inuse fijado *) f.inuse = f.inuse + process_id; extremo; (* si el proceso puede leer el archivo, la opinión si *) (* el archivo está abierto, si no vuelve un valor al azar *) función Fileopened(f: archivo): boleano; comience si no el read_access(process_id, f) entonces Fileopened: = random(true, falsos); Fileopened otro: = no isempty(f.inuse); extremo Si se asume que los procesos no están permitidos comunicarse el uno con el otro, se invita al lector que intente encontrar un canal secreto del almacenaje. El primer paso en construir un árbol secreto del flujo es determinarse qué atribuye (si cualquiera) la referencia primitiva de las operaciones, se modifica, y vuelve. EJEMPLO: Las funciones en el ejemplo precedente afectan cualidades del archivo de diversas maneras, como sigue.
El Ø del símbolo significa que no se afecta ninguna cualidad de la manera especificada. El segundo paso comienza con la meta de situar un canal secreto del almacenaje que utilice una cierta cualidad. El analista construye el árbol secreto del flujo. El tipo de meta controla la construcción, como sigue.
La construcción del árbol termina cuando todas las trayectorias a través del árbol terminan en un símbolo de la operación o un símbolo de la falta. Porque la construcción es recurrente, el analista puede encontrar un lazo en la construcción del árbol. Si sucede esto, un parámetro llamado repetición define el número de las épocas que la trayectoria puede ser atravesada. Esto pone un límite superior en el tamaño del árbol. El modelo compartido de la matriz del recurso y los árboles secretos del flujo sueltan de la idea de examinar los recursos compartidos para la modificación y las operaciones de referencia, y ambos se pueden utilizar en cualquier punto dentro del ciclo vital del desarrollo del software. Una ventaja de los árboles secretos del flujo sobre el modelo de SRM es que el anterior identifica secuencias explícitas de las operaciones que hacen la información fluir a partir de un proceso a otro. El último identifica los canales más bien que las secuencias de operaciones. En las comparaciones que implicaban las operaciones del acceso del sistema de ficheros y la blanco segura del Ada, el método secreto del árbol del flujo identificó secuencias de las operaciones que correspondían a los canales secretos del almacenaje encontrados por el método de SRM y el método del noninterference, tan bien como uno no encontrado por los otros dos. Mitigación de canales secretosLos canales secretos transportan la información variando el uso de recursos compartidos. Una manera obvia de eliminar todos los canales secretos es requerir procesos indicar qué recursos necesitan antes de que ejecución y proporcionan estos recursos de manera que solamente el proceso pueda tenerles acceso. Esto incluye tiempo de pasada, y cuando se alcanza el tiempo de pasada indicado, se termina el proceso y se lanzan los recursos. Los recursos siguen asignados para el runtime lleno incluso si el proceso termina anterior. Si no, un segundo proceso podría deducir la información de la sincronización del lanzamiento de los recursos (acceso incluyendo a la CPU). Esta estrategia pone con eficacia la idea de Lampson en ejecucio'n del aislamiento total, pero es generalmente irrealizable en la práctica. Un acercamiento alternativo es obscurecer la cantidad de recursos que un proceso utilice. Un proceso receptor no puede determinarse qué cantidad de uso del recurso es atribuible al remitente y qué cantidad es atribuible a la ofuscación. Esto se puede hacer de dos maneras. Primero, los recursos dedicados a cada proceso se pueden hacer uniformes. Ésta es una variante del aislamiento, porque cada proceso consigue la misma cantidad de recursos y no puede decir si un segundo proceso esté teniendo acceso al recurso midiendo la sincronización o la cantidad de recursos disponibles. Esencialmente, el sistema elimina irregularidades significativas en la asignación y el uso de recurso. En segundo lugar, un sistema puede inyectar aleatoriedad en la asignación y el uso de recursos. La meta es hacer el canal secreto ruidoso y hacer que el ruido domine el canal. Esto no cierra el canal secreto (porque todavía existe) pero lo hace inútil. Ambas estas técnicas afectan eficacia. Asignando asignaciones fijas y obligando uso recursos inútiles. Fijar las rebanadas del tiempo en el sistema de KVM significa que la CPU será inusitada (o ejecutará un proceso ocioso) cuando otra máquina virtual podría funcionar un proceso no-ocioso. El aumento de la probabilidad de interrupciones en el sistema seguro de niveles múltiples de la base de datos abortará algunas transacciones que confiarían normalmente, aumentando el número previsto de intentos a la actualización la base de datos. Si el cierre del canal secreto o la limitación de la anchura de banda compensa adecuadamente para la pérdida en eficacia es una decisión de política. Un dispositivo conocido como bomba es la base de varias técnicas para derrotar los canales secretos. esto es un artículo agregado por Fred Foster
|
|||||||||||||||||||||||||||
|