Ssh Diffie Hellman



  1. Diffie Hellman Group1 Sha1
  2. Diffie Hellman Group 2
  3. Ssh Diffie-hellman-group1-sha1
  4. Diffie Hellman Group Exchange Sha1
  5. Ssh Sha1

I would like to disable 'diffie-hellman-group1-sha1' and 'diffie-hellman-group-exchange-sha1' key exchange algorithms on my OpenSSH. I edited /etc/ssh/sshdconfig and added this line: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256.

I don't believe you can prevent it from showing that up. However the ' ip ssh dh min size 2048' should prevent the use of diffie-hellman-group-exchange-sha1. If you can verify this then you have complied, just the scan is giving a false positive. When I give the ssh command, this is what happens: $ ssh enduser@10.255.252.1 Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1. So then I looked at this stackexchange post, and modified my command to this, but I get a different problem, this time with the ciphers. Provides functionality for automating SSH, SFTP and SCP actions. Supports diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1 and diffie-hellman-group1-sha1 key exchange methods. Diffie-Hellman key exchange is a popular cryptographic algorithm that allows Internet protocols to agree on a shared key and negotiate a secure connection. It is fundamental to many protocols including HTTPS, SSH, IPsec, SMTPS, and protocols that rely on TLS.

Diffie-Hellman key exchange is a popular cryptographic algorithm that allows Internet protocols to agree on a shared key and negotiate a secure connection. It is fundamental to many protocols including HTTPS, SSH, IPsec, SMTPS, and protocols that rely on TLS.

We have uncovered several weaknesses in how Diffie-Hellman key exchange has been deployed:

  1. Logjam attack against the TLS protocol. The Logjam attack allows a man-in-the-middle attacker to downgrade vulnerable TLS connections to 512-bit export-grade cryptography. This allows the attacker to read and modify any data passed over the connection. The attack is reminiscent of the FREAK attack, but is due to a flaw in the TLS protocol rather than an implementation vulnerability, and attacks a Diffie-Hellman key exchange rather than an RSA key exchange. The attack affects any server that supports DHE_EXPORT ciphers, and affects all modern web browsers. 8.4% of the Top 1 Million domains were initially vulnerable.

  2. Threats from state-level adversaries. Millions of HTTPS, SSH, and VPN servers all use the same prime numbers for Diffie-Hellman key exchange. Practitioners believed this was safe as long as new key exchange messages were generated for every connection. However, the first step in the number field sieve—the most efficient algorithm for breaking a Diffie-Hellman connection—is dependent only on this prime. After this first step, an attacker can quickly break individual connections.

    We carried out this computation against the most common 512-bit prime used for TLS and demonstrate that the Logjam attack can be used to downgrade connections to 80% of TLS servers supporting DHE_EXPORT. We further estimate that an academic team can break a 768-bit prime and that a nation-state can break a 1024-bit prime. Breaking the single, most common 1024-bit prime used by web servers would allow passive eavesdropping on connections to 18% of the Top 1 Million HTTPS domains. A second prime would allow passive decryption of connections to 66% of VPN servers and 26% of SSH servers. A close reading of published NSA leaks shows that the agency's attacks on VPNs are consistent with having achieved such a break.

Full Technical Paper

Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice
David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry, Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall, Emmanuel Thomé, Luke Valenta, Benjamin VanderSloot, Eric Wustrow, Santiago Zanella-Béguelin, and Paul Zimmermann
22nd ACM Conference on Computer and Communications Security (CCS ’15), Denver, CO, October 2015
Best Paper Award Winner

More: Full paper | Talk slides | Bibtex

Additional Information

We have also created a Guide to Deploying Diffie-Hellman for TLS, and several Proof of Concept Demos.

Contact the Team

This study was performed by computer scientists at CNRS, Inria Nancy-Grand Est, Inria Paris-Rocquencourt, Microsoft Research, Johns Hopkins University, University of Michigan, and the University of Pennsylvania: David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry, Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall, Emmanuel Thomé, Luke Valenta, Benjamin VanderSloot, Eric Wustrow, Santiago Zanella-Beguelin, and Paul Zimmermann. The team can be contacted at weakdh-team@umich.edu.

Who is Affected?

