Imported Debian patch 2.5.2p1-1
[debian/amanda] / docs / howto-gpg.txt
diff --git a/docs/howto-gpg.txt b/docs/howto-gpg.txt
deleted file mode 100644 (file)
index 1c8163c..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-
-Chapter 16. How to do Amanda-server-side gpg-encrypted backups.
-Prev  Part III. HOWTOs                                     Next
-
--------------------------------------------------------------------------------
-
-Chapter 16. How to do Amanda-server-side gpg-encrypted backups.
-
-
-Stefan G. Weichinger
-
-Original text
-AMANDA Core Team
-<sgw@amanda.org>
-Table of Contents
-
-
-  Setup
-
-  Test
-
-  Plans
-
-
-Note
-
-Refer to http://www.amanda.org/docs/howto-gpg.html for the current version of
-this document.
-
-Note
-
-THIS IS *NOT* YET INTENDED FOR PRODUCTION SERVERS !!!
-Bruce Fletcher asked for a "simple" encryption method to be used with Amanda-
-server. gpg-amanda http://security.uchicago.edu/tools/gpg-amanda/ seems to
-create problems at restore-time, as it uses a wrapper for gzip.
-My solution uses a wrapper for GNU-tar instead, so there are several
-disadvantages avoided.
-
-Note
-
-This is based on a Amanda-vtape-setup with the Amanda-release 2.4.5. As this is
-still in the testing-stage, I have coded the home-dir of the Amanda-user into
-my scripts (/var/lib/amanda). This should be done with variables later, I agree
-...
-What you need:
-
-* aespipe http://loop-aes.sourceforge.net/aespipe/aespipe-v2.3b.tar.bz2 and the
-  bz2aespipe-wrapper that comes with it. It gets patched as described later.
-* the wrapper-script /usr/local/libexec/amgtar, as listed down below,
-* GNU-PG http://www.gnupg.org/(en)/download/index.html. This should be part of
-  most current operating systems already.
-* Amanda ;)
-
-
-Setup
-
-
-* Configure and compile aespipe:
-
-    tar -xjf aespipe-v2.3b.tar.bz2
-    cd aespipe-v2.3b
-    ./configure
-    make
-    make install
-
-* Generate and store the gpg-key for the Amanda-user:
-
-    # taken from the aespipe-README
-    head -c 2925 /dev/random | uuencode -m - | head -n 66 | tail -n 65 | \
-    gpg --symmetric -a > /var/lib/amanda/.gnupg/am_key.gpg
-
-  This will ask for a passphrase. Remember this passphrase as you will need it
-  in the next step.
-  Store the passphrase inside the home-directory of the Amanda-user and protect
-  it with proper permissions:
-
-    echo my_secret_passphrase > ~amanda/.am_passphrase
-    chown amanda:disk ~amanda/.am_passphrase
-    chmod 700 ~amanda/.am_passphrase
-
-  We need this file because we don't want to have to enter the passphrase
-  manually everytime we run amdump. We have to patch bz2aespipe to read the
-  passphrase from a file. I have called that file ~amanda/.am_passphrase.
-  It should NOT ;) look like this:
-
-    # cat ~amanda/.am_passphrase
-    my_secret_passphrase
-
-
-  Note
-
-  Store the key and the passphrase in some other place as well, without these
-  information you can't access any tapes that have been encrypted with it (this
-  is exactly why we are doing all this, isn't it? ;) ).
-* Create the wrapper for GNU-tar:
-  Example 16.1. /usr/local/libexec/amgtar
-
-    #!/bin/sh
-    #
-    # Original wrapper by Paul Bijnens
-    #
-    # crippled by Stefan G. Weichinger
-    # to enable gpg-encrypted dumps via aespipe
-
-    GTAR=/bin/tar
-    AM_AESPIPE=/usr/local/bin/amaespipe
-    AM_PASSPHRASE=/var/lib/amanda/.am_passphrase
-    LOG=/dev/null
-    LOG_ENABLED=1
-
-    if [ "$LOG_ENABLED" = "1" ]
-    then
-    LOG=/var/log/amanda/amgtar.debug
-    date >> $LOG
-    echo "$@" >> $LOG
-    fi
-
-    if [ "$3" = "/dev/null" ]
-    then
-       echo "Estimate only" >> $LOG
-       $GTAR "$@"
-    else
-       echo "Real backup" >> $LOG
-       $GTAR --use-compress-program="$AM_AESPIPE" "$@" 3< $AM_PASSPHRASE
-    fi
-
-    rc=$?
-    exit $rc
-
-
-* Copy the wrapper-script bz2aespipe, which comes with the aespipe-tarball, to
-  /usr/local/bin/amaespipe and edit it this way:
-  Example 16.2. /usr/local/bin/amaespipe
-
-    #! /bin/sh
-
-    # FILE FORMAT
-    # 10 bytes: constant string 'bz2aespipe'
-    # 10 bytes: itercountk digits
-    # 1 byte: '0' = AES128, '1' = AES192, '2' = AES256
-    # 1 byte: '0' = SHA256, '1' = SHA384, '2' = SHA512, '3' = RMD160
-    # 24 bytes: random seed string
-    # remaining bytes are bzip2 compressed and aespipe encrypted
-
-    # These definitions are only used when encrypting.
-    # Decryption will autodetect these definitions from archive.
-    ENCRYPTION=AES256
-    HASHFUNC=SHA256
-    ITERCOUNTK=100
-    WAITSECONDS=1
-    GPGKEY="/var/lib/amanda/.gnupg/am_key.gpg"
-    FDNUMBER=3
-
-    if test x$1 = x-d ; then
-        # decrypt
-        n=`head -c 10 - | tr -d -c 0-9a-zA-Z`
-        if test x${n} != xbz2aespipe ; then
-            echo "bz2aespipe: wrong magic - aborted" >/dev/tty
-            exit 1
-        fi
-        itercountk=`head -c 10 - | tr -d -c 0-9`
-        if test x${itercountk} = x ; then itercountk=0; fi
-        n=`head -c 1 - | tr -d -c 0-9`
-        encryption=AES128
-        if test x${n} = x1 ; then encryption=AES192; fi
-        if test x${n} = x2 ; then encryption=AES256; fi
-        n=`head -c 1 - | tr -d -c 0-9`
-        hashfunc=SHA256
-        if test x${n} = x1 ; then hashfunc=SHA384; fi
-        if test x${n} = x2 ; then hashfunc=SHA512; fi
-        if test x${n} = x3 ; then hashfunc=RMD160; fi
-        seedstr=`head -c 24 - | tr -d -c 0-9a-zA-Z+/`
-        #aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${encryption} -H ${hashfunc} -
-    S "${seedstr}" -C ${itercountk} -d | bzip2 -d -q
-        aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${encryption} -H ${hashfunc} -
-    S "${seedstr}" -C ${itercountk} -d
-    else
-        # encrypt
-        echo -n bz2aespipe
-        echo ${ITERCOUNTK} | awk '{printf "%10u", $1;}'
-        n=`echo ${ENCRYPTION} | tr -d -c 0-9`
-        aesstr=0
-        if test x${n} = x192 ; then aesstr=1; fi
-        if test x${n} = x256 ; then aesstr=2; fi
-        n=`echo ${HASHFUNC} | tr -d -c 0-9`
-        hashstr=0
-        if test x${n} = x384 ; then hashstr=1; fi
-        if test x${n} = x512 ; then hashstr=2; fi
-        if test x${n} = x160 ; then hashstr=3; fi
-        seedstr=`head -c 18 /dev/urandom | uuencode -m - | head -n 2 | tail -
-    n 1`
-        echo -n ${aesstr}${hashstr}${seedstr}
-        #bzip2 | aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${ENCRYPTION} -H $
-    {HASHFUNC} -S ${seedstr} -C ${ITERCOUNTK} -w ${WAITSECONDS}
-        aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${ENCRYPTION} -H ${HASHFUNC} -
-    S ${seedstr} -C ${ITERCOUNTK} -w ${WAITSECONDS}
-    fi
-    exit 0
-
-
-  or apply this small patch
-  Example 16.3. bz2aespipe.patch
-
-    @@ -15,3 +15,5 @@
-     ITERCOUNTK=100
-    -WAITSECONDS=10
-    +WAITSECONDS=1
-    +GPGKEY="/var/lib/amanda/.gnupg/am_key.gpg"
-    +FDNUMBER=3
-
-    @@ -36,3 +38,4 @@
-         seedstr=`head -c 24 - | tr -d -c 0-9a-zA-Z+/`
-    -    aespipe -e ${encryption} -H ${hashfunc} -S "${seedstr}" -C $
-    {itercountk} -d | bzip2 -d -q
-    +    #aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${encryption} -H ${hashfunc} -
-    S "${seedstr}" -C ${itercountk} -d | bzip2 -d -q
-    +    aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${encryption} -H ${hashfunc} -
-    S "${seedstr}" -C ${itercountk} -d
-     else
-    @@ -52,3 +55,4 @@
-         echo -n ${aesstr}${hashstr}${seedstr}
-    -    bzip2 | aespipe -e ${ENCRYPTION} -H ${HASHFUNC} -S ${seedstr} -C $
-    {ITERCOUNTK} -T -w ${WAITSECONDS}
-    +    #bzip2 | aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${ENCRYPTION} -H $
-    {HASHFUNC} -S ${seedstr} -C ${ITERCOUNTK} -w ${WAITSECONDS}
-    +    aespipe -K ${GPGKEY} -p ${FDNUMBER} -e ${ENCRYPTION} -H ${HASHFUNC} -
-    S ${seedstr} -C ${ITERCOUNTK} -w ${WAITSECONDS}
-     fi
-
-
-  Things I have changed:
-
-  o Decreased WAITSECONDS: No need to wait for 10 seconds to read the
-    passphrase.
-  o Removed bzip2 from the pipes: Amanda triggers GNU-zip-compression by
-    itself, no need to do this twice (slows down things, blows up size).
-  o Added options -K and -p: This enables aespipe to use the generated gpg-key
-    and tells it the number of the file-descriptor to read the passphrase from.
-
-
-  Note
-
-  You may set various parameters inside bz2aespipe. You may also call
-  bz2aespipe with various command-line-parameters to choose the encryption-
-  algorithm, hash-function etc. . For a start I have chosen to call bz2aespipe
-  without command-line-options.
-* Reconfigure and recompile Amanda (yes, I'm sorry ...):
-  As described in How_to_use_a_wrapper you have to run configure again with the
-  option --with-gnutar=/usr/local/libexec/amgtar, after that recompile and
-  reinstall Amanda. These steps are described in the mentioned document.
-
-
-Test
-
-Still to come ...
-
-Plans
-
-There are several wishes:
-
-* Ability to switch encryption inside a dumptype. This HOWTO describes a method
-  that enables/disables encryption for the whole installation. You might remove
-  the amgtar-wrapper and simply link to plain GNU-tar again to disable
-  encryption, but be aware that you also disable decryption with this step. You
-  will hit problems when you then try to restore encrypted tapes.
-* Ability to switch encryption-parameters inside a dumptype. Choice of
-  algorithm, hash-functions etc. I don't know if it makes sense to put it into
-  a dumptype or if it would be enough to configure it once inside amaespipe (I
-  assume the latter).
-* All this leads to the need to code this into Amanda itself: new dumptype-
-  options and corresponding calls to GNU-tar etc. inside client-src/sendbackup-
-  gnutar.c.
-
-This is it so far. Release early, release often. Feel free to contact me with
-your thoughts on this paper.
--------------------------------------------------------------------------------
-
-Prev                               Up                                    Next
-Chapter 15. How to use a wrapper  Home  Chapter 17. How to use different auth
-                                                                  with Amanda
-