声明:
我没有特别的政治取向。以上问题仅是密码挑战。元假设是…
您信任某人,表示为斯诺登,但斯诺登不信任任何人,除了他的名字或身份之外,您不知道有关斯诺登的任何其他信息。
您要小心,例如联邦调查局(FBI)可能冒充您的斯诺登。
Snowden一开始就不信任任何人,但他想通过内置的安全通道(如果可能)找到他可以信任的人,而从头开始在您和Snowden之间建立一个通道?步骤1.如何完成?
可以通过使用密码术来做到吗?
为方便起见,让我们称此挑战为斯诺登挑战。我们如何为斯诺登和您建模安全目标?
#1 楼
至少要与要发送的消息一样长地生成具有加密强度的随机数据文件。这将允许使用随机数据作为一次性密码来传达秘密。即,使用诸如XOR之类的逐位组合功能来生成密文。
购买通过谢列梅捷沃机场进行国际航班的机票。
将OTP数据的副本刻录到CD上。 -只读存储器。将其标记为“ Lady Gaga”,然后将其锁在戴在手铐上的公文包中。
搭乘飞机。在您中途停留时,请在国际旅行区中找到斯诺登。
对斯诺登说悄悄话。
然后你们俩都大声地笑着有关Lady Gaga的事。
将CD-ROM丢到垃圾桶中,以便幽灵不必举手报告家。
(可选)与斯诺登交换公钥,以确保您将来的通信。留下可能被解释为拖钓的响应。但实际上,这是一个经典的身份引导问题。
一旦我们完成了身份验证,就可以使用标准的加密系统来解决消息的完整性和机密性。引导身份没有万能的法宝,但这是我在尝试解决此问题时会问自己的问题:
第一:确切地验证了哪些事实?
例如,您是否拥有声称是斯诺登的公钥,并且正试图证明它是真实的?认证是有代价的,为什么他会竭尽全力向您证明呢?
更容易解决的问题可能是“如果斯诺登想从我这里收到消息,他怎么能安全地这样做呢? ?“
第二:这些事实将向谁认证?
您是否要向斯诺登证明您发送的邮件是真的来自您?还是某个自称是斯诺登的不知名人士会向您证明,您收到的邮件是来自真实的斯诺登的消息? br />也许您要向斯诺登发送一些东西,然后依靠他来完成对他收到的信息进行身份验证的完美工作(即,证明没有活跃的中间人攻击者)。但是,如果他对邮件的安全性至少不像您那么关心,那么他可能会做一个半心半意的工作,您可能会继续不安全地传输邮件。
第四步:这些凭据会扩展吗?例如,他可以模拟您参加第三方吗?
总结:
密码是一种将明文机密性问题转换为密钥分发问题的设备。
临时密钥协商算法是将密钥分发问题转换为身份验证问题的设备。
签名算法是将消息认证问题转换为身份问题的设备。
如果您能以某种方式在一个或两个方向上建立对身份验证凭据的信任,剩下的大部分就是已解决的问题。但这只能建立在人的系统之上:您和/或斯诺登会相信对方是真实的吗?
评论
$ \ begingroup $
我不同意你的最后一部分。只是原始明文也具有身份验证问题-这些不是通过使用密码或临时密钥协商算法“创建”的。
$ \ endgroup $
–orlp
13年7月5日在16:23
$ \ begingroup $
是的,我并不是说明文没有身份验证问题,只是如果我们能够解决身份和身份验证问题,我们就已经建立了完善的消息机密性和完整性解决方案。
$ \ endgroup $
–沼泽雷
13年7月5日在19:59
$ \ begingroup $
在OTP中,没有可靠的替代品可以亲自见到某人并交换包含消息和身份验证位的私钥(我将每个使用128位,如果您是偏执狂和/或抽烟则使用256位)系统或具有已知加密安全伪随机数生成器的流密码。
$ \ endgroup $
–威廉·希尔德
13年7月12日在20:24
#2 楼
首先,我认为您的问题对于crypto.SE来说不那么重要了,它将更适合security.SE领域。不过,这里有:...除了他的名字或身份...
本身已经描述了您遇到的问题安全性和加密技术。
由于缺少验证选项而出现问题。
当前,世界新闻媒体(例如路透社)以及美国政府确认,斯诺登先生的护照已被美国政府吊销。结果,您没有选择验证与您交谈的人的确是斯诺登先生,因为没有官方文件确实可以可靠地验证身份。
由于缺乏知识而出现的问题。
由于您也从未亲自见过斯诺登先生,所以您无法确定您遇到的人的确是斯诺登先生,而不是长得像他的人。请记住,您当前拥有的唯一“知识”是名字和新闻机构发布的一小包图片。简而言之:由于你们俩都没有可以用来建立“信任”的“常识”,因此您无法信任与之交谈的人。
现在...安全是基于了解,做或拥有别人没有的东西。当出于通信目的考虑加密时,尤其如此。由于您甚至都不认识斯诺登先生,而他也不认识您,因此无法建立安全的连接和/或通信。
实际上,您彼此都代表“不受信任的端点”。当一个或多个端点不受信任时,您将无法建立安全连接。举一个每天的例子:这就像在访问受SSL保护的网站时信任无效的证书。另一种选择是改为使用公共密钥密码术。但是:为了避免每个人都可以解密消息,解密密钥将需要秘密地而不是公开地传递给Snowden先生……这不再满足“公共密钥密码学”的定义。此外,您无法建立与不受信任端点的安全连接,这意味着您无法安全地传递解密密钥。这实际上关闭了循环。
总结:人通常是安全协议中最薄弱的环节。这是这样的情况之一。
编辑
最近在对我的答复的评论中发现了一些关于讨论的不错的,现实检查的观点...
您可以信任“公共视频”吗?
即使您可以信任公共视频来传输密钥,即使您忽略端点,也无法确定是否验证……由于“不受信任的传输渠道”,“信任问题”仍然存在。如前所述:在这种情况下,人类是试图找到一种安全的方法时最薄弱的环节。
xkcd.com/,获得许可的CC BY-NC 2.5)
由于评论中的讨论归结为认为公钥加密是必经之路,所以这里有一些其他想法为什么它不会在这种情况下的工作方式:
在公共密钥密码系统中,私有密钥由所有者保密。所有者然后通过证书颁发机构(CA)公开其公共密钥。 CA本质上提供(身份,公共密钥)对,并使用CA的私钥对此进行签名,以便可以使用“众所周知”的相应CA公共密钥进行检查。
现在,要查找某人的公钥,您可以向CA发送请求,CA会通过已签名的消息进行回答,然后检查其签名。
在斯诺登先生的案子中,至少有两个弱点,主要集中在CA可能受到损害这一事实:
如果攻击者了解了CA的私钥,则他可以伪造看起来像是CA签名的签名(身份,公钥)对,从而散布错误的公钥记录。 >如果攻击者以某种方式使CA将实体XYZ的公钥记录更改为私有密钥已被泄露的“伪造的密钥”,则他可以使用“伪造的密钥”来模仿实体XYZ;除了CA可能记录了伪造的密钥外,这与上述攻击基本上是相同的结果。
因此,要与Snowden先生等人进行安全通信,您需要确保可以与他建立可信任的,可验证的直接连接,或者您需要一个双方都信任的CA。但是您将无法就普遍信任的CA达成一致,因为您一开始就无法与Snowden先生建立可验证的通信。
我们可以来回讨论这一事实,事实是:信任是一个问题,在不依赖另一个不可验证的中间方的情况下,几乎不可能进行验证。总结:您不能“对Snowden保密”(在问题描述的当前情况下),因为由于密钥交换问题而无法从密码的角度证明“机密”部分问题中的答案。
将所有内容总结起来:你不能由于多种原因,请阅读我的完整答案。
评论
$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年12月16日在18:20
#3 楼
其他答案相当详尽地介绍了它,但总而言之:不。一个叫“斯诺登”的人。某处。在世界上。而且他无法进行身份验证。Snowden最初不信任任何人。
没有可信任的方法来对任何人进行身份验证。没关系,因为“好人”不可能赢得这场比赛:
Snowden不信任任何人。
他不信任任何验证手段。
如果他只与可信赖的(经过身份验证的)人员进行交流,那么他就一个人呆着。不能区分真实的“ Snowden公钥”和“假FBI公钥”。在游戏中,您仅知道斯诺登的名字及其存在。就是这样。
真正的问题是,您假设一个没有任何初始信任关系或“游戏规则改变条件”的系统,该系统区别了诚实的政党和攻击者。对此没有密码解决方案。
评论
有趣的问题。密码学通常强调确保知道他们将要彼此通信的各方之间的通信。在您的游戏中,被冒名顶替者欺骗会给您带来任何惩罚吗?无论如何,我认为这是不可能的,因为无法验证您正在与斯诺登聊天,也无法让斯诺登验证他可以信任您。例如,您可以要求介绍自己为斯诺登的人通过要求他提供他泄漏的文件来验证他的主张。联邦调查局特工可以做同样的事情。我想您总是可以要求人们加入视频聊天室,然后说:“请真正的斯诺登站起来!”然后以某种方式消除多巴哥。现在,考虑到这一点,您可能已经成为联邦调查局特工,但想法不多了。
目标2不是自相矛盾吗?
我的意思是,一开始,斯诺登不信任任何人。但是,在建立了这样一个安全的渠道之后,如果可能的话,您可以向斯诺登秘密地向您证明自己值得信赖。
原则上,您必须具有某种方式来识别斯诺登。如果您有这种方法,我们必须知道它是什么。如果您不这样做,那就证明是不可能的-可以确定您所想到的斯诺登的任何事物也可以识别其他人。