考虑任何聊天应用程序,例如 gtalk、whatsapp。我的问题与如何完成这些的服务器端实现有关。场景是:
客户端 A 想通过聊天服务器 S 与客户端 B 交谈。当实现通信时,我假设 S 上运行着 NAT(网络地址转换)服务器,双方通过该服务器向 S 标识自己。
之后此时,S 或在 S 上运行的任何聊天服务器充当 A 和 B 之间的中介。当 A 发送“Hi B,你好吗?”时,这句话肯定是要发送给 S,然后 S 会发送给 A .
我的第一个问题来了:客户端和服务器之间的通信,是加密的吗?我知道数据将根据 TCP/IP 通信堆栈进行打包,并且该数据包的数据部分将包含发送的实际文本 A。但是这个数据部分,是不是被加密保护了?意思是,如果有人在哪里嗅探数据包并提取数据,他们能弄清楚 A 发送给 B 的内容吗?
我问的原因:如果我要制作一个聊天应用程序,我如何保护我的用户的隐私不受陌生人甚至我自己的影响(因为 A 发送的内容对我的服务器代码是可见的,我不妨将它写到文件;谁知道,谷歌可能会这样做:P)。
现在假设 B 离线,那么 S 将不得不延迟向 B 发送消息,直到 B 在线并请求存储的消息。或者在这一点上,考虑像 dropbox 这样的应用程序临时存储文件。
第二个问题:S如何存储这个消息或文件?加密是如何完成的?简而言之,如果我要制作这样的产品,我怎么能向用户保证他们的数据在我们的服务器上是安全和私密的,即使我或我的公司也无法读取它,即使我们愿意。
总而言之,公共领域网站如何设法保持其用户数据的私密性和对陌生人及其自身的安全?
感谢您的建议!