06 | HttpDNS和TLS:你的消息聊天真的安全吗?
06 | HttpDNS和TLS:你的消息聊天真的安全吗?
讲述:袁武林
时长18:45大小25.78M
消息安全性的三个维度
如何保证消息传输安全性
保证访问入口安全:HttpDNS
保证传输链路安全:TLS 传输层加密协议
如何保证消息存储安全性
账号密码存储安全:“单向散列”算法
消息内容存储安全:端到端加密
消息内容安全性
小结
赞 5
提建议
精选留言(25)
- leslie2019-09-09消息安全性问题我记得大规模爆发的经典案例应当是当年的QQ尾巴吧?QQ使用近20年,手机端这块可能因为工作相关特性基本不太接触,不过我个人认为其实其一定程度上还是和PC类类似吧。毕竟手机就是一台Mimi的computer.对于老师说的我还是整体谈一下个人的见解吧; 其实近15年爆发的安全问题无非出自几方面: 一类是:客户端;主要表现形式1)弱密码 如简单设置数字就OK,结果被人破解了 2)非安全网络环境下上网 如蹭网、网吧上网时中毒 3)链接非安全,QQ尾巴就是经典案例,此三种是最普遍的; 一类是服务器端: 1)连接数不限:其实这是个问题;造成QPS过高且不能确定是否是本人登录;故而像QQ或者某些在线教育的基本上都有严格的限制 2)网络安全:这个应当算是个老问题,举个例子吧:例如很多人家里东西被偷无非还是自己没有把门锁好、或者用了个最普通的门或者锁;不然为何为了安全现在会用防盗门 3)系统安全:各种补丁和问题爆发时你不注意不去强化,造成出问题。4)实时监控:网络异常、数据包异常时其实就说明有问题了 这就像现在商店商城都用监控一样。 一个是应用程序:最经典的案例就是SQL注入,其实追其本源无非就是几个因素吧;1)省事完成了再说,没想到结果就被人利用了,其实老师所说的加密我印象里数据库端国内真正开始做是那次事件爆发之后再有的 2)数据传输时的安全性:举个个人觉得比较好的方式吧,消息中间件kafka这块我认为做的就还算不错,3)敏感过滤:其实不只是敏感词、甚至敏感链接吧。 其实这些年尤其是2000后网络开始普及后:各种问题层出不穷,这也是为何监管越来越严格;DNS之类的其实真正挖下去肯定是有问题的,我们只能尽力避免一些常规问题,做好防患未然;这就像谷歌的 SRE有句很经典的话“没有问题是有问题的特殊形态”。网络这块深聊下去老师的课程就改成网络安全了 。 谢谢老师的辛勤付出:期待老师的下节课的分享。展开
作者回复: 👍
共 2 条评论16 - 王棕生2019-09-10TLS 能识别客户端模拟器仿冒用户真实访问的问题吗?如果不能有什么其他更好的办法? 答: TLS 是传输层的加密协议,是用来保证消息传输过程中不被截获、篡改和伪造的,但是无法识别仿冒的真实用户。 客户端模拟器如果像真实用户一样来访问服务端,其实是没有必要去识别的,因为此时模拟器一般是为了帮助真实用户做一些事情,没有恶意行为;如果存在恶意行为,进行识别的办法是通过机器学习的方式进行识别,例如:客户端模拟器会频繁发送消息,针对这一特征,可以对线上访问流量进行甄别。展开
作者回复: 是的,模拟器识别确实可以通过机器学习等方式来识别异常行为。对于严格要求进行人机识别的场景,可以使用手机验证码、高难度的验证码识别、或者类似银行U盾的usb客户端证书认证来解决。
14 - 东东🎈2019-09-10老师,问个im问题,服务端采用读扩散,比如A用户在群里面撤回了一条消息,B用户离线上线怎么收到这条已经撤回的消息,还有个问题群消息是异步mq入库成功后再推送吗,也就是推送的代码要放到mq里面,插入数据库成功后再推送吗?谢谢
作者回复: 1. 撤回这条信令也是写入到离线buffer里的,上线时接收方收到原消息和撤回信令,前者会被后者覆盖。 2. 一般是从mq拿到消息进行入库,入库成功才会下推。
共 2 条评论8 - L2019-11-28你好,对于账号密码存储那块有个问题,如果每个账号密码拥有一个单独的盐(随机的?)那如何验证登录呢?
作者回复: 每个uid登录验证时先获取到各自独立的salt,然后和登录提交的密码进行哈希,将结果和存储的密码密文进行一致性校验,这里salt和存储的密码密文一般都会分开存储。
4 - null2019-10-03老师,如果需要在服务端存储消息内容,是加密后存储,下推离线消息时,解密之后再推送给用户? 不知道微博消息内容,是使用对称还是非对称加密?
作者回复: 消息存储的时候不一定需要加密哈,使用tls来进行消息传输基本就能避免消息被中途截获,篡改的问题。
1 - Geek_62a1d12019-09-17老师,问个问题,您上面说的保证传输链路安全(中断、截获、篡改、伪造)是如何去发现这些问题呢?
作者回复: 这个我不是专业哈,一般可以通过端口扫描、数据抓取分析等方法吧,大点的公司会有专门的网络安全部门来定期检查外网暴露的端口和传输的内容。
1 - 🐾2019-09-10老师节日快乐
作者回复: 谢谢,刚看到哈~
1 - laolinshi2022-03-28老师,文中提到的httpDNS服务是自己实现的,还是使用的第三方服务的?
- stevensafin2020-08-13httpdns这个图是不是有点问题呢?httpdns的服务器还会向权威DNS请求吗
- Geek_d26e632020-06-14md5现在已经不适用了吧:https://wenjie.store/archives/salted-password-hashing-doing-it-right
- 尔冬橙2020-02-16同时只允许一个账户在一台机器上在线是否可以解决问题
作者回复: 业务场景能接受的话单用户单设备登录能够比较好的降低风险。
- 尔冬橙2020-02-16请问如果走localDns,应用层还走http协议么?一般IM消息系统会用到http协议么
作者回复: httpDNS和是否采用http协议不是强依赖的。IM消息系统里也会大量用到http协议,比如一个图片或者视频,一般是会先通过TCP长连接把这个图片或者视频的ID推到客户端,然后再由端上发起http请求来获取真正的图片和视频。
1 - Tony Du2020-02-12老师,请问“消息内容不在服务端存储”,对离线消息存在哪里?
作者回复: 这里说的“消息内容不在服务端存储”是指消息在服务端不永久存储,离线消息可以认为是一个存储buffer,一般只存储一段时间或者一定条数的最新消息和信令。
- 墨子2019-11-18大佬,问一个问题,wns与dns区别
作者回复: 您这里提到的wns具体是哪个产品?我看腾讯和万网都有叫wns的网络组件。
共 2 条评论 - 怪物老爷2019-11-02讲的真好!
- 龙2019-10-31老师,对消息内容(主要考虑文本),进行加解密的话,综合考虑性能,一般用什么技术来加解密比较好呢?
作者回复: 常用的对称加密就可以吧,AES-128 AES-256这些加上随机数。
1 - wuhaka2019-10-30不仅TLS,任何加密措施都不能解决模拟器伪造请求,这个是个无解的问题,本质上客户端安全攻防的问题,解决办法的实质是windows,android,ios等常用平台客户端如何防止反编译破解,常用字符串常量级加密、汇编花指令、反调试、动态加载吐出二进制文件等手段,道高一尺魔高一丈的问题;服务端机器学习识别为辅,核心是客户端反破解问题
- 胡波 allenhu2019-09-14老师你好,请问端到端的加密方式,总不可能每一条消息的发送和接收都采用公私钥做加解密吧?是不是也要通过密钥交换算法来协商一个对称密钥?如果这样,因为连接不是直接建立在用户A和用户B之间,他们是如何做密钥交换的?
作者回复: 可以生成一个临时的对称秘钥,通过公钥加密后发给对方,来解决非对称加密性能差的问题,对于普通文本,也可以直接用公钥来加密。公钥可以都存放在公认的第三方权威服务器上(比如iMessage的端到端加密公钥就上传到苹果的Apple IDS服务器上),用户能从服务器获取到你的公钥,另外还可以通过GPG 使用去中心化的信任模型,来自行通过多种渠道交换公钥。
1 - Leon📷2019-09-11老师,问一个客户端认证的问题,服务器怎么鉴定跟自己通讯的是授权的app,而不是其他非法app
作者回复: 这个好像比较困难吧,比如源代码泄露,重新基于原有代码来打包一个新app,这种通过请求很难鉴定出来呀,不确定是不是有基于app包md5进行校验的哈。个人觉得更多的是需要防止机器模拟人的行为来使用app吧。
- 刘小兔bunny2019-09-09本节DNS块的LocalDNS问题和信息安全问题学习起来有些吃力