问题标签 [public-key]

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 回答
897 浏览

.net - 通过代码查找程序集的公钥

如何通过代码找到 .NET 程序集的公钥?

从命令行,我可以使用 sn -Tp assemblyName来查找公钥。

代码中的等价物(c# 或 VB)是什么?

0 投票
1 回答
6722 浏览

c# - 使用证书公钥验证java中的签名

我希望将一些 C# 代码转换为 Java 中的等效代码。

C# 代码采用一些字符串内容和一个签名(使用私钥在单独的机器上生成)并与公钥相结合,它验证签名匹配,提供一定程度的保证,即请求没有被篡改。

公钥本身是一个 X509 证书 - 由 .cer 文件构建,存储为程序集资源,即

我想做的是在 Java 中模拟这个功能,所以我可以验证 C# 中的一些代码生成的签名......我已经开始研究 Java 的加密功能,但我有点像 java 菜鸟. 到目前为止,这是我想出的:

任何人都可以提供有关我如何验证签名的任何见解 - 或提供一些资源的链接,这些资源可能比磨坊 java 文档的运行更好地解释 java.crypto 和 java.security.cert 的用法。

0 投票
3 回答
480 浏览

security - 这种架构有多安全?

我正在构建一个系统,该系统需要通过安全的 Web 连接收集一些用户敏感数据,将其安全地存储在服务器上,以便以后自动解密和重用。系统还应允许用户通过*****ze网络查看某些部分的受保护数据(例如,)和/或完全更改它。系统应提供合理的安全级别。

我在考虑以下基础设施:

应用程序(Web)服务器 1

  1. 具有适当 TLS 支持的 Web 服务器,用于安全的 Web 连接。

  2. 使用公钥算法(例如 RSA)加密输入的用户敏感数据,并通过单向出站安​​全通道(例如 ssh-2)将其发送到App Server 2 ,而不会将其存储在App Server 1DB Server 1的任何位置。

  3. 使用与用户密码相关的对称密钥算法对输入数据的某些部分(例如最后几个字母/数字)进行加密,并将其存储在DB Server 1上,供App Server 1在用户 Web 会话期间检索。

  4. 用户通过网络重新使用步骤 2 进行数据修改。

数据库服务器 1

  1. 存储不安全的非敏感用户数据。
  2. 存储在App Server 1上加密的部分敏感用户数据 (参见上面的步骤 3)

应用服务器 2

  1. 永远不要App Server 1DB Server 1发送任何内容 。
  2. 从App Server 1接收加密的用户敏感数据并将其存储在DB Server 2中。
  3. 根据本地计划从数据库服务器 2中检索加密的用户敏感数据,使用本地存储在应用服务器 2上的私钥(参见应用服务器 1,步骤 2)解密,并进行适当的密钥管理。

数据库服务器 2

  1. 存储加密的用户敏感数据(参见App Server 2,步骤 2)

如果应用程序(Web)服务器 1数据库服务器 1或两者都受到威胁,那么攻击者将无法获取任何用户敏感数据(无论是否加密)。所有攻击者都可以访问众所周知的公钥和加密算法。然而,攻击者将能够修改网络服务器以获取当前登录的用户明文密码并解密存储在 DB 服务器 1 中的部分用户敏感数据(请参阅应用服务器 1,第 3 步),我认为这没什么大不了的。攻击者将能够(通过代码修改)在潜在攻击期间拦截用户通过 Web 输入的用户敏感数据。后来我认为这是一个更高的风险,但假设攻击者很难(是吗?)在没有人注意到的情况下修改代码,我想我不应该太担心它。

如果App Server 2和私钥被泄露,那么攻击者将可以访问所有内容,但App Server 2DB Server 2不是面向 Web 的,因此应该不是问题。

这种架构有多安全?我对加密算法和安全协议如何工作的理解正确吗?

谢谢!

0 投票
2 回答
2361 浏览

sftp - 每天使用 MSFTP 和 WinSCP 的新主机密钥

我正在使用源端的“Core FTP mini-sftp-server”和目标端的 WinSCP(两台服务器都运行 Windows)将文件从一台服务器传输到另一台服务器。

我正在使用两台服务器上相同的本地管理员帐户登录这两台机器。我一直在手动执行此过程:

  • 在源上启动 MSFTP 服务器
  • 在目标上启动 WinSCP,连接到源并获取文件。

现在我想自动化它,我尝试了以下

msftp从源代码的命令行开始。

winscp.exe控制台的目的地:

这样做的问题是,如果我每天第一次这样做,它会要求我更新目标端的密钥,说:

“警告潜在的安全漏洞!服务器的主机密钥与 WinSCP 拥有的缓存不匹配。这意味着服务器管理员已向主机密钥收费,服务器在某些情况下提供不同的密钥,或者您实际上已连接到另一台计算机冒充服务员”

我必须首先手动执行(单击更新),然后对于以下副本,自动化工作。

问题:

如何在连接到服务器时使用 cmd 行更新密钥?

我可以阻止源每天生成新密钥吗?还是我应该这样做?

0 投票
3 回答
8404 浏览

encryption - 如何将 AES 初始化向量传达给客户端以进行混合密码系统

我需要为客户端-服务器通信实现安全性。我已经实现了以下混合密码系统

为了在混合密码系统中加密发给 Alice 的消息,Bob 执行以下操作:

  1. 获得 Alice 的公钥。
  2. 为数据封装方案生成一个新的对称密钥。
  3. 使用刚刚生成的对称密钥在数据封装方案下对消息进行加密。
  4. 在密钥封装方案下,使用 Alice 的公钥加密对称密钥。
  5. 将这两种加密都发送给 Alice。

为了解密这个混合密文,Alice 执行以下操作:

  1. 使用她的私钥解密包含在密钥封装段中的对称密钥。
  2. 使用此对称密钥来解密数据封装段中包含的消息。

我将 RSA 用于公钥密码系统,将 AES 用于对称密钥密码系统。一切正常,但我不确定如何处理 AES 初始化向量。目前,我正在连接 AES 密钥和初始化向量,用公钥对其进行加密并将其发送到服务器。

我只是想就这种方法获得一些意见。其他通信协议 SSL 等如何解决此问题。

谢谢。

0 投票
3 回答
356651 浏览

permissions - 权限被拒绝(公钥,键盘交互)

我尝试使用 ssh 连接到 planetlab 节点。它向我抛出了类似 Permission denied (publickey,keyboard-interactive) 之类的错误。这是什么意思?这是异常的详细信息。

0 投票
1 回答
11238 浏览

iphone - iPhone:如何从公钥文件 (PEM) 创建 SecKeyRef

为了从/向 iPhone 发送和接收加密消息,我需要读取一个公钥(服务器的公钥)PEM 文件并创建一个 SecKeyRef(后来我什至可以将它存储在钥匙串上,以免再次创建它)。

这是我目前的工作流程:

  1. 在服务器上:使用用户的证书和私钥创建一个 P12 文件。将用户的公钥存储在服务器的钥匙串上。
  2. 在 iPhone 上:从服务器检索 P12 文件,使用密码打开它并将私钥存储在钥匙串上。
  3. 在 iPhone 上:从服务器检索带有服务器公钥的 PEM 文件。创建一个 SecKeyRef 并将其存储在钥匙串上
  4. 在 iPhone 上:使用两个密钥向服务器发送/接收加密消息。
  5. 从此过上幸福的生活。

我遇到了 3 的问题,因为我无法从 PEM 文件数据创建 SecKeyRef。我找不到任何关于如何做到这一点的文档,有人有同样的问题吗?有什么提示吗?由于我找不到任何代码示例或文档,所以感觉我做错了什么......

谢谢!

0 投票
1 回答
9196 浏览

c# - 如何从 pem 文件或 xml 文件中读取 RSA 公钥

我有一件简单的事情要做:我想使用 AES 算法和 pem 文件中包含的密钥来加密数据,如页面所示:http: //msdn.microsoft.com/en-us/library/sb7w85t6.aspx

在此示例中,每次运行该函数时都会创建一个新的加密密钥。但我需要从 pem 文件或 xml 文件中读取此密钥,但我找不到这样做的方法。

有没有一种简单的方法可以从 pem 文件中读取密钥并将其转换为字节数组 (byte[]) ?

我正在使用 C# - .net Framework 3.5,文件中的密钥是我们合作伙伴的 RSA 公钥。

0 投票
4 回答
10600 浏览

git - git push heroku master 权限在 VISTA 上被拒绝

(使用 Vista)我正在尝试从我的 GitHub 存储库克隆一个应用程序并将其推送到 Heroku。好的,所以我尝试使用以下方法多次创建 SSH 密钥:

它似乎完美无缺。我在我的 C:/Users/***/.ssh 文件夹中有它。我现在尝试克隆我在 GitHub 中分叉的应用程序。当我尝试在 rails_apps 目录中克隆它时,我收到一条消息说

我在网上找到了一个解决方案,说我应该先运行它:

所以我试着这样做。但它说:

无法打开与您的身份验证代理的连接。

然后经过一番谷歌搜索,我发现了一些关于执行 ssh-agent 的信息。所以我这样做:

并且命令行从我的 rails_apps 目录更改为:

所以我跑:

并且它成功添加了 rsa 私钥(它不适用于 id-rsa.pub)。我还将新生成的公钥粘贴到我的 GitHub 帐户中。

现在当我尝试克隆时:

它现在成功克隆了我在 GitHub 中创建的 repo。现在我的本地存储库中有应用程序,我尝试创建一个 heroku 应用程序。

并且此代码运行成功。Git远程添加成功。现在我所要做的就是推动它。

砰!我再次收到错误消息。

Permission denied (public key)

我非常接近将我的应用程序推送到heroku。但它只是行不通。你能帮助我吗。我在这里做错了什么?谢谢!:D

0 投票
1 回答
3058 浏览

c# - 简单使用 RSACryptoServiceProvider KeyPassword 失败

我想用密码(谁不会)保护我的 RSA 私钥,但以下 C# 失败:

...带有 CryptographicException:“指定的类型无效”。如果我取出 KeyPassword 分配,它工作正常。

我或微软做错了什么?