Search

The Online Encyclopedia and Dictionary

 
     
 

Encyclopedia

Dictionary

Quotes

   
 

Computer security

(Redirected from Secure computing)

Computer security is the effort to create a secure computing platform, designed so that agents (users or programs) cannot perform actions that they are not allowed to perform, but can perform the actions that they are allowed to. This involves specifying and implementing a security policy. The actions in question can be reduced to operations of access, modification and deletion. Computer security can be seen as a subfield of security engineering, which looks at broader security issues in addition to computer security.

It is important to understand that in a secure system, the legitimate users of that system are still able to do what they should be able to do. It has been said pejoratively that the only truly secure computer is one locked in a vault without any means of power or communication; however, this would not be regarded as a useful secure system because of the above requirement.

It is also important to distinguish the techniques employed to increase a system's security from the issue of that system's security status. In particular, systems which contain fundamental flaws in their security designs cannot be made secure without compromising their utility. Consequently, most computer systems cannot be made secure even after the application of extensive "computer security" measures.

Contents

Computer security by design

There are two different approaches to security in computing. One focuses mainly on external threats, and generally treats the computer system itself as a trusted system. This philosophy is discussed in the computer insecurity article.

The other, discussed in this article, regards the computer system itself as largely an untrusted system, and redesigns it to make it more secure in a number of ways.

This technique enforces privilege separation, where an entity has only the privileges that are needed for its function. That way, even if an attacker has subverted one part of the system, fine-grained security ensures that it is just as difficult for them to subvert the rest.

Furthermore, by breaking the system up into smaller components, the complexity of individual components is reduced, opening up the possibility of using techniques such as automated theorem proving to prove the correctness of crucial software subsystems. Where formal correctness proofs are not possible, rigorous use of code review and unit testing measures can be used to try to make modules as secure as possible.

The design should use "defense in depth", where more than one subsystem needs to be compromised to compromise the security of the system and the information it holds. Subsystems should default to secure settings, and wherever possible should be designed to "fail secure" rather than "fail insecure" (see fail safe for the equivalent in safety engineering). Ideally, a secure system should require a deliberate, conscious, knowledgeable and free decision on the part of legitimate authorities in order to make it insecure.

In addition, security should not be an all-or-nothing issue. The designers and operators of systems should assume that security breaches are inevitable in the long term. Full audit trails should be kept of system activity, so that when a security breach occurs, the mechanism and extent of the breach can be determined. Storing audit trails remotely, where they can only be appended to, can keep intruders from covering their tracks. Finally, full disclosure helps to ensure that when bugs are found the "window of vulnerability " is kept as short as possible.

Early history of security by design

The early Multics operating system was notable for its early emphasis on computer security by design, and Multics was possibly the very first operating system to be designed as a secure system from the ground up. In spite of this, Multics security was broken, not once, but repeatedly. This led to further work on computer security that prefigured modern security engineering techniques..

Techniques for creating secure systems

The following techniques can be used in engineering secure systems. Note that these techniques, whilst useful, do not of themselves ensure security -- a security system is no stronger than its weakest link.

Cryptographic techniques involve transforming information, scrambling it so it becomes unreadable during transmission. The intended recipient can unscramble the message, but eavesdroppers cannot.
Cryptographic techniques involve transforming information, scrambling it so it becomes unreadable during transmission. The intended recipient can unscramble the message, but eavesdroppers cannot.
  • Cryptographic techniques can be used to defend data in transit between systems, reducing the probability that data exchanged between systems can be intercepted or modified.
  • Strong authentication techniques can be used to ensure that communication end-points are who they say they are.
  • Secure cryptoprocessors can be used to leverage physical security techniques into protecting the security of the computer system.
  • Chain of trust techniques can be used to attempt to ensure that all software loaded has been certified as authentic by the system's designers.
  • Mandatory access control can be used to ensure that privileged access is withdrawn when privileges are revoked. For example, deleting a user account should also stop any processes that are running with that user's privileges.
  • Capability and access control list techniques can be used to ensure privilege separation and mandatory access control. The next sections discuss their use.
  • Automated theorem proving and other verification tools can enable critical algorithms and code used in secure systems to be mathematically proven to meet their specifications.
  • In a production system when an application provides no way to patch already known security flaws, don't use it or use another one (at least until the fix is available). Publicly known flaws are the main entry used by worms to automatically break into a system and then spread to other systems connected to it. This is why people should know how many unpatched known flaws are in similar products. The security Website Secunia http://secunia.com provides an easy search tool to do so.

