L'utilisation de canaux secrets a partagé des ressources comme chemins de communication. Ceci exige le partage de l'espace ou le partage du temps.
Un canal secret de stockage emploie un attribut de la ressource partagée. Un canal secret de synchronisation emploie un rapport temporel ou passant commande parmi des accès à une ressource partagée.
Un canal secret de synchronisation est habituellement défini en termes d'horloge en temps réel ou temporisateur, mais les rapports temporels n'emploient parfois ni l'un ni l'autre. Une commande des événements implique un rapport temps-basé qui n'implique ni une horloge en temps réel ni un temporisateur.
Une deuxième propriété distingue un canal secret au lequel seulement l'expéditeur et le récepteur ont accès et un canal secret que d'autres ont accès à aussi bien.
Un canal secret silencieux est un canal secret qui emploie une ressource disponible à l'expéditeur et au récepteur seulement. Un canal secret bruyant est un canal secret qui emploie une ressource disponible aux sujets autres que l'expéditeur et le récepteur, aussi bien qu'à l'expéditeur et le récepteur.
La différence entre ces deux types de canaux se situe dans la nécessité de filtrer dehors l'information étrangère. N'importe quelle information que le récepteur obtient à partir d'un canal silencieux vient de l'expéditeur. Cependant, dans un canal bruyant, l'information de l'expéditeur est mélangée à l'information sans signification, ou au bruit, d'autres entités en utilisant la ressource. Un canal secret bruyant exige d'un protocole de réduire au minimum cette interférence.
Les propriétés principales des canaux secrets sont existence et largeur de bande. L'existence nous indique qu'il y a un canal le long dont l'information peut être transmise. La largeur de bande nous indique comment rapidement l'information peut être envoyée. L'analyse de canal secret établit les deux propriétés. Alors on peut éliminer les canaux ou leurs largeurs de bande peuvent être réduites.
Les canaux secrets exigent le partage. La façon dont la ressource est partagée commande que les sujets peuvent envoyer et recevoir l'information en utilisant cette ressource partagée. Les méthodes de détection commencent par cette observation.
Porras et Kemmerer ont conçu une approche à représenter les violations de sécurité qui jaillissent de l'application des arbres de défaut. Ils modèlent l'écoulement d'information par les ressources partagées avec un arbre. Les chemins de l'écoulement sont identifiés en cette structure. L'analyste détermine si chaque écoulement est légitime ou secret.
Un arbre secret d'écoulement est une représentation à structure arborescente de l'ordre des opérations qui déplacent l'information d'un processus à l'autre. Il se compose de cinq types de noeuds.
Les symboles de but indiquent les déclarer qui doivent exister pour que l'information coule. Il y a plusieurs tels états :
Un but de modification est atteint quand un attribut est modifié.
Un but d'identification est atteint quand une modification d'un attribut est détectée.
Un but direct d'identification est atteint quand un sujet peut détecter la modification d'un attribut en le mettant en référence directement ou en appelant une fonction qui des retours il.
Un but impliqué d'identification est atteint quand un sujet peut détecter la modification d'un attribut sans le mettre en référence directement et sans appeler une fonction qui met en référence l'attribut directement. Par exemple, le sujet peut appeler une fonction qui exécute un de deux calculs selon la valeur de l'attribut en question.
Impliquer-par l'intermédiaire du but est atteint quand l'information est passée d'un attribut à d'autres attributs en utilisant une opération primitive indiquée (telle qu'un appel de système).
Un but d'reconnaître-nouveau-état est atteint quand un attribut qui a été modifié quand l'information a été passée en utilisant l'est indiqué par impliquer-par l'intermédiaire du but. La valeur n'a pas besoin d'être déterminée, mais le fait que l'attribut a été modifié doit être déterminé.
Un symbole d'opération est un symbole qui représente une opération primitive. Les symboles d'opération peuvent changer parmi des systèmes s'ils ont différentes opérations primitives.
Un symbole d'échec indique que l'information ne peut pas être envoyée le long du chemin sur lequel elle se trouve. Il signifie que le but auquel il est attaché ne peut pas être rencontré.
Et symbole est un but qui est atteint quand toutes les deux prise suivante pour tous les enfants :
Si l'enfant est un but, alors le but est atteint.
L'enfant est une opération.
Ou symbole est un but qui est atteint quand l'une ou l'autre des prises suivantes pour tous enfants :
Si l'enfant est un but, alors le but est atteint.
L'enfant est une opération.
La construction de l'arbre est un processus en trois étapes. Pour faire les étapes béton, nous présentons un ensemble simple d'opérations et puis demandons si elles peuvent créer un canal secret.
EXEMPLE : Considérez un système de fichiers dans lequel chaque dossier a trois attributs. Les attributs booléens ont fermé et isopen à clef sont vrais quand le dossier est verrouillé ou ouvert, respectivement, et est faux autrement. Le troisième attribut, inuse, est un ensemble qui contient l'identification de processus de chaque processus qui a le dossier ouvert. Le read_access(p de fonction, f) est vrai si le processus p a lu des droites au-dessus du dossier f, et l'empty(s) est vrai si l'ensemble s n'a aucun membre. Les retours aléatoires un de fonction de ses arguments choisis au hasard. Les opérations suivantes sont définies.
(* fermez le dossier s'il n'est pas verrouillé et non ouvert *) (* indiquez autrement qu'il est fermé à clef par retour de courrier faux *) procédé Lockfile(f : dossier) : booléen ; commencez si pas f.locked et empty(f.inuse) puis f.locked : = rectifiez ; extrémité ; (* ouvrez le dossier *) procédé Unlockfile(f : dossier) ; commencez si f.locked puis f.locked : = faux ; extrémité ; (* dites si le dossier est verrouillé *) fonction Filelocked(f : dossier) : booléen ; commencez Filelocked : = f.locked ; extrémité ; (* ouvrez le dossier s'il n'est pas verrouillé et *) (* le processus a le droit de lire le dossier *) procédé Openfile(f : dossier) ; commencez si pas f.locked et read_access(process_id, f) puis (* ajoutez l'identification de processus à l'inuse réglé *) f.inuse = f.inuse + process_id ; extrémité ; (* si le processus peut lire le dossier, la parole si *) (* le dossier est ouvert, autrement renvoient une valeur au hasard *) fonction Fileopened(f : dossier) : booléen ; commencez si pas read_access(process_id, f) puis Fileopened : = random(true, faux) ; Fileopened d'autre : = non isempty(f.inuse) ; extrémité
Supposant qu'on ne permet pas à des des processus de communiquer entre eux, le lecteur est invité à essayer de trouver un canal secret de stockage.
La première étape en construisant un arbre secret d'écoulement est de déterminer ce qui attribue (si quel) la référence primitive d'opérations, modifient, et retournent.
EXEMPLE : Les fonctions dans l'exemple précédent affectent des attributs de dossier dans différentes manières, comme suit.
| Lockfile | Unlockfile | Filelocked | Openfile | Fileopened | |
| référence | verrouillé, inuse | verrouillé | verrouillé | verrouillé, inuse | inuse |
| modifiez | verrouillé | Ø | Ø | inuse | Ø |
| retour | Ø | Ø | verrouillé | Ø | inuse |
Le Ø de symbole signifie qu'aucun attribut n'est affecté de la façon indiquée.
La deuxième étape commence par le but de plac un canal secret de stockage qui emploie un certain attribut. L'analyste construit l'arbre secret d'écoulement. Le type de but commande la construction, comme suit.
Le but le plus élevé exige que l'attribut soit modifié et que la modification soit identifiée. Par conséquent, il a un enfant (et symbole), qui a alternativement deux enfants (un symbole de but de modification et un symbole de but d'identification).
Un but de modification exige d'une certaine opération primitive de modifier l'attribut. Par conséquent, il a un ou l'enfant, qui ont un symbole d'opération d'enfant par opération pour toutes les opérations qui modifient l'attribut.
Un but d'identification exige qu'un sujet directement identifient ou impliquent un changement d'un attribut. Il a ou le symbole en tant que son enfant. Ou symbole a deux enfants, un un symbole direct de but d'identification et l'autre un symbole impliqué de but d'identification.
Un but direct d'identification exige qu'un accès d'opération l'attribut. Comme le but de modification, il a un ou l'enfant, et cet enfant a alternativement un symbole d'opération d'enfant pour chaque opération qui renvoie l'attribut. Si aucune opération ne renvoie l'attribut, un symbole d'échec est joint.
Un but impliqué d'identification exige que la modification soit impliquée sur la base d'un ou plusieurs autres attributs. Par conséquent, il a un enfant, ou symbole, qui ont un enfant impliquer-par l'intermédiaire de symbole pour chaque opération qui met en référence un attribut et qui modifie un certain attribut (probablement le même qui a été mis en référence).
Impliquer-par l'intermédiaire du but exige que la valeur de l'attribut soit impliquée par l'intermédiaire d'une certaine opération et d'une identification du nouvel état de l'attribut résultant de cette opération. Par conséquent, elle a un enfant (et symbole), qui a deux enfants (un symbole d'opération représentant l'opération primitive dessinait l'inférence et un symbole de but d'reconnaître-nouveau-état).
Un but d'reconnaître-nouveau-état exige que la valeur de l'attribut soit impliquée par l'intermédiaire d'une certaine opération et d'une identification du nouvel état de l'attribut résultant de cette opération. Le dernier exige un but d'identification pour l'attribut. Ainsi, le noeud d'enfant du symbole de but d'reconnaître-nouveau-état est ou symbole, et pour chaque attribut permettre l'inférence de la modification de l'attribut en question, ou le symbole a un enfant de symbole de but d'identification.
La construction d'arbre finit quand tous les chemins à travers l'arbre se terminent en symbole d'opération ou symbole d'échec. Puisque la construction est récursive, l'analyste peut rencontrer une boucle dans la construction d'arbre. Si ceci se produit, un paramètre appelé la répétition définit le nombre de fois que le chemin peut être traversé. Ceci place une limite supérieure sur la taille de l'arbre.
Le modèle partagé de matrice de ressource et les arbres secrets d'écoulement jaillissent de l'idée d'examiner les ressources partagées pour la modification et les opérations de référence, et tous les deux peuvent être employés à un point quelconque dans le cycle de vie de développement de logiciel. Un avantage des arbres secrets d'écoulement au-dessus du modèle de SRM est que l'ancien identifie des ordres explicites des opérations qui font découler l'information d'un processus à l'autre. Le dernier identifie des canaux plutôt que des ordres des opérations. Dans les comparaisons impliquant les opérations d'accès de système de fichiers et la cible bloquée d'ADA, la méthode secrète d'arbre d'écoulement a identifié des ordres des opérations correspondant aux canaux secrets de stockage trouvés par la méthode de SRM et la méthode de noninterference, comme une non trouvée par les autres deux.
Les canaux secrets donnent l'information en changeant l'utilisation des ressources partagées. Une manière évidente d'éliminer tous les canaux secrets est d'exiger des processus d'énoncer de quelles ressources elles ont besoin avant qu'exécution et fournissent ces ressources de façon que seulement le processus puisse leur accéder. Ceci inclut le temps d'exécution, et quand le temps d'exécution indiqué est atteint, le processus est terminé et les ressources sont libérées. Les ressources demeurent assignées pour le plein temps d'exécution même si le processus se termine plus tôt. Autrement, un deuxième processus pourrait impliquer l'information de la synchronisation du dégagement des ressources (accès y compris à l'unité centrale de traitement). Cette stratégie met en application efficacement l'idée de Lampson de l'isolement total, mais elle est habituellement impossible dans la pratique.
Une approche alternative est d'obscurcir la quantité de ressources qu'un processus emploie. Un procédé de réception ne peut pas déterminer quelle quantité d'utilisation de ressource est attribuable à l'expéditeur et quelle quantité est attribuable à l'obscurcissement. Ceci peut être fait de deux manières. D'abord, les ressources consacrées à chaque processus peuvent être rendues uniformes. C'est une variante de l'isolement, parce que chaque processus obtient la même quantité de ressources et ne peut pas dire si un deuxième processus accède à la ressource en mesurant la synchronisation ou la quantité de ressources disponibles. Essentiellement, le système élimine des irrégularités signicatives dans l'attribution et l'utilisation de ressource. En second lieu, un système peut injecter l'aspect aléatoire dans l'attribution et l'utilisation des ressources. Le but est de faire au canal secret bruyant et de faire dominer le bruit le canal. Ceci ne ferme pas le canal secret (parce qu'il existe toujours) mais le rend inutile.
Ces deux techniques affectent l'efficacité. Assignant des attributions fixes et contraignant l'utilisation ressources de rebut. La réparation des tranches de temps sur le système de KVM signifie que l'unité centrale de traitement sera inutilisée (ou exécutera un processus à vide) quand une autre machine virtuelle pourrait courir un processus non-à vide. L'augmentation de la probabilité des arrêts dans le système bloqué à multiniveaux de base de données avortera quelques transactions qui commettraient normalement, augmentant le nombre prévu d'essais à la mise à jour la base de données. Si la fermeture du canal secret ou de la limitation de la largeur de bande compense en juste proportion la perte dans l'efficacité est une décision de politique.
Un dispositif connu sous le nom de pompe est la base de plusieurs techniques pour défaire les canaux secrets.
Online: 716 users browsing the articles directory
|
|