首页
帖子
账号
关于
{"ObjectType":101,"Sequence":9,"PreHash":"C26D499BA3E860D9AC5E40B3BE226C7F","Quote":[{"Address":"okEtWt6Dx92vqtfaVqBwKPTTReHBczrj2V","Sequence":8,"Hash":"9FAEA441A10C45060887C7B75DDF73E3"}],"Content":"【公告】实现了个体自由披露公开信息,那么个体如何自由收发私密信息呢?<br>这里说的私密信息是指知悉范围在2个及以上个体之间的信息。<br>这里只考虑技术问题,不考虑知悉范围内个体泄密的非技术问题。<br><br>说到私密消息,就要谈谈端到端加密。<br>所谓端到端加密,是指只有消息收发两端知道消息明文的消息,两端之间的数据传输节点只能看到消息的密文。<br><br>那么微信及其他聊天系统,做到了端到端加密?<br>答案是没有。<br>它们最多只做到了客户端到服务端的加密,而没有做到发消息人到收消息人的加密。<br>我要的端到端加密是我的客户端到好友的客户端加密,服务端只能看到密文,而是不是服务端(微信及其他聊天系统)可以看到我与好友之间消息的明文。<br><br>既然现有系统无法保障宪法第四十条:“中华人民共和国公民的通信自由和通信秘密受法律的保护。除因国家安全或者追查刑事犯罪的需要,由公安机关或者检察机关依照法律规定的程序对通信进行检查外,任何组织或者个人不得以任何理由侵犯公民的通信自由和通信秘密。”赋予个体的权利,那还是搭建一套能够保障个体通信自由和通信秘密权利的系统。<br><br>客户端到服务端的加密是如何做的?<br>简单说分3步:<br>第1步根据浏览器自带的根证书,校验网址与证书是否有效,确定网站是不是假的<br>第2步使用Diffie-Hellman算法,在不可信网络上交换随机数,两端各自计算出一个相同的参数<br>第3步使用第2步算出的参数生成对称加密密钥,后续两端的消息都用这个对称加密密钥进行加密<br>(第4步定期生成新的对称加密密钥,使用新的密钥加密消息)<br><br>第1步继承【公告】的设计就可以实现,所有的消息都是带有签名,都与1个特定的账号绑定,并且不可伪造。<br>message=<br>{<br>\"Action\":302, //这是一条聊天消息<br>\"Sequence\":, //聊天消息序号<br>\"PreHash\":, //前1条消息的Hash<br>\"PairHash\":[], //是接收消息的Hash值的数组,用于向对方表明自己已经接收到了那些消息,长度0-8<br>\"Content\":, //聊天消息内容<br>\"To\":, //聊天对象账号<br>\"Timestamp\":,<br>\"PublicKey\":,<br>\"Signature\":<br>}<br>第2步增加一个生成对称加密密钥的机制就可以,后续单开1条【公告】介绍。<br>第3步使用对称加密密钥,加密消息内容的明文,也就是说Content字段是消息内容的密文。","Timestamp":1600011025504,"PublicKey":"0216B8875FE7513978CF2167C7AB7A3A6BC1F95E7DE20498980CACB70E51EA207A","Signature":"304402201B885383506B9664EBE4F8C928C8DF029EDF6D3E57307318A53E9AE12E47A79D022040957E6B180EDE1C19E29AD5C9DB54639205DBB81D4E228B698EF1ECDDE2930C"}

oxo