问题标签 [public-key-encryption]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
451 浏览

ssl - 不受信任服务器的 SSL 证书策略

我正在开发一种产品,该产品需要在本地网络上充当服务器,以供其他客户端应用程序连接,受以下限制:

  • 交换的数据非常有价值,我们无法保证用户网络或作为服务器的机器的安全性。因此,任何 SSL 证书都可能落入“坏人之手”。
  • 为了尽量减少对用户体验的干扰,任何向客户端识别服务器的非电子方式都应仅限于可以写在便利贴上的信息(即 IP 地址、密码,而不是交换密钥文件)。

鉴于这些,我们当前的 SSL 策略是:

  • 不要将任何 SSL 证书安装到任何受信任的存储中或针对 CA 证书签署任何证书 - 这可能会给潜在的攻击者提供所有客户端计算机的前门密钥
  • 因此 SSL 证书将是自签名的。这不会提供中间人保护,因为我们无法验证服务器。但是,它确实为那些网络不安全但服务器安全的用户提供了窃听保护。
  • 使用 Rijndael 对称加密在顶部实施“密码”系统,因此即使证书被泄露,也有一些窃听保护(我知道,很多漏桶 - 但总比没有好)。可以定期重新生成此密码,而对客户的用户体验的干扰最小。

在这些限制条件下,客户端和服务器之间是否有更安全的通信策略?

0 投票
1 回答
5566 浏览

bash - 用于公钥认证的 bash/ssh 测试

有没有办法以编程方式测试 ssh 是否可以使用公钥进行身份验证?我想做这样的事情(最好在 bash 中,但我对 python 解决方案持开放态度):

如果远程主机上没有匹配的公钥,则wheressh-test-thingy返回非零退出状态。

0 投票
1 回答
260 浏览

web-services - 什么是 X.509,如何使用它?

什么是 X.509?

如何在 REST Web 服务中使用它进行身份验证?

0 投票
1 回答
1908 浏览

linux - 如何将 PKCS#12 导入 Seahorse

我有一个已成功导入 Firefox 的 PKCS#12 文件。现在,我想将相同的文件导入 Linux,以便对这些密钥使用公钥加密。我曾尝试使用 Seahorse 导入它,但失败了。也许 PKCS#12 文件设计为仅用于浏览器?我想知道...

谢谢!

0 投票
1 回答
839 浏览

c++ - 使用 Crypto Api 在客户端和服务器之间进行加密和解密的正确方法是什么?

经过许多头痛和建议停止的人,我终于设法让我的服务器/客户端应用程序使用此 API 并创建所需的密钥,即会话和交换。

当我将公钥发送给客户端时,它会成功导入密钥,并且还会使用该密钥加密消息,但是当我将其传递回服务器时;它使用会话密钥解密消息,但消息作为垃圾返回(嗯..需要私钥!)。现在这可能是由于我通过 rpc 将加密消息传回的方式,但有些东西告诉我它是另一回事。理想情况下,我需要一个清晰明了的解释,说明我应该使用所有这些键做什么,因为我目前获得的信息非常混乱。

我是否将交换公钥传递给客户端,以便它可以加密消息并返回解密。

或者

我真的应该用服务器公钥加密客户端会话密钥然后返回吗?(这对我来说听起来不对,但我全神贯注!!!)

请留下评论以转移到另一个 API,或从 MSDN 复制馅饼(我已经阅读了所有内容)。我正在使用 Crypto API,只需要清楚地解释服务器应该将哪些密钥传递给客户端,然后客户端应该做什么并传回,以便我最终可以继续......

0 投票
2 回答
2015 浏览

java - 将公钥交换为序列化对象

如何将公钥交换到客户端。我已经通过使用私钥使用 RSA 算法加密了文档(文本文件),然后使用序列化将公钥作为 java.security.Key 对象存储在文件中。我想知道序列化公钥对象的完整性是否这是安全的选择或任何其他可用的选择。

0 投票
3 回答
1621 浏览

iphone - 我可以使用 OpenSSL 来加密 URL 参数吗?

我只需要一个公钥加密方案,我可以使用它来加密 iPhone 应用程序向服务器上的 PHP 发送的参数。由于它的许可证,我不能使用 GnuPG。

要求是手机上的应用程序能够与服务器进行通信,而无需用户输入任何凭据。我的目标是防止检查 URL 中的参数和通过欺骗来滥用我们的系统。因此,出于加密目的,我们应用程序的所有副本都可以看起来像同一个用户。

我没有计划使用 HTTPS,因为(如果我没记错的话)它需要会话或证书,而且似乎过多(但如果没有,请告诉我);我只需要加密和解密 URL 的参数部分。

由于要使用 RSA 公钥加密的数据必须比密钥短,标准过程是生成对称私钥,用公钥加密,用生成的私钥加密数据,然后发送生成的私钥密钥和加密数据到服务器。看起来我拥有加密生成的密钥所需的大部分内容(过程中的 RSA_size() 崩溃除外)。但我不知道如何使用 Blowfish 或 PHP 支持的其他算法指定和设置批量数据的编码。

感谢您的任何见解。

0 投票
3 回答
4821 浏览

php - 来自 PHP 的 PGP 加密

如果我运行命令

从 unix 命令提示符下,它工作正常。但是当我尝试使用 PHP 使用相同的命令时,它不起作用:

请指导我寻求解决方案。

0 投票
3 回答
622 浏览

public-key-encryption - 公钥加密

我只是想确保我在正确的轨道上

  1. 发送者生成私钥,加密消息
  2. 发送者请求接收者公钥
  3. 然后用这个公钥加密“秘密”
  4. 数据发送到接收方进行解密

我假设从逻辑上讲“秘密”只能用接收者的公钥加密,尽管加密的秘密是否附加到加密的文件/文档中?

0 投票
2 回答
3341 浏览

.net - 如何将 openSSL 生成的 RSA 公钥加载到 RSACryptoServiceProvider 中?

我正在编写一个从我们的中央身份验证服务器读取 cookie 的 .Net 类。它包含用户 ID、一些时间戳和由 openssl_sign() 使用 2048 位 RSA 密钥和 SHA1 哈希创建的签名。

当前的公钥在服务器上以 openssl PEM 格式提供,并且有时会更改。我无法单独使用 .Net 托管代码读取密钥(还),并制定了以下程序以使其正常工作:

  • 从公钥中提取指数和模数
  • 校验码还是2048位
  • 存储密钥长度,在 Source 中计算模数,编译和部署(从模数中删除前导零以使其工作)

然后该类创建一个new RSACryptoServiceProvider(2048)并使用该RSAParameters结构将公共组件提供给 CSP。然后签名验证成功。

我希望在每次关键更改时都无需我创建、编译和部署新程序集来完成这项工作。为了让事情变得有趣,我只想坚持使用托管代码(排除我发现的大多数示例)。听起来很完美的是内部 ASN.1 阅读器在创建实例时,AsnEncodedData(oid, data)但我发现唯一可以匹配的 oid,即 RSA aka 1.2.840.113549.1.1.1,不起作用并且只产生原始字节。

补充:以前的公钥

-----开始公钥-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMW90O6C17fapbS35auKolsy7kI0FOE1
C08y5HqgZ0rMXoocV4nHSHYBm2HVx2QSR5OLQtERgWDmxOu+vwU1GXUCAwEAAQ==
-----结束公钥-----

我发现pempublic.cs似乎使用(看起来)来自 openSSL 的源代码解决了这个问题。我将保留这个问题,看看是否有其他解决方案。