Websites, mail servers, and other TLS-dependent services that support DHE_EXPORT ciphers are at risk for the Logjam attack. We use Internet-wide scanning to measure who is vulnerable.

ProtocolVulnerable to Logjam
HTTPS — Top 1 Million Domains8.4%
HTTPS — Browser Trusted Sites3.4%
SMTP+StartTLS — IPv4 Address Space14.8%
POP3S — IPv4 Address Space8.9%
IMAPS — IPv4 Address Space8.4%

Websites that use one of a few commonly shared 1024-bit Diffie-Hellman groups may be susceptible to passive eavesdropping from an attacker with nation-state resources. Here, we show how various protocols would be affected if a single 1024-bit group were broken in each protocol, assuming a typical up-to-date client (e.g., most recent version of OpenSSH or up-to-date installation of Chrome).

Vulnerable if most common 1024-bit group is broken
HTTPS — Top 1 Million Domains17.9%
HTTPS — Browser Trusted Sites6.6%
SSH — IPv4 Address Space25.7%
IKEv1 (IPsec VPNs) — IPv4 Address Space66.1%

What Should I Do?

If you run a server…

If you have a web or mail server, you should disable support for export cipher suites and use a 2048-bit Diffie-Hellman group. We have published a Guide to Deploying Diffie-Hellman for TLS with step-by-step instructions. If you use SSH, you should upgrade both your server and client installations to the most recent version of OpenSSH, which prefers Elliptic-Curve Diffie-Hellman Key Exchange.

If you use a browser…

Make sure you have the most recent version of your browser installed, and check for updates frequently. Google Chrome (including Android Browser), Mozilla Firefox, Microsoft Internet Explorer, and Apple Safari are all deploying fixes for the Logjam attack.

If you’re a sysadmin or developer …

Make sure any TLS libraries you use are up-to-date, that servers you maintain use 2048-bit or larger primes, and that clients you maintain reject Diffie-Hellman primes smaller than 1024-bit.

These results were first made public on May 20, 2015; peer-reviewed conference paper published October 13, 2015.

Name

ssh-keygen - authentication key generation, management and conversion

Synopsis

ssh-keygen [-q] [-bbits] -ttype [-Nnew_passphrase] [-Ccomment] [-foutput_keyfile]

ssh-keygen -p [-Pold_passphrase] [-Nnew_passphrase] [-fkeyfile]

ssh-keygen -i [-finput_keyfile]

ssh-keygen -e [-finput_keyfile]

ssh-keygen -y [-finput_keyfile]

ssh-keygen -c [-Ppassphrase] [-Ccomment] [-fkeyfile]

ssh-keygen -l [-finput_keyfile]

Ssh diffie-hellman-group14-sha1

ssh-keygen -B [-finput_keyfile]

ssh-keygen -Dreader

ssh-keygen -Fhostname [-fknown_hosts_file] [-l]

ssh-keygen -H [-fknown_hosts_file]

ssh-keygen -Rhostname [-fknown_hosts_file]

ssh-keygen -Ureader [-finput_keyfile]

ssh-keygen -rhostname [-finput_keyfile] [-g]

ssh-keygen -Goutput_file [-v] [-bbits] [-Mmemory] [-Sstart_point]

ssh-keygen -Toutput_file-finput_file [-v] [-anum_trials] [-Wgenerator]

ssh-keygen [-n] [-Dsmartcard]

Description

Diffie Hellman Group1 Sha1

ssh-keygen generates, manages and converts authentication keys for ssh(1). ssh-keygen can create RSA keys for use by SSH protocol version 1and RSA or DSA keys for use by SSH protocol version 2. The type of key to be generated is specified with the -t option. If invoked without anyarguments, ssh-keygen will generate an RSA key for use in SSH protocol 2 connections.

ssh-keygen is also used to generate groups for use in Diffie-Hellman group exchange (DH-GEX). See the MODULI GENERATION section for details.

Normally each user wishing to use SSH with RSA or DSA authentication runs this once to create the authentication key in ~/.ssh/identity,~/.ssh/id_dsa or ~/.ssh/id_rsa. Additionally, the system administrator may use this to generate host keys, as seen in /etc/rc.

