配对
相关问题:
- 客户端是如何确定配对的状态的?
- 配对流程是怎样的?
- 解除配对的流程是怎样的?
- 云手柄方案中如果去掉手柄端的配对过程应该怎么做?
客户端是如何获取服务器信息的?
- 客户端会先尝试通过https向服务器请求serverinfo信息,如果不成功则换用https再次请求serverinfo
(GFE版本不允许在客户端尚未配对的情况下通过HTTPS获取serverinfo。因为我们不能在不知道服务器版本的情况下进行配对,所以如果HTTPS请求失败,我们将通过HTTP发出另一个请求。我们不能只使用HTTP,因为它不能准确地告诉我们是否配对) - 请求参数:
a)unique_id: 配对标识,重复使用同一个
b)uuid:请求标识,每次不一样 - 在响应报文中的“PairStatus”字段标识是否已配对
- https的端口号是47984,http的端口是47989
配对流程是怎样的?
- 生成4位的随机pin码–口令
- 生成16位salt_pin并追加pin码–得到
- 计算salt_pin的哈希值
- 生成密钥对、证书
- 准备好unique_id,生成uuid,生成加密随机数salt_data
- 将证书、salt_dat通过http发给服务器
- 服务器收到后将回复服务端的plaincert
- 将salt_data追加pin码得到salt_pin
- 计算salt_pin的哈希值aes_key_hash
- 客户端和服务端都根据aes_key_hash获得加密密钥和解密密钥
- 生成一个随机数并用加密密钥加密得到challenge_hex并发给发到服务端,其目的是测试服务端能否解密
- 响应报文中包含两个信息:a)服务端有没有解密成功,b)一段密文:challengeresponse,其目的是测试让客户端解密
- 客户端用解密密钥将challengeresponse解密得到challenge_response
- 然后把challenge_response追加X.509签名和一段新的随机数种子,然后加密后发给服务端
- (推测:服务端收到后将检查客户端解密的challenge_response是否正确,如果正确将检验证书并接受新的随机数种子)
- 服务端返回已接受
- 客户端向服务器请求切换证书(即使用新的随机数种子)
- 服务端回复:同意
(配对完成)
解除配对的流程是怎样的?
- 客户端向服务端发起unpair请求,关键参数是unique_id
- (unique_id跟配对时所带的unique_id一致)
云手柄方案中如果去掉手柄端的配对过程应该怎么做?
- 先在android端完成配对,手柄端永远不做配对流程
- 手柄连上android后主动查询配对状态,并获取android端的密钥、证书、unigque_id传到手柄
- 串流时先启动Android端流程,再启动手柄端流程
串流
相关问题:
- 串流包括哪些通道?
- 每个通道是干什么用的?
加密相关知识
- X.509证书
- PKCS12证书
- 证书文件通常以.cer, .crt结尾
- 公钥文件通常以.pem结尾
- 私钥文件通常以.key结尾
- .pfx 一种文件存储格式, pkcs12是它的实现, 通常里面同时包含私钥, 公钥, 证书, 方便存储和传播
typedef struct _CERT_KEY_PAIR {
X509 *x509; //证书
EVP_PKEY *pkey; //密钥对
PKCS12 *p12; //打包好的证书
} CERT_KEY_PAIR
Note
- GFE:Nvidia Geforce Experience(以下简称GFE)是一款专为游戏玩家设计的软件,它可以帮助Nvidia显卡用户快速升级驱动、优化游戏设置、截取游戏画面。在出货搭载Nvidia显卡的机台中,该软件随显卡驱动一并安装。