【问题标题】:Password as private key for IM [closed]密码作为 IM 的私钥 [关闭]
【发布时间】:2013-06-28 20:26:06
【问题描述】:

由于互联网上的所有这些监视,我计划编写一个完整的开源、跨平台和完全加密的聊天客户端,包括视频功能。

与 Skype 类似,但消息和视频流应完全加密,所有通信只能发生在客户端本身之间,无需通过任何服务器。

注册、身份验证和在线检查,但需要在服务器端完成,以保持简单且对初学者也可用。

所以为了尽可能简单,我打算使用公钥/私钥加密。 为了不将私钥存储在服务器上的任何地方,也不要将其带到您要登录的每台计算机上,我考虑将密码设置为私钥。 这样您就可以随时随地登录,而不必担心密钥。

如果您添加一个人,您将自动向他/她发送您的公钥。如果他/她接受,他/她会用她/他的公钥回应,然后你们就可以聊天/视频通话了。

我在这里看到的问题是:

  • 如何在更改密码(私钥)时保留公钥?
  • 我是否可以使用现有的 SSL 基础架构来实现这一点,而无需重新实现任何加密标准?

我已经有几个人愿意帮助编程 (C/C++),但不幸的是,我们中没有一个人对加密技术非常感兴趣,所以我需要先对这些东西进行分类。一旦我知道如何实施加密,我将发布一个图表并征求相关反馈。

提前致谢。

【问题讨论】:

    标签: encryption chat public-key-encryption instant-messaging videochat


    【解决方案1】:

    首先,我认为Jitsi 大致是您正在考虑构建的应用程序。它通过OTR进行加密文本聊天,通过ZRTP进行密钥协商和SRTP加密语音和视频聊天。一般来说,密码协议设计非常困难,因此如果您要编写自己的应用程序,您应该使用这些协议和执行它们的库。

    要回答您的问题,如果您希望它不在密码之间更改,则不能直接从密码中派生密钥。相反,您将密钥存储在使用从密码派生的密钥(使用 PKBDF2 或 scrypt)加密(对称)的服务器上。如果用户更改密码,他们会使用旧密码派生密钥解密密钥并使用新密钥重新加密。

    一般来说,除非您使用一些用户可以在任何地方登录的 webapp 类型的解决方案,否则这样做并没有多大意义。这实际上是一个非常糟糕的主意。查看一些对cryptocat基于javascript的实现的批评,例如here.

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 1970-01-01
      • 2015-08-23
      • 2013-02-08
      • 2018-07-05
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2020-03-09
      相关资源
      最近更新 更多