Re: SSH key algorithm updates / Proposal and intent to implement "dsa-sha2-256" SSH key algorithm

denis bider <ietf-ssh3@denisbider.com> Sat, 31 October 2015 15:58 UTC

Return-Path: <bounces-ietf-ssh-owner-secsh-tyoxbijeg7-archive=lists.ietf.org@NetBSD.org>
X-Original-To: ietfarch-secsh-tyoxbijeg7-archive@ietfa.amsl.com
Delivered-To: ietfarch-secsh-tyoxbijeg7-archive@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D7C971A003A for <ietfarch-secsh-tyoxbijeg7-archive@ietfa.amsl.com>; Sat, 31 Oct 2015 08:58:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level:
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id loWzvSSohquc for <ietfarch-secsh-tyoxbijeg7-archive@ietfa.amsl.com>; Sat, 31 Oct 2015 08:58:06 -0700 (PDT)
Received: from mail.netbsd.org (mail.NetBSD.org [IPv6:2001:4f8:3:7::25]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2F0AC1A6FD0 for <secsh-tyoxbijeg7-archive@lists.ietf.org>; Sat, 31 Oct 2015 08:58:06 -0700 (PDT)
Received: by mail.netbsd.org (Postfix, from userid 605) id C283C14A219; Sat, 31 Oct 2015 15:58:05 +0000 (UTC)
Delivered-To: ietf-ssh@netbsd.org
Received: by mail.netbsd.org (Postfix, from userid 1347) id 687E414A218; Sat, 31 Oct 2015 15:58:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id A058E14A2FB for <ietf-ssh@NetBSD.org>; Sat, 31 Oct 2015 07:20:47 +0000 (UTC)
X-Virus-Scanned: amavisd-new at NetBSD.org
Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.NetBSD.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id Wd3J-1tK8Ey2 for <ietf-ssh@NetBSD.org>; Sat, 31 Oct 2015 07:20:46 +0000 (UTC)
Received: from skroderider.denisbider.com (skroderider.denisbider.com [50.18.172.175]) (using TLSv1.1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.netbsd.org (Postfix) with ESMTPS id 9E1B014A2E5 for <ietf-ssh@NetBSD.org>; Sat, 31 Oct 2015 07:20:46 +0000 (UTC)
X-Footer: ZGVuaXNiaWRlci5jb20=
Received: from localhost ([127.0.0.1]) by skroderider.denisbider.com for ietf-ssh@NetBSD.org; Sat, 31 Oct 2015 07:20:45 +0000
Date: Sat, 31 Oct 2015 07:20:45 +0000
Subject: Re: SSH key algorithm updates / Proposal and intent to implement "dsa-sha2-256" SSH key algorithm
X-User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Message-ID: <1399504453-896@skroderider.denisbider.com>
X-Priority: 3
Importance: Normal
In-Reply-To: <1392146370-2044@skroderider.denisbider.com>
MIME-Version: 1.0
From: denis bider <ietf-ssh3@denisbider.com>
To: ietf-ssh@NetBSD.org
Cc: jhutz@cmu.edu, nisse@lysator.liu.se, stephen.farrell@cs.tcd.ie, mdb@juniper.net, jon@siliconcircus.com
Content-Type: multipart/alternative; boundary="=-/07Dj/GNS+CKcgNGpoAL"
Sender: ietf-ssh-owner@NetBSD.org
List-Id: ietf-ssh.NetBSD.org
Precedence: list

I have uploaded a new draft here:

http://www.denisbider.com/draft-rsa-dsa-sha2-256.txt

This now specifies both "rsa-sha2-256" and "dsa-sha2-256".


denis bider <ietf-ssh3@denisbider.com> , 10/31/2015 5:17 AM:
Mark D. Baushke:

> Should this Draft RFC also be the one that moves the "ssh-dss"
> public key algorithm from a "REQUIRED" and "MUST" implement
> algorithm to an "OPTIONAL" and "SHOULD NOT" implement algorithm?

I very much agree this should be done. However, it seems to me a separate purpose which may require a different type of consensus.

It seems we could very much use Stephen's (offered) help with this.


> Perhaps moving the Ed25519 algorithm

FIPS does not approve of it, so there's a huge swath of  products aimed for government that can't use the supposed "required"  method.

It's also not easily available everywhere. Crypto++ doesn't have it. Windows CNG doesn't have it. There's DJB's original code, which is native code, and is not the most user friendly.

I think RSA might fit the "required" role better. It's old, solid, universally available, and acceptable to everyone. All it needs is an update to use SHA-2 as the hash.


Jeffrey Hutzelman:

> I don't understand. The issue with ssh-dss was that we _didn't_
> allow for larger key sizes. 

The issue is that there was no standard for larger key sizes at the time "ssh-dss" was defined. Consequently, few implementations existed that could handle them. None existed that were completely general.

If we "allow for" larger key sizes, then ALL implementations must be able to straightforwardly and correctly support them in advance. If they do not - and they will not, because they don't perceive the need at this time - then this creates future compatibility problems.

For example, if I use Windows CNG to implement this algorithm, I can only implement 2048-bit and 3072-bit key sizes. I can't provide an implementation compliant with a requirement to support larger keys. Any future users that might use larger sizes will run into compatibility issues with software I create now. This software may very well be still in use in 2020, even 2025. We still hear from users running 9 year old versions of our software. Users running 5 year old versions are common (perhaps even a majority).


>  In fact, now that I think about it, we probably should have
> defined an rsa-sha256 public key algorithm.

There's no time like today. We can define "rsa-sha2-256" right now.

Since RSA keys aren't themselves hash-dependent, we could grandfather in existing RSA keys, and keep "ssh-rsa" in the public key format. This retains existing host key fingerprints, and allows the same keys to be used for both "ssh-rsa" and "rsa-sha2-256". This vastly simplifies migration. We change the signature specification to use the new name, and to use SHA-2 256.

I believe this would further provide a credible signature algorithm that we could suggest "recommended" or "required". It seems to me that none of the other candidates are good matches:

- without deterministic signatures, DSA has its weakness to anything but perfect RNG
- EdDSA is not FIPS acceptable
- ECDSA over NIST curves is not acceptable to others
- The existing "ssh-rsa" uses SHA-1

However, if we define "rsa-sha2-256", however, we could mandate it as at "recommended" (or even "required").


> - Upgrade ssh-rsa to REQUIRED

Not sure about that. It uses SHA-1. We should probably define "rsa-sha2-256".