我需要一个保护我的数据的方法。
更多的加密,我需要一个方法来保证完整性和真实性,但我也需要是唯一一个能够理解完整性和真实性。
我发现HMAC是一个很好的完整性和真实性的方法,但是它是基于我应该在软件中共享的单一密钥的,我不喜欢它。
有没有类似HMAC的东西,但是有公共私钥,这样我就只能共享一个密钥?
发布于 2019-03-10 16:01:42
考虑下面的系统,它涉及像HMAC- the 256这样的消息身份验证代码:
当然,Alice也可以验证消息,Bob也可以伪造消息。事实上,任何拥有密钥的人都可以验证或伪造消息:密钥必然赋予两者兼而有之的权力。因此,Alice无法向第三方提供来自Bob的消息的密码证明,因为Alice可能伪造了该消息;反之亦然。因此,该系统具有“可否认性”,或缺乏第三方可验证性。
考虑以下涉及数字签名方案(如RSASSA或Ed25519)的系统:
只有Alice可以对消息签名;任何具有公钥的人都可以验证消息,但不能签名。您要求只有Bob才能验证消息。公钥能否被保密,以便Bob能够单独验证它们?
签名安全的标准是在自适应选择消息攻击(EUF)下存在的不可伪造性,这意味着一个能够查询某个先知以获得他们选择的任何消息签名的对手,却不能伪造他们没有查询到的任何消息的签名。没有什么可以阻止EUF签名方案简单地将公钥副本包含在签名本身,这样就不会将Alice的公钥保密。
对于公钥加密方案,某些公钥密码系统有一个名为关键隐私-formalized的非标准属性,这意味着,给定两个公钥和一个密文,对手无法分辨该公钥对应于哪个公钥。当然,这不会自然而然地传递到签名中,因为如果您有公钥和消息,您就可以验证签名。
有一个与匿名签名方案相关的概念,一个对手提供了两个公钥和一个签名,但消息却不能说明是哪一个公钥,澳大利亚人类服务部( Department of Human Services )感到懊恼的是,哪种典型的基于RSA的签名方案德国坦克问题失败提供了它没有提供的隐私。像Ed25519 do这样的标准组中的Schnorr型签名方案往往在这个意义上提供匿名。
键不可分性 (免付费墙)的另一个相关概念是,有两个公钥和签名甲骨文的对手无法判断公钥是否具有相同的私钥,但这是在一种奇异的上下文中,许多用户可以用他们各自的私钥对消息进行签名,但只有一方可以区分用户所做的签名。
你想要哪一个?我不知道--我不清楚你想在更高层次上完成什么,所以很难给出更具体的建议。
发布于 2019-03-10 14:53:20
正如Rob在评论中提到的,您要求的是公钥签名方案。En.wikipara.org/wiki/Digital_Digital
有大量的库实现签名端到端。但是要解释一个简短的大纲:散列你的数据,应用填充:https://en.wikipedia.org/wiki/Optimal_不对称_加密_填充签名与RSA私钥(模指数)
验证如下:应用RSA公钥删除OAEP与数据哈希比较
发布于 2016-07-26 15:01:02
用私钥加密消息摘要是标准的,这样接收方就可以用公钥验证消息没有被更改。

如果你头脑中有一个秘密密码,你能做的就是在计算摘要时使用你的密码作为HMAC密钥。
这是个坏主意,因为这意味着你必须知道你的私人密码,只有在你的头脑中才能进行加密。
https://crypto.stackexchange.com/questions/39941
复制相似问题