&quot;&quot;yes, we do not allow these ports&quot; or whatever... does that mean it is &quot;secure&quot;?&quot;<p>No, it means you don&#x27;t allow those ports. That&#x27;s all it means. Saying precisely what you&#x27;re doing or what attributes your aiming for are what the formal work is all about. Whether your <i>security policy</i> is enough and your design embodies it are different things altogether.<p>&quot;what does &quot;encrypted&quot; mean? Is it just a word that you use in your specification language? if so, does it mean what you think it means? etc etc etc...&quot;<p>That&#x27;s actually one of the easiest things you could ever check in formal systems. It&#x27;s helpful to think of it like programming. Actually, done side-by-side. You implement a formal spec for a requirement and&#x2F;or high-level function that takes plaintext as input and outputs ciphertext. This typically uses Red&#x2F;Black separation model. You also produce and vet an implementation for the encryption module. Now, how to know if something was encrypted in the system before going on the wire? Wait for it... wait for it... answer: it went through the encryption module first while it was initialized and in a state saying it&#x27;s encrypting. Just like that. Labels and checking at interfaces were used for identifying what went with what and making policy enforcement easier.<p>Note: Guttman has a security kernel in cryptlib that does this at the interface level for every function in the system. In CompSci literature, it&#x27;s called Assured Pipelines if you want to look it up. Easier to support now with Design-by-Contract and advanced typing systems. Past systems were kludgy when they happened at OS level except with capability systems.<p>Anyway, such components and functions are composed with the interactions and compositions analyzed. Each component and composition usually has a small number of execution traces it can perform so one can brute force the analysis if necessary. Finite state machines, both success and fail states, were common in high assurance development because they can be analyzed in full in all sorts of ways.<p>Note: It was Dijkstra that invented the method for this in the THE multiprogramming system. I think PSOS did it for security first. VAX Security Kernel Retrospective has nice sections where they show layering and assurance activities plus effect they had on analysis and defect hunting. Google any of those to understand the method better.