【问题标题】:netbsd version of openssh has support for "diffie-hellman-group-exchange-sha256" but not for SHA256 for macsnetbsd 版本的 openssh 支持“diffie-hellman-group-exchange-sha256”,但不支持 mac 的 SHA256
【发布时间】:2018-01-27 02:34:01
【问题描述】:

我正在使用旧版本的 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 密码使用?

【问题讨论】:

  • 那里的 OpenSSH 版本是什么? MAC 和密钥交换中的 SHA2 使用是完全不同的,一个不会影响另一个。如果在其中任何一个中使用 SHA2,则取决于底层 OpenSSL 中此哈希的可用性,以及 OpenSSH 是否实现了此类算法。
  • @Jakuje,我的 netbsd 有 Openssh V5.0
  • 不要将在消息身份验证代码 (HMAC) 中使用散列算法与在 PKI 证书签名或密钥交换中使用散列算法相混淆。他们是不同的。请参阅 Why is HMAC-SHA1 still considered secure?HMAC-SHA1 vs HMAC-SHA256 在我写这篇文章时,没有已知的理由要求 HMAC-SHA256 优于 HMAC-SHA1

标签: c hash sha openssh netbsd


【解决方案1】:

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

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

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

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

您的版本介于两者之间,没有标准,因此没有实施。

【讨论】:

  • 谢谢。那么,我如何知道我的 openssh 是使用 openssl 的 SHA256 还是它有自己的实现。
  • OpenSSH 目前没有实现 SHA256(以及任何其他加密,除了 ed25519 pk、curve25519 密钥交换和 chacha20-poly1305 密码。它始终使用 OpenSSL 进行 SHA256。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2016-12-04
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多