首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全消息传输中的随机生成

安全消息传输中的随机生成
EN

Cryptography用户
提问于 2013-12-13 13:08:13
回答 1查看 235关注 0票数 0

我正在做一项关于服务器和客户端之间安全通信的学校作业。基本上,消息在客户端和服务器之间进行交换,这些通信必须实现机密性、身份验证、完整性和不可否认性。

假设我必须从客户端向服务器发送一条消息。这就是我所理想化的:

  • 客户机和服务器都生成它们的公钥/私钥;
  • 他们的公钥在他们之间共享;
  • 客户端,使用“AES”生成会话密钥;
  • 客户端使用会话密钥加密消息并将其发送到服务器;
  • 客户端使用服务器公钥加密会话密钥并将其发送到服务器;
  • 客户端创建消息的散列,并使用客户端的私钥加密该散列并将其发送给服务器;
  • 服务器使用私钥获取会话密钥;
  • 服务器使用会话密钥解密消息;
  • 服务器用客户端的公钥解密哈希;
  • 服务器创建消息哈希,并与上面的哈希进行比较。

每次客户端向服务器发送消息时,我都会考虑创建一个新的会话密钥。

  1. 应该这样做吗?
  2. 在生成密钥的过程中,我必须使用一个随机数。我该怎么做?

我对第二条的想法是:

代码语言:javascript
复制
KeyGenerator keygen = KeyGenerator.getInstance("AES");
keygen.init(128,new SecureRandom());

或者这个:

代码语言:javascript
复制
KeyGenerator keygen = KeyGenerator.getInstance("AES");
keygen.init(128,  System.nanoTime());

还是我应该用别的方法?我这么问是因为我不知道产生种子的最佳方法。

EN

回答 1

Cryptography用户

发布于 2013-12-16 05:35:36

您可以使用建立良好的TLS (传输层安全)协议来实现前三个属性,并将其修改为包含不可否认的数字签名*。然而,严格地说,不可抵赖性要求使用来自CA的证书,以便签名可以由任何第三方进行验证。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/12306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档