Normally this program generates the key and asks for a file in which to store the private key. The public key is stored in a file with the same name but'.pub' appended. The program also asks for a passphrase. The passphrase may be empty to indicate no passphrase (host keys must have an empty passphrase), orit may be a string of arbitrary length. A passphrase is similar to a password, except it can be a phrase with a series of words, punctuation, numbers,whitespace, or any string of characters you want. Good passphrases are 10-30 characters long, are not simple sentences or otherwise easily guessable (Englishprose has only 1-2 bits of entropy per character, and provides very bad passphrases), and contain a mix of upper and lowercase letters, numbers, andnon-alphanumeric characters. The passphrase can be changed later by using the -p option.

There is no way to recover a lost passphrase. If the passphrase is lost or forgotten, a new key must be generated and copied to the corresponding public keyto other machines.

For RSA1 keys, there is also a comment field in the key file that is only for convenience to the user to help identify the key. The comment can tell whatthe key is for, or whatever is useful. The comment is initialized to 'user@host' when the key is created, but can be changed using the -c option.

After a key is generated, instructions below detail where the keys should be placed to be activated.

The options are as follows:

Specifies the number of primality tests to perform when screening DH-GEX candidates using the -T command.

-B' Show the bubblebabble digest of specified private or public key file.

-bbits
Specifies the number of bits in the key to create. For RSA keys, the minimum size is 768 bits and the default is 2048 bits. Generally, 2048 bits is consideredsufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.

-Ccomment
Provides a new comment.

-c' Requests changing the comment in the private and public key files. This operation is only supported for RSA1 keys. The program will prompt forthe file containing the private keys, for the passphrase if the key has one, and for the new comment.

Diffie Hellman Group 2

-Dreader
Download the RSA public key stored in the smartcard in reader.

-e' This option will read a private or public OpenSSH key file and print the key in RFC 4716 SSH Public Key File Format to stdout. This option allowsexporting keys for use by several commercial SSH implementations.

-Fhostname
Search for the specified hostname in a known_hosts file, listing any occurrences found. This option is useful to find hashed host names oraddresses and may also be used in conjunction with the -H option to print found keys in a hashed format.

-ffilename
Specifies the filename of the key file.

-Goutput_file
Generate candidate primes for DH-GEX. These primes must be screened for safety (using the -T option) before use.

-g' Use generic DNS format when printing fingerprint resource records using the -r command.

-H' Hash a known_hosts file. This replaces all hostnames and addresses with hashed representations within the specified file; the originalcontent is moved to a file with a .old suffix. These hashes may be used normally by ssh and sshd, but they do not reveal identifying informationshould the file's contents be disclosed. This option will not modify existing hashed hostnames and is therefore safe to use on files that mix hashed andnon-hashed names.

-i' This option will read an unencrypted private (or public) key file in SSH2-compatible format and print an OpenSSH compatible private (or public)key to stdout. ssh-keygen also reads the RFC 4716 SSH Public Key File Format. This option allows importing keys from several commercial SSHimplementations.

Ssh Diffie-hellman-group1-sha1

-l' Show fingerprint of specified public key file. Private RSA1 keys are also supported. For RSA and DSA keys ssh-keygen tries to find thematching public key file and prints its fingerprint. If combined with -v, an ASCII art representation of the key is supplied with the fingerprint.

-Mmemory
Specify the amount of memory to use (in megabytes) when generating candidate moduli for DH-GEX.

-n' Extract the public key from smartcard.

-Nnew_passphrase
Provides the new passphrase.

-Ppassphrase
Provides the (old) passphrase.

-p' Requests changing the passphrase of a private key file instead of creating a new private key. The program will prompt for the file containing theprivate key, for the old passphrase, and twice for the new passphrase.

-q' Silence ssh-keygen. Used by /etc/rc when creating a new key.

-Rhostname
Removes all keys belonging to hostname from a known_hosts file. This option is useful to delete hashed hosts (see the -H option above).

-rhostname
Print the SSHFP fingerprint resource record named hostname for the specified public key file.

-Sstart
Specify start point (in hex) when generating candidate moduli for DH-GEX.

-Toutput_file
Test DH group exchange candidate primes (generated using the -G option) for safety.

-ttype
Specifies the type of key to create. The possible values are 'rsa1' for protocol version 1 and 'rsa' or 'dsa' for protocol version 2.

-Ureader
Upload an existing RSA private key into the smartcard in reader.

