security-0intro man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

SECURITY-INTRO(2)					     SECURITY-INTRO(2)

NAME
       intro - introduction to security

SYNOPSIS
       include "keyring.m";
       include "security.m";

DESCRIPTION
       This is an introduction to some of the principals behind computer secu‐
       rity as well as a description of	 how  these  principals	 are  used  in
       Inferno.	 More  detailed descriptions of the methods and principals for
       ensuring secure communications on computers can be found in texts  such
       as  Applied  Cryptography by Bruce Schneier (published 1996, J. Wiley &
       Sons, Inc.).

       Inferno provides several levels of security:

       ·      Mutual authentication means that two users or applications  that
	      want  to	communicate  can  establish that they are who they say
	      they are. It is the basic level of security provided by Inferno.
	      Thus,  for  example, when a user connects to an Inferno service,
	      they can and must establish that they are a legitimate user.

       ·      Message digesting is a technique to ensure  that	an  interloper
	      cannot modify messages sent between users.

       ·      Encryption protects the confidentiality of messages so that only
	      the party or parties for whom  the  messages  are	 intended  can
	      decrypt and read them.  Inferno makes it easy to enforce any one
	      or all of these levels of security.

   Mutual Authentication
       Authentication requires a combination of elements: a third  party  that
       each user can trust, an algorithm or mathematical method to secure mes‐
       sages between users,  and  a  protocol  for  exchanging	messages  that
       ensures	that a third party or intruder cannot pretend to be one of the
       users, or use some other method to undermine their communication.

       One important method for authenticating users in Inferno is the use  of
       digital signatures. Like signing a letter a digital signature testifies
       to the identity of the sender. Fortunately, it is much  more  difficult
       to forge a digital signature.

       Even  after  users  are authenticated to each other, it is possible for
       someone `listening' to their communication to read and possibly	modify
       their  messages	without the users knowing it. So authentication solves
       one security requirement, but not all of them.

   Message Digesting
       Message digesting uses a mathematical hashing algorithm	to  convert  a
       message	into  an indecipherable string of fixed length (a digest).  By
       appending the hashed value to the message, the authenticity of the mes‐
       sage  can  be  verified.	  The recipient takes the message, applies the
       same hashing algorithm used by the sender, and compares	the  value  to
       the  one	 sent.	 If the values are the same, then the message received
       must be the same as the one that was sent.

       Inferno includes a counter in the digest to check  that	messages  were
       received	 in  the correct order and that no messages were inserted by a
       third party listening in on the line.  A secret key is also included in
       the digest to verify the identity of the sender.

       A  message  digest ensures that no one has tampered with a message.  It
       does not prevent someone from reading it.

   Message Encryption
       The traditional notion of encryption is translating a message, called a
       plaintext  in cryptography, into something unreadable, called a cipher‐
       text. Its most obvious use is to provide confidentiality. Only  someone
       able to decrypt the message, or translate it back to its original form,
       can interpret it.

       A mathematical algorithm is used to both encrypt and decrypt a message.
       Encryption  algorithms  depend  on  keys	 or bit strings of a specified
       length for encryption and decryption. The nature of  an	algorithm  and
       the size of the key determine the degree of security.

       Two basic types of algorithms are used in cryptography: private key (or
       symmetric key) and public key algorithms. With symmetric algorithms the
       same  key  is used to encrypt and decrypt a message. This key must be a
       secret, known only to the users who want to communicate.	 It  is	 often
       called a private or secret key.

       A  public  key  algorithm  may use a private or secret key to encrypt a
       message and a public key to decrypt it, or vice-versa. The  private  or
       secret key is known only to one user. The public key, however, does not
       have to be kept secret and may be distributed to anyone the user wishes
       to communicate with.

       Inferno	uses a public key algorithm for digital signatures and symmet‐
       ric key algorithms for encryption.

       A user can encrypt a  message  with  or	without	 appending  a  message
       digest.

   Algorithms Supplied With Inferno
       Some  of	 the considerations when choosing algorithms are speed, degree
       of security, and political restrictions on export.  The algorithms used
       in Inferno are well known and rigorously tested.

       One-way hashing algorithms
	      SHA1  and	 MD5 are well known (in cryptographic circles) one-way
	      hashing algorithms. MD5 is a high-speed, 128-bit hash. SHA1 is a
	      somewhat slower but more secure 160-bit hash.

       Elgamal and RSA public key signature algorithms
	      Elgamal  is a public key system widely used for creating digital
	      signatures. It uses a private key for signing a  message	and  a
	      public  key for verifying it.  Inferno also supports the widely-
	      used RSA and DSS-1 signature algorithms.	Because	 Inferno  ini‐
	      tially  used Elgamal keys, it does not assume that either a pri‐
	      vate or public key can be used  for  encryption  or  decryption.
	      With  constant advances in the field of cryptography, one of the
	      design goals of Inferno is to create a security  component  that
	      will be easy to enhance as new algorithms are developed.

       Encryption algorithms
	      DES (the Data Encryption Standard) was adopted by the US govern‐
	      ment in 1976 as  a  standard  encryption/decryption  system  for
	      unclassified data in the United States. It is widely used, espe‐
	      cially by the financial services industry. Two types of DES  are
	      offered:	DES-ECB	 and  DES-CBC. ECB or Electronic Code Book and
	      CBC or Chain Block Coding are part of the ANSI Banking Standard.
	      CBC  is more complex and less vulnerable than ECB. Both versions
	      of DES provide 56-bit keys.

	      RC4 is a symmetric or private key system that is about 10	 times
	      faster than DES.

       Diffie-Hellman key exchange algorithm
	      Diffie-Hellman  is  an algorithm for creating a secret key to be
	      shared by users for  encrypting  messages	 (sometimes  called  a
	      shared secret). It requires each user to exchange certain infor‐
	      mation with the other. This information can be exchanged in  the
	      open,  that  is, without encryption. Each user is able to create
	      the same, secret key from this information. However, no one else
	      listening to their exchange would be able to create or determine
	      the secret key.

   Security Protocols
       Cryptanalysis is the study  of  how  to	break  cryptographic  systems.
       Attempts to disrupt or listen to confidential communications are called
       attacks. Usually the objective of an attack is to figure out the secret
       key, decrypt a message, or add or modify messages in some way.

       There  are many methods or strategies for attacking a confidential com‐
       munication. One method is  called  a  man-in-the-middle	attack,	 where
       someone listening to a communication pretends to be one of the parties;
       another is a replay attack, where an interloper	reuses	messages  that
       have already been exchanged in an attempt to discover a pattern.

       In  order  to  thwart  such  attacks  and establish some level of trust
       between communicating parties, it is necessary to employ certain proto‐
       cols.  Inferno uses two well-established protocols to permit keys to be
       exchanged and to permit mutual authentication of the identities of  two
       communicating parties.

       A  digital  signature  is one way to guarantee that a message sent by a
       user is indeed from that user and not someone else.  A  signature  does
       not  require  that a message be encrypted. It can be appended to a mes‐
       sage in order to guarantee the identity of the  sender.	With  Elgamal,
       creating	 a  signature  requires that the user have a secret or private
       key. Uniquely associated with the private key is another key  that  can
       be distributed publicly. This public key is used along with the private
       key to create a signature, and is used by others to verify  the	signa‐
       ture.

       To create a signature the Elgamal algorithm is applied to a combination
       of the private key, the public key, and the message to be  signed.  The
       output of the algorithm is the signature.

       To  verify  the signature the receiver applies the Elgamal algorithm to
       the public key and the signature. If the output	is  the	 same  message
       that  was  sent	with  the signature, then the signature is valid. This
       method ensures that the user receiving a message is indeed  communicat‐
       ing with someone who owns the public key.

       The  next  step is to determine who the owner of the public key is, and
       to ensure that it belongs to the user that the receiver wants to commu‐
       nicate with. This is accomplished by having a third party create a cer‐
       tificate testifying to the identity of the owner	 of  the  public  key.
       This  third  party  is  called  a  certifying authority (CA). If a user
       trusts the certifying authority, a copy of a certificate is  sufficient
       to  determine  the ownership of a public key, and therefore, the signa‐
       ture and identity of the user sending a message.

       A certificate includes a variety of information: a user's  public  key,
       the identity of the user, Diffie-Hellman parameters, an expiration time
       for the certificate, and the signature of the CA. The CA's  public  key
       is  sent to the user along with the certificate to verify the CA's sig‐
       nature.

       Inferno provides two different  methods	for  obtaining	a  certificate
       depending  on whether a user has access to a keyboard or not. For users
       with a keyboard, Inferno	 offers	 a  variation  of  the	Encrypted-Key-
       Exchange	 (EKE)	protocol, described in login(6).  The protocol depends
       on establishing trust between a user and a CA  using  a	shared	secret
       (password).  The secret must initially be established at the CA by some
       secure means: typing a password on a  secure  console  at  the  CA,  or
       transmitting  the  password securely off-line, perhaps by unintercepted
       letter or untapped phone call.  To obtain a  certificate,  a  user  can
       subsequently  enter  the	 secret	 on the client machine's keyboard; the
       protocol obtains a certificate without revealing the secret.

       For an application or user on a set-top box, which  normally  does  not
       have  a	keyboard,  entering  a password would be difficult. Therefore,
       Inferno provides a different method to establish trust. When  the  set-
       top  box	 is  turned on, it creates a private/public key pair and dials
       the service provider's CA to get a certificate. The CA returns  a  cer‐
       tificate	 blinded  or  scrambled with a random bit string known only to
       the CA. A hashed version of the	string	is  displayed  on  the	user's
       screen.	The user telephones the CA and compares what is displayed with
       what the CA has sent. If they match, and the user can prove his or  her
       identity,  the CA makes the random bit string known to the user, so the
       certificate can be unscrambled.

   Authentication
       Mutual authentication in Inferno requires that two parties who want  to
       communicate  must  have	a  certificate	from the same CA. As described
       above, the public key of the CA is used to check the  certificate  sent
       by  the	other  user. The certificate is used to verify that the public
       key belongs to the party that the user wants to communicate with.

       If a user can trust the public key, then the key can be used  to	 check
       the  signature  sent  by the other party. If the public key unlocks the
       signature, then whoever sent the signature must have the	 corresponding
       secret key, and therefore, must be the owner of the public key.

       The  default  protocol provided by Inferno for mutual authentication is
       the station-to-station protocol described in auth(6).  It has the prop‐
       erty that both parties can derive the same key from exchanged and vali‐
       dated data but no eavesdropper can determine the key.

   Security at the Application Layer
       An application can make use of the algorithms and  protocols  described
       previously  by  using  only  a  few library routines such as: security-
       login(2), security-auth(2)  and	connect	 (see  security-ssl(2)).   The
       Login  module  enables  an  application	that  shares a password with a
       server acting as the CA to obtain a certificate. After  obtaining  cer‐
       tificates,  two applications establish a mutually authenticated connec‐
       tion by calling auth.  Auth performs the entire STS protocol.   Connect
       connects an application to an SSL (security sockets layer) device. Each
       application can create message digests or encrypt messages  by  writing
       to this device. Messages are received and decrypted by reading from the
       SSL device.

       Although Inferno provides these routines to make it easy	 to  establish
       secure  communications,	an application is not restricted to their use.
       Lower-level routines used by login and auth are also  available	to  an
       application.  These  routines enable an application to create alternate
       methods for establishing security, or to perform specialized  functions
       like signing files.

       Inferno also provides security routines tailored for set-top boxes. For
       example, a set-top-box can use register(8) instead of login (see	 secu‐
       rity-login(2)).	 Register  obtains  a  certificate without requiring a
       user to enter a password.

       There are also commands in section 8 that establish a server as a  Cer‐
       tifying	Authority or `signer'. For example, a CA needs a key and pass‐
       word to create a certificate. These can be created on the server	 using
       the commands changelogin(8) and createsignerkey(8).

							     SECURITY-INTRO(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net