问题标签 [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.
encryption - 使用秘密共享方案保护 2048 位 RSA 私钥的实现
我正在尝试保护 2048 位 RSA 私钥(机密性和可用性)。我一直在寻找有关如何执行此操作的更多信息,并且正在考虑使用秘密共享方案(Shamir 的秘密共享会很好)。
这是最好的选择吗?有谁知道一个 GNU/GPL 软件实现来完成这个?
我查看“ssss”(http://point-at-infinity.org/ssss/),但秘密最多需要 128 个 ASCII 字符,而且对于 2048 位 RSA 私钥来说太短了。
谢谢你的帮助。
algorithm - 为什么 Shamir Secret Sharing 使用拉格朗日多项式?
我读过牛顿多项式具有更好的计算复杂性,但沙米尔使用拉格朗日多项式代替。有谁知道不使用牛顿多项式是否有特殊原因?
谢谢
ios - iOS 内置的安全框架是否支持 ECC 和 ECDH?
我可以从 2013 年找到一个答案,即 iOS 不支持基于 ECC 的加密以及使用 OpenSSL 的建议。我在安全框架参考中看到了 TLS_ECDH 的一些定义,但我不清楚是否完全支持基于 ECC。我需要能够生成基于 secp256r1 的密钥对,并使用对方的 64 字节公钥通过 ECDH 生成共享密钥。我还需要能够使用 ECDSA 来签名和验证签名。
ios - 基于椭圆曲线 Diffie-Hellman 和 CommonCrypto 的共享密钥
我正在寻找 CommonCrypto 中的方法来生成基于 ECDH(椭圆曲线 Diffie-Hellman)的共享密钥。我可以找到像这样的专有实现https://github.com/surespot/surespot-ios/blob/master/surespot/encryption/EncryptionController.mm但这个没有使用 CommonCrypto。计算共享秘密的方法有时称为密钥交换,包括计算共享秘密。有人可以将链接发送到正确的文档或使用 CommonCrypto 生成基于椭圆曲线 Diffie-Hellman 的共享密钥的示例吗?
oauth - OAuth 1.0A 中的共享密钥有什么好处?
OAuth 1.0A 共享密钥有什么好处?
据我了解,客户端可以向受保护的资源服务器注册,在该服务器中,客户端同时接收客户端标识符和共享机密作为回报。即使我一遍又一遍地阅读OAuth 1.0A 规范——我很难理解两个问题:
- 为什么需要共享密钥?
- 为什么客户端标识符不足以让服务器验证客户端?共享密钥提供了哪些额外的安全优势(如果有)?
我不是要你引用规范——在这一点上,我需要更简单的说明,因为我很难理解规范所说的内容(无论如何,它实际上并没有详细介绍共享秘密) .
java - WritableRaster 方法 setPixels() 中需要什么类型的数组?
我不明白 Java 的 WritableRaster 类是如何工作的。我尝试查看文档,但不明白它如何从像素数组中获取值。另外,我不确定像素阵列是由什么组成的。
这里我解释一下。
我想做的是:Shamir 在图像上的秘密分享。为此,我需要在 BufferedImage 图像中获取图像。我拍了一张秘密照片。通过在图像的每个像素上运行“函数”来创建共享。(基本上改变了像素值)
片段:
// 现在取那些 rgb 值。我使用一些函数更改它们并返回一个 int 值。像这样的东西:
// 这个二维数组像素具有所有新的颜色值,对吧?但现在我想使用这个新值构建一个图像。所以我做的是。首先将此像素数组转换为列表。现在这个列表有新图像的像素值。但是要使用 RasterObj.setPixels() 方法构建图像,我需要一个具有 RGB 值的数组 [我可能在这里错了!] 所以我获取列表的各个值并找到 rgb 值并将其连续放入一个新的一维数组 pixelvector ..像这样的东西 (r1,g1,b1,r2,g2,b2,r3,g3,b3...)
列表的大小是 w h,因为它包含每个像素的单个像素值。但是,新数组像素向量的大小将变为 w h * 3,因为它包含每个像素的 r、g、b 值。
然后形成图像我这样做:
如果我在 setPixels() 方法中放置一个只有单个像素值的数组,它不会从该函数返回!但是,如果我放置一个具有单独 r、g、b 值的数组,它将从函数返回。但是对 share1 , share 2 等做同样的事情。我得到的只是蓝色阴影。所以,我什至不确定我是否能够重建图像..
PS - 我知道这可能看起来像一个非常愚蠢的代码。但我只有一天的时间来学习 Java 中的图像。所以我正在尽我所能。
谢谢..
rest - 计算 oauth 签名
我正在尝试一些具体的东西,即尝试调用 REST API。我一直在遵循这些说明。
我一直非常小心地确保我正确地创建了“签名基本字符串”。他们将其定义为这样创建:
(HTTP 方法)&(请求 URL)&(规范化参数)
您可以仔细检查我的代码中是否需要,但我非常确定它没问题。
我遇到的问题是创建他们所谓的“oauth 签名”,而我的与他们的不匹配。它们应该像这样创建:
使用 [RFC2104] 定义的 HMAC-SHA1 签名算法对请求进行签名,其中 text 是 Signature Base String,key 是 Consumer Secret 和 Access Secret 的连接值,由 '&' 字符分隔(显示 '&'即使 Access Secret 为空,因为某些方法不需要访问令牌)。
计算出的摘要八位字节字符串,首先按照 [RFC2045] 进行 base64 编码,然后使用 [RFC3986] 百分比编码 (%xx) 机制进行转义,即 oauth_signature。
我在我的代码中这样表达:
我正在使用谷歌的 CryptoJS 库。我将签名基本字符串作为文本,然后将我的消费者秘密作为与“&”连接的密钥,我没有访问密钥,它不是必需的,但没关系。然后我对该哈希的结果进行base 64编码,然后我对其进行URI编码,请一些人理智地检查我对它的理解以及我在使用这个库的代码中对它的使用/表达,我认为这就是我的问题所在。
这是我的完整代码:
我已经注意确保我发布的参数按字典顺序排列,并且我非常确定它是正确的。
我得到的回应是:
无效签名:oauth_signature 'RWeFME4w2Obzn2x50xsXujAs1yI='
很明显
- 我没有理解 API 中提供的说明
- 或者我已经理解它们,但我没有在我的代码中以这种方式表达它们
- 或以上两者
- 或者我在看不到的地方犯了一些微妙的错误
我真的很感激一个健全性检查,这需要一段时间。
ios - 在 iOS 应用程序中使用 API 密钥签署请求
我的一个项目有一个 Web 服务和一个 iOS 客户端(应用程序)。
我的网络服务公开了几个 REST 端点。我正在寻找一种方法来确保 web 服务只处理来自 iOS 应用程序的请求。
我知道不可能 100% 确定请求来自 iOS 应用程序。
但是有什么最佳实践可以用来确保请求仅来自 iOS。
以下是我尝试做的几件事。
- 将 API 密钥与 iOS 应用程序捆绑在一起(仅 iOS 和服务器知道)
- 使用秘密和时间戳对所有请求进行签名
- 在每个(或备用)应用程序发布周期中回收 API 机密。
我对大部分内容都很陌生,所以任何帮助/建议/建设性批评都会非常有帮助
security - 如何在 Docker 容器之间共享动态生成的秘密
我已经将几个使用彼此 API 端点的 Docker 容器链接在一起。这些 API 端点受秘密保护,并在容器启动时生成。我正在寻找一种安全的方式来在这些服务之间共享这些秘密,而无需做任何静态的事情(例如硬编码)。这些服务是使用创建并链接在一起docker-compose
的,并且可以使用环境变量覆盖秘密。但是,不鼓励这种行为用于生产。
在我的情况下,分发这些秘密的最安全方式是什么?
我考虑过的事情:
- 使用将这些秘密存储为文件的中央数据容器。然后客户端可以链接到这个容器并在文件中查找秘密。
这种方法的巨大缺点是它限制了容器在同一个节点上运行。
- 在部署容器之前生成一个 包含这些随机秘密的
docker-compose
文件,这些随机秘密被硬编码到其中。
这种方法的缺点是不能简单地使用该docker-compose
文件,而是将自己限制在 bash 脚本中来生成与这些机密一样关键的任务。这也不符合我的旁注,即解决方案应该动态地适应秘密变化。
边注
最终,如果解决方案也可以动态适应秘密变化,我会更喜欢它。例如,当一个容器发生故障时,它会自动重启,从而也产生一个新的秘密。
c++ - 如何使用 Crypto++ 的 Secret Sharing 类来共享内存 blob
我正在构建协议以使用 crypto++ shamir 的秘密共享类在k方之间共享随机生成的n长密码。问题是我在互联网上找到的关于 cryptopp sss 的所有示例都是基于文件共享的,但我没有使用文件来存储这些密码。它们宁愿保存在内存中,然后通过网络发送。
我在crypto++ 论坛上发现了这个问题,但我被困在与相关问题相同的问题上。我无法弄清楚如何解决错误恢复的 ls-byte 的问题。
你能给我一些建议如何使这项工作。谢谢