考虑一下任何聊天应用程序,比如gtalk,whatsapp。我的问题与服务器端如何实现这些功能有关。情况是:
客户端A想通过聊天服务器S与客户端B通话。当实现通信时,我假设S上运行NAT(网络地址转换)服务器,双方通过该服务器向S表明自己的身份。
在这一点之后,S或S上运行的任何聊天服务器都充当A和B之间的中介。当A发送“嗨,B,你好吗?”时,这句话一定要发送给S,然后S会将其发送给A。
我的第一个问题是:客户端和服务器之间的通信,是加密的吗?我知道数据将根据TCP/IP通信堆栈进行分组,并且该数据包的数据部分将包含发送的实际文本A。但是这个数据部分,它是通过加密来保护的吗?这意味着,如果有人在哪里嗅探数据包并提取数据,他们能弄清楚A向B发送了什么吗?
我问的原因是:如果我要制作一个聊天应用程序,我该如何保护我的用户的隐私不受陌生人甚至我自己的侵犯(因为a发送的内容对我的服务器代码是可见的,我还不如把它写到一个文件中;谁知道呢,谷歌可能会这么做:P)。
现在假设B处于脱机状态,那么S将不得不延迟向B发送消息,直到B联机并要求存储消息。或者在这一点上,考虑像dropbox这样的应用程序临时存储文件。
第二个问题:S如何存储此消息或文件?加密是如何完成的?简言之,如果我要制作这样一个产品,我如何向用户保证他们的数据在我们的服务器上是安全和私有的,即使我或我的公司也无法读取,即使我们愿意。
总之,一个公共域网站是如何管理用户数据的隐私和安全,使其不受陌生人和自身的影响的?
谢谢你的建议!