home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / HPACK78S.ZIP / docs / readme.1st < prev    next >
Text File  |  1992-12-03  |  22KB  |  454 lines

  1.  
  2.     =======================================================================
  3.  
  4.     This  version  of  HPACK  is  a  beta  release of the final version.  A
  5.     previous version, version 0.75 was  released  as  a  prototype  to  get
  6.     feedback  from users for the final version.  The 0.75 release carried a
  7.     warning message that it was a prototype only and not for  general  use.
  8.     The 0.78 release supersedes version 0.75, and includes:
  9.  
  10.     - Improved portability to all OS's (the Mac port was done in  a  *single
  11.       day*), and easier portability to different mutations of Unix.
  12.  
  13.     - Public-key  and  conventional  encryption  of archives or  individual
  14.       files.
  15.  
  16.     - Data  authentication/manipulation   detection   using   RSA   digital
  17.       signatures.
  18.  
  19.     - Multi-disk archive handling (your mileage may vary on this).
  20.  
  21.     - Improved support for  OS-specific  features  such  as  OS/2  extended
  22.       attributes.
  23.  
  24.     - Various small improvements based on suggestions from users.
  25.  
  26.     - Improved  support for multilingual versions (extended ASCII, Japanese
  27.       DBCS, Unicode, etc).  Currently HPACK is available in four  different
  28.       languages.
  29.  
  30.     - High-quality Postscript documentation.
  31.  
  32.     Note:  HPACK  is  a 100% matter product.  In the unlikely event that it
  33.     should contact antimatter in any form, a  catastrophic  explosion  will
  34.     result.
  35.  
  36.     =======================================================================
  37.  
  38.  
  39. General Layout
  40. ==============
  41.  
  42.  The executable distribution of HPACK contains the following files:
  43.  
  44.     README.1ST   - This file.
  45.     HPACK{.EXE}  - The HPACK archiver
  46.     HPACK.DOC    - The HPACK documentation.
  47.     HPACKEXT.DOC - The extended documentation for advanced users.
  48.     REGISTER.DOC - HPACK registration form.
  49.     HPACK.SIG    - Digital signature for executable (MSDOS, OS/2 only)
  50.     KEY.ASC      - My PGP 2.0 public key (MSDOS, OS/2 only)
  51.  
  52.  The layout of the source distribution is given in the file HPACKSTD.TXT.
  53.  
  54.  
  55. Running HPACK: MSDOS and OS/2
  56. =============================
  57.  
  58.    The OS/2 version is quite similar to the DOS version,  except  that  it  is
  59.  HPFS-aware  and  will handle extended attributes for files and directories if
  60.  this is specified by the [-a]ttribute switch.  This version will also give an
  61.  HPACK archive certain extended attributes such as type and icon  information.
  62.  Apart from that, it behaves as the DOS version.  The archive containing HPACK
  63.  in   fact   contains   two   executables,   HPACK_16.EXE   and  HPACK_32.EXE.
  64.  HPACK_16.EXE  is  a 16-bit version for use with OS/2 versions before 2.0, and
  65.  HPACK_32.EXE is a 32-bit version for use with OS/2 versions  2.0  and  above.
  66.  The appropriate executable should be renamed to HPACK.EXE before use.
  67.  
  68.  
  69. Running HPACK: Unix
  70. ===================
  71.  
  72.    The  Unix  version of HPACK is distributed in source form as hpack78.tar.Z.
  73.  It  has  been  tested  under  AIX  RS6000,  AIX 386, AIX 370, Irix, ISC Unix,
  74.  Posix, SunOs, SVR4, and Ultrix and is known to compile succesfully  on  these
  75.  systems (the tar.Z was created by moving HPACKed DOS source onto a DECstation
  76.  and extracting and re-compressing it there.  Note that in some cases the code
  77.  run wasn't the latest, up-to-the-minute release so it  may  be  necessary  to
  78.  tweak a line or two).  Hopefully it should be possible to compile it on other
  79.  systems  with a minimum amount of modification.  Before compiling it on a new
  80.  system, you should briefly read at least the second half of  HPACKSTD.TXT  in
  81.  the  DOCS  directory  (everything  after the "Getting Started" heading) which
  82.  contains notes on porting and an overview of  the  system-specific  functions
  83.  contained  in  the  code.   Edit the makefile for your system (Unix flavour),
  84.  also edit DEFS.H (if  necessary)  as  appropriate.  Depending  on  your  Unix
  85.  flavour  you  will  probably  have  to  tune SYSTEM.H and UNIX.C a bit (eg if
  86.  you've got a mkdir() or not, a memmove(), a rename(), and a  few  other  odds
  87.  and  ends).  It took about half an hour for Ultrix (of which about 20 minutes
  88.  was spent waiting for the compiler), in general it only seems to take  a  few
  89.  minutes to adapt it to any new Unix variant.
  90.  
  91.  The  only  problems  you may run into is with running it on 64-bit systems, I
  92.  don't have any experience with them so  maybe  I'm  just  being  pessimistic,
  93.  certainly the move from 16 to 32-bit showed up only one minor  problem  which
  94.  was  fixed  in  about  5  minutes.
  95.  
  96.  Once you get it going, send the diffs to me (pgut1@cs.aukuni.ac.nz) and  I'll
  97.  integrate  them  into the code.  If you can't get it to compile on one of the
  98.  above systems, I can probably arrange to mail you an executable  -  hassle me
  99.  via email.
  100.  
  101.  
  102. Running HPACK: Mac
  103. ==================
  104.  
  105.    The Mac version is currently a rather simplistic port of  the  generic  CLI
  106.  code.   When  run,  it  will  prompt  for  a  command-line as used by the CLI
  107.  version,  and  display  all  output  on  the  console  window.   A  full  Mac
  108.  implementation  should  eventually  become  available,  based  on the Windows
  109.  version.
  110.  
  111.  The Mac port was done in a single day, mainly to demonstrate how easy it  was
  112.  to  move  it  to  virtually  any  OS,  even one whose filesystem interface is
  113.  radically different from the generic Unix-like one assumed by the  high-level
  114.  code.  The fact that it was done in one day shows when the program is run, if
  115.  anyone wants to add the usual GUI paraphernalia let me know.
  116.  
  117.  THIS IS NOT THE FINAL FORM OF THE MACINTOSH VERSION OF HPACK.  IN  ITS  FINAL
  118.  FORM HPACK WILL  HAVE  THE  USUAL  MACINTOSH  USER INTERFACE, NOT THE CURRENT
  119.  COMMAND-LINE ONE.  THE CURRENT VERSION HAS BEEN RELEASED  MAINLY TO PROVIDE A
  120.  MEANS OF TRANSFERRING ARCHIVES TO/FROM  THE MAC (and also to persuade someone
  121.  to add a Mac interface to it :-).
  122.  
  123.  Important note: When working on a  port  like  this,  never  promise  to  buy
  124.  everyone in the room pizza if it works the first time you run it.
  125.  
  126.  
  127. Running HPACK: Amiga
  128. ====================
  129.  
  130.    The  Amiga  HPACK  is virtually identical to the generic Unix-like command-
  131.  line version.  Unfortunately, due to lack of access to Amiga  hardware,  this
  132.  version hasn't been tested much (if someone gives me an A4000 I'll test it to
  133.  death, I promise).
  134.  
  135.  When compiling the code, Lattice C will give about half a dozen warnings  per
  136.  file  about  unrecognised  pragmas,  function  return  value  mismatches, and
  137.  conversion from const pointer to non-const or volatile blah blah blah.  These
  138.  are just Lattice C being Lattice C and can be ignored.  The  problem  can  be
  139.  fixed  by removing all #pragma directives and 'const' keywords, not using any
  140.  of the compiler built-in functions (memset, strcpy, etc),  and  ignoring  the
  141.  fact  that  it  doesn't  like  returning an int + constant from an int-valued
  142.  function.  In addition, Lattice C has a number of code generation bugs  which
  143.  HPACK  must work around.  Basically the Amiga HPACK exists despite of Lattice
  144.  C rather than because of it.
  145.  
  146.  
  147. Running HPACK: Archimedes
  148. =========================
  149.  
  150.     The  Archimedes  HPACK  is  virtually  identical  to the generic Unix-like
  151.  command-line version.  The main extra feature is the addition of the -zinvert
  152.  command which will convert filenames like x.c and y.h to the files x and y in
  153.  directories c and h.  Since this isn't implemented yet  it  shouldn't  bother
  154.  you much anyway (NB it'll be  added  when  the  directory-handling  functions
  155.  mkdir() and mv() are implemented, or when I get lots of email asking me to do
  156.  it).
  157.  
  158.  When  compiling the code, Desktop C will give several warnings for some files
  159.  about type conversions, which can either be worked  around  with  expressions
  160.  like a = ( int ) ( ( int ) b + ( int ) c ) ), or ignored.  As with the  Amiga
  161.  version, I couldn't do too much testing on this one.
  162.  
  163.  
  164. Running HPACK: Atari ST
  165. =======================
  166.  
  167.    This version is actually currently vapourware - the machine  it  was  being
  168.  built  on  suffered  a hard drive crash and the executable and all changes to
  169.  the code were lost.  However the person who did the port claims it would take
  170.  about half a day to get a version running again from the current code.  Sorry
  171.  about this folks (again, if someone gives me an ST I'll do  the  port  myself
  172.  :-).
  173.  
  174.  
  175. Ghod it's slow!
  176. ===============
  177.  
  178.    I know - it's difficult to have both speed and portability (or to rehash an
  179.  old saying: "Fast, portable, good - choose any two").  HPACK can never really
  180.  compete  with  'one-platform  wonder'  archivers which are highly tuned for a
  181.  particular system.  HPACK has been tuned  for  compression  performance,  not
  182.  speed  -  it  is  recommended  that,  if the OS supports it, it be run in the
  183.  background with the [-s]tealth mode switch.
  184.  
  185.  
  186. Where to get HPACK:
  187. ===================
  188.  
  189.    The latest version of HPACK should always be available from  the  following
  190.  BBS systems and archive sites:
  191.  
  192.    Black Cat BBS  +64 9 360-2506.  Log on as "HPACK" with password  "HPACK".
  193.    This  account  has access to a files area containing copies of  HPACK for
  194.    various systems, and public and private message areas (Areas #2 (private)
  195.    and #11 (public)) for feedback on HPACK.
  196.  
  197.    +49 234 770457 (data (V.32bis/V.42bis) + fax G3 incl. v.17), FIDO address
  198.    2:245/302.7, sysop: Peter Sowa.  This BBS contains the German versions of
  199.    the HPACK executables.  Note the since communcation is by snail mail, new
  200.    releases may take a week or so to appear.
  201.  
  202.    The garbo.uwasa.fi (128.214.87.1) archive site and all garbo mirror sites
  203.    worldwide.
  204.  
  205.    The nic.funet.fi archive site an all mirror sites worldwide.
  206.    
  207.    The kauri.vuw.ac.nz archive site.  If possible only NZ users  should  use
  208.    this site since the bandwidth of the overseas link is somewhat limited.
  209.  
  210.  
  211. Availability of HPACK for Other Systems:
  212. ========================================
  213.  
  214.    Anyone want to port HPACK to their particular pet system?  It's about  500K
  215.  of  ANSI  C  code,  with  some  low-level system I/O thrown in to confuse you
  216.  (through some mysterious process this amount increases by about 10K  a  week,
  217.  so  get it now before it gets too much).  A knowledge of assembly language is
  218.  probably necessary on  low-end  systems  to  speed  up  a  few  of  the  core
  219.  compression  routines.  If you want to port it to any other system, drop me a
  220.  line.....
  221.  
  222.  Currently  HPACK is in the process of being ported to, or has been ported to,
  223.  a number of systems.  The systems, together  with  email  contact  addresses/
  224.  phone numbers for the people claiming to be working on ports, are:
  225.  
  226.   HPACK/DOS         Peter Gutmann   - pgut1@cs.aukuni.ac.nz or
  227.                                       peterg@kcbbs.gen.nz
  228.                                       Ph.+64 9 426-5097
  229.   HPACK/UNIX        Stuart Woolford - stuartw@ccu1.aukuni.ac.nz
  230.                                       Ph.+64 9 426-3464
  231.   HPACK/OS2         John Burnell    - johnb@maths.grace.cri.nz
  232.   HPACK/Windoze     Lynn Prentice   - lprent@kcbbs.gen.nz
  233.   HPACK/OS2 PM
  234.   HPACK/Mac         Peter Gutmann   - pgut1@cs.aukuni.ac.nz or
  235.                                       peterg@kcbbs.gen.nz
  236.                                       Ph.+64 9 426-5097
  237.   HPACK/Archimedes  Peter Gutmann   - pgut1@cs.aukuni.ac.nz or
  238.                                       peterg@kcbbs.gen.nz
  239.                                       Ph.+64 9 426-5097
  240.   HPACK/Amiga       Peter Gutmann   - pgut1@cs.aukuni.ac.nz or
  241.                                       peterg@kcbbs.gen.nz
  242.                                       Ph.+64 9 426-5097
  243.  
  244.  
  245. International Versions of HPACK:
  246. ================================
  247.  
  248.    All   the  text  strings  contained  within  HPACK  are  generated  from  a
  249.  definitions file via a preprocessing tool.  To create versions  of  HPACK  in
  250.  other  languages,  all  that  is  necessary  is  to translate the text in the
  251.  definitions file, run it through the preprocessor, and rebuild  HPACK.   This
  252.  will  then  change  all the text strings, prompts, etc into the form given in
  253.  the definitions file.  This file is  available  on  request  from  the  HPACK
  254.  author, or as part of  the  Unix  source  distribution.   Currently  English,
  255.  German, Dutch, and Italian versions exist.
  256.  
  257.  
  258. Security of HPACK Authentication/Encryption:
  259. ============================================
  260.  
  261.    There  has  been  some  talk  recently  on  how  trivial it is to break the
  262.  authentication/encryption used by many  archivers.   To  answer  any  worries
  263.  about  the  security of HPACK encryption/authentication, I have included with
  264.  the  source  code  distribution  two  sample  archives,  DATA/CRYPT.HPK   and
  265.  DATA/SECURE.HPK, for which I offer the following challenge:
  266.  
  267.     SECURE.HPK contains a single stored file called SAMPLE.TXT dated 1st May
  268.       1992, with the file itself containing the text '01234567890123456789'.
  269.       I challenge anyone to alter this archive in any way and yet retain the
  270.       valid signature (that is, HPACK when checking it should report that it
  271.       still contains my valid signature).  Alternatively, I challenge anyone
  272.       to create an HPACK archive which contains a forged signature from  me.
  273.       Sample  signature  generation/checking  code  is included in the HPACK
  274.       source.
  275.  
  276.     CRYPT.HPK contains twenty conventional-key encrypted  text  files  which
  277.       contain  2  lines  each  of  HPACK.DOC,  beginning at the start of the
  278.       document (for a total of 40 lines worth of plaintext).  The encryption
  279.       password is a simple lowercase-only English phrase, and  is  identical
  280.       for  all twenty files.  The nature of the data is such that most of it
  281.       won't even be compressed - it'll be stored as  is.   These  conditions
  282.       reflect the absolute worst-case situation in archive encryption, where
  283.       the attacker knows the encrypted plaintext, the password is relatively
  284.       simple,  and  HPACK's  most  insecure encryption method is used  (this  
  285.       provides a realistic basis for  an  attack  on  the  encryption.   Any
  286.       encryption  method, no matter how bad, can be made to appear secure if 
  287.       the initial conditions are biased enough).
  288.  
  289.       I challenge anyone to provide me with either the  passphrase  used  to
  290.       encrypt  the data, or to encrypt the next 2 lines of HPACK.DOC in such
  291.       a  way  that  they  can  be  decrypted  with  the  password.    Sample
  292.       en/decryption  code  is  available  as part of HPACK or a I will email
  293.       anyone who requests it a reference implementation in C.
  294.  
  295.  In addition I will encrypt any data you like with the  given  passphrase,  if
  296.  this  will  help in trying to break the encryption.  In fact I'll do anything
  297.  short of revealing  the  password  if  this  helps  with  an  attack  on  the
  298.  encryption.    Finally,  I  will  make  the  password  available  after  some
  299.  reasonable period of time, say 6 months, so  users  can  reassure  themselves
  300.  that it is indeed a genuine password and not some fake garbled mess cooked up
  301.  just to make the encryption look good.
  302.  
  303.  The attacks can be mounted on any computer system using  any  amount  of  CPU
  304.  power   and/or   custom   hardware.   More  details  on  the  merits  of  the
  305.  encryption/authentication algorithms, along with possible methods of  attack,
  306.  are given in the file HPACKEXT.DOC.
  307.  
  308.  
  309. Credits:
  310. ========
  311.  
  312.  Thanks to the following people for helping in HPACK:
  313.  
  314.  Stuart Woolford for the Unix port and endless arguments about the code.
  315.  Conrad Bullock and John Burnell for the OS/2 port.
  316.  
  317.  Stuart  Woolford and John Burnell for tirelessly finding bugs and making many
  318.    helpful suggestions.
  319.  
  320.  All the people listed in the makefile for moving it to their version of  Unix
  321.    and providing feedback.
  322.  
  323.  Steven  Perreau, Hexen Hammer, and  David  Dix  for  providing  a  discussion
  324.    (read: flaming argument) forum for HPACK developers on their BBS's over the
  325.    years.
  326.  
  327.  Lynn Prentice for allowing the use of the Black Cat BBS to distribute HPACK.
  328.  
  329.  Arrigo Triulzi for providing the Italian translation of HPACK.
  330.  Peter de Vocht for providing the Dutch translation of HPACK.
  331.  Peter Sowa for providing the German translation of HPACK.
  332.  
  333.  PurpleX for putting up with many silly questions and sarcastic remarks  about
  334.    the Mac API.
  335.  
  336.  Nick Little for compiling HPACK on a Amiga 500 using Lattice C (wow!)
  337.  
  338.  TMOTA and Edouard Poor for compiling HPACK on the Archimedes.
  339.  
  340.  Philip Zimmermann  for  letting  me  steal his ideas (and in some cases code)
  341.    from the PGP encryption program.
  342.  
  343.  Lutz Frank for letting me use his 680x0 assembly-language primitives.
  344.  
  345.  All kcbbs users for putting up with endless stirring about HPACK.
  346.  
  347.  
  348. The HPACK Curse:
  349. ================
  350.  
  351.    In early June 1992 one of the Mac HPACKers downloaded a new release of  the
  352.  code  from  a  BBS.   Shortly thereafter his hard drive died, taking multiple
  353.  megabytes of data with it and incapacitating his Mac.  He logged onto another
  354.  BBS which had an HPACK forum and complained about this.  After he logged off,
  355.  the VT100 he was using also expired.
  356.  
  357.    In  mid-August  1992  an  attempt was made to place a copy of the DOS HPACK
  358.  executable on an ftp site for pickup by someone interested  in  it.   Shortly
  359.  before  it  was  to  take  place,  the  machines  which  were to be used were
  360.  unexpectedly shut down for four days for power maintenance.  Once  they  were
  361.  back up,  the comms machine which handled all ftp traffic became unstable due
  362.  to a mysterious hardware problem.  This  problem  remained  in  evidence  for
  363.  several weeks.
  364.  
  365.    In  late September 1992 the Amiga 500 being used to compile the Amiga HPACK
  366.  was destroyed by a power-line spike.  As of this writing it is still dead.
  367.  
  368.    In October 1992 the Atari ST hard drive on which the Atari HPACK was  being
  369.  stored  crashed  for the last time.  This is an interesting case in which the
  370.  hardware exhibited a limited degree of precognizance, having crashed  several
  371.  times even before HPACK was installed.
  372.  
  373.    Does this mean HPACK is cursed?  Find out more in the next release....
  374.  
  375.  
  376. HPACK as a Compiler Test:
  377. =========================
  378.  
  379.    The HPACK source code may be useful as a benchmark for compilers, as it has
  380.  displayed  an  amazing  ability to unearth compiler bugs.  It has turned up a
  381.  bug in TurboC/TurboC++/BorlandC++  under  MSDOS,  bugs  all  over  Lattice  C
  382.  (mainly  in  the code generator) on the Amiga, a bug in the Sun acc compiler,
  383.  a bug in the Xenix cc, a bug in the RS6000 cc optimizer, a bug (or at least a
  384.  peculiarity)  in  the  Amiga  DICE  compiler preprocessor, and has managed to
  385.  break the optimizers in TopSpeed C, Watcom C, the Irix  cc, Ultrix  vcc,  and
  386.  Desktop  C.   Various  sarcastic  comments  on  the compilers in question are
  387.  present in code workarounds at various places  (except  for  the  RS6000  cc,
  388.  whose optimzer is too awesome to criticize even if it does generate incorrect
  389.  code).
  390.  
  391.  It  has  been  suggested that all C compilers should be made to carry a "Safe
  392.  for use with HPACK" rating.
  393.  
  394.  
  395. The HPACK Warranty:
  396. ===================
  397.  
  398. 1. Customer Obligations
  399. -----------------------
  400.  
  401.  1.1.   Customer  assumes  full  responsibility  that  this  program meets the
  402.  specifications,  capacity,  capabilities,  and  other  requirements  of  said
  403.  customer, and agrees not to bother the author if the program does not perform
  404.  as expected, or performs other than expected, or does not perform at all.
  405.  
  406.  1.2.   Customer  assumes  full responsibility for any deaths or injuries that
  407.  may result from the normal or abnormal operation of  this  program.   In  the
  408.  event  of  casualties  exceeding 1000 persons or property damage in excess of
  409.  $10 million, customer agrees that he or she has stolen  the  program  and  we
  410.  didn't even know he or she had it.
  411.  
  412.  1.3.   Customer  agrees not to say bad things about the program or the author
  413.  to anyone claiming to be from "60 Minutes".
  414.  
  415. 2. Very Limited Warranty and Conditions of Sale
  416. ------------------------------------------------
  417.  
  418.  2.1.  For a period of 90 minutes, commencing from the time you first  thought
  419.  about  getting  this  program, we warrant that this program may or may not be
  420.  free of any manufacturing defects.  It will be replaced during  the  warranty
  421.  period  upon  payment  of an amount equal to the original purchase price plus
  422.  $10.00 for handling.  This warranty is void if the program has been  examined
  423.  or run by the user, or if the manual has been read.
  424.  
  425.  2.2.   This program is sold on an AS WAS basis.  The author makes no warranty
  426.  that it is, in fact, what we say it is in our propaganda,  or  that  it  will
  427.  perform  any useful function.  We have no obligation whatsoever other than to
  428.  provide you with this fine disclaimer.
  429.  
  430.  2.3.  Some countries do not allow limitations  as  to  how  long  an  implied
  431.  warranty lasts, so we refuse to imply anything.
  432.  
  433.  2.4.   There is an extremely small but nonzero chance that, through a process
  434.  known as "tunnelling", this program  may  spontaneously  disappear  from  its
  435.  present  location and reappear at any random place in the universe, including
  436.  your neighbours computer system.  The author will not be responsible for  any
  437.  damages or inconvenience that may result.
  438.  
  439. 3. Limitation of Liability
  440. --------------------------
  441.  
  442.  3.1.   We  have no liability or responsibility to the customer, the customers
  443.  agents, our creditors, your creditors, or anyone else.
  444.  
  445.                             -------------------------
  446.  
  447. Testimony from one of our satisfied customers:
  448.  
  449. "I hear this crash and I find a rock, wrapped in paper, next to my living room
  450. window.  I open up the note and it says, 'You want it in writing?  You got it.
  451. Next time, use a *real* archiver.  HPACK.  We know where you live'."
  452.  
  453. So why aren't *you* using HPACK?
  454.