我想知道,当我们注册社交网络时,网络存储数据的方式和位置以及每次登录时如何比较信息。 请回答!
答案 0 :(得分:1)
最常用的网站(需要登录)使用 Secure Remote Password Protocol (SRP) 的某些变体来验证用户身份。
基本答案:
密码本身无法在服务器上保留。而是保留 salt 和从密码和salt生成的一些数字。这个号码实际上是“密码”。但是用户不能直接发送它,否则会发生一些攻击(如man in the middle),而是有一个例程,包括各种通信步骤,允许服务器验证用户和用户验证服务器而不会泄露真正的密码。
详细说明:
关于帐户创建:
pwd
),盐(表示s
)也是
随机生成。H(d,pwd)
- 其中H
是预定义的哈希值
功能v = g^x mod p
,其中p
是某个素数。v
和s
- 并且它们是
存储在密码文件中。这里的“秘密”是v
密码,盐(s
)用于阻止dictionary attacks
如果密码文件已暴露,则在系统上。验证(登录):
a
生成值A=(v^x)^a
,并将其发送到服务器。 (v
是在帐户创建期间根据密码计算并发送到服务器的数字。B=v+g^b
(其中b
是一些随机数),并将其与u
一起发送给用户,这是一个随机数。S=(B-v)^(a+ux), K=H(S), M1=H(A,B,K)
,并将M1
发送到服务器。 M1
,并向用户M2 = H(A,M1,K)
发送邮件。 M2
的值,并有效确保他确实与M2
通话。在整个过程中 - 密码(或v
)永远不会通过网络明确发送。
非“秘密”数据可以以各种方式存储,具体取决于社交网络的性质和用户的行为。常见的方法是使用relational data base,例如SQL。