如何存储用户信息

时间:2014-04-16 14:01:25

标签: algorithm social-networking facebook-login

我想知道,当我们注册社交网络时,网络存储数据的方式和位置以及每次登录时如何比较信息。 请回答!

1 个答案:

答案 0 :(得分:1)

最常用的网站(需要登录)使用 Secure Remote Password Protocol (SRP) 的某些变体来验证用户身份。

基本答案:
密码本身无法在服务器上保留。而是保留 salt 和从密码和salt生成的一些数字。这个号码实际上是“密码”。但是用户不能直接发送它,否则会发生一些攻击(如man in the middle),而是有一个例程,包括各种通信步骤,允许服务器验证用户和用户验证服务器而不会泄露真正的密码。

详细说明:

关于帐户创建:

  1. 用户选择密码(pwd),盐(表示s)也是 随机生成。
  2. 然后,用户计算H(d,pwd) - 其中H是预定义的哈希值 功能
  3. 然后计算v = g^x mod p,其中p是某个素数。
  4. 用户向服务器发送值vs - 并且它们是 存储在密码文件中。这里的“秘密”是v 密码,盐(s)用于阻止dictionary attacks 如果密码文件已暴露,则在系统上。
  5. 验证(登录):

    1. 用户向服务器发送用户名。
    2. 服务器回复盐
    3. 然后,用户使用一些随机数a生成值A=(v^x)^a,并将其发送到服务器。 (v是在帐户创建期间根据密码计算并发送到服务器的数字。
    4. 服务器正在计算B=v+g^b(其中b是一些随机数),并将其与u一起发送给用户,这是一个随机数。
    5. 然后,用户正在计算S=(B-v)^(a+ux), K=H(S), M1=H(A,B,K),并将M1发送到服务器。
    6. 然后,服务器会验证M1,并向用户M2 = H(A,M1,K)发送邮件。
    7. 然后,用户会验证M2的值,并有效确保他确实与M2通话。
    8. 在整个过程中 - 密码(或v)永远不会通过网络明确发送。


      非“秘密”数据可以以各种方式存储,具体取决于社交网络的性质和用户的行为。常见的方法是使用relational data base,例如SQL