-v' Verbose mode. Causes ssh-keygen to print debugging messages about its progress. This is helpful for debugging moduli generation. Multiple-v options increase the verbosity. The maximum is 3.

-Wgenerator
Specify desired generator when testing candidate moduli for DH-GEX.

-y' This option will read a private OpenSSH format file and print an OpenSSH public key to stdout.

Moduli Generation

ssh-keygen may be used to generate groups for the Diffie-Hellman Group Exchange (DH-GEX) protocol. Generating these groups is a two-step process:first, candidate primes are generated using a fast, but memory intensive process. These candidate primes are then tested for suitability (a CPU-intensiveprocess).

Generation of primes is performed using the -G option. The desired length of the primes may be specified by the -b option. Forexample:

# ssh-keygen -T moduli-2048 -f moduli-2048.candidates

By default, each candidate will be subjected to 100 primality tests. This may be overridden using the -a option. The DH generator value will bechosen automatically for the prime under consideration. If a specific generator is desired, it may be requested using the -W option. Valid generatorvalues are 2, 3, and 5.

Screened DH groups may be installed in /etc/ssh/moduli. It is important that this file contains moduli of a range of bit lengths and that both endsof a connection share common moduli.

Files

Contains the protocol version 1 RSA authentication identity of the user. This file should not be readable by anyone but the user. It is possible to specifya passphrase when generating the key; that passphrase will be used to encrypt the private part of this file using 3DES. This file is not automatically accessedby Diffiessh-keygen but it is offered as the default file for the private key. ssh(1) will read this file when a login attempt is made.

~/.ssh/identity.pub
Contains the protocol version 1 RSA public key for authentication. The contents of this file should be added to ~/.ssh/authorized_keys on all machineswhere the user wishes to log in using RSA authentication. There is no need to keep the contents of this file secret.

~/.ssh/id_dsa
Contains the protocol version 2 DSA authentication identity of the user. This file should not be readable by anyone but the user. It is possible to specify apassphrase when generating the key; that passphrase will be used to encrypt the private part of this file using 3DES. This file is not automatically accessedby ssh-keygen but it is offered as the default file for the private key. ssh(1) will read this file when a login attempt is made.

~/.ssh/id_dsa.pub
Contains the protocol version 2 DSA public key for authentication. The contents of this file should be added to ~/.ssh/authorized_keys on all machineswhere the user wishes to log in using public key authentication. There is no need to keep the contents of this file secret.

~/.ssh/id_rsa
Contains the protocol version 2 RSA authentication identity of the user. This file should not be readable by anyone but the user. It is possible to specify apassphrase when generating the key; that passphrase will be used to encrypt the private part of this file using 3DES. This file is not automatically accessedby ssh-keygen but it is offered as the default file for the private key. ssh(1) will read this file when a login attempt is made.

Diffie Hellman Group Exchange Sha1

~/.ssh/id_rsa.pub
Contains the protocol version 2 RSA public key for authentication. The contents of this file should be added to ~/.ssh/authorized_keys on all machineswhere the user wishes to log in using public key authentication. There is no need to keep the contents of this file secret.

/etc/ssh/moduli
Contains Diffie-Hellman groups used for DH-GEX. The file format is described in moduli(5).

Ssh Sha1

Environment

The reseeding of the OpenSSL random generator is usually done from /dev/urandom. If the SSH_USE_STRONG_RNG environment variable is set tovalue other than 0 the OpenSSL random generator is reseeded from /dev/random. The number of bytes read is defined by the SSH_USE_STRONG_RNGvalue. Minimum is 6 bytes. This setting is not recommended on the computers without the hardware random generator because insufficient entropy causes theconnection to be blocked until enough entropy is available.

See Also

ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8)

Authors

OpenSSH is a derivative of the original and free ssh 1.2.12 release by Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt andDug Song removed many bugs, re-added newer features and created OpenSSH. Markus Friedl contributed the support for SSH protocol versions 1.5 and 2.0.

BSD April 14, 2013 BSD

Referenced By

amaddclient(8),autossh(1),backup-manager(8),gsimoduli(5),gsissh(1),gsissh-keysign(8),gsissh_config(5),gsisshd(8),rsnapshot(1),scp(1),sftp(1),ssh-keysign(8),ssh_config(5),tlsa(1)



Comments are closed.