首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许每个人解密一条消息,但不允许任何人加密它

允许每个人解密一条消息,但不允许任何人加密它
EN

Cryptography用户
提问于 2018-04-22 13:21:25
回答 3查看 383关注 0票数 0

我想要创建一个软件,将安装在多个客户端。我想向所有这些客户发送一条加密消息。每个客户端都应该能够解密该消息并对其作出反应。然而,没有人应该能够创建这样一个消息,可以由这些客户端解密。

因此,我想成为唯一能够创建加密消息的实体。同时,我希望每个人都能解密我所创建的信息。我也希望信息以加密的形式发送,所以光靠数字签名是不够的。

这是可能的非标准密码学,即RSA或ECC?

我知道有些人用私钥加密,用公钥解密,但很多资源将这种方法指定为不安全/无效。那么,我想知道什么是正确、安全和有效的方法?

Update:编辑以提供更多的上下文信息,因为可能我的泛化使人困惑。这与网络无关,而是我想出一些软件注册密钥方案。我会有多个客户。当有人买钥匙时,我会给这个人发一份加密的注册信息。他的软件副本将读取这个加密的密钥信息,解密它,并以解密的形式存储在磁盘上。我希望防止将此解密表单再次转换为加密格式,以防止注册密钥被恶意软件窃取。密钥在解密形式中是无用的,因为软件不接受解密的密钥;它只接受加密的密钥。

EN

回答 3

Cryptography用户

回答已采纳

发布于 2018-04-23 20:18:17

在这种情况下,如果您显式地考虑了以下问题,您的描述就会有很大的改进,在密码学中,您应该总是这样问:

  • 谁是“诚实”的派对?(请参阅底部对恐惧引号的解释。)
  • 谁是对手?

特别是,你没有足够的注意来描述谁是对手。我们可以想象的第一件显而易见的事情是,有第三方--无论是你的软件还是它的客户端,无论是你的软件还是它的客户端,他们都将被视为“诚实的一方”,-that会窃听广播,并想知道它的明文。如果这是模型,那么一个简单的解决方案是:

  • 所有消息都采用对称算法加密,其密钥由广播者和所有客户端共享;
  • 广播公司用自己的非对称键盘对每个广播进行签名,所有客户端都在每个广播上验证签名。

但这种看法有一个问题:客户真的应该被塑造成“诚实”的当事人,还是他们实际上是一种对手?只有当接收方是诚实的一方,并将密钥和明文保密时,加密才能保护消息的机密性。

那么,你的方案的问题是,你正在向另一方披露信息,并期望他们不会向其他任何人披露。如果而且只有在对方“诚实”的情况下,这种做法才能奏效,如果对方是对手,就很容易失败。

请注意,在密码学中,“诚实的一方”不是一个道德术语。这是某个协议的当事方,可以指望他们忠实地执行它。而对手是一个不能指望遵守规则的政党。

票数 2
EN

Cryptography用户

发布于 2018-04-23 16:09:04

您说您以加密的形式向用户发送“密钥”。然后程序对其进行解密并将其存储在磁盘上。

如果我说在这个密钥到达程序之前拦截它,并在它还处于加密状态时复制它,会发生什么呢?

根据我的理解,有了这个,我可以有效地“激活”两个程序副本。

但是,如果您说要通过与您自己的数据库交互来跟踪这些许可证。你一开始就不需要加密!

票数 1
EN

Cryptography用户

发布于 2018-04-22 13:40:40

除非您在单个小型网络上与一群客户机打交道,否则您可能不是在进行真正的广播,而是只是向每个客户端发送相同的消息。所以我只想发送一堆单独的消息,每个消息都包含相同的内容。

至于加密,我建议使用一个正常的SSL连接,可能使用“唤醒”消息,这样每个客户端都知道要获取消息。

票数 -1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/58581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档