/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-keygen

  • Committer: Teddy Hogeborn
  • Date: 2015-03-10 18:03:38 UTC
  • Revision ID: teddy@recompile.se-20150310180338-pcxw6r2qmw9k6br9
Add ":!RSA" to GnuTLS priority string, to disallow non-DHE kx.

If Mandos was somehow made to use a non-ephemeral Diffie-Hellman key
exchange algorithm in the TLS handshake, any saved network traffic
could then be decrypted later if the Mandos client key was obtained.
By default, Mandos uses ephemeral DH key exchanges which does not have
this problem, but a non-ephemeral key exchange algorithm was still
enabled by default.  The simplest solution is to simply turn that off,
which ensures that Mandos will always use ephemeral DH key exchanges.

There is a "PFS" priority string specifier, but we can't use it because:

1. Security-wise, it is a mix between "NORMAL" and "SECURE128" - it
   enables a lot more algorithms than "SECURE256".

2. It is only available since GnuTLS 3.2.4.

Thanks to Andreas Fischer <af@bantuX.org> for reporting this issue.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
# Contact the authors at <mandos@recompile.se>.
22
22
23
23
 
24
 
VERSION="1.6.7"
 
24
VERSION="1.6.9"
25
25
 
26
26
KEYDIR="/etc/keys/mandos"
27
27
KEYTYPE=RSA
47
47
    --name "$0" -- "$@"`
48
48
 
49
49
help(){
50
 
basename="`basename $0`"
 
50
basename="`basename "$0"`"
51
51
cat <<EOF
52
52
Usage: $basename [ -v | --version ]
53
53
       $basename [ -h | --help ]
113
113
    esac
114
114
done
115
115
if [ "$#" -gt 0 ]; then
116
 
    echo "Unknown arguments: '$@'" >&2
 
116
    echo "Unknown arguments: '$*'" >&2
117
117
    exit 1
118
118
fi
119
119
 
304
304
    
305
305
    # Get fingerprint of key
306
306
    FINGERPRINT="`gpg --quiet --batch --no-tty --no-options \
307
 
        --enable-dsa2 --homedir \"$RINGDIR\" --trust-model always \
 
307
        --enable-dsa2 --homedir "$RINGDIR" --trust-model always \
308
308
        --fingerprint --with-colons \
309
309
        | sed --quiet \
310
310
        --expression='/^fpr:/{s/^fpr:.*:\\([0-9A-Z]*\\):\$/\\1/p;q}'`"
363
363
            }
364
364
        }' < "$SECFILE"
365
365
    if [ -n "$ssh_fingerprint" ]; then
366
 
        echo 'checker = ssh-keyscan %%(host)s 2>/dev/null | grep --fixed-strings --line-regexp --quiet --regexp="%%(host)s %(ssh_fingerprint)s"'
 
366
        echo 'checker = ssh-keyscan %%(host)s 2>/dev/null | grep --fixed-strings --line-regexp --quiet --regexp=%%(host)s" %(ssh_fingerprint)s"'
367
367
        echo "ssh_fingerprint = ${ssh_fingerprint}"
368
368
    fi
369
369
fi