确保基于节俭的通信

Securing thrift based Communication

本文关键字:通信 于节俭 确保      更新时间:2023-10-16

所以,我做了一个基于thrift的程序,有一个客户端和一个服务器,客户端可以很好地与服务器通信。现在,由于数据传输将是非常关键的,我希望在它里面有一些安全措施。

所以,我想到了登录系统,但问题是我没有在服务器端存储任何类型的会话数据(我甚至不知道,我应该存储什么,毕竟客户端请求来来去去,没有办法区分它们)。因此,经过深思熟虑,这就是我想到的

  1. 使用随机数,当服务器启动时,我将生成某种随机字符串
  2. 客户端将输入用户名和密码,这些用户名和密码将在服务器端使用PAM身份验证进行验证。
  3. 如果验证,服务器将把随机生成的字符串发送到客户端
  4. 客户端将在每次尝试执行RPC时向服务器发送该字符串
  5. 如果验证,服务器将执行工作,否则返回一些错误代码

我能想到的可能的问题

目前,当服务器宕机,客户端正在进行一些RPC时,它会给出一些错误信息,当服务器重新启动时,我们可以毫无问题地完成任务

现在,如果服务器宕机,那么生成的字符串将是不同的。所以我还是需要做验证部分

那么,您对整个身份验证模式有什么看法?有没有更好或更简单的方法?

p。学生:我没有使用任何类型的数据库。我在两边都使用c++。我的客户端使用QT

免责声明—我不太了解PAM是如何工作的,所以我对这种方法只有一些高层次的问题。如果我误解了你的方法,我先道歉。

当你说你想保证数据传输的安全时,我觉得你想要认证和保密,你现在只有一种认证方法。

例如,如果客户端C1正在向服务器进行身份验证(假设凭据没有以明文形式发送),服务器将在步骤3中发送随机字符串。当其他人在网络上嗅探时会发生什么?恶意客户端可以不发送随机字符串并执行RPC调用到服务器,冒充C1?如果用户名和密码以明文形式发送到服务器,网络上的人也可以访问凭据吗?另外,随后发送的数据怎么办?它只是以节俭格式编码,网络上的任何人都可以解码,对吗?数据是否敏感?

如果是这样,我建议使用PKI/证书。使用自签名证书肯定没问题。如果您只想让客户端向服务器进行身份验证并证明它是合法的,那么您可以让所有客户端提供它们的证书。证书基本上是由为该客户提供担保的机构签署的该客户端的公钥。客户端将私钥存储在本地,永远不会离开客户端。现在,当客户端将证书提交给服务器时,服务器查看是谁签署了证书(CA)。如果它是服务器信任的CA,它可以直接发送随机字符串或仅发送使用客户端公钥加密的thrift数据。客户端将能够用它的私钥解密,对于其他嗅探者来说,它看起来就像随机字节。服务器将为每个客户机执行此操作,并且只需要存储它信任的认证机构的名称。这可能是你的名字和地址。您可以使用openssl在每个客户机上生成自签名证书。但这意味着您需要在每个客户机上进行额外的设置工作。生成密钥对和证书。如果这个约束条件适合您,您可以探索这种方法。