home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac / sfs110.zip / SFS1.DOC < prev    next >
Text File  |  1994-08-01  |  144KB  |  2,800 lines

  1.  
  2.                         sSSSSs      FFFFFFFFFF    sSSSSs
  3.                        sSSSSSSs     FFFFFFFFF    sSSSSSSs
  4.                       sSs     sS    FF          sSs     sS
  5.                       SS            FF          SS
  6.                       sSs           FF          sSs
  7.                        sSSSSSSs     FFFFFFF      sSSSSSSs
  8.                              sSs    FF                 sSs
  9.                               SS    FF                  SS
  10.                       Ss      Ss    FF          Ss      Ss
  11.                        sSSSSSSs     FF           sSSSSSSs
  12.                         sSSSSs      FF            sSSSSs
  13.  
  14.  
  15.                        S e c u r e   F i l e S y s t e m
  16.  
  17.                                   Version 1.10
  18.  
  19.                      Copyright Peter C.Gutmann  1993, 1994
  20.  
  21.  
  22.       "The right to privacy... is the most comprehensive of rights and the
  23.        right most valued by civilized man"
  24.                           - Justice Louis Brandeis, US Supreme Court, 1928
  25.  
  26.  
  27. Ever since Julius Caesar used the cipher which now bears his name to try to
  28. hide his military dispatches from prying eyes, people have been working on
  29. various means to keep their confidential information private.  Over the years,
  30. the art of cryptography (that is, of scrambling information so only those in
  31. possession of the correct password can unscramble it) has progressed from
  32. simple pencil-and-paper systems to more sophisticated schemes involving complex
  33. electromechanical devices and eventually computers.  The means of breaking
  34. these schemes has progressed on a similar level.  Today, with the
  35. ever-increasing amount of information stored on computers, good cryptography is
  36. needed more than ever before.
  37.  
  38. There are two main areas in which privacy protection of data is required:
  39.  
  40.   - Protection of bulk data stored on disk or tape.
  41.   - Protection of messages sent to others.
  42.  
  43. SFS is intended to solve the problem of protecting bulk data stored on disk.
  44. The protection of electronic messages is best solved by software packages such
  45. as PGP (available on sites the world over) or various implementations of PEM
  46. (currently available mainly in the US, although non-US versions are beginning
  47. to appear).
  48.  
  49. SFS has the following features:
  50.  
  51.   - The current implementation runs as a standard DOS device driver, and
  52.     therefore works with both plain MSDOS or DRDOS as well as other
  53.     software such as Windows, QEMM, Share, disk cacheing software, Stacker,
  54.     JAM, and so on.
  55.  
  56.   - Up to five encrypted volumes can be accessed at any one time, chosen
  57.     from a selection of as many volumes as there is storage for.
  58.  
  59.   - Volumes can be quickly unmounted with a user-defined hotkey, or
  60.     automatically unmounted after a certain amount of time.  They can also
  61.     be converted back to unencrypted volumes or have their contents
  62.     destroyed if required.
  63.  
  64.   - The software contains various stealth features to minimise the
  65.     possibility of other programs monitoring or altering its operation.
  66.  
  67.   - The encryption algorithms used have been selected to be free from any
  68.     patent restrictions, and the software itself is not covered by US
  69.     export restrictions as it was developed entirely outside the US
  70.     (although once a copy is sent into the US it can't be re-exported).
  71.  
  72.   - SFS complies with a number of national and international data
  73.     encryption standards, among them ANSI X3.106, ANSI X9.30 Part 2,
  74.     Federal Information Processing Standard (FIPS) 180, Australian
  75.     Standard 2805.5.2, ISO 10116:1991 and ISO 10126-2:1991, and is on
  76.     nodding terms with several other relevant standards.
  77.  
  78.   - The documentation includes fairly in-depth analyses of various security
  79.     aspects of the software, as well as complete design and programming
  80.     details necessary to both create SFS-compatible software and to verify
  81.     the algorithms used in SFS.
  82.  
  83.   - The encryption system provides reasonable performance.  One tester has
  84.     reported a throughput of 250 K/s for the basic version of SFS, and 260
  85.     K/s for the 486+ version on his 486 system, when copying a file with
  86.     the DOS copy command from one location on an SFS volume to another.
  87.     Throughput on a vanilla 386 system was reported at around 160 K/s.
  88.  
  89.   - Direct access to IDE and SCSI drives is available for better
  90.     performance and for drives which aren't normally accessible to DOS (for
  91.     example systems with more than 2 hard drives).
  92.  
  93. Although the use of DOS is described throughout this document, SFS is not
  94. limited to any particular operating environment, and can be used to contain
  95. virtually any type of filesystem.  In the future an SFS driver for OS/2 HPFS
  96. filesystems may be developed, and there have been discussions on creating a
  97. Linux SFS driver for Unix machines.  A 68000 version of SFS is also reported to
  98. be under development.
  99.  
  100.  
  101. Overview
  102. --------
  103.  
  104. This document is organised to give step-by-step instructions on setting up the
  105. SFS driver, creating an encrypted volume, and using the encrypted volume to
  106. store information securely.  The first three sections cover each of these
  107. steps, with a special quick-start section preceding them giving a rapid
  108. introduction to getting an encrypted disk volume up and running.  The next
  109. sections provide extra details on topics such as password management,
  110. incompatibility problems, other encryption software, and the politics of
  111. cryptography and privacy.  The final sections provide an in-depth security
  112. analysis, technical information on the SFS driver, and data formats for those
  113. wishing to write SFS-compatible software or wanting to check the security of
  114. the software for themselves.
  115.  
  116. The document is divided into sections as follows:
  117.  
  118.   Why Use SFS?
  119.         Some reasons why use of security measures like SFS may be
  120.         necessary for your data.
  121.   Terminology
  122.         An explanation of some of the technical terms use in this
  123.         document.  Experienced users can skip this section.
  124.   Quick Start
  125.         A quick overview of the use of SFS which summarizes the
  126.         next three sections for people in a hurry
  127.   Loading the SFS Driver
  128.         How to set up the SFS driver needed to handle encrypted
  129.         volumes.
  130.   Creating an SFS Volume
  131.         How to prepare an SFS encrypted volume for use.
  132.   Mounting an SFS Volume
  133.         How to mount a previously prepared SFS encrypted volume
  134.         so the operating system can use it.
  135.   Advanced SFS Driver Options
  136.         Various advanced options such as how to mount SFS volumes
  137.         at system startup so that they are automatically available when
  138.         the system is booted, and customizing the SFS driver operation
  139.         and user interface.
  140.   Changing the Characteristics of an SFS Volume
  141.         How to change various characteristics of an SFS volume such
  142.         as the password, volume name, disk access method, and
  143.         auto-unmount timeout, and how to delete SFS volumes or convert
  144.         them back to normal DOS volumes.
  145.   Sharing SFS Volumes Between Multiple Users
  146.         How to securely share a single encrypted SFS volume between
  147.         multiple users.
  148.   Creating Compressed SFS Volumes
  149.         How to create a compressed drive inside a normal SFS volume
  150.   WinSFS - Using SFS with Windows
  151.         An overview of the Windows version of SFS.
  152.   Command Summary
  153.         A summary of the commands available with the various SFS
  154.         programs.
  155.   Incompatibilities
  156.         Comments on unusual hardware and software combinations which
  157.         may create problems for SFS.
  158.   Authentication of SFS Software
  159.         How to verify that the SFS distribution you have is indeed the
  160.         real thing.
  161.   Applications
  162.         Various applications and uses for SFS.
  163.   The Care and Feeding of Passwords
  164.         Details on how to chose and handle a password to protect
  165.         an SFS volume.
  166.   Other Software
  167.         An overview of other available security software and the
  168.         weakness and problems present in it.
  169.   Data Security
  170.         Various issues in data security which should be taken into
  171.         consideration when using SFS and similar encryption software.
  172.   Politics
  173.         A discussion on the politics of cryptography, the right to
  174.         privacy, and some of the reasons why SFS was written.
  175.   An Introduction to Encryption Systems
  176.         A brief introduction to encryption systems with an emphasis
  177.         on the methods used in SFS.
  178.   Security Analysis
  179.         An analysis of the level of security offered by SFS and
  180.         some possible attacks on it.
  181.   Design Details
  182.         Various in-depth design details not covered in the security
  183.         analysis.
  184.   SFS Disk Volume Layout
  185.         Details on the disk layout used by SFS.
  186.   Interfacing with SFS
  187.         How to control the SFS driver through software.
  188.   Interfacing with mountsfs
  189.         How to control the mountsfs program from external software such
  190.         as graphical front-ends.
  191.   Selected Source Code
  192.         A walkthrough of selected portions of the source code to allow
  193.         verification and help implementors.
  194.   Future Work
  195.         Various enhancements which may be incorporated into future
  196.         versions of SFS.
  197.   Recommended Reading
  198.         A short list of recommended reading material for those wishing
  199.         to know more about the design of SFS and encryption in general.
  200.   Using SFS
  201.         Conditions and terms for use of SFS.
  202.   Credits
  203.   Warranty
  204.  
  205.  
  206. Why Use SFS?
  207. ------------
  208.  
  209. Virtually all information stored on computer systems is sensitive to some
  210. degree, and therefore worth protecting.  Exactly how sensitive a piece of data
  211. is is unique to each environment.  In some cases the data may be much more
  212. sensitive to errors or omissions, or to unavailability, or to fraudulent
  213. manipulation, than to the problems SFS is designed to guard against.  SFS helps
  214. guard against data being disclosed to the wrong people or organisations, and
  215. against some types of fraudulent manipulation.  By making the data being
  216. protected accessible only to those with authorized access, SFS helps protect
  217. the confidentiality of the information, and the privacy of the individuals the
  218. information pertains to.  Preventing access by unauthorized users also helps to
  219. protect the integrity of the data[1].
  220.  
  221. One way to determine whether the data is sensitive enough to require the use of
  222. SFS is to consider the following:
  223.  
  224.   What are the consequences of the data being made available to the wrong
  225.   people or organisations?
  226.  
  227.   What are the consequences of the data being manipulated for fraudulent
  228.   purposes?
  229.  
  230. An additional impetus for security comes from the legal requirement of many
  231. countries for individuals and organisations to maintain the confidentiality of
  232. the information they handle, or to control their assets (such as computer data)
  233. properly.  For example, one of the "OECD guidelines governing the protection of
  234. privacy and transborder flows of computer data" states that data should be
  235. protected against "loss or unauthorized access, destruction, use, modification,
  236. or disclosure"[2].  An example of the requirements for the control of assets is
  237. the US Foreign Corrupt Practices Act of 1977.
  238.  
  239. In summary, if the cost of damage or disclosure of the data is more than the
  240. cost of using a security measure such as SFS (where cost is measured not only
  241. in monetary terms but also in terms of damage to business and loss of privacy)
  242. then the data should be regarded as being sensitive and should have adequate
  243. security controls to prevent or lessen the potential loss.
  244.  
  245. Footnote [1]: Although inadvertent modification by authorized users is still
  246.               possible, the risk from deliberate compromise of the data is
  247.               greatly reduced.
  248.  
  249. Footnote [2]: These guidelines are discussed in more detail in "Computer
  250.               Networks", Volume 5, No.2 (April 1981).
  251.  
  252.  
  253. Terminology
  254. -----------
  255.  
  256. Throughout this document a number of specialised terms are used to describe the
  257. operation of the SFS encryption software.  This section provides a brief
  258. explanation of the terms used.  Experienced users can skip this material and go
  259. directly to the "Loading the SFS Driver" section below.
  260.  
  261.   Disk volume:
  262.  
  263.     An individual logical disk drive, volume, partition, or filesystem.  A
  264.     single physical hard disk can (and usually does) contain more than one
  265.     volume on it.  Under DOS, each of these volumes is assigned its own drive
  266.     letter and appears as a separate drive, even though they all reside on the
  267.     same physical hard disk.  Thus a system might have a single 128MB hard disk
  268.     which contains four 32MB volumes accessed by the drive letters C:, D:, E:,
  269.     and F:.
  270.  
  271.     This system is rather confusing and dates back fifteen to twenty years. SFS
  272.     refers to these volumes by name rather than an arbitrary letter, so that
  273.     the volumes might be called "Encrypted data", "Personal correspondence", or
  274.     "Accounts receivable, March 1993".  Unfortunately once SFS has set up the
  275.     volume for DOS to access, it's back to the old F: to identify your data.
  276.  
  277.   Password, key:
  278.  
  279.     The password or encryption key is used to protect the data on an encrypted
  280.     volume.  Despite its name, a password can (and should) be more than just a
  281.     single word.  The SFS software will accept up to 100 characters of
  282.     password, so that perhaps the term "passphrase" would be more appropriate.
  283.  
  284.     For maximum security, each volume should be protected by its own unique
  285.     password.  The SFS software takes the password for a volume, adds extra
  286.     keying information to it, and converts the result into an encryption key
  287.     which is used to encrypt and decrypt data on a given volume.  Great care
  288.     should be taken in the choice of passwords and in keeping them secret. More
  289.     details on this are given in the section "The Care and Feeding of
  290.     Passwords" below.
  291.  
  292.   Device driver:
  293.  
  294.     A device driver is a special piece of software which is used by the
  295.     operating system to access hardware which it wasn't designed to.  Unless
  296.     the device driver is loaded, the operating system generally won't recognise
  297.     that a piece of hardware even exists.  Even the computer's monitor,
  298.     keyboard, and disk drives are accessed through device drivers, although
  299.     their presence is hidden by the operating system.
  300.  
  301.     An example of a visible device driver is the one used to handle a mouse.
  302.     Networked disk drives may be accessed through a device driver[1].  RAM
  303.     disks are implemented as device drivers.  CDROM drives are handled via a
  304.     device driver.  Finally, encrypted SFS volumes are accessed through a
  305.     device driver.
  306.  
  307.   Mount point:
  308.  
  309.     The locations provided by the SFS driver for mounting encrypted volumes -
  310.     in other words the number of encrypted volumes which can be accessed by the
  311.     driver at any one time.  By default the driver provides one mount point,
  312.     which means one encrypted volume can be accessed through it at any given
  313.     time.  The exact number of mount points can be specified when the SFS
  314.     driver is loaded.
  315.  
  316. Footnote [1]: Actually they use a specialised kind of driver called a network
  317.               redirector.
  318.  
  319.  
  320. Quick Start
  321. -----------
  322.  
  323. This section contains a condensed version of the next three sections and allows
  324. a quick start for SFS.  Although it is recommended that the full text be read,
  325. it should be possible to install and use a minimal SFS setup using only the
  326. quick-start information.
  327.  
  328. Initially, the SFS driver must be loaded by adding an entry for it to the
  329. CONFIG.SYS file.  For example if the SFS.SYS driver was located in the DOS
  330. directory on drive C: the following line should be added to the CONFIG.SYS
  331. file:
  332.  
  333.   DEVICE=C:\DOS\SFS.SYS
  334.  
  335. Alternatively, the DEVICEHIGH option can be used to load the driver into high
  336. memory under those versions of DOS which support it.  The system should now be
  337. rebooted to make sure the driver is installed.
  338.  
  339. The use of the SFS driver is covered in more detail in the sections "Loading
  340. the SFS Driver" and "Advanced SFS Driver Options" below.
  341.  
  342. The encrypted volume can be created with the "mksfs" program.  This is run with
  343. the letter of the drive to encrypt and the name of the encrypted volume
  344. preceded by the "vol=" option as arguments.  For example to encrypt the E:
  345. drive to create a volume with the name "Encrypted disk", the command would be:
  346.  
  347.   mksfs "vol=Encrypted volume" e:
  348.  
  349. Note that that "vol=..." option is quoted, as the volume name contains a space.
  350. Volume names without a space don't need to be quoted.
  351.  
  352. mksfs will confirm that the given drive is indeed the one to be encrypted, and
  353. then ask for an encryption password of between 10 and 100 characters.  After
  354. asking for the password a second time to confirm it, it will encrypt the drive.
  355. This will take a few minutes, and the program will display a progress bar as
  356. the encryption takes place.
  357.  
  358. There are a great many options and special safety checks built into mksfs to
  359. ensure no data is accidentally destroyed, and it is recommended that the
  360. section "Creating an SFS Volume" be at least glanced through to provide an
  361. overview of the functioning of mksfs before it is run.
  362.  
  363. Once the encrypted volume has been created and the SFS driver loaded, it can be
  364. mounted with the "mountsfs" utility.  Mounting a volume makes it available to
  365. DOS as a normal disk volume, with all encryption being done transparently by
  366. the SFS driver. Like mksfs, mountsfs must be told the encrypted volume's name
  367. in order to access it.  The full name doesn't need to be used, mountsfs will
  368. accept any part of the name in upper or lower case.  Using the name from the
  369. previous example, the command to mount the volume would be:
  370.  
  371.   mountsfs vol=encrypt
  372.  
  373. mountsfs will match the partial name "encrypt" with the full volume name
  374. "Encrypted volume", ask for the encryption password for the volume, and mount
  375. it.  The volume will now be accessible as a normal DOS drive.
  376.  
  377. More details on the use of mountsfs are contained in the section "Mounting an
  378. SFS Volume" below.  Other methods for mounting volumes are given in the section
  379. "Advanced SFS Driver Options" below.
  380.  
  381.  
  382. Loading the SFS Driver
  383. ----------------------
  384.  
  385. The SFS device driver SFS.SYS or SFS486.SYS can be loaded in the usual manner
  386. by specifying it in the CONFIG.SYS file:
  387.  
  388.   DEVICE=[drive][path]SFS.SYS [SILENT] [UNITS=n] [NOXMS] [PROMPT=xxxx]
  389.                               [READONLY] [READWRITE] [FIXED] [REMOVABLE]
  390.                               [ECHO] [FAST=n] [HOTKEY=xxxx] [TIMEOUT=nn]
  391.                               [MOUNT=nnnn]
  392.  
  393. It can also be loaded high under those versions of DOS which support this with:
  394.  
  395.   DEVICEHIGH=[drive][path]SFS.SYS [SILENT] [UNITS=n] [NOXMS] [PROMPT=xxxx]
  396.                                   [READONLY] [READWRITE] [FIXED] [REMOVABLE]
  397.                                   [ECHO] [FAST=n] [HOTKEY=xxxx] [TIMEOUT=nn]
  398.                                   [MOUNT=nnnn]
  399.  
  400. The SFS486.SYS driver is loaded the same way.  This driver contains code for
  401. '486 and higher processors, and is slightly smaller and a few percent faster
  402. than the equivalent '386 version.
  403.  
  404. The arguments to SFS are not case-sensitive, and can be given in upper or lower
  405. case.  They may also be optionally preceded by a '/' for compatibilty with
  406. older types of software.  For example if your copy of the SFS.SYS driver was
  407. located in the DOS directory on drive C: you would add the following line to
  408. your CONFIG.SYS file:
  409.  
  410.   DEVICE=C:\DOS\SFS.SYS
  411.  
  412. The driver will only work on systems with an 80386 or higher processor.  This
  413. is because the en/decryption code (over 10,000 lines of assembly language) has
  414. to have a 32-bit processor to run on.  Virtually all recent PC's fulfil these
  415. requirements, and a 16-bit version would both be much slower and require about
  416. three times as much code space to run in[1].
  417.  
  418. If an attempt is made to load SFS.SYS on a machine which doesn't have a 32-bit
  419. CPU, the message:
  420.  
  421.   Error: Processor must be 386 or higher
  422.  
  423. will be displayed and SFS will de-install itself.
  424.  
  425. The driver currently recognises thirteen options, ECHO, FAST, FIXED, HOTKEY,
  426. MOUNT, NOXMS, PROMPT, READONLY, READWRITE, REMOVABLE, SILENT, TIMEOUT, and
  427. UNITS:
  428.  
  429.   The ECHO option is used in conjunction with the MOUNT option to echo the
  430.   password to the screen when asking for the password for the SFS volume to be
  431.   mounted, and is explained in more detail in the section "Advanced SFS Driver
  432.   Options" below.
  433.  
  434.   The FAST option is used in conjunction with the MOUNT option to enable
  435.   various high-speed direct disk access modes in the SFS driver.  These can
  436.   significantly affect the overall performance of the driver, and are discussed
  437.   in more detail in the section "Advanced SFS Driver Options" below.
  438.  
  439.   The FIXED option is used in conjunction with the MOUNT option to indicate
  440.   that a volume mounted at system startup is to be kept mounted until the
  441.   system is turned off or reset, as opposed to the normal behaviour of allowing
  442.   it to be unmounted at any point.  This is discussed in more detail in the
  443.   section "Advanced SFS Driver Options" below.
  444.  
  445.   The HOTKEY option is used to specify the quick-unmount hotkey which can be
  446.   used to instantly unmount all currently mounted SFS volumes, and is explained
  447.   in more detail in the sections "Mounting an SFS Volume" and "Advanced SFS
  448.   Driver Options" below.
  449.  
  450.   The MOUNT option is used to mount SFS volumes at system startup, and is
  451.   explained in more detail in the section "Advanced SFS Driver Options" below.
  452.   The older AUTOMOUNT form of this command is still supported by this version
  453.   of SFS, but will be discontinued in future versions.
  454.  
  455.   The NOXMS option is used to disable SFS buffering data in extended memory.
  456.   By default SFS will allocate a 64K write buffer to speed up disk writes.  If
  457.   no extended memory is available or if the NOXMS option is used, SFS will
  458.   print:
  459.  
  460.     Warning: No XMS buffers available, slow writes will be used
  461.  
  462.   The driver will then switch to using slow disk writes which are about half as
  463.   fast as normal reads and writes.  These are necessary to fix buffering
  464.   problems in MSDOS 6.x and some disk utilities.  If an extended memory buffer
  465.   is used, the slow writes aren't necessary.
  466.  
  467.   The PROMPT option is used in conjunction with the MOUNT option to display a
  468.   user-defined prompt when asking for the password for the SFS volume to be
  469.   mounted, and is explained in more detail in the section "Advanced SFS Driver
  470.   Options" below.
  471.  
  472.   The READONLY and READWRITE options are used in conjunction with the MOUNT
  473.   option to disable write access to the volumes being mounted.  The READONLY
  474.   option disables write access to all following mounted volumes; the READWRITE
  475.   option enables write access to all following mounted volumes.  The default
  476.   setting is to allow read and write access to all volumes.  More details on
  477.   read-only access to SFS volumes is given in the section "Mounting an SFS
  478.   Volume" below.
  479.  
  480.   The REMOVABLE option is used to undo the effects of the FIXED option which is
  481.   explained above.
  482.  
  483.   The SILENT option can be used to suppress the printing of the start-up
  484.   message.
  485.  
  486.   The TIMEOUT option is used to specify the time in minutes after which SFS
  487.   volumes are automatically unmounted if they haven't been accessed during that
  488.   time, and is explained in more detail in the sections "Mounting an SFS
  489.   Volume" and "Advanced SFS Driver Options" below.
  490.  
  491.   The UNITS=n option specifies the number of mount points (or number of disk
  492.   volumes) the driver will provide, where `n' is the number of units and can
  493.   range from 1 to 5.  Each drive mount point requires 384 bytes of extra memory
  494.   storage.  By default, the driver allocates storage for one mount point.
  495.  
  496. As an example, to suppress the printing of the start-up message and to specify
  497. that the driver should handle up to three encrypted volumes, the previously
  498. given example for loading the driver would be changed to:
  499.  
  500.   DEVICE=C:\DOS\SFS.SYS SILENT UNITS=3
  501.  
  502. The number of mount points can range from 1 to 5.  If a number outside this
  503. range is specified, the message:
  504.  
  505.   Error: Invalid number of units specified
  506.  
  507. will be displayed and SFS will de-install itself.  Finally, if an invalid
  508. option is given (such as a misspelled or badly-formatted parameter) SFS will
  509. again de-install itself after displaying:
  510.  
  511.   Error: Unknown parameter specified
  512.  
  513. All the remaining driver options are covered in the section "Advanced SFS
  514. Driver Options" below.
  515.  
  516. If the driver installs successfully and unless the SILENT option is used it
  517. will, after displaying a general message showing that it has been installed,
  518. indicate which which drive will be used as the encrypted one.  For example if
  519. the encrypted drive is made available as E:, the message would be:
  520.  
  521.   Encrypted volume will be mounted as drive E:
  522.  
  523. This indicates that once an encrypted volume is mounted, DOS will access it as
  524. drive E:  If more than one mount point is specified, the range of drives which
  525. will be made available is shown, so that if the option UNITS=3 were used the
  526. message would be:
  527.  
  528.   Encrypted volumes will be mounted as drives E: - G:
  529.  
  530. When installed SFS consumes around 7.5K of memory, most of which is encryption
  531. code.
  532.  
  533. Footnote [1]: There have been calls for 286 versions of SFS from countries in
  534.               which 386+ machines are still difficult to obtain.  There may
  535.               eventually be a 16-bit version, although at the current rate by
  536.               the time it's written everyone will be using Pentiums anyway.
  537.  
  538.  
  539. Creating an SFS Volume
  540. ----------------------
  541.  
  542. Before SFS can use an encrypted volume, it must be converted from a normal DOS
  543. volume to an encrypted SFS one.  The program which performs this task is mksfs,
  544. (Make Secure Filesystem) and is very loosely patterned after the Unix mkfs
  545. utility.  mksfs takes a standard DOS volume (which may be either freshly
  546. formatted or may already contain files) and turns in into an encrypted SFS
  547. volume.  The encryption process is non-destructive, so in general no data will
  548. be lost.  The only case in which a data loss could occur is if there is a power
  549. cut while the volume is being encrypted (this means that power to the system is
  550. removed as the disk is being written to, which would cause problems under
  551. virtually any software).  If the data being encrypted is extremely valuable or
  552. there is a risk of a power cut occurring, the volume should be backed up
  553. completely before being encrypted.  This should only be necessary in
  554. exceptional circumstances.
  555.  
  556. If used on a fixed disk, mksfs will encrypt an entire disk partition rather
  557. than individual files.  This is necessary because an SFS partition may contain
  558. a DOS filesystem, or an OS/2 one, or a HPFS one, or an NTFS one, or any one of
  559. a dozen other possible filesystems.  However, many people have only a single
  560. large partition on their hard drive which is used entirely for DOS, which would
  561. require a complete backup of the partition before the FDISK utility can be used
  562. to create two smaller partitions, followed by a restore of the backup to one of
  563. the new partitions.  This problem can be avoided by using one of several
  564. programs which will nondestructively split an existing partition into two
  565. smaller partitions, one of which can be used as an SFS volume[1].
  566.  
  567. If the hardware or software setup you are using is somewhat unusual (for
  568. example you have drives which are compressed with DoubleSpace, Stacker, or JAM,
  569. or you have unusual drive hardware which needs special software like SpeedStor
  570. to manage it), you should read the section "Incompatibilities" below.  In
  571. addition, mksfs may, during normal operation, trigger a number of virus
  572. detectors which monitor access to certain critical disk and memory areas which
  573. software would not normally access.  Finally, mksfs will check whether it is
  574. being run under Quarterdeck's DesqView or Microsoft Windows, as it should in
  575. general not be run while DesqView, Windows, or some other multitasking software
  576. is running.  Since mksfs takes an entire disk volume and encrypts it sector by
  577. sector, any other software which tries to simultaneously access the volume
  578. while mksfs is running will come to grief.  If mksfs detects that it is being
  579. run under either DesqView or Windows, it will display a warning message with an
  580. option to quit and re-run it from DOS only.  Only if there is no chance that
  581. any other program will access the disk volume being encrypted is it safe to run
  582. mksfs under multitasking software.
  583.  
  584. The mksfs program is run in the following manner:
  585.  
  586.   mksfs [-c] [-o] [-t] [-e] [serial=<serial number>] [multiuser]
  587.         [fastaccess=<mode>] [timeout=<timeout>] [wipe]
  588.         [vol=<volume name>] <drive>
  589.  
  590. Since all arguments are named, they can be given in any order.  The order shown
  591. here is merely an example.
  592.  
  593. The -c and -t options are present to allow integrity checks on the SFS
  594. encryption code and the operation of mksfs itself, and are covered in more
  595. detail in the sections "Incompatibilities" and "Security Analysis"
  596. respectively.
  597.  
  598. The drive specifies the DOS drive letter for which the SFS volume will be
  599. created.  For example to create an SFS volume on the disk currently in the A:
  600. drive the command would be:
  601.  
  602.   mksfs a:
  603.  
  604. It is recommended that each SFS volume be given a unique name for
  605. identification purposes.  Although it is possible to create an unnamed (or
  606. anonymous) volume, this practice is strongly discouraged for fixed disks which
  607. may contain multiple SFS volumes.  If the volumes are anonymous then the user
  608. has no easy way of informing SFS which one it should be accessing apart from
  609. using the mount option with the SFS driver, which is explained in more detail
  610. in the section "Advanced SFS Driver Options" below.  mksfs will check for the
  611. creation of anonymous volumes on fixed disks and display a warning if this
  612. occurs.
  613.  
  614. The volume name can be specified with the `vol=' option.  For example if the
  615. volume name "Secure disk volume" was to be created on drive D: then the command
  616. would be:
  617.  
  618.   mksfs "vol=Secure disk volume" d:
  619.  
  620. Note that the volume name, which in this case contains spaces, has been quoted.
  621. This is necessary since DOS will break apart the name into separate words if it
  622. contains spaces.  If the name is a single word, no quoting is necessary.
  623.  
  624. The volume serial number can be specified with the `serial=' option.  If no
  625. serial number is provided, mksfs will generate one itself.  In normal usage
  626. there is no need for the user to specify a volume serial number, but the option
  627. has been provided in case it is needed.  If a serial number is specified, it
  628. should be a unique value since SFS may use it to distinguish between different
  629. volumes. If mksfs is left to chose the serial number it will automagically use
  630. a unique value.  The serial number is independant of the volume mount
  631. identifier, which is explained in the section "Advanced SFS Driver Options"
  632. below.  This serial number is not the same as the serial number which some
  633. operating systems may write to a disk for their own use, and is used only by
  634. SFS to identify volumes.
  635.  
  636. A special option for removable disks only is the `-o' option.  This is
  637. necessary because some (mostly extinct) variants of DOS treat removable disks
  638. in a peculiar manner.  If mksfs cannot determine the disk format due to the
  639. disk having been created with a strange DOS version, it will exit with the
  640. error message[2]:
  641.  
  642.   Error: Disk information reports unusual disk format, won't process disk.
  643.          Use `-o' option to override this check.
  644.  
  645. If mksfs is re-run, this time with the `-o' option, it will perform a check on
  646. secondary format information stored on the disk.  If the information checks
  647. out, it will report (assuming the disk being checked is a 1.2 MB 5 1/4" disk):
  648.  
  649.   Warning: Disk information reports unusual disk format, performing check on
  650.            secondary information...
  651.  
  652.            Disk appears to be in 1.2 MB DSHD format
  653.  
  654. If mksfs still can't be sure of the disk format, it will exit with an error
  655. message.  Otherwise it will ask:
  656.  
  657.            Are you sure you want to process the disk in this format [y/n]
  658.  
  659. If the given disk format is correct then a response of 'Y' will continue, while
  660. a response of 'N' will exit the program.
  661.  
  662. If multiple-user access to the volume is required, the `multiuser' option
  663. should be set to enable this.  This option records extra information which may
  664. later be edited with the adminsfs program to allow other users access to the
  665. volume.  More details on multiuser SFS volumes are given in the section
  666. "Sharing SFS Volumes Between Multiple Users" below.
  667.  
  668. If the `multiuser' option is used, mksfs will warn:
  669.  
  670.   Warning: You have specified that access to the volume for multiple users
  671.            be enabled.  Are you sure you want to do this [y/n]
  672.  
  673. At this point a response of 'Y' will continue and a response of 'N' will exit
  674. the program.
  675.  
  676. The SFS driver can automatically unmount volumes if they have not been accessed
  677. for a certain amount of time.  This option is useful if there is a chance that
  678. an interruption may call you away from a system with mounted SFS volumes
  679. allowing others access to the encrypted data, or can simply be used as a
  680. general safety precaution to automatically unmount the volumes after a sizeable
  681. period of inactivity (this option is unavailable under Windows - see the
  682. section "Incompatibilities" below).  However, care should be taken to allow a
  683. large enough safety margin for the timeout, as having a volume take itself
  684. offline five seconds before work is saved to it can be annoying.
  685.  
  686. The easiest way to set am auto-unmount timeout is to associate a timeout value
  687. with the volume when it is created with mksfs, although this setting can be
  688. added or an existing setting modified at a later point with the chsfs program
  689. (this is explained in more detail in the section "Changing the Characteristics
  690. of an SFS Volume" below).  When the volume is mounted, the setting of the
  691. timeout is automatically taken care of by the SFS software.
  692.  
  693. The timeout value in minutes is specified with the use of the `timeout='
  694. option.  For example to create the volume used in the previous example with an
  695. auto-unmount timeout of half an hour, the command would be:
  696.  
  697.   mksfs "vol=Secure disk volume" timeout=30 d:
  698.  
  699. The drive on which the volume is being created may be able to handle a
  700. different, faster access mode than the one normally used.  SFS supports a
  701. number of these faster access modes, which can be tested for using the `mksfs
  702. -c' option which is explained in more detail in the section "Incompatibilities"
  703. below.  If the tests are successful, mksfs will report the fast access mode
  704. which can be used to access the drive.  This mode can be specified with the
  705. `fastaccess=' option when a new volume is created, and all accesses to the
  706. volume will then use the alternative, faster method instead of the default,
  707. somewhat slower one.  Alternatively, use of the faster access mode can be
  708. enabled at a later date with the `chsfs newaccess=' command, which is explained
  709. in more detail in the section "Changing the Characteristics of an SFS Volume"
  710. below.
  711.  
  712. For example if the `mksfs -c' test reported that a fast access mode of 1 was
  713. possible, then the previous volume creation example could be changed to:
  714.  
  715.     mksfs "vol=Secure disk volume" fastaccess=1
  716.  
  717. When mounted, all accesses to this volume would then be made with the specified
  718. faster access mode.
  719.  
  720. If the volume being converted already contains files, the encryption process
  721. will overwrite the original files with their encrypted equivalent.  However
  722. this may not be enough to safely wipe all traces of the original data.  In
  723. order to provide a more thorough means of overwriting it, the `wipe' option may
  724. be used to force mksfs to perform multiple overwrite passes over the original
  725. data.  The encrypted data will not be destroyed by performing these wipes, they
  726. simply ensure that the original unencrypted data is removed with a high degree
  727. of certainty.
  728.  
  729. In total, 30 separate overwrite passes, which have been selected to provide the
  730. best possible chances of destroying data for various disk encoding schemes,
  731. will be used.  The exact details of the overwrite process, and information on
  732. data deletion in general, is given in the section "Deletion of SFS Volumes"
  733. below.  This process, while very thorough, is *extremely slow*.  If mksfs is
  734. run on large volumes with the `wipe' option enabled, the encryption with
  735. overwrite option may take hours to run to completion.  It is recommended that
  736. this option only be used if the data to be encrypted is of a highly sensitive
  737. nature.  Use of this option is unnecessary on an unused, freshly-formatted disk
  738. which has never contained any data.
  739.  
  740. The program will now check to see whether the chosen volume name and serial
  741. number conflict with the name and serial number of an existing SFS volume.  If
  742. both the volume name and serial number conflict, this will make future
  743. manipulation of the volume difficult as there is no real way to uniquely
  744. identify it, and mksfs will exit with the error message:
  745.  
  746.   Error: An SFS volume with the given name and serial number already exists.
  747.          Either a new name or serial number should be chosen, or no serial
  748.          number at all specified, in which case mksfs will chose a unique
  749.          serial number for the new volume.
  750.  
  751. An alternative possibility, if the conflicting volume is on removable media, is
  752. to temporarily remove the disk from the drive until mksfs has been run.
  753. However this still creates the problem of accessing the volume in the future.
  754. A much easier solution is to either chose unique volume names or to let mksfs
  755. chose the volume serial number - it will always chose a number which doesn't
  756. conflict with an existing volume serial number.
  757.  
  758. If only the volume name clashes, mksfs will warn:
  759.  
  760.   Warning: An SFS volume with the given name already exists.  Are you sure
  761.            you want to create a new volume with the same name [y/n]
  762.  
  763. At this point a response of 'Y' will continue and a response of 'N' will exit
  764. the program.
  765.  
  766. If an anonymous volume is to be created on a fixed disk, mksfs will warn:
  767.  
  768.     Warning: You have not specified a name for the volume to be created.
  769.              This may make future manipulation of the volume difficult.  Are
  770.              you sure you want to create an anonymous volume [y/n]
  771.  
  772. At this point a response of 'Y' will continue and a response of 'N' will exit
  773. the program.
  774.  
  775. If it's really necessary, these checks can be overridden by using chsfs to
  776. change the volume's characteristics after it has been created.  Unlike mksfs,
  777. chsfs is not particular about what the volume name is set to, as it makes the
  778. (possibly incorrect) assumption that the user knows what they are doing.
  779.  
  780. Once the preliminary processing has been done, mksfs will, in the case of a
  781. fixed disk, scan it for the volume which is to be converted into an SFS one.
  782. Along the way it will perform various checks on the volume to make sure the
  783. volume is accessible, is a standard DOS volume, is not marked as being bootable
  784. (booting off an encrypted volume is somewhat difficult), is not the one
  785. currently in use, and can be converted.  Note that the bootability check may
  786. not be completely foolproof, as some disk managers[3] perform strange tricks
  787. with bootable volumes to handle multiple operating systems on the same disk.
  788.  
  789. mksfs performs an additional check if the volume specified for encryption is
  790. the C: drive, which is usually the primary DOS drive and which should under
  791. normal circumstances never be encrypted.  If an attempt to encrypt the C: drive
  792. is made, mksfs will prompt:
  793.  
  794.   Warning: You have chosen to encrypt the C: drive which is usually the
  795.            primary DOS drive and shouldn't be encrypted.  Are you sure you
  796.            want to do this [y/n]
  797.  
  798. At this point a response of 'Y' will continue and a response of 'N' will exit
  799. the program.
  800.  
  801. If the various checks succeed, it will display an informational message giving
  802. details on the volume to be created.  An example of the information displayed
  803. for a fixed drive might be:
  804.  
  805.   Volume `Encrypted disk' will be created on fixed drive D:
  806.   This drive has a capacity of 75.2 MB and is labelled `Accounting'
  807.   Are you sure you want to encrypt this volume [y/n]
  808.  
  809. If the volume is the one to be converted, a response of 'Y' will proceed with
  810. the creation of the SFS volume, and a response of 'N' will abort the operation.
  811.  
  812. It is vitally important that the information printed by mksfs is checked before
  813. a `yes' response is given.  Due to the vast array of unusual disk systems,
  814. networked drives, compressed disks, device drivers, and other strangeness, it
  815. could be that mksfs and DOS disagree on which volume is to be encrypted.  In
  816. addition it is very easy to specify the wrong drive accidentally when running
  817. mksfs.  Although this situation will hopefully never occur, it is nevertheless
  818. a good idea to stop for a second and make absolutely certain that the volume
  819. being encrypted is the one which should be encrypted.  Treat mksfs the same way
  820. you would treat the DOS `format' command.
  821.  
  822. For a floppy drive the information is slightly different:
  823.  
  824.   Volume `Secure backup' will be created on 1.44MB disk in drive B:
  825.  
  826. No yes/no prompt is given for removable disks since they contain far less
  827. information than fixed disk volumes, and will typically be freshly-formatted,
  828. blank diskettes.  This allows the quick bulk encryption of quantities of
  829. diskettes without having to answer the same question for each disk.  If
  830. necessary the encryption operation can be aborted at the password-entry stage.
  831.  
  832. mksfs will now check the volume to be encrypted for bad sectors.  Most newer
  833. fixed disks will automatically map out bad sectors (if there are any) and use
  834. sectors from spare space on the disk instead (all this is invisible to the
  835. system software and is done internally by the drive itself).  However older
  836. drives may still explicitly report bad sectors.  The presence of bad sectors on
  837. a disk may also indicate a virus infection, or may be used by certain kinds of
  838. (hopefully extinct) copy-protection schemes.  If mksfs finds any of these, it
  839. will print an advisory message:
  840.  
  841.   Warning: This disk contains bad sectors which won't be encrypted by SFS.
  842.  
  843. If the disk being encrypted is a floppy disk, mksfs will print a message
  844. recommending that another disk be used instead.  If the data is valuable enough
  845. to need encryption, then it should really be stored on an error-free medium
  846. rather than its loss risked with defective floppy disks:
  847.  
  848.   Warning: This disk contains bad sectors.  Use of damaged disks is not
  849.            recommended as recovery of encrypted data could be difficult if
  850.            further bad sectors develop.  Are you sure you want to encrypt
  851.            this disk [y/n]
  852.  
  853. At this point a response of 'Y' will continue and a response of 'N' will exit
  854. the program.  SFS will encrypt the disk, but will skip any sectors marked as
  855. being defective.  A similar message will be printed if any bad sectors are
  856. found during the encryption process.  Note that if further bad sectors develop
  857. on the floppy disk, recovery of the data stored in the bad sectors will be
  858. difficult.  It is strongly recommended that only error-free floppy disks be
  859. used with SFS[4].
  860.  
  861. Once the disk checks have been completed, mksfs will ask for a password to use
  862. when encrypting the volume.  This password can range in length from 10 to 100
  863. characters, and should be made up of a complete phrase or sentence rather than
  864. just a single word (mksfs will complain if it thinks the password is of an
  865. insecure form and request that another one be used).  More details on choosing
  866. a password are given in the section "The Care and Feeding of Password" below.
  867.  
  868. When asking for the password, mksfs will prompt:
  869.  
  870.   Please enter password (10...100 characters), [ESC] to quit:
  871.  
  872. At this point a password in the given length range can be entered.  For
  873. security reasons the password is not echoed to the screen.  Any typing errors
  874. when entering the password can be corrected with the backspace key.  The Esc
  875. key can be used to quit.  The software will check for a password longer than
  876. the maximum of 100 characters or an attempt to backspace past the start of the
  877. password, and beep a warning when either of these conditions occur.
  878.  
  879. Once the password has been entered, mksfs will again prompt:
  880.  
  881.   Please reenter password to confirm, [ESC] to quit:
  882.  
  883. This confirmation is necessary to eliminate any problems with hitting an
  884. incorrect key when entering the password the first time.  Note that every
  885. single letter, space, and punctuation mark in the password is critical.  Making
  886. a single mistake (getting a letter mixed up, typing a letter in upper case
  887. instead of lower case, or missing a punctuation mark) will completely change
  888. the encryption key.  For this reason, mksfs performs a double-check on the
  889. password to ensure it really is the correct one.
  890.  
  891. Once the password has been entered, there is a brief delay while mksfs performs
  892. the complex processing needed to turn it into a key suitable for the encryption
  893. system.  When this has been completed, mksfs will begin converting the disk.
  894. As it processes the volume, it prints a progress bar going from 0% complete to
  895. 100% complete.  The conversion process will take a few minutes on most disks,
  896. and is somewhat slower than a standard disk formatting procedure which only
  897. writes a very small amount of data to the start of the disk and scans for bad
  898. sectors, whereas mksfs has to read, encrypt, and write the entire disk volume.
  899.  
  900. As the conversion progresses, the progress bar will gradually fill up until it
  901. shows that the conversion is complete.  Once this has finished, mksfs will exit
  902. with the message:
  903.  
  904.   Encrypted volume created.  You can now mount it with the `mountsfs' command.
  905.  
  906. If the volume is created on a removable disk, mksfs will ask:
  907.  
  908.   Do you wish to encrypt another disk [y/n]
  909.  
  910. At this point a response of 'Y' will continue and a response of 'N' will exit
  911. the program.  If the 'Y' response is chosen, mksfs will prompt:
  912.  
  913.   Please insert a new disk in the drive and press a key when ready
  914.  
  915. and then repeat the disk encryption cycle.
  916.  
  917. If the volume is created on a fixed disk, DOS will still think the volume it
  918. was created on is a DOS one rather than an encrypted SFS one.  It is strongly
  919. recommended that you reboot your machine at this point to clear any memories of
  920. the old volume from the system, as any attempt by DOS to access the encrypted
  921. volume as a normal DOS volume will cause it to become very confused.  As a
  922. reminder, mksfs will display the message:
  923.  
  924.   Encrypted volume created.  You can now mount it with the `mountsfs' command
  925.   or mount it at system startup with the option `MOUNT=<mount id>' in the
  926.   CONFIG.SYS entry for the SFS driver.
  927.  
  928.   You may wish to reboot your machine to update the status of the SFS volume,
  929.   which is now inaccessible from DOS.
  930.  
  931. The `<mount id>' will be the ID needed to mount the encrypted volume when the
  932. machine is booted.  More details on mounting volumes are given in the section
  933. "Advanced SFS Driver Options" below.
  934.  
  935. Footnote [1]: One of these is FIPS, currently at version 1.1 and available as
  936.               fips11.zip from either sunsite.unc.edu in the directory
  937.               /pub/Linux/system/Install, tsx-11.mit.edu in the directory
  938.               /pub/linux/dos_utils, garbo.uwasa.fi and all mirror sites in the
  939.               directory /pc/diskutil, or oak.oakland.edu and all mirror sites
  940.               in the directory simtel/msdos/diskutil.
  941.  
  942. Footnote [2]: Certain boot sector viruses also change the information needed by
  943.               mksfs, so mksfs printing this message may be an indication of a
  944.               viral infection.
  945.  
  946. Footnote [3]: Among them the OS/2 and Windows NT boot managers.
  947.  
  948. Footnote [4]: Although SFS has been written so that if any data does become
  949.               corrupted, only the corrupted sector and no others will be lost,
  950.               if data which is important to the operating system (such as a
  951.               directory or a file allocation table) is lost, the damage may
  952.               (just as it would for a normal non-encrypted disk) be more
  953.               significant.  In this case any standard disk-recovery program can
  954.               be used to make repairs, just as with a normal DOS disk.
  955.  
  956.  
  957. Mounting an SFS Volume
  958. ----------------------
  959.  
  960. When the operating system first starts, it finds all disk volumes it can
  961. recognise and automatically makes them available as different logical drive
  962. letters.  However it can't do anything with encrypted SFS volumes, and so they
  963. are effectively invisible to it.  In order to make them visible, they must be
  964. mounted using the mountsfs program.  Operating systems such as Unix mount
  965. filesystems in this manner (in fact the general feel of mountsfs is vaguely
  966. like the Unix filesystem mount utility).
  967.  
  968. When the operating system mounts a disk volume, it uses the rather primitive
  969. mechanism of assigning a letter of the alphabet to it and referring to the
  970. drive by that letter.  SFS, on the other hand, refers to the volume by the name
  971. given when the volume is created with mksfs rather than some arbitrary letter
  972. (although volumes in removable drives can optionally be referred to by the
  973. driver letter).  Therefore if the encrypted volume was named "Secure disk
  974. volume", mountsfs would mount "Secure disk volume" rather than, say, "E:".  A
  975. fixed disk can contain multiple encrypted volumes, mountsfs will chose the
  976. appropriate one based on the volume name.  When searching for volumes to mount,
  977. all fixed disks are checked before any removable disks are checked, so that a
  978. volume with a given name on a fixed disk would override a volume of the same
  979. name on a floppy disk.
  980.  
  981. Once the volume is mounted, DOS will still refer to it by a drive letter as
  982. usual (there's only so much the SFS software can do), so that "Secure disk
  983. volume" will, after being mounted with SFS, appear as just another DOS drive,
  984. for example E:.  If necessary the drive letter which SFS uses can be swapped
  985. through the use of the JSWAP utility which comes as part of the JAM disk
  986. compression software.  The use of JSWAP rather than the DOS commands ASSIGN,
  987. SUBST, and JOIN, or other third-party utilities such as the one provided with
  988. Stacker are recommended, as JSWAP provides the safest means of swapping drive
  989. letters.  The JAM disk compression software is discussed in more detail in the
  990. section "Creating Compressed SFS Volumes" below.
  991.  
  992. With removable disks it may sometimes be desirable to refer to the volume by
  993. the drive it is in rather than the volume name.  In this case the drive can be
  994. specified by the usual letters A: or B:, and the actual volume name will be
  995. ignored.  As before, once the disk is mounted with SFS, the volume will appear
  996. as another DOS drive, for example E:.  If the disk is accessed as E:, the SFS
  997. driver will encrypt and decrypt data being written and read.  If the disk is
  998. accessed as A: or B:, DOS will either display garbage or report a general
  999. failure error as it doesn't understand the encrypted disk. The A: or B: drive
  1000. letters can still be used to read normal DOS disks, however.  In order to
  1001. prevent accidental overwriting of disks, the SFS driver will automatically
  1002. unmount a volume if it detects that a disk change has occurred since the last
  1003. time it accessed the drive.
  1004.  
  1005. The mountsfs program is run in the following manner:
  1006.  
  1007.   mountsfs [+r] [+rw] [status] [unmount] [info] [information]
  1008.            [hotkey=<Ctrl>-<Alt>-<LeftShift>-<RightShift>-<letter> or none]
  1009.            [timeout=<timeout>] [user=<user name>] [userfile=<user file>]
  1010.            [vol=<volume name>] [<drive>]
  1011.  
  1012. Since all arguments are named, they can be given in any order.  The order shown
  1013. here is merely an example.
  1014.  
  1015. When mountsfs starts, it first performs a number of checks on the internal
  1016. status of the SFS driver.  If it can't find the driver, it will exit with the
  1017. error message:
  1018.  
  1019.     Error: Cannot find SFS driver
  1020.  
  1021. This is due to the driver not being loaded, either because it is not being
  1022. specified in the CONFIG.SYS file, or because there was some error when it was
  1023. loaded and it de-installed itself.  More information on this is given in the
  1024. section "Loading the SFS Driver" above.
  1025.  
  1026. If the driver reports a general internal consistency check failure or a
  1027. consistency check failure for a particular drive unit (in this case drive F:),
  1028. mountsfs will exit with the error message:
  1029.  
  1030.     Error: SFS driver internal consistency check failed
  1031.  
  1032. or:
  1033.  
  1034.     Error: SFS driver consistency check failed for unit F:
  1035.  
  1036. A driver check failure is generally due to some other program or system
  1037. software corrupting the driver's internal state.  Possible solutions to this
  1038. problem can be found in the section "Incompatibilities" below.
  1039.  
  1040. In general the volume name would be specified with the `vol=' option.  For
  1041. example if the volume name was "Secure disk volume" then the mount command
  1042. would be:
  1043.  
  1044.   mountsfs vol=secure
  1045.  
  1046. The volume name can be in upper or lower case, and the full name need not be
  1047. given.  mountsfs will match whatever part of the name is given to any SFS
  1048. volume names found until it finds a match.  The SFS volumes are checked in the
  1049. same order as they are displayed with the `info' or `information' command.
  1050.  
  1051. Alternatively, if the SFS volume to be accessed is on a removable disk, the
  1052. drive letter can be specified instead of the volume name.  For example if the
  1053. disk drive was A: then the command to mount whatever volume it contained would
  1054. be:
  1055.  
  1056.   mountsfs a:
  1057.  
  1058. mountsfs will not mount volumes using the mount identifier, as this is reserved
  1059. for use with volumes mounted when the SFS driver is loaded.  More information
  1060. on this is given in the section "Advanced SFS Driver Options" below.
  1061.  
  1062. In order to find all available SFS volumes, the `info' option can be used.
  1063. This will by default search the system for available SFS volumes and print a
  1064. list of the volume name, creation date, size, and whether the volume is
  1065. currently mounted. For example on a system with two SFS volumes the output from
  1066. `mountsfs info' might be:
  1067.  
  1068.     Date     Size   Type Mount status  Volume Name
  1069.   -------- -------- ---- ------------- ----------------------------------------
  1070.   01/11/93  Floppy  DOS    Unmounted   Data backup
  1071.   06/09/93  10.0 MB DOS  Mounted as E: Personal financial records
  1072.   12/04/93  42.5 MB DOS    Unmounted   Encrypted data disk
  1073.  
  1074. This shows three SFS volumes, an unmounted volume in a floppy drive containing
  1075. backup data, a smaller one on a fixed disk containing personal financial
  1076. records which is currently mounted as drive E:, and a larger one containing
  1077. general encrypted data which is currently unmounted.  Note that removable media
  1078. is treated in a special manner and the exact disk size is indeterminate as the
  1079. media may change at any time.  The volume creation date is formatted according
  1080. to the country setting on the machine being used, so that the datestamp is
  1081. day/month/year in Europe and related countries, month/day/year in the US and
  1082. related countries, and year/month/day in Japan.  Both volumes shown here are
  1083. DOS volumes, but future versions of SFS will support other volume types such as
  1084. OS/2 HPFS, Windows NTFS, and Linux Unix ones.
  1085.  
  1086. If more information is desired, the longer "information" form of the command
  1087. can be used.  This will display extra information such as the volume serial
  1088. number, the mount identifier (see the section "Advanced SFS Driver Options"
  1089. below for more information), the volume filesystem type, whether multiuser
  1090. volume access is possible, what type of disk access mode is used for the
  1091. volume, the volume name character set, and the default auto-unmount timeout
  1092. value (which can be overridden when the volume is mounted if required), as well
  1093. as the other information displayed by the usual `mountsfs info' command.  If,
  1094. in the previous example, we had used `mountsfs information' instead of
  1095. `mountsfs info' the output might have been:
  1096.  
  1097.   Volume name  : Data backup
  1098.   Volume date  : 01/11/93, 10:13:01  Volume serial number  : 1234
  1099.   Volume size  : Removable media     Volume filesystem type: DOS
  1100.   Mount status : Unmounted           No mount at system startup possible
  1101.   Multiuser access  : Disabled       Fast disk access mode : 0 (Default)
  1102.   Vol.name char.set : ISO 646/ASCII  Current access mode   : 0 (Default)
  1103.   Unmount timeout   : None set
  1104.  
  1105.   Volume name  : Personal financial records
  1106.   Volume date  : 06/09/93, 11:22:19  Volume serial number  : 177545
  1107.   Volume size  : 10.0 MB             Volume filesystem type: DOS
  1108.   Mount status : Mounted as E:       Mount ID              : 03A12F7B
  1109.   Multiuser access  : Disabled       Fast disk access mode : 0 (Default)
  1110.   Vol.name char.set : ISO 646/ASCII  Current access mode   : 0 (Default)
  1111.   Unmount timeout   : 30 minutes
  1112.  
  1113.   Volume name  : Encrypted data disk
  1114.   Volume date  : 12/04/93, 22:17:00  Volume serial number  : 69231461
  1115.   Volume size  : 42.5 MB             Volume filesystem type: DOS
  1116.   Mount status : Unmounted           Mount ID              : 42DD2536
  1117.   Multiuser access  : Enabled        Fast disk access mode : 1 (IDE direct)
  1118.   Vol.name char.set : ISO 646/ASCII  Current access mode   : 1 (IDE direct)
  1119.   Unmount timeout   : 10 minutes
  1120.  
  1121. By default these two commands will display information on all available
  1122. volumes. If information on an individual volume is required, then the volumes'
  1123. name or drive letter can be given in addition to the `info' or `information'
  1124. option. To change the previous use of the `info' command to apply only to the
  1125. volume named "Data backup", the command might be:
  1126.  
  1127.   mountsfs info vol=backup
  1128.  
  1129. and the output would be as follows:
  1130.  
  1131.     Date     Size   Type Mount status  Volume Name
  1132.   -------- -------- ---- ------------- ----------------------------------------
  1133.   01/11/93  Floppy  DOS    Unmounted   Data backup
  1134.  
  1135. The `status' option can be used to check whether any volumes are currently
  1136. mounted.  As with the `info' and `informaton' options, by default information
  1137. on all mounted SFS volumes is displayed.  If information on an individual
  1138. volume is required, then the volumes' name or drive letter can be given in
  1139. addition to the `status' option.  Thus the command:
  1140.  
  1141.   mountsfs status
  1142.  
  1143. will return a list of the status of the volumes on all mount points, as well as
  1144. an indication of the current setting of the quick-unmount hotkey and the
  1145. auto-unmount time settings for any mounted volumes (the latter are explained in
  1146. more detail below), whereas the command:
  1147.  
  1148.   mountsfs status f:
  1149.  
  1150. will return the above status information only on the volume currently mounted
  1151. as F:.  An example of the output of the `status' command when run on the setup
  1152. shown in the `info' command examples with a total of two mount points available
  1153. might be:
  1154.  
  1155.   SFS volume `Personal financial records' is mounted as drive E:,
  1156.           and will time out in 18 minutes.
  1157.   Drive F: has no volume mounted
  1158.  
  1159.   The quick-unmount hotkey is set to `LeftShift-RightShift'.
  1160.  
  1161. The `+r' and `+rw' options specify read and write access to the encrypted
  1162. volume.  `+r' allows read-only access and `+rw' allows read and write access.
  1163. The default is to allow read/write access.  Note that although mounting an SFS
  1164. volume read-only will stop all standard software from writing to it, it may not
  1165. stop some malicious programs such as viruses which have been specially written
  1166. to attack the SFS driver itself, or which are created specifically to destroy
  1167. disk data by bypassing the operating system and accessing the disk hardware
  1168. or firmware directly[1].  The read-only option is provided mainly to stop any
  1169. accidental overwriting of valuable data on encrypted volumes.
  1170.  
  1171. Read-only access can also be specified when an SFS volume is mounted at the
  1172. time the SFS driver is loaded into memory.  More details on this and on
  1173. mounting volumes at system startup are given in the section "Advanced SFS
  1174. Driver Options" below.
  1175.  
  1176. The read/write status of a volume can be changed once it has been mounted by
  1177. running mountsfs with only the '+r' or '+rw' option.  This will change the
  1178. read/write status of the currently mounted volume as appropriate.  For example
  1179. to allow read/write access to the currently mounted SFS volume the command
  1180. would be:
  1181.  
  1182.   mountsfs +rw
  1183.  
  1184. If the volume allows multiuser access, only the volume administrator can
  1185. directly mount it in the manner described above.  Normal volume users must
  1186. specify their user name with the `user=<username>' command in addition to the
  1187. usual mount parameters in order to mount the volume[2].  The user name is the
  1188. name under which access is granted by the system administrator.  Like the
  1189. volume name, any portion of the user name can be given and mountsfs will match
  1190. whatever part of the name is given to any user names until it finds a match.
  1191. Users can also specify the name of the file to search for user access
  1192. information using the `userfile=<user file>' command.
  1193.  
  1194. For example if the volume in the previous example allowed multiuser access and
  1195. one of the users granted access to the volume was "Henry Akely", he could mount
  1196. it with the command:
  1197.  
  1198.   mountsfs vol=secure user=henry
  1199.  
  1200. If an attempt to mount a volume with no multiuser access capabilities is made,
  1201. mountsfs will exit with the error message:
  1202.  
  1203.   Error: This volume has multi-user access disabled
  1204.  
  1205. If access information for the given user cannot be found in the user access
  1206. file or files, the program will exit with an error message:
  1207.  
  1208.   Error: Cannot find access information for user `henry'
  1209.  
  1210. An individual users access rights to the volume, as set by the volume
  1211. administrator, may override certain options specified in mountsfs.  More
  1212. details on this, and on the operation of shared SFS volumes as a whole, are
  1213. given in the section "Sharing SFS Volumes Between Multiple Users" below.
  1214.  
  1215. If mountsfs is asked to mount a volume, it will first check to see whether
  1216. there is room to mount it.  If all available mount points are already occupied,
  1217. the program will print:
  1218.  
  1219.   Error: All available drives are allocated - unmount an existing volume first
  1220.  
  1221. and exit.  In this case either an existing volume must be unmounted to free up
  1222. a mount point and allow the new volume to be mounted, or the number of mount
  1223. points must be increased with the `UNITS=n' command when the SFS driver is
  1224. loaded. More details on this are given in the section "Loading the SFS Driver"
  1225. above.
  1226.  
  1227. If mountsfs is asked to mount a volume, it will search all available disks for
  1228. the named volume (if the volume is accessed by name), or check the removable
  1229. disk for the volume (if the volume is accessed by disk drive letter).  If the
  1230. volume is already mounted, mountsfs will print:
  1231.  
  1232.   Error: Encrypted volume is already mounted
  1233.  
  1234. and exit.  Otherwise, it will print a summary of the volume giving the
  1235. read/write status, the drive type, and the volume name and date if one exists:
  1236.  
  1237.   Volume will be mounted as fixed drive E:.
  1238.   Encrypted volume is `Personal correspondence', created 12/08/93
  1239.  
  1240. Then it will prompt for the encryption password:
  1241.  
  1242.   Please enter password (10...100 characters), [ESC] to quit:
  1243.  
  1244. At this point a password in the given length range can be entered.  For
  1245. security reasons the password is not echoed to the screen.  Any typing errors
  1246. when entering the password can be corrected with the backspace key.  The Esc
  1247. key can be used to quit.  The software will check for a password longer than
  1248. the maximum of 100 characters or an attempt to backspace past the start of the
  1249. password, and beep a warning when either of these conditions occur.  Once the
  1250. password has been entered, mountsfs will process it and reprogram the SFS
  1251. device driver to reflect the change in status.
  1252.  
  1253. If the disk being mounted is a removable one, mountsfs will check that the
  1254. drive being used supports disk change checking.  This is necessary to ensure
  1255. that the wrong disk isn't accidentally accessed by the driver.  If the disk is
  1256. changed without first being unmounted, the SFS driver will automatically
  1257. unmount it the next time an attempt is made to access it[3].  However if the
  1258. drive doesn't support the disk change check (generally only rather old drives
  1259. have this problem), this automatic unmount won't be possible, and mountsfs will
  1260. warn:
  1261.  
  1262.   Warning: The floppy drive this volume is mounted on does not support disk
  1263.            change checking.  This means that great care must be taken to ensure
  1264.            the existing volume is unmounted (using either the `mountsfs' utility
  1265.            or the quick-unmount hotkey) when a new disk is inserted.
  1266.  
  1267. If the drive does not support the disk change check, it is essential that the
  1268. volume be unmounted when the disk is changed.  The easiest way to unmount a
  1269. volume is through the quick-unmount hotkey, which is explained in more detail
  1270. below.
  1271.  
  1272. The `unmount' option is used to unmounts SFS volumes.  This is used to remove
  1273. any access to volumes after any work which requires them has been completed, or
  1274. to free up a mount point so a new volume can be mounted.  If a particular SFS
  1275. volume is contained on a removable disk, it is a good idea to unmount the
  1276. volume if the disk in the drive is changed, although mounting a new volume will
  1277. automatically unmount the old volume.  The unmount operation can also be
  1278. performed using a quick-unmount hotkey which the SFS driver checks for (see
  1279. below).  Like the `status' and `information' command, the `unmount' command can
  1280. either apply to individual mounted volumes which are specified by their drive
  1281. letter, or to all volumes if no drive letter is given.
  1282.  
  1283. Unmounting a volume also signals the SFS driver software to write all data
  1284. still held in system buffers to disk and to erase any information it still
  1285. holds in memory.  It is therefore good practice to always unmount volumes as
  1286. soon as they are no longer in use in order to destroy any sensitive information
  1287. which may still be held by the SFS driver or in a system buffer.  For example
  1288. to unmount all currently mounted volumes the command would be:
  1289.  
  1290.   mountsfs unmount
  1291.  
  1292. To unmount the volume currently mounted as F: the command would be:
  1293.  
  1294.   mountsfs unmount f:
  1295.  
  1296. A faster way to unmount all volumes is to use the quick-unmount hotkey which
  1297. the SFS driver checks for and accepts in place of the standard unmount command.
  1298. This can be used both as a convenience to quickly and easily unmount all SFS
  1299. volumes, or as a safety feature to allow encrypted volumes to be instantly
  1300. unmounted if there is a danger of the data on them being compromised (this
  1301. option is generally unavailable under Windows - see the section
  1302. "Incompatibilities" below).
  1303.  
  1304. If no hotkey is currently set (either from a previous use of the mountsfs
  1305. command or through the use of the `HOTKEY=NONE' option when the SFS driver is
  1306. loaded), and the `hotkey=none' option is not specified, mountsfs will install a
  1307. default quick-unmount hotkey which is a combination of the left and right shift
  1308. keys.  On most keyboards these keys are fairly large and easy to reach during
  1309. normal typing.  When both shift keys are pressed and released, all mounted SFS
  1310. volumes will be unmounted as if a normal unmount command had been issued via
  1311. mountsfs, and a single beep will sound to indicate that the unmount was
  1312. successful.
  1313.  
  1314. Occasionally this default hotkey combination may clash with other software, or
  1315. it may be desirable to use another hotkey combination.  This can be set with
  1316. the `hotkey=' option, which may be used to specify any combination of the left
  1317. shift key, right shift key, control key, alt key, and a letter key[4].  The
  1318. keys are specified in the following manner:
  1319.  
  1320.     Alt key        = `alt'          Control key     = `ctrl'
  1321.     Left shift key = `leftShift'    Right shift key = `rightShift'
  1322.     Letter key     = `a'...`z'
  1323.  
  1324. Key combinations should be separated by hyphens, `-'.  The key names are not
  1325. case sensitive and can be given in upper or lower case, or a mixture of both.
  1326. If an unknown key name is used or the key names are not separated with hyphens,
  1327. mountsfs will complain:
  1328.  
  1329.   Error: Bad quick-unmount hotkey format
  1330.  
  1331. For example, to specify the use of the left shift and right shift keys as the
  1332. quick-unmount hotkey (the usual default setting), the command used in the
  1333. previous example would be changed to:
  1334.  
  1335.   mountsfs hotkey=LeftShift-RightShift vol=secure
  1336.  
  1337. To use the Control, Alt, and Z keys as the quick-unmount hotkey the command
  1338. would be:
  1339.  
  1340.   mountsfs hotkey=ctrl-alt-Z vol=secure
  1341.  
  1342. The hotkey value can also be altered without mounting any volumes.  This will
  1343. merely update the current hotkey without making any other changes.  For example
  1344. to set the right Shift, Control, and I keys as the quick-unmount hotkey (a
  1345. rather unwieldy combination), the command would be:
  1346.  
  1347.   mountsfs hotkey=rightshift-CTRL-I
  1348.  
  1349. The hotkey unmount can be disabled by specifying `hotkey=none' when mountsfs is
  1350. run, either as part of a normal mount operation or by simply running mountsfs
  1351. with only the hotkey option, which will clear the unmount hotkey without making
  1352. any other changes.
  1353.  
  1354. Finally, the hotkey can also be specified when the SFS driver is loaded.  More
  1355. details on this are given in the section "Advanced SFS Driver Options" below.
  1356.  
  1357. If the hotkey unmount is performed while the driver is accessing a volume, the
  1358. disk access will complete before the volume is unmounted.
  1359.  
  1360. The SFS driver can also automatically unmount volumes if they have not been
  1361. accessed for a certain amount of time.  This option is useful if there is a
  1362. chance that an interruption may call you away from a system with mounted SFS
  1363. volumes, which would allow others access to the encrypted data, or can simply
  1364. be used as a general safety precaution to automatically unmount the volumes
  1365. after a sizeable period of inactivity (this option is unavailable under Windows
  1366. - see the section "Incompatibilities" below).  However, care should be taken to
  1367. allow a large enough safety margin for the timeout, as having a volume take
  1368. itself offline five seconds before work is saved to it can be annoying.
  1369.  
  1370. The easiest way to set a timeout is to associate a timeout value with the
  1371. volume, either when it is created with mksfs or at a later point with chsfs.
  1372. If the volume is mounted, the setting of the timeout is automatically taken
  1373. care of by the SFS software.  The current timeout setting for a volume or
  1374. volumes may be displayed using the `mountsfs information' command.
  1375.  
  1376. However it may be desirable to override this setting using the `timeout='
  1377. option, which is used to specify the delay in minutes until the unmount takes
  1378. place.  If the volume has no timeout associated with it then by default
  1379. mountsfs will not set an auto-unmount timer.  For example, using the previous
  1380. mount command but to have the volume automatically unmounted after 15 minutes
  1381. of inactivity the command would be:
  1382.  
  1383.   mountsfs timeout=15 vol=secure
  1384.  
  1385. The timeout period must be between 1 and 30,000 minutes (this means that the
  1386. upper timeout limit is around three weeks).  If a timeout value of less than 1
  1387. minute or greater than three weeks is given, mountsfs will exit with the error
  1388. message:
  1389.  
  1390.   Error: Timeout value must be between 1 and 30,000 minutes
  1391.  
  1392. If no accesses are made to the volume within the given time period, it will be
  1393. automatically unmounted.  Like the case when a hotkey unmount is made, a single
  1394. beep will sound to indicate that the unmount has taken place.  Each volume has
  1395. its own timer, so that different volumes can be given different lengths of time
  1396. before they unmount, or no auto-unmount time at all.  This is useful when, for
  1397. example, one volume containing highly sensitive information needs to have a
  1398. very short timeout, while another volume containing less secret information can
  1399. have a much longer timeout.  An example might be a series of three SFS volumes:
  1400.  
  1401.   mountsfs timeout=10 vol=Topsecret
  1402.   mountsfs timeout=30 vol=Secret
  1403.   mountsfs timeout=60 vol=Confidential
  1404.  
  1405. in which the "Topsecret" volume is given the shortest timeout of only 10
  1406. minutes, the "Secret" volume is given a timeout of 30 minutes, and the
  1407. "Confidential" volume is given the longest timeout of a full hour.
  1408.  
  1409. The timed unmount can be disabled by specifying `timeout=none' when mountsfs is
  1410. run, either as part of a normal mount operation which will affect only the
  1411. current volume, or by running mountsfs with only the timeout option, which will
  1412. clear the timer for all volumes without making any other changes.
  1413.  
  1414. If the timed unmount is performed while the driver is accessing a volume, the
  1415. disk access will complete before the volume is unmounted.
  1416.  
  1417. Finally, if all is OK, mountsfs will print a short summary message for the
  1418. action taken.  For example if the command given was one to unmount all volumes,
  1419. with two volumes F: and G: of which only F: was currently mounted, the summary
  1420. would be:
  1421.  
  1422.   Volume F: has been unmounted
  1423.   Volume G: is already unmounted
  1424.  
  1425. Footnote [1]: Viruses capable of doing this are generally called tunneling
  1426.               viruses.  Most of them only tunnel down to the the DOS int 21h
  1427.               level (which won't affect SFS), but several tunnel down to the
  1428.               BIOS int 13h level.  The DIR II virus tunnels down to the block
  1429.               device driver request level (which again won't affect SFS).  In
  1430.               addition there is a report of a virus which will access an IDE
  1431.               hard drive directly through the drive controller ports (which,
  1432.               has the side-effect of crashing Windows when using 32-bit disk
  1433.               access).  No viruses capable of accessing SCSI drives through the
  1434.               ASPI or CAM drivers are known.  In any case an SFS volume creates
  1435.               a rather bad target for DOS viruses since the DOS drive it
  1436.               corresponds to is only an illusion created by the SFS driver, and
  1437.               the underlying data on disk is invisible to DOS and most viruses.
  1438.  
  1439. Footnote [2]: Some versions of SFS will automatically know the user's name when
  1440.               a volume is mounted.  Unfortunately the DOS version isn't one of
  1441.               these.
  1442.  
  1443. Footnote [3]: The driver checks for a disk change when a disk read or write
  1444.               attempt is made rather than whenever DOS performs a general disk
  1445.               check, as DOS may perform up to half a dozen consecutive disk
  1446.               checks before doing anything, which leads to a significant loss
  1447.               in performance.
  1448.  
  1449. Footnote [4]: The letter key is based on the US keyboard since the SFS driver
  1450.               must check for keyboard scan codes rather than actual character
  1451.               codes, which can differ slightly for some keyboards.
  1452.  
  1453.  
  1454. Advanced SFS Driver Options
  1455. ---------------------------
  1456.  
  1457. The SFS driver supports several advanced options which can be used to customize
  1458. the operation of SFS.  These include the ability to mount SFS volumes
  1459. automatically when the driver is loaded, the ability to turn echoing of
  1460. passwords on, and the ability to change the read/write status, disk access
  1461. mode, and auto-unmount timeout of mounted volumes, the quick-unmount hotkey,
  1462. and the password prompt used when mounting volumes.
  1463.  
  1464.  
  1465. Mounting SFS Volumes at System Startup
  1466.  
  1467. SFS volumes can be automatically mounted when the system is started up rather
  1468. than having to be mounted through the mountsfs program.  This can be specified
  1469. using the `MOUNT=<identification number>' option when the SFS driver is loaded,
  1470. in conjunction with the 8- or 14-digit volume identification number displayed
  1471. by mksfs when the encrypted volume is created or by using the `mountsfs
  1472. information' command.  The volume identifier is used to tell the SFS driver
  1473. which volume to load.  In most cases the shorter 8-digit identifier is used,
  1474. but the longer 12-digit form may be necessary for volumes with more complex
  1475. access procedures such as ones on SCSI drives.  mksfs and mountsfs will always
  1476. print the correct type of identifier for the volume in question.
  1477.  
  1478. If the volume allows multiuser access, only the volume administrator can mount
  1479. it.  Normal volume users must follow the standard volume mount procedure using
  1480. mountsfs.  The operation of shared SFS volumes is explained in more detail in
  1481. the section "Sharing SFS Volumes Between Multiple Users" below.
  1482.  
  1483. For example if mksfs displays the 8-digit volume identifier `530A17FD' for a
  1484. particular volume then the command to mount this volume would be:
  1485.  
  1486.   DEVICE=SFS.SYS MOUNT=530A17FD
  1487.  
  1488. If it displays a 14-digit volume identifier `C02100142DE0FC' then the command
  1489. to mount the volume would be:
  1490.  
  1491.   DEVICE=SFS.SYS MOUNT=C02100142DE0FC
  1492.  
  1493. If an incorrect volume identifier is given, the driver will display
  1494.  
  1495.   Error: Invalid mount ID, skipping mount
  1496.  
  1497. and skip the mount procedure.  If the volume identifier is correct, the driver
  1498. will locate the required volume on the disk and try to read in the information
  1499. needed to process it.  If this information cannot be read or is incorrect, the
  1500. driver will display:
  1501.  
  1502.   Error: Invalid SFS volume information, skipping mount
  1503.  
  1504. and skip the mount procedure.  If the volume is located on a SCSI drive and the
  1505. SCSI manager software needed to access the drive is not present, the driver
  1506. will display:
  1507.  
  1508.   Error: SCSI manager not found, cannot mount SCSI drive
  1509.  
  1510. and skip the mount procedure.  If all is correct the driver will ask for the
  1511. password exactly as mountsfs would:
  1512.  
  1513.   Please enter password (10...100 characters), [ESC] to quit:
  1514.  
  1515. At this point a password in the given length range can be entered.  For
  1516. security reasons the password is not echoed to the screen.  Any typing errors
  1517. when entering the password can be corrected with the backspace key.  The Esc
  1518. key can be used to quit.  The software will check for a password longer than
  1519. the maximum of 100 characters or an attempt to backspace past the start of the
  1520. password, and beep a warning when either of these conditions occur.  Up to
  1521. three attempts at entering a correct password are allowed before the mount is
  1522. skipped.  If the Esc key is pressed the SFS driver will print:
  1523.  
  1524.   Mount operation skipped at user request
  1525.  
  1526. and skip the mount procedure.  Otherwise, once the password has been entered,
  1527. the SFS driver will process it and, if an incorrect password is detected, will
  1528. print:
  1529.  
  1530.   Error: Incorrect password, skipping mount
  1531.  
  1532. The driver will then perform a quick disk read test to make sure everything is
  1533. working correctly.  If this fails, the driver will display:
  1534.  
  1535.   Error: Disk read test failed, skipping mount
  1536.  
  1537. and skip the mount procedure.  Otherwise the encrypted volume will be mounted
  1538. ready for use, with the drive letter being the next available DOS drive.  In
  1539. general the mount procedure is the same as the one which mountsfs uses, except
  1540. that the full functionality of mountsfs is not available during the mount.  In
  1541. all cases if the mount procedure is skipped the driver will still be loaded, so
  1542. that volumes can be mounted at a later time if required.
  1543.  
  1544. The mount procedure has a built-in timer which expires if no key is hit for
  1545. more than 1 minute.  This is to allow unattended machines to automatically
  1546. reboot in case of a power failure without waiting forever for an mount
  1547. password.  If no key is pressed for more than 1 minute, the SFS driver will
  1548. print:
  1549.  
  1550.   Password entry timed out, skipping mount
  1551.  
  1552. and skip the mount procedure.  Again, the driver will still be loaded to allow
  1553. volumes to be mounted at a later time.
  1554.  
  1555. Once the volume has been mounted and after the usual SFS installation message
  1556. has been displayed, the driver will display the DOS drive on which the
  1557. encrypted volume is mounted.  For example if the volume was available as drive
  1558. G: the message would be:
  1559.  
  1560.   Encrypted volume is now mounted as drive G:
  1561.  
  1562. If necessary the drive letter which SFS uses can be swapped through the use of
  1563. the JSWAP utility which comes as part of the JAM disk compression software.
  1564. The use of JSWAP rather than the DOS commands ASSIGN, SUBST, and JOIN, or other
  1565. third-party utilities such as the one provided with Stacker are recommended, as
  1566. JSWAP provides the safest means of swapping drive letters.  In particular,
  1567. JSWAP won't swap any non-physical drives, it won't reassign physical drives to
  1568. leave a hole in series of block devices (as opposed to the way DoubleSpace does
  1569. things), and it can fix things so that various badly-designed programs which
  1570. don't normally handle drive swapping too well should still work.
  1571.  
  1572. If multiple volumes are to be mounted then the mount identifiers should be
  1573. given in the order in which the mounts are to take place.  For example if a
  1574. second SFS volume with the volume identifier `4850414B' were to be mounted then
  1575. the previous example would change to:
  1576.  
  1577.   DEVICE=SFS.SYS MOUNT=530A17FD MOUNT=4850414B
  1578.  
  1579. As more volumes are mounted, the driver will automatically increase the mount
  1580. point allocation until the maximum number of 5 mount points has been reached,
  1581. making use of the `UNITS=n' option unnecessary.  If an attempt is made to
  1582. mount more than 5 volumes, the driver will print:
  1583.  
  1584.   Error: No more disk units available for mount
  1585.  
  1586. and skip the mount procedure.
  1587.  
  1588.  
  1589. Setting the Quick-Unmount Hotkey Value
  1590.  
  1591. When a volume is mounted, the quick-unmount hotkey is by default set to a
  1592. combination of the left and right shift keys.  However, like the mountsfs
  1593. `hotkey=' option, the SFS driver supports user-defined hotkeys with the
  1594. `HOTKEY=quick-unmount hotkey' command, as well as allowing the hotkey unmount
  1595. option to be disabled with the `HOTKEY=NONE' command.
  1596.  
  1597. The `HOTKEY=quick-unmount hotkey' form of the command may be used to specify
  1598. any combination of the left shift key, right shift key, control key, alt key,
  1599. and a letter key, in the following manner:
  1600.  
  1601.     Alt key        = `alt'          Control key     = `ctrl'
  1602.     Left shift key = `leftShift'    Right shift key = `rightShift'
  1603.     Letter key     = `a'...`z'
  1604.  
  1605. Key combinations should be separated by hyphens, `-'.  The key names are not
  1606. case sensitive and can be given in upper or lower case, or a mixture of both.
  1607. If an unknown key name is used or the key names are not separated with hyphens,
  1608. the SFS driver will complain:
  1609.  
  1610.   Error: Bad quick-unmount hotkey format
  1611.  
  1612. For example, to specify the use of the left shift and right shift keys as the
  1613. quick-unmount hotkey (the usual default setting), the command used in the
  1614. previous example would be changed to:
  1615.  
  1616.   DEVICE=SFS.SYS MOUNT=530A17FD HOTKEY=LEFTSHIFT-RIGHTSHIFT
  1617.  
  1618. To use the Control, Alt, and Z keys as the quick-unmount hotkey without
  1619. mounting any volumes the command would be:
  1620.  
  1621.   DEVICE=SFS.SYS HOTKEY=CTRL-ALT-Z
  1622.  
  1623. To disable hotkey unmounting altogether, and without mounting any volumes, the
  1624. command would be:
  1625.  
  1626.   DEVICE=SFS.SYS HOTKEY=NONE
  1627.  
  1628.  
  1629. Echoing the Mount Password to the Screen
  1630.  
  1631. Normally when the mount password is entered, nothing will be echoed to the
  1632. screen.  However it may be desirable to echo the password to the screen as it
  1633. is typed in.  The `ECHO' option can be used to turn on the echoing of
  1634. passwords. Note that use of this option makes it much easier to eavesdrop on
  1635. the password as it is entered, by simply glancing over the shoulder of the
  1636. person entering the password, by making use of monitoring facilities installed
  1637. for general security purposes, or by using more sophisticated techniques such
  1638. as TEMPEST monitoring (these are covered in more detail in the section "Data
  1639. Security" below).  For these reasons, use of the `ECHO' option is not
  1640. recommended.
  1641.  
  1642.  
  1643. Changing the Mount Password Prompt
  1644.  
  1645. In some environments it may be undesirable to alert others to the fact that
  1646. disk encryption is being used.  Using the `SILENT' option with the driver
  1647. removes most indications of the presence of SFS, but if volumes are mounted the
  1648. appearance of the password prompt may still give things away.  To correct this
  1649. problem, the SFS driver supports user-definable prompts with the
  1650. `PROMPT=user-prompt' command.  This may be used to specify any single-word
  1651. prompt, or, if the prompt is surrounded by quotation marks `"', any combination
  1652. of characters until another `"' is encountered.  For example to make the SFS
  1653. mount procedure appear like a network login, the previous mount example might
  1654. be changed to:
  1655.  
  1656.   DEVICE=SFS.SYS SILENT PROMPT=Login: MOUNT=530A17FD
  1657.  
  1658. Instead of the usual password prompt, the driver would now display:
  1659.  
  1660.   Login:
  1661.  
  1662. when the password was required.
  1663.  
  1664. If a prompt containing multiple words is required, the prompt itself would be
  1665. surrounded with quotation marks:
  1666.  
  1667.   DEVICE=SFS.SYS SILENT PROMPT="Please log on:" MOUNT=530A17FD
  1668.  
  1669. Unfortunately some versions of DOS convert all characters to uppercase before
  1670. passing them to SFS.SYS.  In order to allow lowercase characters to be used in
  1671. prompts, the `PROMPT=' option recognises the escape sequence `\s' to mean
  1672. "shift to lowercase", so that all subsequent characters will be converted to
  1673. lowercase before being displayed.  Subsequent uses of `\s' will toggle the
  1674. current shift state, shifting characters back to uppercase or to lowercase
  1675. depending on the current shift state.  For example to have the previous
  1676. mount example display the prompt "Enter Code:", the command would be:
  1677.  
  1678.   DEVICE=SFS.SYS SILENT PROMPT="E\sNTER \sC\sODE:" MOUNT=530A17FD
  1679.  
  1680. The initial "E" is displayed in uppercase, then the first `\s' shifts the
  1681. "NTER" to lowercase, the second `\s' shifts the "C" back to uppercase, and the
  1682. final `\s' shifts the remaining "ODE:" to lowercase.
  1683.  
  1684. The `PROMPT=' option also recognises a number of other escape codes which may
  1685. be used to specify characters which cannot be directly entered into the
  1686. CONFIG.SYS file such as quote marks, tabs, and line breaks.  These are based on
  1687. the ones used in the C programming language, and are as follows:
  1688.  
  1689.     Newline     = \n        Quote mark  = \"        Bell    = \a
  1690.     Tab         = \t        Backspace   = \b        Escape  = \e
  1691.  
  1692. For example to print a line break as part of a prompt, the escape code '\n' may
  1693. be used, allowing prompts to be split over multiple lines, or simply to have
  1694. blank lines as part of the prompt.  An extended form of the above prompt, split
  1695. over two lines, could be given as:
  1696.  
  1697.   DEVICE=SFS.SYS SILENT PROMPT="Network logon\nPlease enter password:"
  1698.                         MOUNT=530A17FD
  1699.  
  1700. which would be printed as:
  1701.  
  1702.   Network logon
  1703.   Please enter password:
  1704.  
  1705. The `\e' escape code can be used in combination with an ANSI driver to allow
  1706. special actions such as cursor positioning and colour and text attribute
  1707. control.  Most of the useful escape sequences begin with `\e[', corresponding
  1708. to the "ESC [" combination.  These codes only work if an ANSI driver is loaded
  1709. by specifying
  1710.  
  1711.     DEVICE=ANSI.SYS
  1712.  
  1713. or some other ANSI-compatible driver in CONFIG.SYS.  Some of the possible codes
  1714. are:
  1715.  
  1716.   ANSI sequence     Action                                      Default
  1717.  
  1718.   \e[row;columnH    Move the cursor to (row, column)            1, 1
  1719.   \e[row;columnf    Move the cursor to (row, column)            1, 1
  1720.   \e[rowd           Move the cursor to (row)                    1
  1721.   \e[columnG        Move the cursor to (column)                 1
  1722.   \e[countA         Moves the cursor up (count) rows            1
  1723.   \e[countB         Moves the cursor down (count) rows          1
  1724.   \e[countC         Moves the cursor right (count) columns      1
  1725.   \e[countD         Moves the cursor left (count) columns       1
  1726.   \e[2J             Clears the screen and homes the cursor
  1727.   \e[K              Clears from the cursor position to the
  1728.                     end of the current line
  1729.   \e[M              Clears the entire line
  1730.   \e[s              Saves the current cursor position
  1731.   \e[u              Restores the previously saved cursor
  1732.                     position
  1733.   \e[countb         Repeat following character (count) times    1
  1734.   \e[attr;...;attrm Set screen attributes based on (attr).
  1735.                     Possible values for the (attr) settings
  1736.                     are:
  1737.  
  1738.                     30 Black foreground   40 Black background
  1739.                     31 Red foreground     41 Red background
  1740.                     32 Green foreground   42 Green background
  1741.                     33 Yellow foreground  43 Yellow background
  1742.                     34 Blue foreground    44 Blue background
  1743.                     35 Magenta foreground 45 Magenta background
  1744.                     36 Cyan foreground    46 Cyan background
  1745.                     37 White foreground   47 White background
  1746.  
  1747. For example to clear the screen and home the cursor before printing the
  1748. "Login:" prompt given previously, the command would be:
  1749.  
  1750.   DEVICE=SFS.SYS SILENT PROMPT=\e[2JLogin: MOUNT=530A17FD
  1751.  
  1752. To print the prompt in black on a blue background, the command would be:
  1753.  
  1754.   DEVICE=SFS.SYS SILENT PROMPT=\e[30;44mLogin:\e[37;40m MOUNT=530A17FD
  1755.  
  1756. The order in which these arguments are given is important, since an option only
  1757. affects the other options following it.  If the `PROMPT=' option is given after
  1758. the `MOUNT=' option instead of before it, the driver won't use the new prompt
  1759. until after the mount has taken place.  This can be used to allow multiple
  1760. independant prompts when several volumes are mounted, so that in the following
  1761. example:
  1762.  
  1763.   DEVICE=SFS.SYS SILENT PROMPT="Local server logon: " MOUNT=C0EDBABE
  1764.                         PROMPT="Printer server logon: " MOUNT=2A1102D3
  1765.  
  1766. the prompt "Local server logon: " would be used for the first volume to be
  1767. mounted and the prompt "Printer server logon: " would be used for the second
  1768. volume to be mounted.  The `PROMPT=' setting applies for all further mounts
  1769. until another `PROMPT=' option is given.
  1770.  
  1771.  
  1772. Changing the Mount Read/Write Access Status
  1773.  
  1774. Write access to an mounted volume can be enabled or disabled in the same manner
  1775. as using the `mountsfs +r' and `mountsfs +rw' options would using the
  1776. `READONLY' and `READWRITE' options (more information on read-only access to SFS
  1777. volume is given in the section "Mounting an SFS Volume" above).  For example to
  1778. mount the volume used in the previous example read-only the command would be:
  1779.  
  1780.   DEVICE=SFS.SYS READONLY MOUNT=530A17FD
  1781.  
  1782. Like the other options which affect the mounting of volumes, the `READONLY' or
  1783. `READWRITE' options must be given before the `MOUNT=' which they are to affect.
  1784. These options apply for all further mounts until another `READONLY' or
  1785. `READWRITE' option is given.  For example to mount the first volume in the
  1786. previous example read-only and the second one with normal write access the
  1787. command would be:
  1788.  
  1789.   DEVICE=SFS.SYS READONLY MOUNT=530A17FD READWRITE MOUNT=4850414B
  1790.  
  1791.  
  1792. Mounting Volumes as Non-Removable
  1793.  
  1794. Since SFS volumes may be unmounted at any point through a hotkey unmount, an
  1795. auto-unmount timeout, or through use of the mountsfs program, the driver
  1796. reports them to the operating system as being removable volumes.  This means
  1797. that the system won't become confused when disk volumes suddenly cease to exist
  1798. after an unmount.
  1799.  
  1800. Unfortunately some software, while handling removable volumes perfectly well,
  1801. prefers to work with non-removable or fixed volumes.  An example of this is
  1802. Windows, which won't display volume labels for removable volumes.  Disk
  1803. buffering and cacheing for fixed volumes is also somewhat better since the
  1804. operating system doesn't have to worry about the volume being unmounted
  1805. suddenly, leaving it with nothing to write buffered data to.
  1806.  
  1807. The SFS driver allows volumes to be mounted as fixed volumes through the use of
  1808. the FIXED keyword.  By default, or if the REMOVABLE keyword is used, they are
  1809. mounted as removable volumes.  Volumes mounted as fixed volumes must be mounted
  1810. at system startup and will remain mounted until the system is either restarted
  1811. or powered down.  Hotkey, timed, and mountsfs unmounts will NOT affect volumes
  1812. mounted in this manner - they will remain mounted at all times.  For example to
  1813. mount the volume used in the previous example as a fixed, non-removable volume
  1814. the command would be:
  1815.  
  1816.   DEVICE=SFS.SYS FIXED MOUNT=530A17FD
  1817.  
  1818. Like the other options which affect the mounting of volumes, the `FIXED' or
  1819. `REMOVABLE' options must be given before the `MOUNT=' which they are to affect.
  1820. These options apply for all further mounts until another `FIXED' or `REMOVABLE'
  1821. option is given.  For example to mount the first volume in the previous example
  1822. as a fixed volume and the second one as a standard removable one the command
  1823. would be:
  1824.  
  1825.   DEVICE=SFS.SYS FIXED MOUNT=530A17FD REMOVABLE MOUNT=4850414B
  1826.  
  1827.  
  1828. Setting the Auto-unmount Timeout value
  1829.  
  1830. The auto-unmount timeout value functions just like the mountsfs `timeout='
  1831. option, and is used to tell the SFS driver to unmount a volume automatically if
  1832. it has not been accessed for a certain amount of time.  The time until the
  1833. volume is automatically unmounted can be set with the `TIMEOUT=' option, which
  1834. is used to specify the delay in minutes until the unmount takes place.  This
  1835. option can only be used in conjunction with the `MOUNT=' option, and by default
  1836. no auto-unmount timer is set.
  1837.  
  1838. The use of this option is only necessary if the volumes to be mounted have no
  1839. timeout values associated with them, either by mksfs when the volume is created
  1840. or by chsfs at a later point in time.  However, if required, the `TIMEOUT='
  1841. option can also be used to override any existing timeout settings for the
  1842. volume.  In order to return to the default timeout settings, the
  1843. `TIMEOUT=DEFAULT' option may be used.  This sets the timeout of any volumes
  1844. mounted after this point to either the value associated with the volume, or
  1845. none at all if the volume has no timeout setting.  To force the timeout setting
  1846. to be disabled, the `TIMEOUT=NONE' option may be used, which ensures no timeout
  1847. is set for any volumes mounted after this point.  As before, this option holds
  1848. until another `TIMEOUT=' setting is used.
  1849.  
  1850. The timeout value currently set for a volume can be displayed with the
  1851. `mountsfs information' command.
  1852.  
  1853. Like the other options which affect the mounting of volumes, the `TIMEOUT='
  1854. option must be given before the `MOUNT=' which it is to affect.  The `TIMEOUT='
  1855. option applies for all further mounts until another `TIMEOUT=' option is given.
  1856.  
  1857. Using the previous mount example, but to have a volume automatically unmounted
  1858. after 15 minutes of inactivity, the command would be:
  1859.  
  1860.   DEVICE=SFS.SYS TIMEOUT=15 MOUNT=530A17FD
  1861.  
  1862. The timeout period must be between 1 and 30,000 minutes (this means the upper
  1863. timeout limit is around three weeks).  If a timeout value of less than 1 minute
  1864. or greater than three weeks is given, mountsfs will exit with the error
  1865. message:
  1866.  
  1867.   Error: Timeout value must be between 1 and 30,000 minutes
  1868.  
  1869. If no accesses are made to a volume within the given time period, it will be
  1870. automatically unmounted.  Like the case when a hotkey unmount is made, a single
  1871. beep will sound to indicate that the unmount has taken place.  Each volume has
  1872. its own timer, so that different volumes can be given different lengths of time
  1873. before they unmount, or no auto-unmount time at all.  This is useful when, for
  1874. example, one volume containing highly sensitive information needs to have a
  1875. very short timeout, while another volume containing less secret information can
  1876. have a much longer timeout.  For example the two volumes used in the previous
  1877. example might be mounted as follows:
  1878.  
  1879.   DEVICE=SFS.SYS TIMEOUT=10 MOUNT=530A17FD TIMEOUT=30 MOUNT=4850414B
  1880.  
  1881. in which the first volume is given a short timeout of only 10 minutes while the
  1882. second volume, which presumably holds less critical information, is given a
  1883. longer timeout of half an hour.  If the volumes already have a timeout setting
  1884. and the `TIMEOUT=' option is being used to override it, the default behaviour
  1885. of using the setting associated with the volume may be restored with the
  1886. `TIMEOUT=DEFAULT' option.  For example if, in the previous example, the default
  1887. timeout setting for the second volume were to be used instead of overriding it
  1888. with a 30-minute timeout, the volumes would be mounted as follows:
  1889.  
  1890.   DEVICE=SFS.SYS TIMEOUT=10 MOUNT=530A17FD TIMEOUT=DEFAULT MOUNT=4850414B
  1891.  
  1892. This would mount the first volume as before, and the second volume with
  1893. whatever timeout was set for it by mksfs or chsfs.  If no timeout at all is
  1894. required for the second volume, the volumes would be mounted as follows:
  1895.  
  1896.   DEVICE=SFS.SYS TIMEOUT=10 MOUNT=530A17FD TIMEOUT=NONE MOUNT=4850414B
  1897.  
  1898.  
  1899. Enabling Fast Direct Disk Access Modes
  1900.  
  1901. SFS supports a number of faster disk access modes, which would normally be
  1902. specified when the volume is created with mksfs, or set at a later date with
  1903. the `chsfs newaccess=' command.  However it may be desirable to override these
  1904. settings when volumes are mounted.  This can be done with the `FAST=' option,
  1905. which takes as an argument the fast access mode given by the `mksfs -c'
  1906. command, or 0 to specify the normal, somewhat slower access mode.  The access
  1907. mode currently set for a volume can be displayed with the `mountsfs
  1908. information' command.
  1909.  
  1910. For example if the volume in the previous example was created with no fast
  1911. access mode set, but it was later discovered that it could be accessed with
  1912. fast access mode 1, the mount command would be:
  1913.  
  1914.   DEVICE=SFS.SYS FAST=1 MOUNT=530A17FD
  1915.  
  1916. The use of this option is only necessary if the volumes to be mounted have no
  1917. fast access mode associated with them, either by mksfs when the volume is
  1918. created or by chsfs at a later point in time.  However, if required, the
  1919. `FAST=' option can also be used to override any existing fast access mode
  1920. settings for the volume.  In order to return to the default access mode
  1921. settings, the `FAST=DEFAULT' option may be used.  This sets the access mode of
  1922. any volumes mounted after this point to the mode normally associated with the
  1923. volume.  For example if, in the previous two-volume mount example, the default
  1924. access mode setting for the second volume were to be used instead of overriding
  1925. it with an access mode of 1, the volumes would be mounted as follows:
  1926.  
  1927.   DEVICE=SFS.SYS FAST=1 MOUNT=530A17FD FAST=DEFAULT MOUNT=4850414B
  1928.  
  1929. This would mount the first volume as before, and the second volume with
  1930. whatever access mode was set for it by mksfs or chsfs.
  1931.  
  1932. If a certain access mode is required in order to access a volume (for example
  1933. some volumes on SCSI drives can only be accessed via SCSI access methods) then
  1934. SFS will always use the appropriate access mode and ignore the current setting
  1935. of the `FAST=' option.
  1936.  
  1937. Like the other options which affect the mounting of volumes, the `FAST=' option
  1938. must be given before the `MOUNT=' which it is to affect.  The `FAST=' option
  1939. applies for all further mounts until another `FAST=' option is given.
  1940.  
  1941.  
  1942. Changing the Characteristics of an SFS Volume
  1943. ---------------------------------------------
  1944.  
  1945. Once an SFS volume has been created, various characteristics of the volume and
  1946. the entire volume itself can be altered using the chsfs program.  This allows
  1947. the SFS volume password, volume name, disk access mode, and auto-unmount
  1948. timeout to be changed, allows SFS volumes to be quickly deleted, and allows the
  1949. reversion of SFS volumes to their original unencrypted form.
  1950.  
  1951. The chsfs program is run in the following manner:
  1952.  
  1953.   chsfs [newpass] [newvol=<new volume name>] [newtimeout=<timeout>]
  1954.         [newaccess=<new access mode>] [delete] [convert]
  1955.         [vol=<volume name>] [<drive>]
  1956.  
  1957. Since all arguments are named, they can be given in any order.  The order shown
  1958. here is merely an example.
  1959.  
  1960. In general the volume name would be specified with the `vol=' option.  For
  1961. example if the volume name was "Secure disk volume" then the command would be:
  1962.  
  1963.   chsfs <command> vol=secure
  1964.  
  1965. The volume name can be in upper or lower case, and the full name need not be
  1966. given.  chsfs will match whatever part of the name is given to any SFS
  1967. volume names found until it finds a match.
  1968.  
  1969. Alternatively, if the SFS volume to be accessed is on a removable disk, the
  1970. drive letter can be specified instead of the volume name.  For example if the
  1971. disk drive was A: then the command would be:
  1972.  
  1973.   chsfs <command> a:
  1974.  
  1975. In order to find all available SFS volumes on all disks, the `mountsfs info'
  1976. option can be used as outlined in the section "Mounting an SFS Volume" above.
  1977.  
  1978. The basic characteristics of the SFS volume can be changed with the `newpass',
  1979. `newvol', `newaccess', and `newtimeout' commands, which set a new password, new
  1980. volume name, new disk access mode, and new auto-unmount timeout respectively.
  1981. These commands can each be used individually, or two, three, or even all four
  1982. may be used together (although they can't be used in conjunction with the
  1983. `delete' or `convert' options).  Their usage is in general similar to their use
  1984. with mksfs.
  1985.  
  1986.   `newpass' takes no arguments and will prompt for the original password and
  1987.     then the new password, after which it will change the volume password from
  1988.     the original to the new one.
  1989.  
  1990.   `newvol' takes as an argument the new volume name.
  1991.  
  1992.   `newaccess' takes as an argument the fast disk access mode obtained by
  1993.     running the mksfs program with the `-c' option, with mode 0 being the
  1994.     default, slower access mode.
  1995.  
  1996.   `newtimeout' takes as an argument the auto-unmount timeout setting in
  1997.     minutes, or `none' to clear the auto-unmount timer setting for this volume.
  1998.  
  1999. Since chsfs makes changes to the header record of an encrypted volume, some
  2000. anti-virus programs may print a warning about the boot sector of the volume
  2001. being changed (despite the fact that the volume is quite clearly not an MSDOS
  2002. filesystem).  This warning can be ignored.
  2003.  
  2004. As an example, to change the name of the SFS volume "Personal data" to
  2005. "Letters" and the auto-unmount timer setting to 30 minutes, the command would
  2006. be:
  2007.  
  2008.   chsfs vol=personal newvol=Letters newtimeout=30
  2009.  
  2010. If the newpass option is used, chsfs will first ask for the old poassword:
  2011.  
  2012.   Please enter old password (10...100 characters), [ESC] to quit:
  2013.  
  2014. After verifying that the password is correct, chsfs will ask for the new
  2015. password:
  2016.  
  2017.   Please enter new password (10...100 characters), [ESC] to quit:
  2018.  
  2019. Like mksfs, chsfs will then ask for this password a second time for safety.
  2020. Before updating the volume information, chsfs will perform the same
  2021. multiple-overwrite operation used by the `delete' option of chsfs (see below)
  2022. to erase the original volume header, which is based on the old password.  This
  2023. ensures that no trace of the original disk access information remains before it
  2024. is replaced by the new access information.
  2025.  
  2026. Once the details for the new volume name, auto-unmount timeout, access mode, or
  2027. password have been obtained and the changes made to the volume, chsfs will
  2028. display a message indicating the changes made.  For the above example the
  2029. message would be:
  2030.  
  2031.   Volume characteristics successfully updated.
  2032.  
  2033.   The new volume name is `Letters'.
  2034.   The new auto-unmount timeout is set to 30 minutes.
  2035.  
  2036. Note that chsfs doesn't perform the checking for duplicate or nonexistant
  2037. volume names and the checking for correct functioning of different disk access
  2038. modes which mksfs does.  This is to allow the safe choices forced by mksfs to
  2039. be subsequently overridden using chsfs if required[1].
  2040.  
  2041. Changes to the SFS volume itself are made using the `convert' and `delete'
  2042. commands.  `convert' converts a volume back to its original unencrypted form,
  2043. and `delete' deletes it entirely, leaving behind what appears to the operating
  2044. system as an unformatted disk filled with random noise.
  2045.  
  2046. Since converting or deleting a volume while it is mounted is rather dangerous,
  2047. chsfs checks whether the volume to be converted or deleted is currently
  2048. mounted.  If it is mounted and removable, it will prompt:
  2049.  
  2050.   Warning: This volume is currently mounted.  Do you wish to unmount it
  2051.            and continue [y/n]
  2052.  
  2053. At this point a response of 'Y' will continue and a response of 'N' will exit
  2054. the program.  If a 'N' response is entered, the volume can be unmounted using
  2055. mountsfs or the quick-unmount hotkey before chsfs is re-run.  If the volume has
  2056. been mounted as a fixed, non-removable volume, chsfs will exit with the error
  2057. message:
  2058.  
  2059.   Error: This volume has been mounted as a non-removable volume and cannot be
  2060.          unmounted.  In order for chsfs to be able to work with it, change the
  2061.          CONFIG.SYS entry for the SFS driver and reboot the machine.
  2062.  
  2063. The delete option will first print the name and creation date of the SFS volume
  2064. to be deleted.  At this point the exact name and date of the volume should be
  2065. checked to ensure that this is indeed the one to be deleted.  In this example
  2066. the volume information will be displayed as:
  2067.  
  2068.   Encrypted volume is `Incriminating evidence', created 04/11/93
  2069.  
  2070. chsfs will now prompt for the password in the usual manner.  It uses this to
  2071. check that access to the volume is legitimate, and is needed for chsfs to
  2072. acquire various pieces of information it needs to perform the deletion.  The
  2073. program will then prompt:
  2074.  
  2075.   Warning: The deletion operation will permanently destroy all data on this
  2076.            volume.  Are you sure you want to continue with the deletion [y/n]
  2077.  
  2078. At this point a response of 'Y' will continue and a response of 'N' will exit
  2079. the program.
  2080.  
  2081. If chsfs is told to continue, it will perform multiple overwrite passes over
  2082. the SFS volume header (which contains all the information needed to access the
  2083. volume), printing a progress report as it performs the overwriting:
  2084.  
  2085.   Overwriting: Pass 1
  2086.  
  2087. In total chsfs will perform 30 separate overwrite passes which have been
  2088. selected to provide the best possible chances of destroying data for various
  2089. disk encoding schemes (the exact details are given in the section "Deletion of
  2090. SFS Volumes" below).  Once the multiple overwrites have completed, chsfs will
  2091. print an informational message about the deletion operation:
  2092.  
  2093.   Encrypted volume `Incriminating evidence' has been destroyed
  2094.  
  2095. If the volume is on a fixed disk, you may wish to reboot your machine to make
  2096. the newly-deleted volume visible to DOS.  Volumes on floppy disks will
  2097. automatically be visible.  Since the disk volume is now filled with random
  2098. garbage, it will need to be formatted in the same way an unformatted disk would
  2099. be before it can be used by DOS.
  2100.  
  2101. The convert option will, like the delete option, first print the name and
  2102. creation date of the SFS volume to be converted.  At this point the exact name
  2103. and date of the volume should be checked to ensure that this is indeed the one
  2104. to be converted.  In this example the volume information will be displayed as:
  2105.  
  2106.   Encrypted volume is `Disk data', created 07/12/93
  2107.  
  2108. chsfs will prompt for the encryption password exactly as mksfs did when it
  2109. originally created the SFS volume, and will then prompt:
  2110.  
  2111.   Warning: You are about to convert this volume from an encrypted SFS one to
  2112.            a normal DOS one.  Are you sure you want to continue with the
  2113.            conversion [y/n]
  2114.  
  2115. At this point a response of 'Y' will continue and a response of 'N' will exit
  2116. the program.
  2117.  
  2118. Like mksfs, chsfs will then begin converting the disk.  As it processes the
  2119. volume, it prints a progress bar going from 0% complete to 100% complete.  The
  2120. conversion process will take a few minutes on most disks, and is somewhat
  2121. slower than a standard disk formatting procedure which only writes a very small
  2122. amount of data to the start of the disk and scans for bad sectors, whereas
  2123. chsfs has to read, decrypt, and write the entire disk volume.
  2124.  
  2125. As the conversion progresses, the progress bar will gradually fill up until it
  2126. shows that the conversion is complete.  Once this has finished, chsfs will
  2127. display the message:
  2128.  
  2129.   Encrypted volume `Disk data' has been converted to a normal DOS volume.
  2130.  
  2131. The converted volume is now ready to be used as a normal DOS disk again. If the
  2132. volume is on a fixed disk, DOS will still think it is an encrypted SFS one
  2133. rather than a normal DOS one.  It is recommended that you reboot your machine
  2134. at this point to clear any memories of the old volume from the system, as DOS
  2135. will not be able to see the converted volume until the reboot takes place.  As
  2136. a reminder, chsfs will display:
  2137.  
  2138.   You may wish to reboot your machine to update the status of the volume,
  2139.   which will become available as a standard DOS disk.
  2140.  
  2141. before exiting.  If the volume is on a removable disk, no reboot is necessary
  2142. and chsfs will simply print:
  2143.  
  2144.   The volume is now available as a standard DOS disk.
  2145.  
  2146. Footnote [1]: This makes the (possibly incorrect) assumption that the chsfs
  2147.               user knows what they are doing.
  2148.  
  2149.  
  2150. Sharing SFS Volumes Between Multiple Users
  2151. ------------------------------------------
  2152.  
  2153. At times it may be necessary to share a single encrypted SFS volume between
  2154. multiple users.  For instance several individuals may require access to a
  2155. volume containing confidential business correspondence as part of their
  2156. day-to-day duties.  Usually this would require using a common password which is
  2157. known to every member of the group of people who require access.  The need to
  2158. share passwords is a serious weakness, as the inability to chose individual,
  2159. unique passwords increases the chances that a simple, easy-to-remember (and
  2160. easy-to-guess) password is chosen, or that at least one person writes it down
  2161. if it is too hard to remember.
  2162.  
  2163. SFS solves this problem by allowing each member of the group access to an
  2164. encryped volume under their own individual password.  The allocation of access
  2165. rights to a volume is controlled by an administrator who can grant or revoke
  2166. access as required.  The administration process is handled by the adminsfs
  2167. program, which is run in the following manner:
  2168.  
  2169.   adminsfs [adduser=<user name>] [deluser=<user name>]
  2170.            [chuser=<user name>] [showuser=<user name>] [showall]
  2171.            [validfrom=<DDMMYY>] [validto=<DDMMYY>] [userfile=<user file>]
  2172.  
  2173. Since all arguments are named, they can be given in any order.  The order shown
  2174. here is merely an example.
  2175.  
  2176. [!!!! That's all there is at the moment.  adminsfs is still being checked
  2177.       out by beta-testers and parts of it are still under review.  If anyone
  2178.       has any suggestions for it, let me know !!!!]
  2179.  
  2180.  
  2181. Creating Compressed SFS Volumes
  2182. -------------------------------
  2183.  
  2184. Creating a compressed drive inside an SFS volume provides, apart from the usual
  2185. benefit of increasing the apparent disk space, some additional security against
  2186. an attack by breaking up the very regular standard filesystem structure
  2187. containing large quantities of known data at known locations into a compressed
  2188. filesystem whose structure and contents are much harder to ascertain.
  2189. This section contains information on using SFS with Stac Electronic's "Stacker"
  2190. and JAM Software's "JAM".
  2191.  
  2192.  
  2193. SFS and Stacker
  2194.  
  2195. The instructions given here are for Stac Electronics "Stacker", although it
  2196. should be possible to do the same thing with other reasonably advanced disk
  2197. compressors.  Stacker allows the compression of an entire DOS drive, or
  2198. compression of any remaining free space on the drive.  Creation of a compressed
  2199. Stacker volume involves first mounting the SFS volume on which Stacker is to be
  2200. installed, either with the system-startup mount option of the SFS driver or
  2201. with the mountsfs utility.  Stacker should then be installed in the usual
  2202. manner onto the mounted volume.  Under Windows, this involves chosing the
  2203. "Compress" option from the "Stacker Toolbox", and under DOS it involves running
  2204. the "stac.exe" program and picking the appropriate option, or using the
  2205. "create.com" program on the drive to be compressed.  Stacker will then
  2206. defragment the drive, ask a few questions, and create the Stacker volume.  When
  2207. the Stacker drive has been created, the appropriate mounting parameters for the
  2208. drive will be added to the STACKER.INI file.
  2209.  
  2210. Once the installation has completed, the SFS volume will contain the STACKVOL
  2211. file in which Stacker stores the compressed disk data.
  2212.  
  2213. The Stacker drive can then be mounted in two ways, either from CONFIG.SYS onto
  2214. an SFS volume mounted at system startup, or at a later point (which, however,
  2215. means that it loads an extra copy of the environment variables).  It is also
  2216. possible to load the driver without activating a compressed drive by removing
  2217. the specification for the drive to be mounted from the STACKER.INI file (this
  2218. is normally used for floppies, but works for SFS as well since Stacker treats
  2219. SFS volumes as a removable drive).  The drive can then be mounted at a later
  2220. time with the "stacker <drive letter>" command.  This avoids the need to mount
  2221. an SFS volume at startup.  Under DOS 6, Stacker 4.0 loads using a device
  2222. driver, but hooks into DOS like DoubleSpace does (or at least did when it was
  2223. available). The rest of Stacker is then loaded with the STACHIGH.SYS driver.
  2224.  
  2225. As SFS uses whatever drive letters DOS allocates to it, the stacked drive will
  2226. take over the drive letter used by the SFS volume rather than swapping drive
  2227. letters for the stacked and normal drive as it usually does.  This shouldn't
  2228. provide any problems with accessing the drive, as the compressed and encrypted
  2229. drive will simply replace the encrypted drive.  However, it will provide
  2230. problems at a later point because Stacker uses the "Mount replaced" option, in
  2231. which Stacker manipulates internal DOS data structures to completely replace
  2232. the original SFS drive.  This means that mountsfs can no longer find the
  2233. mounted SFS drive for the "status", "info", "information", and "unmount"
  2234. commands, although timed unmounts and hotkey unmounts performed by the SFS
  2235. driver itself will still work.
  2236.  
  2237.  
  2238. SFS and JAM
  2239.  
  2240. Using JAM Software's "JAM" compressor with SFS is somewhat simpler than using
  2241. Stacker, and provides an additional benefit of speeding up effective disk
  2242. access times since the high-speed JAM software reduces the amount of data which
  2243. must be subsequently encrypted.  Creation of a compressed JAM volume involves
  2244. first mounting the SFS volume on which the JAM volume is to be installed,
  2245. either with the system-startup mount option of the SFS driver or with the
  2246. mountsfs utility.  The compressed volume can then be created as described in
  2247. the JAM documentation with the JCREATE utility.
  2248.  
  2249. Once the creation of the compressed disk volume has completed, it can be
  2250. mounted by loading the JAM.SYS driver via the CONFIG.SYS file, and mounting the
  2251. JAM volume using the JMOUNT utility, either onto an SFS volume mounted at
  2252. system startup by running JMOUNT from the CONFIG.SYS file, or at a later point
  2253. by running JMOUNT from the command line.  This avoids the need to mount an SFS
  2254. volume at startup.
  2255.  
  2256. Unlike Stacker, JAM does not mess with DOS drive letters, allowing both the SFS
  2257. volume and the JAM volume it contains to be accessed as normal.  JAM is
  2258. available for FTP from garbo.uwasa.fi and all garbo mirrors as
  2259. /pc/arcers/jam119sw.zip.
  2260.  
  2261.  
  2262. WinSFS - Using SFS with Windows
  2263. -------------------------------
  2264.  
  2265. WinSFS is a prototype of the Windows version of SFS, and currently runs as a
  2266. front-end for mountsfs, which means that the mountsfs program must be either in
  2267. the DOS path or in the Windows directory for WinSFS to work.  WinSFS also needs
  2268. the Visual Basic library VBRUN200.DLL in order to run.  This file is publicly
  2269. available from a number of sources.
  2270.  
  2271. When run, WinSFS will display a window containing a list of SFS volumes
  2272. available to be mounted, a list of currently mounted volumes, and an icon bar
  2273. which is used to control WinSFS.  These icons perform the following functions:
  2274.  
  2275.   Cross icon        : Exit WinSFS
  2276.   Disk icon         : Mount an SFS volume
  2277.   Crossed disk icon : Unmount an SFS volume
  2278.   Information icon  : Display detailed information on an SFS volume
  2279.   Write icon        : Enable read/write access on an SFS volume
  2280.   Crossed write icon: Enable read-only access on an SFS volume
  2281.  
  2282.  
  2283. Mounting a Volume with WinSFS
  2284.  
  2285. To mount an SFS volume, click on the volume name in the "Available volumes"
  2286. window, and then click on either the "Mount volume" icon or the "Mount" button
  2287. (eventually this function will also be available by dragging the volume name
  2288. and dropping it into the "Mounted" list).  WinSFS will ask for the volume
  2289. password, and then mount the volume.  Once the volume is mounted, its name will
  2290. disappear from the "Available volumes" list and appear in the "Mounted" list.
  2291.  
  2292.  
  2293. Unmounting a Volume with WinSFS
  2294.  
  2295. To unmount an SFS volume, click on the volume name in the "Mounted" window, and
  2296. then click on either the "Unmount volume" icon or the "Unmount" button
  2297. (eventually this function will also be available by dragging the volume name
  2298. and dropping it into the "Available volumes" list).  WinSFS will unmount the
  2299. volume, and its name will disappear from the "Mounted" list and appear in the
  2300. "Available volumes" list.
  2301.  
  2302.  
  2303. Getting Information on a Volume with WinSFS
  2304.  
  2305. To get detailed information on a volume, click on its name, and then either
  2306. click the right mouse button, or select the "Information" icon.  This will
  2307. bring up a window giving extra information on the volume such as the creation
  2308. time, serial number, size, and mount identifier.
  2309.  
  2310.  
  2311. Setting a Volume's Read/Write Access with WinSFS
  2312.  
  2313. To change the read/write status of an SFS volume, click on its name in the
  2314. "Mounted" window, and then click on either the "Read-only" or "Read/write" icon
  2315. in the icon bar to change its access status.
  2316.  
  2317.  
  2318. Command Summary
  2319. ---------------
  2320.  
  2321. This section serves as a quick-reference for the options available with the
  2322. various SFS programs.  The available options for mksfs, mountsfs, chsfs, and
  2323. adminsfs are:
  2324.  
  2325. MakeSFS - Make Secure Filesystem
  2326.  
  2327.   -c = Perform a confidence test on the volume to be encrypted without
  2328.        actually encrypting it
  2329.   -o = Override the disk boot record sanity check.  This may be necessary
  2330.        for some unusual disk formats
  2331.   -t = Test the integrity of the MDC/SHS encryption code used in SFS
  2332.   -e = Display an extended error code if an error occurs.  This provides
  2333.        extra information on the nature of some errors
  2334.  
  2335.   multiuser           = Allow multiuser access on the volume to be created
  2336.   fastaccess=<mode>   = Specify the fast disk access mode (as given by the
  2337.                         output of the `-c' option) to use for this volume
  2338.   timeout=<timeout>   = Specify the auto-unmount timeout for this volume
  2339.   wipe                = Wipe the original data before overwriting it with
  2340.                         encrypted data (this option is very slow)
  2341.  
  2342.   vol=<volume name>      = Specify the name of the volume to be created
  2343.   serial=<serial number> = Specify the serial number of the volume to be created
  2344.   <drive letter>         = Specify the letter of the drive to create the
  2345.                            encrypted volume on
  2346.  
  2347. MountSFS - Mount Secure Filesystem
  2348.  
  2349.   +r  = Mount the encrypted volume with read-only access
  2350.   +rw = Mount the encrypted volume with read/write access (default)
  2351.  
  2352.   info          = Show brief information on all available SFS volumes
  2353.   information   = Show detailed information on all available SFS volumes
  2354.   status        = Show information on mounted volumes only
  2355.   unmount       = Unmount the volume
  2356.  
  2357.   hotkey=<hotkeys>    = Set the quick-unmount hotkey combination
  2358.   timeout=<timeout>   = Set the auto-unmount timer value in minutes
  2359.   user=<username>     = Specify the user name for a volume with multiuser access
  2360.   userfile=<filename> = Specify the path to the information file associated with
  2361.                         a volume which allows multiuser access
  2362.   vol=<volume name>   = Specify the name of encrypted volume to mount
  2363.   <drive letter>      = Specify the drive letter of the volume to mount
  2364.                         (For volumes on floppy disks only)
  2365.  
  2366. ChangeSFS - Change Secure Filesystem
  2367.  
  2368.   newpass                 = Set a new volume password
  2369.   newvol=<volume name>    = Specify the new volume name
  2370.   newtimeout=<timeout>    = Specify the new auto-unmount timeout
  2371.   newaccess=<access mode> = Specify the new fast disk access mode
  2372.  
  2373.   delete    = Delete SFS volume
  2374.   convert   = Convert volume back to unencrypted form
  2375.  
  2376.   vol=<volume name>   = Specify the name of the encrypted volume to change
  2377.   <drive letter>      = Specify the drive letter of the volume to change
  2378.                         (For volumes on floppy disks only)
  2379.  
  2380. AdminSFS - Administrate SFS User Database
  2381.  
  2382.   adduser=<user name> = Add a new user with the given name to the database
  2383.   deluser=<user name> = Remove user with the given name from the database
  2384.   chuser=<user name>  = Change user database entry for the named user
  2385.   showuser=<user name>= Show access information for a given user
  2386.   showall             = Show access information for all users
  2387.  
  2388.   validfrom=<DDMMYY>  = Set date after which access for a user is allowed
  2389.   validto=<DDMMYY>    = Set date at which a users access expires
  2390.  
  2391.   userfile=<filename> = Specify the path to the user information file
  2392.  
  2393.  
  2394. Incompatibilities
  2395. -----------------
  2396.  
  2397. Over the years a variety of strange hardware and software setups have been
  2398. created in order to get around some of the shortcomings of the PC hardware and
  2399. DOS (and occasionally other operating systems) software.  Since SFS accesses
  2400. the disk at a level below that normally used by the operating system, it will
  2401. bypass special options like compressed volumes and non-local networked drives,
  2402. and won't recognise nonstandard hardware like drives with more than 1024
  2403. cylinders which require special software patches in order to work with DOS. For
  2404. example, SFS will recognise the uncompressed volumes used by Stacker,
  2405. DoubleSpace, and JAM, but won't see the compressed volumes as these are an
  2406. illusion created in software and visible only to DOS.  It is therefore not
  2407. possible to encrypt compressed volumes (there would be very little point, as
  2408. encryption would render the data completely uncompressible), although it is
  2409. possible to create a compressed volume inside an encrypted volume (this is
  2410. covered in the section "Creating Compressed SFS Volumes" above).
  2411.  
  2412.  
  2413. Checking for Problems with mksfs
  2414.  
  2415. If your system has an unusual setup, or if you're worried about what SFS may
  2416. do, you can use a special option with the mksfs command to perform a check on
  2417. the drive which is to be encrypted.  This option also bypasses a number of the
  2418. usual checks SFS performs relating to duplicate volume names, anonymous
  2419. volumes, and so on, to allow all types of volume arrangements to be checked.
  2420.  
  2421. If the `-c' option is specified along with the drive letter, mksfs will (if the
  2422. volume in question is a fixed disk) first display technical information on all
  2423. available fixed disk volumes, so that the command:
  2424.  
  2425.     mksfs -c e:
  2426.  
  2427. would produce the following output:
  2428.  
  2429.   Drive partition information follows:
  2430.  
  2431.   Ph Bt Dr Cyl. Head Sec. Cyl. Head Sec.  Size  ID Type
  2432.   -- -- -- ---- ---- ---- ---- ---- ---- ------ -- ----
  2433.    0  N  C    0    1    0  379   15   39 121600 06 DOS (16-bit FAT, >= 32M)
  2434.    0  Y  -  380    0    0  383   15   39   1280 0A OS/2 boot manager
  2435.    0  N  D  384    1    0  594   15   39  67200 06 DOS (16-bit FAT, >= 32M)
  2436.    0  N  E  595    1    0 1022   15   39 136640 06 DOS (16-bit FAT, >= 32M)
  2437.                                                    This would be the SFS disk
  2438.   06  N  -    0    1    0  442   63   31 452608 07 OS/2 HPFS
  2439.   06  N  F  443    0    0  571   63   31 131072 06 DOS (16-bit FAT, >= 32M)
  2440.   06  N  G  572    0    0  872   63   31 307200 06 DOS (16-bit FAT, >= 32M)
  2441.  
  2442. This is only displayed for fixed disks, as floppy disks don't contain this
  2443. information.  The values in the various columns are Ph = physical drive number,
  2444. Bt = bootable flag, Dr = DOS drive letter, Cyl,Head,Sec = partition start,
  2445. Cyl,Head,Sec = partition end, Size = size in kbytes, ID = partition ID byte,
  2446. and Type = partition type.  The proposed SFS partition will be marked as such.
  2447. The drive with an apparent 2-digit physical drive number is a SCSI drive which
  2448. isn't accessible through the BIOS; the first digit is the SCSI target ID, the
  2449. second digit is the logical unit number.  If you don't know what these values
  2450. mean, don't worry - this option is mainly useful in providing technical
  2451. information for those who want it.
  2452.  
  2453. Once all drives have been checked, more specific information on the actual
  2454. volume in question is displayed:
  2455.  
  2456.   Volume will be checked on fixed drive E:
  2457.   This drive has a capacity of 136.6 MB and is labelled `Data disk'
  2458.   Are you sure you want to check this volume [y/n]
  2459.  
  2460. As with the usual mksfs process, typing 'Y' will continue with the volume check
  2461. and typing 'N' will exit.  If you choose to continue, mksfs will first perform
  2462. an initial disk confidence test which consists of some general checks on the
  2463. volume layout to make sure its format is valid, and will then perform a read
  2464. confidence test in which it reads random disk blocks and compares them with the
  2465. data reported by the operating system.  If any errors are encountered, it will
  2466. print a diagnostic message before continuing.  If all is OK, the sequence of
  2467. messages will be:
  2468.  
  2469.   Performing disk confidence test...
  2470.   Performing read confidence test...
  2471.   [various test-in-progress messages]
  2472.  
  2473. If there are problems, the diagnostic message will give more information on the
  2474. nature of the problem.  After the basic tests have completed, mksfs may display
  2475. specific information about the particular drive on which the SFS volume is to
  2476. be created, and ask whether additional tests should be made to determine
  2477. whether use of the fast access modes supported by the SFS driver is possible.
  2478. A typical message would be:
  2479.  
  2480.   This drive is a WDC AC2420 with a multi-sector 256K buffer, and appears
  2481.   to support the high-speed direct access mode which SFS is capable of.
  2482.   mksfs will now test whether this is indeed true.  Are you sure you want to
  2483.   perform the test [y/n]
  2484.  
  2485. with the exact text depending on the drive type.  At this point a response of
  2486. 'Y' will run the extended tests, and a response of 'N' will exit the program.
  2487. The extended tests are similar to the previous tests, and display the same
  2488. messages if problems are found.
  2489.  
  2490. If problems are detected, mksfs will display:
  2491.  
  2492.   This drive does not appear to support the high-speed direct-access mode
  2493.   used by SFS.  The default slower access mode will be used.
  2494.  
  2495. Otherwise, the message:
  2496.  
  2497.   This drive supports the high-speed direct-access mode used by SFS.
  2498.   You can enable use of this mode by specifying the `fastaccess=1' option
  2499.   when mksfs is run, or enable it at a later date using the `newaccess=1'
  2500.   option in chsfs.
  2501.  
  2502. will be displayed.  If using Windows 3.1 with 32-bit disk access, this access
  2503. mode should not be used, as Windows uses the same mode and will detect SFS disk
  2504. accesses and block them.
  2505.  
  2506. If the drive is a SCSI device which needs a device driver to work with DOS, SFS
  2507. will access it directly as a SCSI device rather than simply a standard disk
  2508. drive.  SFS will work with drives accessed through ASPI (Adaptec SCSI
  2509. Programming Interface) and CAM (Common Access Method) drivers.  ASPI drivers
  2510. come with most SCSI drive controllers or can be purchased seperately.  The CAM
  2511. driver ASPICAM.SYS is available from NCR[1].
  2512.  
  2513. If direct SCSI access is possible, mksfs will display additional information on
  2514. the drive, typically:
  2515.  
  2516.   This drive is a MAXTOR XT-8760S SCSI drive attached to an ADAPTEC AHA-1x4x
  2517.   host with host ID 0, target ID 2, logical unit number 0.  SFS will access it
  2518.   as a SCSI device rather than a normal hard drive.
  2519.  
  2520. If mksfs is used to create an encrypted volume on this drive, it will
  2521. automatically access it with a SCSI access mode (equivalent to `fastaccess=2')
  2522. without having to be told about it.
  2523.  
  2524. Once all tests have finished, mksfs will display the message:
  2525.  
  2526.   Confidence test successfully concluded
  2527.  
  2528. or an error count if errors occurred.  In either case, mksfs will exit after
  2529. the tests have concluded without creating the encrypted volume.  If used with
  2530. the `-c' option, mksfs will never modify any information on disk, whether the
  2531. tests are successful or not.  This is important, as it allows a confidence test
  2532. to be performed before an encrypted volume is created.
  2533.  
  2534.  
  2535. Problems with Windows
  2536.  
  2537. The timed auto-unmount option and quick-unmount hotkey option are generally
  2538. unavailable under Windows as Windows disables the standard keyboard and timer
  2539. handling when it runs[2].  In order to unmount a volume from within Windows,
  2540. the mountsfs program must be run explicitly.  The one exception to this rule is
  2541. that if a quick-unmount hotkey is set from within a DOS session then it will
  2542. remain available (but only within the DOS session) while that particular DOS
  2543. session is active.
  2544.  
  2545.  
  2546. Problems with Other Software
  2547.  
  2548. The Mitsumi CDROM device driver, if installed before another block driver like
  2549. SFS, will mistakenly try to use the drive letter allocated to the other driver
  2550. as its own one.  There have been reports of other CDROM drivers (in particular
  2551. the Sony one) which display similar traits (CDROM drivers are strange beasts
  2552. which have rather special requirements).  The DTC SCSI driver has a similar
  2553. problem in that it grabs more drive letters than DOS allocates to it, which
  2554. means that any block drivers loaded after it will be allocated drive letters by
  2555. DOS which are already being used by the SCSI driver.  The solution to this
  2556. problem is to make sure that the SFS driver is loaded before any problematic
  2557. CDROM or SCSI drivers by placing the DEVICE=SFS.SYS line before the one which
  2558. loads the CDROM or SCSI driver in the CONFIG.SYS file.
  2559.  
  2560. The KEYB driver incorrectly handles the keyboard interrupt, which locks out the
  2561. SFS driver's quick-unmount hotkey handling if the `HOTKEY=quick-unmount hotkey'
  2562. command is used at the time the driver is loaded.  If the `HOTKEY=NONE' option
  2563. is specified when the SFS driver is installed, and the hotkey is set using
  2564. mountsfs after the KEYB driver has been loaded, everything works fine[3].  In
  2565. addition, SFS always acts as though the keyboard being used has the default
  2566. US-style layout, since the SFS software communicates directly with the keyboard
  2567. rather then working through driver software (which hasn't been loaded yet when
  2568. SFS is activated).  However since all SFS software performs the same keyboard
  2569. handling, this will only be noticed by SFS and should be transparent to the end
  2570. user.
  2571.  
  2572. Some (now very rare) device drivers and TSR's will destroy the contents of
  2573. 32-bit registers when they are activated, which means that the data in the SFS
  2574. driver will become invalid from one machine instruction to the next.  There
  2575. have been reports of older versions of the PC-Kwik cache and Novell's
  2576. non-dedicated file server version 2.2 doing this.  A program to detect and
  2577. possibly fix this problem is available from garbo.uwasa.fi as
  2578. /pc/turbopas/trash.zip.
  2579.  
  2580. The Lantastic server software, version 6.0, can cause problems with mksfs.  If
  2581. running "mksfs -c" reports errors then the server.exe program should be
  2582. unloaded before mksfs is used to encrypt a DOS volume, and also before chsfs is
  2583. used with the `convert' option.
  2584.  
  2585. Some of the Borland software development tools don't handle DOS critical errors
  2586. very well (they hang either when the error occurs or soon afterwards).  Since
  2587. trying to access a non-mounted volume is treated by DOS as an error, it may
  2588. cause programs like the IDE and the debugger to hang[4].  Trying to read a
  2589. floppy drive without a disk in the drive, and any other action which causes a
  2590. DOS critical error, can have the same effect.
  2591.  
  2592. The Always Technology SCSI manager has a bug which makes use of SCSI devices
  2593. with logical unit numbers (LUN's) other than the default value of 0 impossible.
  2594. The SFS programs will detect this SCSI manager and avoid using devices with
  2595. LUN's other than 0.  In practice this will not be a problem since SCSI devices
  2596. normally have the LUN set to 0.
  2597.  
  2598. SFS will not work with S&H Computer Systems' TSX multi-tasking operating
  2599. system, which doesn't support some disk utilities, DOS device drivers, and
  2600. programs which directly access hardware devices (which pretty well covers all
  2601. of what SFS does).
  2602.  
  2603.  
  2604. Problems with hardware
  2605.  
  2606. Some floppy drive and system BIOS combinations aren't terribly reliable.  It
  2607. has been reported that a laptop using the Phoenix 1.01 BIOS gives a multitude
  2608. of disk errors when encrypting a disk using mksfs.  The exact error type is
  2609. uncertain since the error code returned when the disk access fails is an
  2610. undefined value.  The Award 3.03 BIOS when used with some floppy drives also
  2611. causes problems, especially with newer versions of DOS (version 6.0 and up),
  2612. which may have great trouble reliably writing disks.  Microsoft's suggested
  2613. solution to the problem is a BIOS upgrade.
  2614.  
  2615. Footnote [1]: It is also available from the NCR FTP site ftp.ncr.com as part of
  2616.               the archive /pub/ncrchips/scsi/drivers/dos_win/dos_drv.zip.
  2617.  
  2618. Footnote [2]: Windows virtualizes the keyboard and timer interrupts and locks
  2619.               out SFS.  Although it is possible to bypass this, it must be done
  2620.               from within Windows itself, which is not possible for a device
  2621.               driver like SFS.
  2622.  
  2623. Footnote [3]: The KEYB driver provides a complete replacement for the BIOS int
  2624.               9h keyboard driver.  KEYB is somewhat peculiar in its keyboard
  2625.               handling, and doesn't coexist well with other keyboard handlers.
  2626.               It also disables interrupts for lengthy periods of time while
  2627.               processing keyboard scan codes.
  2628.  
  2629. Footnote [4]: This is the famous recursive footnote[4].
  2630.  
  2631.  
  2632. Authentication of SFS Software
  2633. ------------------------------
  2634.  
  2635. There have been several occasions in the past when fake versions of software
  2636. have been distributed.  Sometimes these fake release are even wrapped up in a
  2637. nice-looking "security envelope" guaranteeing their authenticity.  With
  2638. encryption software like SFS it is all too tempting for an opponent to simply
  2639. create and distribute a compromised version of SFS rather than try to break the
  2640. SFS encryption itself.  In order to avoid any problems in this respect, the
  2641. distributed SFS driver and executables are accompanied by a digital signature
  2642. which can be used to verify that it is indeed an official version.
  2643.  
  2644. In order to check the authenticity of the particular version of SFS, you will
  2645. need the PGP encryption package, and my public key, which is included in the
  2646. standard PGP distribution.  My key is signed by Philip Zimmermann, the original
  2647. author of PGP, and several members of the PGP development team.  First, my key
  2648. should be checked for authenticity with the command:
  2649.  
  2650.   pgp -kc "Peter Gutmann"
  2651.  
  2652. When it performs the key check, PGP should display the following signatures:
  2653.  
  2654.   Type bits/keyID     Date    User ID
  2655.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  2656.   sig!      E722D9 1992/11/26   Branko Lankester <lankeste@fwi.uva.nl>
  2657.   sig!      997D47 1992/10/11   Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  2658.   sig!      7C02F9 1992/09/07   Felipe Rodriquez <nonsenso@utopia.hacktic.nl>
  2659.   sig!      1336F5 1992/09/05   Harry Bush <Harry@castle.riga.lv>
  2660.   sig!      67F70B 1992/09/02   Philip R. Zimmermann <prz@sage.cgd.ucar.edu>
  2661.  
  2662. There may be other signatures on there, but these are the ones from the PGP
  2663. development team and are the most important ones.  Version 2.1 and up of PGP
  2664. can, in addition, generate a key fingerprint for a key.  This can be calculated
  2665. with the command:
  2666.  
  2667.   pgp -kvc "Peter Gutmann"
  2668.  
  2669. PGP should display the following:
  2670.  
  2671.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  2672.             Key fingerprint = 7C 6D 81 DF F2 62 0F 4A  67 0E 86 50 99 7E A6 B1
  2673.  
  2674. If the keyID or key fingerprint for my key differs from the one shown above or
  2675. the signatures don't check out, then the key is a probably a fake and shouldn't
  2676. be trusted.  Assuming the key is in order, the authenticity of the device
  2677. driver and the support software can be checked with:
  2678.  
  2679.   pgp sfs.sig sfs.sys
  2680.   pgp <program>.sig <program>.exe
  2681.  
  2682. where sfs.sig and <program>.sig are the digital signatures included with SFS as
  2683. distributed.  For example to check the authenticity of the mksfs program type:
  2684.  
  2685.  pgp mksfs.sig mksfs.exe
  2686.  
  2687. When it performs the check, PGP should display:
  2688.  
  2689.   Good signature from user Peter Gutmann <pgut1@cs.aukuni.ac.nz> .
  2690.   Signature made <date of signature>
  2691.  
  2692. If PGP reports a bad signature then the executable shouldn't be trusted.  A
  2693. new, hopefully untouched, version can be obtained from any archive site, BBS,
  2694. or system which carries the standard SFS distribution, or it can be obtained
  2695. directly from the author.
  2696.  
  2697.  
  2698. Applications
  2699. ------------
  2700.  
  2701. Apart from the simple use of SFS for personal and business data privacy, there
  2702. are a number of other possible applications for which it can be used.  Some of
  2703. these are listed below.
  2704.  
  2705.  
  2706. Secure Information Exchange
  2707.  
  2708. If a communications channel is available between two systems which use SFS,
  2709. confidential data can be transferred from one encrypted SFS volume to the other
  2710. by using encryption on the communications channel.  For example a businessman
  2711. whose work involves a lot of travel could read data off the SFS volume on his
  2712. portable computer and encrypt it as it is sent via modem to his place of work.
  2713. At work the data could be decrypted and written to another SFS volume.  The
  2714. only time the data is available in unencrypted form is while it is being read
  2715. off the SFS volume and re-encrypted for transmission, which represents a
  2716. minimal risk as interrupting the transmission will involve stopping the program
  2717. which will (presumably) contain error handlers which erase any sensitive
  2718. information from memory.
  2719.  
  2720. Using a package like PGP (Pretty Good Privacy) or a PEM (Privacy-Enhanced Mail)
  2721. implementation in conjunction with SFS allows the secure distribution of
  2722. information through an online service like a computer bulletin board.  The
  2723. online system can retreive the public key of the person requesting the
  2724. information, read the required data off the SFS volume into the encryption
  2725. program where it is encrypted with the recipients public key, and transmit it.
  2726. At the other end the recipient will decrypt the data with their private key and
  2727. write it straight onto their own SFS volume.  Again, the amount of time in
  2728. which unencrypted data is available is minimal, and properly implemented
  2729. software will destroy any sensitive information if interrupted in any way.
  2730.  
  2731.  
  2732. Defence in Depth
  2733.  
  2734. With the increasing strength of cryptographic software which is becoming
  2735. available to the public, means of compromising encryption security which don't
  2736. involve breaking the encryption itself are becoming more and more desirable.
  2737. This may involve things like creating fake versions of the encryption software
  2738. which have trapdoors in them and planting them in a victim's system, planting
  2739. versions which save the entered password somewhere and then restore the
  2740. original unaltered copies, or similar tricks.  This means that for maximum
  2741. security it is necessry to not only protect the password, but also to protect
  2742. the encryption software itself, and any software which interacts with it, and
  2743. anything which interacts with that, ad nauseum.  If several encryption and
  2744. security packages are used, every one of these must be protected separately.
  2745.  
  2746. By using SFS, some degree of protection is offered against malicious
  2747. manipulation, since an attacker must first get to the software stored on an SFS
  2748. volume in order to compromise it.  Storing other security-related software on
  2749. an encryption volume takes it out of the reach of any attack, but makes the SFS
  2750. software itself more of a target for an attack.  Eventually this problem can be
  2751. reduced somewhat through the use of SFS encryption hardware, which is currently
  2752. under (very gradual) development.  Another possibility is to store duplicate
  2753. copies of the SFS software on an encrypted volume which is initially mounted
  2754. read-only.  The versions on the SFS volume can be compared (using software also
  2755. stored on the SFS volume) with the unencrypted versions, and if they are
  2756. identical to the reference versions, write access to the volume can be enabled
  2757. and the volume used as normal.  Another possibility is to simply store
  2758. checksums or digital signatures for the SFS programs on the encrypted volume,
  2759. and only write-enable it if the checksums or signatures check out.
  2760.  
  2761. Using SFS for Virus Protection
  2762.  
  2763. SFS can be used as a form of virus protection for large collections of
  2764. computers by using it to create a centralised entry point for all data to the
  2765. system.  Consider a company operating 1,000 separate machines.  Normally this
  2766. would require 1,000 copies of a virus scanner to be installed and updated every
  2767. few months as new viruses appear.  In addition, use of the scanner on every one
  2768. of the 1,000 machines would have to be enforced rigorously.
  2769.  
  2770. An alternative is to install SFS on each of the machines, and make a policy
  2771. that only SFS-encrypted disks will be used within the company.  Then a single
  2772. scanner can be installed on a single machine, and all disks brough in from the
  2773. outside scanned and encrypted on that machine.
  2774.  
  2775. If every computer is initially virus-free, and all disks are SFS-encrypted,
  2776. then there are two possible means of attack for a virus.  The first is to
  2777. infect a file or disk when it is outside the company.  However as disks
  2778. originating from within the company are encrypted, no files (or, indeed,
  2779. anything) are visible on them, so there is nothing for a virus to infect (in
  2780. fact, DOS won't even recognise the disks as being formatted).  All disks
  2781. originating from outside the company have to be processed by the single
  2782. controlled computer before they can be used (or SFS will refuse to mount them),
  2783. meaning that any known virus on a non-company disk should be picked up before
  2784. the disk is encrypted.
  2785.  
  2786. Alternatively, a boot sector virus could infect an SFS-encrypted disk.
  2787. However, if an attempt is made to use the infected disk (which involves
  2788. mounting it), the mount will fail as the boot sector will contain the virus
  2789. rather than the SFS volume header.  The person who tried to mount the volume
  2790. will assume the disk has not been "converted" yet, and will bring it to the
  2791. machine used for processing the disks.  At this point the virus can be found by
  2792. the scanner.
  2793.  
  2794. This procedure isn't totally error free.  It won't work if there may already be
  2795. viruses present on one or more of the machines before SFS is installed.  In
  2796. addition, an SFS disk whose volume header is overwritten by a virus is probably
  2797. damaged beyond repair.  However it does provide a reasonable amount of
  2798. protection, and has the pleasant side effect of keeping all the company records
  2799. secure against unauthorized access attempts.
  2800.