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 del almacenaje utiliza una cualidad del recurso compartido. Un canal secreto de la sincronización utiliza una relación temporal o que ordena entre accesos a un recurso compartido.
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.
Un canal secreto silencioso es un canal secreto que utiliza un recurso disponible para el remitente y el receptor solamente. Un canal secreto ruidoso es un canal secreto que utiliza un recurso disponible para los temas con excepción del remitente y del receptor, así como para el remitente y el receptor.
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.
Los 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.
Los símbolos de la meta especifican los estados que deben existir para que fluya la información. Hay varios tales estados:
Se alcanza una meta de la modificación cuando se modifica una cualidad.
Se alcanza una meta del reconocimiento cuando una modificación de una cualidad se detecta.
Se alcanza una meta directa del reconocimiento cuando un tema puede detectar la modificación de una cualidad refiriéndose a ella directamente o llamando una función que las vueltas él.
Se alcanza una meta deducida del reconocimiento cuando un tema puede detectar la modificación de una cualidad sin referirse a ella directamente y sin llamar una función que se refiera a la cualidad directamente. Por ejemplo, el tema puede llamar una función que realice uno de dos cómputos dependiendo del valor de la cualidad en la pregunta.
Deducir-vi'a meta se alcanza cuando la información se pasa a partir de una cualidad a otras cualidades usando una operación primitiva especificada (tal como una llamada del sistema).
Se alcanza una meta del reconocer-nuevo-estado cuando una cualidad que fue modificada cuando la información fue pasada usándola es especificada por deducir-vi'a meta. El valor no necesita ser determinado, pero el hecho de que se ha modificado la cualidad debe ser determinado.
Un símbolo de la operación es un símbolo que representa una operación primitiva. Los símbolos de la operación pueden variar entre sistemas si tienen diversas operaciones primitivas.
Un símbolo de la falta indica que la información no se puede enviar a lo largo de la trayectoria en la cual miente. Significa que la meta a la cual se une no puede ser resuelta.
Y símbolo es una meta se alcanza que cuando ambos asimiento siguiente para todos los niños:
Si el niño es una meta, después se alcanza la meta.
El niño es una operación.
O símbolo es una meta se alcanza que cuando cualquiera de los asimientos siguientes para cualquieres niños:
Si el niño es una meta, después se alcanza la meta.
El niño es una operación.
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.
| Lockfile | Unlockfile | Filelocked | Openfile | Fileopened | |
| referencia | bloqueado, inuse | bloqueado | bloqueado | bloqueado, inuse | inuse |
| modifiqúese | bloqueado | Ø | Ø | inuse | Ø |
| vuelta | Ø | Ø | bloqueado | Ø | inuse |
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 meta topmost requiere que la cualidad esté modificada y que la modificación esté reconocida. Por lo tanto, tiene un niño (y símbolo), que alternadamente tiene dos niños (un símbolo de la meta de la modificación y un símbolo de la meta del reconocimiento).
Una meta de la modificación requiere una cierta operación primitiva modificar la cualidad. Por lo tanto, tiene uno o niño, que tienen un símbolo de la operación del niño por la operación para todas las operaciones que modifiquen la cualidad.
Una meta del reconocimiento requiere que un tema reconozca o deduzca directamente un cambio en una cualidad. Tiene o símbolo como su niño. O símbolo tiene dos niños, uno un símbolo directo de la meta del reconocimiento y el otro un símbolo deducido de la meta del reconocimiento.
Una meta directa del reconocimiento requiere que un acceso de la operación la cualidad. Como la meta de la modificación, tiene uno o niño, y ese niño alternadamente tiene un símbolo de la operación del niño para cada operación que vuelva la cualidad. Si ninguna operación vuelve la cualidad, se une un símbolo de la falta.
Una meta deducida del reconocimiento requiere que la modificación esté deducida en base de unas o más otras cualidades. Por lo tanto, tiene un niño, o símbolo, que tienen un niño deducir-vi'a el símbolo para cada operación que se refiera a una cualidad y que modifique una cierta cualidad (posiblemente la misma que fue referida).
Deducir-vi'a meta requiere que el valor de la cualidad esté deducido vía una cierta operación y un reconocimiento del nuevo estado de la cualidad resultando de esa operación. Por lo tanto, tiene un niño (y símbolo), que tiene dos niños (un símbolo de la operación que representaba la operación primitiva dibujaba la inferencia y un símbolo de la meta del reconocer-nuevo-estado).
Una meta del reconocer-nuevo-estado requiere que el valor de la cualidad esté deducido vía una cierta operación y un reconocimiento del nuevo estado de la cualidad resultando de esa operación. El último requiere una meta del reconocimiento para la cualidad. Así pues, el nodo del niño del símbolo de la meta del reconocer-nuevo-estado es o símbolo, y para cada cualidad permitir la inferencia de la modificación de la cualidad en la pregunta, o el símbolo tiene un niño del símbolo de la meta del reconocimiento.
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.
Los 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.
Online: 396 users browsing the articles directory
|
|