首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenVPN中使用RSA作为/代替HMAC?

在OpenVPN中使用RSA作为/代替HMAC?
EN

Security用户
提问于 2015-06-18 10:38:45
回答 1查看 6.3K关注 0票数 13

在阅读OpenVPN 2.3的手册时,我偶然发现了--auth alg选项。手册上说:

使用消息摘要算法alg对数据包进行HMAC认证。(默认为SHA1 )。HMAC是一种常用的消息认证算法(MAC),它使用数据字符串、安全哈希算法和密钥来生成数字签名。

据我所知,HMAC只是从哈希函数生成MAC的首选方法,同时可以避免某些哈希函数的长度扩展属性。

因此,--auth选项中指定的算法应该是一个哈希函数。

现在,如果我使用openvpn --show-digests来知道我可以在--auth选项中使用哪些算法,那么我还得到了如下条目:

RSA-SHA, DSA-SHA, ECDSA-WITH-SHA1... etc.

这些是数字签名算法,为什么要在HMAC中使用?才能得到某种“双重认证”?是不是有点过火了?

或者这是否意味着在这种情况下,HMAC实际上被数字签名所取代,以实现身份验证?如果是这样的话,在安全性方面有什么更好的方法呢?

EN

回答 1

Security用户

回答已采纳

发布于 2015-07-17 19:24:34

从OpenVPN的源代码来看,这似乎是OpenSSL的一个表面上的怪癖。

当使用--show-digests时,OpenVPN用0到999之间的所有整数作为参数调用OpenSSL的EVP_get_digestbynid()。对于其中一些值,EVP_get_digestbynid()返回一个非空指针,该指针标识相应的哈希函数实现,然后OpenVPN输出相应的名称。

在ID = 64的情况下,您会得到一个实现SHA-1的结构,与ID值64对应的名称是"SHA1“。但是,如果ID = 65,则得到完全相同的结构(RAM中的指针相同),即SHA-1的相同实现。但是ID值65的名称是“RSA-SHA1 1”。

当您使用--auth时,同样适用: OpenVPN在提供的字符串上使用EVP_get_digestbyname()。使用"SHA1",您将得到一个指向实现SHA-1的结构的指针。使用“RSA-SHA1 1”,您将再次获得完全相同的指针值。

换句话说,您可以看到一些带有某些RSA或ECDSA的“备用名称”,但这仅仅是OpenSSL命名事物的结果,如果使用这些名称,您只会获得底层的散列函数(将在HMAC中使用),仅此而已。因此,--auth SHA1--auth RSA-SHA1是完全等价的。

票数 16
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/91908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档