我发现了这个相对古老的问题,即 RSA 还是 DSA 是使用 GnuPG 进行签名和加密的首选算法。
使用 时gpg --gen-key,两个相关选择是“RSA 和 RSA”或“DSA 和 Elgamal”。哪个更好?各自的优缺点是什么?自 2009 年以来有什么变化吗?
我知道如何生成 RSA 私钥和 CSR:
openssl genrsa -out my.key.pem 2048
openssl req -new -sha256 -key my.key.pem -out my.csr
Run Code Online (Sandbox Code Playgroud)
但是,我如何使用 ECDSA(椭圆曲线数字签名算法)做同样的事情?
要验证putty的下载完整性,首先验证putty 的这些校验和文件的“SHA-512: (RSA sig) | (DSA sig) ” PGP 签名的最佳方法是什么? (我猜“sig”的意思是签名。)
从腻子下载页面:
MD5: md5sums (or by FTP) (RSA sig) (DSA sig)
SHA-1: sha1sums (or by FTP) (RSA sig) (DSA sig)
SHA-256: sha256sums (or by FTP) (RSA sig) (DSA sig)
SHA-512: sha512sums (or by FTP) (RSA sig) (DSA sig)
Run Code Online (Sandbox Code Playgroud)
我已经知道如何验证纯文本的校验和使用类似(sha512sums)HashSlash,但我感兴趣的RSA / DSA签署校验(右上图)。
当我用文本编辑器打开下载的 DSA sig 文件时,第一行是“-----BEGIN PGP SIGNED MESSAGE-----”。
因此,我访问了 PGP站点并深入了解了 Windows PGP 8.0的最新版本。但是它让我进入了赛门铁克网站,在那里他们销售“由 PGP 技术提供支持”的产品,这看起来不像我要找的东西。
那么,如今验证这些校验和 PGP 签名的最佳方法是什么?
在此先感谢您的帮助。
笔记:
默认情况下,在我当前的版本 ( 6.9p1) 中,OpenSSH Server 将创建四种类型的主机密钥:
$ ls /etc/ssh/ssh_host_*_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Run Code Online (Sandbox Code Playgroud)
通过测试,我注意到,至少在使用相同版本的 OpenSSH 客户端 ( 6.9p1) 时,主机将使用 ECDSA 密钥,而不管客户端的密钥类型如何。
OpenSSH 在哪里决定支持的算法具有哪个优先级?此信息是否可编辑或硬编码到当前版本的源代码中?
更重要的是,为什么 OpenSSH 决定优先考虑 ECDSA 算法?
我搜索了论坛并找到了相关信息,但没有回答这个问题。我在一个带宽极度受限的环境中工作,需要创建尽可能小的 ECDSA 签名。目前,我们正在使用 OpenSSL。此外 - 由于签名数据必须具有可预测的长度 - 固定大小。
我知道 ECDSA 签名由两个整数 S 和 R 组成,位长等于曲线大小。此外,当我尝试创建签名,从cygwin wc -c命令读取大小时,似乎添加了 6-7 个字节。我已经阅读了很多地方,这种开销可能会有所不同 - 因此我们失去了签名长度的可预测性。
可能的解决方案 - 提取 S 和 R 并以二进制(?)形式传输 - 就像位流一样。我不确定这是否可行,因为我猜它失去了与 OpenSSL 库的兼容性。所以我们需要颠倒这个过程,在 OpenSSL 接受的编码中使用 S 和 R 构造一个签名。
我注意到-binaryOpenSSL中有一个选项,它给了我一个空白文件。我以为我走错了路。
我想在 Ubuntu 12.04 上创建一个自签名 DSA 证书,以便与网络服务器和 TLS 1.2 (HTTPS) 连接一起使用。
我发现您可以运行以下命令来创建一个 RSA:
openssl genrsa -out server.key 3072
Run Code Online (Sandbox Code Playgroud)
但是我需要以下属性:
有人可以帮助我使用参数来执行上面的以下选项吗?
当一个 TLS 会话被启动时,你如何确保它每次都生成一个新的随机签名值k?这显然对算法的安全性至关重要。或者,OpenSSL 是自动的吗?
我在这里找到了这个 TLS 1.2 密码套件TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 ,我该如何告诉它使用它?
提前致谢。