home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / FAQ / txt / Cryptographic-File-System < prev    next >
PGP Signed Message  |  1996-04-18  |  12KB  |  302 lines

  1. -----BEGIN PGP SIGNED MESSAGE-----
  2.  
  3.                 Cryptographic File System under Linux HOW-TO
  4.                              LINUX SECURITY FAQ
  5.                                March 14, 1996
  6.       Copyright (C) 1996 Alexander O. Yuriev (alex@bach.cis.temple.edu)
  7.                               CIS Laboratories
  8.                               TEMPLE UNIVERSITY
  9.                                      USA
  10.  
  11.      This document describes how to compile, install and setup CFS 
  12.     that was written by Matt Blaze of AT&T, under Linux.  The following 
  13.     copyright statement copied directly from CFS 1.12 describes 
  14.     the restrictions on the CFS usage:
  15.  
  16.  * The author of this software is Matt Blaze.
  17.  *              Copyright (c) 1992, 1993, 1994 by AT&T.
  18.  * Permission to use, copy, and modify this software without fee
  19.  * is hereby granted, provided that this entire notice is included in
  20.  * all copies of any software which is or includes a copy or
  21.  * modification of this software and in all copies of the supporting
  22.  * documentation for such software.
  23.  *
  24.  * This software is subject to United States export controls.  You may
  25.  * not export it, in whole or in part, or cause or allow such export,
  26.  * through act or omission, without prior authorization from the United
  27.  * States government and written permission from AT&T.  In particular,
  28.  * you may not make any part of this software available for general or
  29.  * unrestricted distribution to others, nor may you disclose this software
  30.  * to persons other than citizens and permanent residents of the United
  31.  * States and Canada. 
  32.  *
  33.  * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
  34.  * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
  35.  * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
  36.  * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
  37.  
  38.     Although the information in this document is believed to be
  39.     correct, neither the Author nor CIS Laboratories, nor Temple University
  40.     provides any kind of WARRANTIES and is not/are not responsible for
  41.     what happens if you follow these guidelines. The information in this
  42.     document is provided AS IS! 
  43.  
  44. ABOUT CFS
  45.  
  46.     CFS provides application-independent encryption/decryption of the
  47.      filesystem layer that does not require modification of the
  48.      underlying filesystem code nor any kind of modification of the
  49.      kernel source.  The symmetric cipher implemented in the mainstream
  50.      version of CFS is based on the modified DES cipher running in CBC
  51.      mode making the brute-force attack against the usual 56-bit DES
  52.      key-space unrealistic.  The structure of CFS makes replacement of
  53.      the mainstream DES cipher with a Fast-DES or any other symmetric
  54.      cipher an extremely straightforward process.  Please refer to the
  55.      "White" paper about CFS for more information
  56.      (ftp://bach.cis.temple.edu/pub/Papers/cfs.ps)
  57.  
  58. COMPILING AND INSTALLING CFS
  59.  
  60.     CFS does not compile "out of the box" under Linux. Follow these
  61.     instructions to get CFS running or your Linux system. There are
  62.     several methods to make CFS work under Linux, the cleanest one of
  63.     which is based on the modifications performed by Olaf Kirch. His
  64.     version of CFS is available from:
  65.  
  66.     ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/cfs-1.1.2.tar.gz
  67.  
  68.     Olaf signed the modified archive. The PGP signature for the modified 
  69.     version of the cfs-1.1.2 can be obtained from 
  70.  
  71.     ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/cfs-1.1.2.pgp
  72.  
  73.     In single-user mode, compile CFS by using the "make" command.
  74.  
  75.     After compilation is completed, install "cfsd", "cdetach", "ccat",
  76.     "cmkdir", "cname" and "cattach" to the /usr/local/sbin directory
  77.     with the ownership "root:wheel" and the access mode "551".
  78.     Generate a list of MD5 hashes of the clean binaries. Now copy these
  79.     files together with the "md5sum" to a media such as an image of a CD
  80.     or a floppy and make the media write protected.
  81.  
  82.     Create the directory /.cfsfs which will be used as a hook for the
  83.     CFS server.  Make that directory owned by root:root and protected
  84.     with access mode "000".  Create the directory /securefs which will
  85.     become a root of the CFS tree.
  86.  
  87.     Add the following lines into your /etc/rc.d/rc.local:
  88.  
  89.     echo -n "Initializing secure filesystem: "
  90.         if [ -x /usr/local/sbin/cfsd ]; then
  91.                 /usr/local/sbin/cfsd > /dev/null
  92.         echo -n "cfsd "
  93.                 /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs
  94.         echo -n "loopback "
  95.                 echo "done"
  96.         else 
  97.        echo "Cryptographic Filesystem is not installed"
  98.     fi
  99.  
  100.     Users of the Caldera Network Desktop and Red Hat Commercial Linux
  101.     distributions should add the file "cfsfs" that is attached at the end
  102.     of this document to their /etc/rc.d/init.d directory. Then symlink
  103.     the file "S65cfsfs" to it in the appropriate run-level directories
  104.     using the command:
  105.  
  106.         ln -s ../init.d/cfsfs S65cfsfs
  107.  
  108.     in /etc/rc.d/rcX.d, where X is a run-level number, add the line:
  109.  
  110.         /.cfsfs        localhost
  111.  
  112.     to /etc/exports. Finally, add the line:
  113.  
  114.         portmap: 127.0.0.1
  115.  
  116.     to the /etc/hosts.allow file. 
  117.  
  118.     You should now restart your computer.  When it comes back into a
  119.     multiuser mode, issue a mount command to verify that CFS is running.
  120.     If everything was successful, you should see a new line in a list of
  121.     filesystems:
  122.         
  123. localhost:/.cfsfs on /securefs type nfs (rw,port=3049,intr,addr=127.0.0.1)
  124.  
  125.  
  126. CREATING CFS DIRECTORY
  127.  
  128.     To create a CFS protected directory called "secret" use the command
  129.  
  130.         cmkdir secret
  131.  
  132.     You will be requested to supply and verify the passphrase.  If you
  133.     succeed, a new directory named "secret" will appear in the current
  134.     directory. This directory will contain encrypted information which
  135.     will be accessible only in the encrypted form unless it is attached
  136.     to the CFS tree.
  137.     
  138.     In order to add the "secret" directory to a list of directories
  139.     managed by CFS, it has to be attached to the CFS tree using the
  140.     command:
  141.     
  142.         cattach secret Big-Secret
  143.                   
  144.     CFS will request you to type the access passphrase. If it matches
  145.     the passphrase supplied to the "cmkdir" command that created the
  146.     directory originally, then the information in the secret directory
  147.     will be accessible in a non-encrypted form under /securefs/Big-Secret
  148.     to the user who supplied the correct passphrase.  Please note that
  149.     usually it takes about a minute to attach a protected directory to
  150.     the CFS tree. When the user is finished manipulating the information 
  151.     they should issue the command:
  152.     
  153.             cdetach Big-Secret
  154.         
  155.     to destroy the access key. This command removes the directory
  156.     "secret" from the list of directories managed by CFS making it
  157.     impossible to access cleartext information in that directory until
  158.     it is again attached using the "cattach" command.
  159.  
  160. PROTECTION OF CFS
  161.  
  162.     In order to grant a user access to encrypted parts of the directory
  163.     tree, CFS requires the user to supply a passphrase that is used to
  164.     generate a set of access keys. A compromise of a passphrase allows
  165.     an intruder to access the encrypted information through the Unix
  166.     security model. Therefore it is extremely important to protect
  167.     access passphrases. There are two basic ways that can be used by
  168.     intruders to gain access to your passphrase. They are (1) Sniffer
  169.     attacks (2) Attack against the protocol.  The following simple
  170.     guidelines can be used to minimize the possibility of a successful
  171.     attack against CFS:
  172.  
  173.         1. Make sure that the CFS binaries are not compromised in
  174.            any form. 
  175.  
  176.             * Ensure that "cattach", "ccat", "cmkdir", "cname",
  177.                   the CFS server "cfsd" and finally, "cdattach" 
  178.               are not replaced with Trojan versions that record 
  179.               access passphrases or, in a case of "cfsd", 
  180.               access keys.  
  181.  
  182.             * Ensure that the CFS server is not compromised in a 
  183.               way that it does not perform the encryption 
  184.               procedure correctly. 
  185.  
  186.             * An attack against "cdeattach" usually involves a 
  187.               small modification that prevents correct 
  188.               destruction of access keys allowing an intruder 
  189.               to gain access to a supposedly detached part of 
  190.               the directory tree.
  191.  
  192.            The simplest way to verify that binaries are not
  193.            compromised is to statically link them and place them on
  194.            a CD.  Another way is to again statically link the
  195.            binaries, use "md5sum" message-digest calculator and
  196.            write their MD5 hashes onto a write-protected media.
  197.            Prior to using any CFS programs on a system, mount
  198.            the floppy disk and compare MD5 hashes of binaries on the
  199.            system with the hashes of the clean statically linked
  200.            copies located on the floppy disk, replacing the
  201.            compromised versions.
  202.            
  203.         2. Keyboard grabbers used to grab passphrases as they are
  204.            being typed rely on the fact that most users are careless
  205.            enough to ignore the following simple guidelines:
  206.            
  207.                1. When typing a passphrase in an xterm, make sure
  208.                that the xterm program is not compromised and use
  209.                the "Secure Keyboard" option while typing the
  210.                passphrase. This prevents keystrokes from being
  211.                intercepted by X grabbers.
  212.                
  213.             2. Type passphrases from a terminal attached directly
  214.                to a serial port of the system when such terminal
  215.                is available.
  216.                
  217.             3. Make sure that your pty and ttys permissions
  218.                disallow others from reading your keystrokes
  219.                directly from the device node.
  220.  
  221.         3. Never type your passphrase across the network, even if
  222.            the network is located behind a firewall and you trust
  223.            everybody who is connected to your network not to use
  224.            sniffers. This also applies to networks that use
  225.            scrambling routers, because there is absolutely no
  226.            guarantee that routers use a strong encryption or do not
  227.            have a back door or a loophole that potentially can allow
  228.            an intruder to defeat encryption used by a router.  If
  229.            you have to type your password across the network, do it
  230.            only if you are using an encrypted tunnel between systems
  231.            such as the one created by the deslogin(8) protocol.
  232.                    
  233.         4. Always de-attach CFS protected trees from the  filesystem when
  234.            not using them, even when you are leaving your system for 
  235.            "only" a couple of minutes.
  236.  
  237. KNOWN PROBLEMS WITH CFS
  238.  
  239.     At this moment there is only one problem that can be reproduced. 
  240.     "Permission denied" error is generated when a user attempts to 
  241.     access the files located on a compact disc.
  242.  
  243.  
  244. CREDITS
  245.  
  246.     The following people helped in the preporation process of this
  247.     document: Topher Hughes of the Dickinson College, Elie Rosenblum of
  248.     the Montgomery Blair High School, Mario D. Santana of the Florida
  249.     State University, Daniel P Zepeda and Olaf Kirch.
  250.  
  251.  
  252. ====================[cfsfs]======================
  253. #!/bin/sh
  254. #
  255. # $Header: /Secure/secure-doc/linux/CFS/RCS/CFS-Doc,v 1.4 1996/03/15 04:49:37 alex Exp alex $
  256. #
  257. # cfsfs        Crypto filesystem 
  258. #
  259. # Author:    Alexander O. Yuriev <alex@bach.cis.temple.edu>
  260. #        Derived from cron        
  261.  
  262. # Source function library.
  263. . /etc/rc.d/init.d/functions
  264.  
  265. # See how we were called.
  266. case "$1" in
  267.   start)
  268.     echo -n "Starting Crypto Filesystem: "
  269.     if [ -x /usr/local/sbin/cfsd ]; then
  270.         /usr/local/sbin/cfsd > /dev/null
  271.         /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs
  272.         echo "done"
  273.     else 
  274.         echo -n "Crypto Filesystem is not installed"
  275.     fi
  276.     touch /var/lock/subsys/cfsfs
  277.     ;;
  278.   stop)
  279.     echo -n "Stopping Crypto filesystem: "
  280.     umount /securefs
  281.     killproc cfsd
  282.     echo
  283.     rm -f /var/lock/subsys/cfsfs
  284.     ;;
  285.   *)
  286.     echo "Usage: cfsfs {start|stop}"
  287.     exit 1
  288. esac
  289.  
  290. exit 0
  291. ====================[end of cfsfs]======================
  292.  
  293. -----BEGIN PGP SIGNATURE-----
  294. Version: 2.6.2
  295.  
  296. iQCVAwUBMXVewoxFUz2t8+6VAQHHoAP/WEZ9luRJ/gFgQydBbEfM2vXTF/1VCe7D
  297. KoT3X5bRP+zZVufGt6B6n0IjDUXFX/Lv6264ZZ6jF/BKO9mrLxoGI5sA6Y6HQ7fb
  298. DFy8+XdZhponnuih3eJ5z46bRwLWVd+lr2+ORK17ukTLbsY65kzF3wTzczRNqL9G
  299. wPN6j3+LVXE=
  300. =BEE2
  301. -----END PGP SIGNATURE-----
  302.