Capabilities vs. ACLs

Within computer systems, the two fundamental means of enforcing privilege separation are access control lists (ACLs) and capabilities. The semantics of ACLs have been proven to be insecure in many situations (e.g., Confused deputy problem). It has also been shown that ACL's promise of giving access to an object to only one person can never be guaranteed in practice. Both of these problems are resolved by capabilities. It should be noted that this does not mean practical flaws exist in all ACL-based systems — only that the designers of certain utilities must take responsibility to ensure that they do not introduce flaws.

Unfortunately, for various historical reasons, capabilities have been mostly restricted to research operating systems and commercial OSes still use ACLs. Capabilities can, however, also be implemented at the language level, leading to a style of programing that is essentially a refinement of standard object-oriented design. An open source project in the area is the E language[1] http://www.erights.org/ .

The Cambridge CAP computer demonstrated the use of capabilities, both in hardware and software, in the 1970s, so this technology is hardly new. A reason for the lack of adoption of capabilities may be that ACLs appeared to offer a 'quick fix' for security without pervasive redesign of the operating system and hardware.

A good example of a current secure system is Eros. But see also the article on secure operating systems. TrustedBSD is an example of an opensource project with a goal, among other things, of building capability functionality into the FreeBSD operating system. Much of the work is already done.

Other uses and misuses of the term "trusted"

The term "trusted" is often applied to operating systems that meet different levels of the common criteria, some of which are discussed above as the techniques for creating secure systems.

Unfortunately for users, a computer industry group led by Microsoft, in an attempt to market a different set of products and services, has taken the term "trusted system" and changed it to include making computer hardware that prevents the user from having full control over their own system. They call their project the Trusted Computing Platform Alliance (TCPA). See also Next-Generation Secure Computing Base.

Further reading

Computer security is a highly complex field, and it is relatively immature. The ever-greater amounts of money dependent on electronic information make protecting it a growing industry and an active research topic.

Notable persons in computer security

For additional persons, see also: Category:Cryptographers.

See also

See Category:Computer security for a complete list of all related articles.

References

External links

  • David A. Wheeler: Secure Programming for Linux and Unix HOWTO http://www.dwheeler.com/secure-programs (GFDL License)
  • "Secure Programmer" article series http://www-106.ibm.com/developerworks/views/linux/articles.jsp?sort_order=desc&a
    mp;expand=&sort_by=Date&show_abstract=true&view_by=Search&search
    _by=secure+programmer%3A
  • The Linux Security HOWTO http://tldp.org/HOWTO/Security-HOWTO/index.html
  • Computer Security Fact Forum Framework http://www.caplet.com/security/taxonomy/index.html
  • Intro to Caps http://www.eros-os.org/essays/capintro.html
  • ACLs vs. Caps http://www.eros-os.org/essays/ACLSvCaps.html
  • Intro to Cap Security http://www.skyhunter.com/marcs/capabilityIntro/index.html
  • Why aren't Caps and ACLs equivalent? http://www.eros-os.org/faq/basics.html#non-equivalence
  • Open Source Distributed Capabilities http://www.erights.org/
  • REST and capability-based security http://www.waterken.com/
  • SSL Security Forum http://www.ssl-forum.com/
  • The Cambridge CAP capability-based computer architecture http://www.cs.washington.edu/homes/levy/capabook/Chapter5.pdf
  • Online book: "Capability-Based Computer Systems http://www.cs.washington.edu/homes/levy/capabook/ " by Henry M. Levy
  • Citations from CiteSeer http://citeseer.org/cs?q=computer+and+security
  • RFC2828, Internet Security Glossary http://www.ietf.org/rfc/rfc2828.txt Official glossary of security-related terms used in Internet Standards Documents
  • Secure Deletion of Data from Magnetic and Solid-State Memory http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html by Peter Gutmann
  • SecurityForest http://www.securityforest.com is a collaboratively edited Forest consisting of Trees which anyone can contribute to. SecurityForest's trees are specific security repositories that are categorized for practical reasons.



Last updated: 05-03-2005 17:50:55