Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 如何为服务器身份验证编写私钥/公钥系统?_Language Agnostic_Public Key_Private Key_Dsa - Fatal编程技术网

Language agnostic 如何为服务器身份验证编写私钥/公钥系统?

Language agnostic 如何为服务器身份验证编写私钥/公钥系统?,language-agnostic,public-key,private-key,dsa,Language Agnostic,Public Key,Private Key,Dsa,我猜这可能是发布在某个地方,我搜索过,但什么也找不到 我有一个运行游戏服务器的服务器,我希望有一个TCP服务器(可能是用Ruby编写的),该服务器将提供一个伪会话,并且几乎没有可用的命令(如重新启动游戏服务器、发送日志等) 我想要的是一种类似SSH的身份验证,其中人们拥有公共和私有DSA密钥(我知道如何生成),并且服务器将公钥识别为正确的身份验证 我并不是在寻找代码实现,而是主要寻找应该如何构建它 我当时的想法是: [客户端]连接到服务器 [服务器]发送公钥 [客户端]发送使用服务器公钥编码的

我猜这可能是发布在某个地方,我搜索过,但什么也找不到

我有一个运行游戏服务器的服务器,我希望有一个TCP服务器(可能是用Ruby编写的),该服务器将提供一个伪会话,并且几乎没有可用的命令(如重新启动游戏服务器、发送日志等)

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

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

我当时的想法是:

  • [客户端]
    连接到服务器
  • [服务器]
    发送公钥
  • [客户端]
    发送使用服务器公钥编码的公钥
  • [服务器]
    将密钥与授权客户端数据库进行比较
  • [Server]
    生成会话密钥,使用客户端发布加密发送
  • [客户端]
    解码会话密钥并开始发送始终伴随会话密钥的消息
但我觉得这缺少了一些东西。特别是,在查看DSA和PK系统时,我一直看到消息签名,我不知道这与使用pub密钥加密和会话密钥有多大不同


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

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

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

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

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

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


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

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

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

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


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

如果您选择实现自己的安全层(这有时是正确的答案),那么有很多微妙之处需要注意。从阅读我认为关于主题的决定性坟墓开始:


Bruce Schneier的

如果您选择实现自己的安全层(这有时是正确的答案),那么有很多微妙之处需要注意。从阅读我认为关于主题的决定性坟墓开始:


Bruce Schneier的

不要忘记时间戳或nonce,这样你就不会受到重播攻击。不要忘记时间戳或nonce,这样你就不会受到重播攻击。这是不可能的,我不希望他们有一个真正的shell访问机器。然而,我完全理解SSL的要点。出于某种原因,我认为这并不完全是事实。事实上,我不知道X.509证书可以扮演PK系统的角色。然后我会调查这一点,谢谢你为我指引了一个更好的方向@ThibaultMartin Lagarette SSH不必暗示“真正的shell访问机器”。您可以将其限制为通信。SSH是不可能的,我不希望他们拥有对机器的真正shell访问权限。然而,我完全理解SSL的要点。出于某种原因,我认为这并不完全是事实。事实上,我不知道X.509证书可以扮演PK系统的角色。然后我会调查这一点,谢谢你为我指引了一个更好的方向@ThibaultMartin Lagarette SSH不必暗示“真正的shell访问机器”。你可以把它限制在通讯上。