0

我想这可能已经发布在某个地方,我确实搜索过,但找不到任何东西。

我有一个运行游戏服务器的服务器,我希望有一些 TCP 服务器(可能用 Ruby 编写),它将提供一个伪会话,可用的命令很少(比如重新启动游戏服务器、发送日志等) .)

我想要的是一种类似 SSH 的身份验证,人们拥有公共和私人 DSA 密钥(我知道如何生成),并且公共密钥被服务器识别为正确的身份验证。

我不是在寻找代码实现,而是主要应该如何构建它。

我的想法是这样的:

  • [Client]连接到服务器
  • [Server]发送公钥
  • [Client]发送使用服务器公钥编码的公钥
  • [Server]将密钥与授权客户数据库进行比较
  • [Server]生成会话密钥,使用客户端 pub 加密发送
  • [Client]解码会话密钥并开始发送始终伴随会话密钥的消息

但我觉得这缺少了一些东西。特别是,在查看 DSA 和 PK 系统时,我不断看到消息签名,但我不确定我是否理解它与使用 pub 密钥加密和会话密钥有什么不同?

如果我的问题不清楚,我当然很乐意编辑我的帖子:-)。

4

3 回答 3

2

如果您想要类似 SSL 的实现,那么为什么不直接使用 SSL?

于 2010-08-13T23:08:04.907 回答
2

为什么不使用 SSH,而不是类似 SSH?或者使用 SSL,它对任何平台都有几乎无处不在的库支持?

首先,它更容易。编写、测试、审查和维护代码。

其次,它更安全。如果您不明白为什么需要对消息进行签名,您还可能忽略什么?老实说,即使是经过大量审查的 TLS(SSL),在最近公开的重新协商错误中也存在严重缺陷。即使你知道自己在做什么,设计一个安全的协议也很困难。

顺便说一句,SSH 和 SSL 为每个协议记录计算一个消息验证码,这样中间人就无法篡改消息内容。

于 2010-08-13T23:09:29.147 回答
2

如果您确实选择实施自己的安全层(这有时是正确的答案),那么需要注意很多细微之处。首先阅读我认为关于该主题的最终坟墓:

Bruce Schneier 的应用密码学

于 2010-08-13T23:43:53.443 回答