/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

  • 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:
487
487
            client["enabled"] = config.getboolean(client_name,
488
488
                                                  "enabled")
489
489
            
 
490
            # Uppercase and remove spaces from fingerprint for later
 
491
            # comparison purposes with return value from the
 
492
            # fingerprint() function
490
493
            client["fingerprint"] = (section["fingerprint"].upper()
491
494
                                     .replace(" ", ""))
492
495
            if "secret" in section:
534
537
            self.expires = None
535
538
        
536
539
        logger.debug("Creating client %r", self.name)
537
 
        # Uppercase and remove spaces from fingerprint for later
538
 
        # comparison purposes with return value from the fingerprint()
539
 
        # function
540
540
        logger.debug("  Fingerprint: %s", self.fingerprint)
541
541
        self.created = settings.get("created",
542
542
                                    datetime.datetime.utcnow())
2356
2356
                        "port": "",
2357
2357
                        "debug": "False",
2358
2358
                        "priority":
2359
 
                        "SECURE256:!CTYPE-X.509:+CTYPE-OPENPGP:+SIGN-RSA-SHA224:+SIGN-RSA-RMD160",
 
2359
                        "SECURE256:!CTYPE-X.509:+CTYPE-OPENPGP:!RSA"
 
2360
                        ":+SIGN-RSA-SHA224:+SIGN-RSA-RMD160",
2360
2361
                        "servicename": "Mandos",
2361
2362
                        "use_dbus": "True",
2362
2363
                        "use_ipv6": "True",