2

我有一个旧版本的 netbsd,我正在使用它。我想将 openssh 配置为使用强密码和 mac,但是当看到可用的 mac 时,它不支持 SHA256 及更高版本。支持的mac是

macs[] = {
    { "hmac-sha1",          SSH_EVP, EVP_sha1, 0, -1, -1 },
    { "hmac-sha1-96",       SSH_EVP, EVP_sha1, 96, -1, -1 },
    { "hmac-md5",           SSH_EVP, EVP_md5, 0, -1, -1 },
    { "hmac-md5-96",        SSH_EVP, EVP_md5, 96, -1, -1 },
    { "hmac-ripemd160",     SSH_EVP, EVP_ripemd160, 0, -1, -1 },
    { "hmac-ripemd160@openssh.com", SSH_EVP, EVP_ripemd160, 0, -1, -1 },
#ifdef UMAC_HAS_BEEN_UNBROKEN
    { "umac-64@openssh.com",    SSH_UMAC, NULL, 0, 128, 64 },
#endif
    { NULL,             0, NULL, 0, -1, -1 }
};

但是当我检查支持的密钥交换密码时,我发现可以使用 SHA256

#define KEX_DH1         "diffie-hellman-group1-sha1"
#define KEX_DH14        "diffie-hellman-group14-sha1"
#define KEX_DHGEX_SHA1      "diffie-hellman-group-exchange-sha1"
#define KEX_DHGEX_SHA256    "diffie-hellman-group-exchange-sha256"

那个怎么样。如果在我的 netbsd openssh 中有 SHA256 的实现,为什么它不能作为 mac 密码使用?

4

1 回答 1

2

OpenSSH 5.0 支持 SHA-256 密钥交换算法,但不支持具有 SHA-256 哈希的 MAC。供参考,有源代码:

https://github.com/openssh/openssh-portable/blob/V_5_0_P1/myproposal.h

MAC密钥交换中的 SHA256 用法完全不同,一个不影响另一个。如果在其中任何一个中使用 SHA256,则取决于底层 OpenSSL 中此哈希的可用性,以及 OpenSSH 是否实现了此类算法。10 年前(2007 年),它仅作为密钥交换算法实现(MAC 后来标准化)。

原始RFC4253没有列出任何 SHA256 算法。DH 密钥交换方法在RFC4419 (2006) 中进行了标准化,但使用 SHA2 的 HMACS 直到 2012 年才在RFC6668中标准化。

你的版本在他们之间,没有标准,所以没有实施。

于 2017-08-18T13:29:13.423 回答