问题标签 [shared-secret]

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

rest - REST 共享密钥值的最佳实践

我正在使用使用 oauth 进行身份验证的 REST API。在注册服务时,我得到了我的 API 使用者密钥和我的 API 共享密钥。我只是将共享密钥硬编码到我的应用程序代码中并编译它。

这是管理共享密钥的最佳方式吗?也就是说,是否存在任何安全隐患?这应该以某种方式加密吗?管理此共享密钥的最佳实践是什么?

0 投票
3 回答
1755 浏览

c++ - 什么是具有 ECDiffieHellmanCng 兼容实现的 C++ 库?

我正在寻找 .NET 应用程序和嵌入式设备之间的密钥交换解决方案。这两个端点有一个共享的密钥,这使得椭圆曲线 Diffie-Hellman (ECDH) 算法非常适合安全地交换会话的主密钥。

有一个很好的 C++ 库crypto++,它实现了 ECDH 并且适用于嵌入式设备。但是,它的 ECDH 实现与 Mirosoft 的ECDiffieHellmanCng实现不同(如其常见问题解答中所述)。我们希望与 .NET 安全算法保持兼容,以便我们可以坚持使用 PC 应用程序的托管代码(现在,或者如果我们使用 CNG,当我们有一天会放弃 XP 时)。

有没有人见过除了微软之外的与微软兼容的实现?或者,.NET 代码和嵌入式 C++ 代码之间是否有其他好的密钥交换解决方案可与预共享密钥一起使用?

2010-01-27 更新:为了澄清,我正在尝试使用 ECDH 在两个不相互信任的临时端点之间执行双向身份验证和密钥交换,直到他们看到它们共享相同的秘密。这类似于蓝牙配对场景,其中共享密钥在带外交换(除了在我的情况下,设备可能彼此不靠近)。

0 投票
2 回答
6868 浏览

itunes - Apple 自动更新订阅:共享秘密

根据 Apple iTune Connect 文件称,“Shared Secret”部分位于“Manage Your In App Purchases”中。但我找不到它。我是否必须更改 iTune Connect 设置才能看到此 SECTION?

此致

0 投票
7 回答
38116 浏览

java - Java:使用键对字符串进行 Base64 编码

嗨,我有数据和一个键(两个字符串)。数据需要使用使用 Base64 的密钥进行编码。有人可以给我一个示例代码。

0 投票
1 回答
278 浏览

security - 服务器端共享密钥生成的安全协议

我正在尝试实现具有以下要求的安全系统:

  • 所有客户端共享一个密码,服务器知道该密码
  • 每个客户端都有一个唯一的客户端 ID,服务器知道该ID
  • 所有知道密码的客户端都必须能够在服务器上生成相同的共享密钥(这个秘密可以是任何东西,它只需要对所有客户端都相同,并且在密码中是唯一的)
  • 即使服务器或传输被黑客入侵,密码也需要保持安全
  • 具有不同 client-id 的另一方必须不可能在不知道密码的情况下生成相同的服务器端机密

让我试着给出一个图形表示:

这里,f() [g()] 是客户端 [server] 应用到密码 [re​​quest] 以获取请求 [key] 的函数。这些功能可能取决于客户端 ID。

我想出了两种方法可以做到这一点,但我希望有一些更简单的方法,需要更少的流量和更少的服务器负载:

  1. “不费吹灰之力”:客户端散列密码。客户端和服务器各自使用标准机制(如 SSL)来保护它们的连接并通过此连接发送散列。

  2. “更聪明一点”:服务器有一个固定的私钥编码,每个客户端都有一个公钥编码。客户端对密码进行哈希处理,将其与客户端 ID 进行异或运算,并使用公钥使用 RSA/PGP 对结果进行加密。然后,服务器使用私钥对请求进行解密,并将结果与​​ client-id 进行异或,以得到密码哈希。

在这两种情况下,服务器最终都会为客户端提供相同的秘密:密码哈希。第二个版本的优点是不需要完整的密钥交换和加密系统的开销,因为不幸的是我不能在所有情况下都依赖 SSL。事实上,它允许我在一个请求中生成服务器密码,而无需任何握手。第二个版本中的 client-id-XOR 用于防止重放攻击,在这种情况下,具有不同 client-id 的第三方可以简单地将相同的加密消息发送到服务器以生成相同的秘密。基本上,这是一种添加盐的无开销方式。

现在的问题:

由于我对服务器端秘密没有任何要求,甚至客户端可以在本地生成这个秘密,有没有一种更简单的方法来做到这一点,它不需要对任意精度数字进行昂贵的模幂运算,例如RSA呢?我正在考虑上面的 f() 和 g() 的某种其他陷门函数,它可以让我获得相同的结果。

0 投票
2 回答
2181 浏览

c - Shamir Secret Sharing 的 OpenSSL 实现

我正在尝试使用 OpenSSL 实现 Shamir Secret Sharing。我在解密消息时遇到了很多麻烦!

我已经尝试了几种解密实现,这两个: http ://www.cs.cornell.edu/courses/cs754/2001fa/307.pdf

而这个(参考了上面的论文,但使用了不同的方法):

http://i9.photobucket.com/albums/a60/cacollo/confused1.jpg(注意我知道计算的错字u2

我相信我的问题可能是在使用 BIGNUM 值表示关键数字对 ik/(ik-ij) 进行拉格朗日插值时失去精度。我写了一个小函数,将一个intlike 键号转换为一个BIGNUM 值。

我会为你省去我的密钥生成代码,因为我很确定它工作正常。以下是我链接的 JPEG(不是 PDF)的实现:

当我在 cij[] 中吐出计算值时,使用键 [2、4、5] 时,我得到:2、-5、0。根据我手工做的一些数学计算,它实际上应该是 10/3、5 和 8/3。有没有办法解决这个问题?

您看到我的代码还有其他问题吗?提前致谢。

0 投票
2 回答
787 浏览

java - java.lang.Long 或 java.util.UUID 是安全的共享机密吗?

为了访问我的 Web 服务应用程序中的资源,客户端应用程序需要为每个资源提供唯一的共享密钥。

问题是:SecureRandom 生成的多头对于此目的是否合理安全(例如针对暴力攻击)?还是应该改用 UUID?

Web 服务通过 HTTPS 运行,我可以保证不会发生冲突(使用 Long 或 UUID)。真正唯一的问题是Java中的Long的域是否足够大以提供针对HTTPS的详尽攻击的保护。

0 投票
3 回答
2027 浏览

security - 为什么在生成秘密时要散列一个随机数?

很多代码都会做这样的事情来生成某种秘密:

为什么不简单地使用随机数?我意识到在过去,一些操作系统随机生成器并不是那么好,但我不确定这是否仍然是正确的,即使是这样,sha1'ing 如何让它变得更好?

0 投票
0 回答
809 浏览

ios - 应用内购买 自动更新 订阅 iOs

我正在实施应用内购买并使用自动更新订阅类型的产品,这是第一次它工作正常。对于其他第一次尝试,我在接收状态下获得 21004(21004 显示与共享密钥相关的错误)我如何执行此条件的测试,即应用程序将正确工作,即产品在正确的更新天数后更新。?以及如何解决获取ststus 21004的问题?

谢谢

0 投票
4 回答
11982 浏览

java - 沙米尔秘密分享的Java实现

我尝试在 Java 中实现 Shamir 的秘密共享,但我遇到了一些问题。

当我设置 K>10 时,不再重建秘密。谁能帮我?这就是我所做的。有什么问题?

最初我选择 N 和 K,接下来是系数的生成,份额的创建,最后是重建。