网络安全及IMS的安全机制

来源:互联网 发布:昆明理发店知乎 编辑:程序博客网 时间:2024/05/08 14:06

网络安全需要考虑到以下几个要点:

  1. 用户的身份认证 ,确定跟我通信的人就是我要找的人
  2. 保证内容的机密性 ,不能让别人知道我们说什么
  3. 保证内容的完整性 , 保证我收到的信息就是对方发的信息,而不是别人伪造的.

密码学

  • 对称密钥算法
    • DES
    • Rijndael (强)
    • 三重DES
  • 非对称密钥算法
    • RSA
  • 消息摘要(不需要钥匙)
    • MD5
    • SHA-1

数字签名

数字签名的意义是:
  • 接收方可以严整发送方所宣称的身份
  • 发送方以后不能否认该消息的内容
  • 接收方不可能自己编造这样的信息
  • 利用公开密钥数字签名
(alice)P-->Da(P)-->Eb(Da(P))------------->Da(P)=Db(Eb(Da(P)))-->Ea(Da(P))-->P(bob)
  1. alice发送明文P,先用自己的私钥Da加密.保证了这条信息是由alice发送出去的.
  2. 再用Bob的公钥Eb加密,保证了这条信息只能由Bob才能看见.
  3. bob用自己的私钥Db解密
  4. 再用alice的公钥解密,还原P
  • 利用消息摘要数字签名
有时候仅需要认证,不需要内容的保密
(alice)P-->H=SHA-1(P)-->Da(H)+P------------------>bob
  1. alice用SHA-1计算出P的散列值H
  2. 再用私钥对H进行加密
  3. bob用alice的公钥进行解密得出散列值H
  4. bob再对明文P用SHA-1计算出P的散列值和H相比较,如果相同,则说明该包是由alice发送过来,且保证内容未经过他人修改

认证

  • 基于共享秘密密钥的认证
前提是双方都有共享的密钥,而且没有第三方知道.
    • 方法1:
alice -----A-----> Bobalice <----Rb----- Bobalice ---Kab(Rb)-> Bobalice -----Ra----> Bobalice <--Kab(Ra)-- Bob
    • 方法2:
绝对安全的认证方法:
alice ------------Ra-----------> Bobalice <-Rb,HMAC(Ra,Rb,A,B,Kab)-- Bobalice ------HMAC(Ra,Rb,Kab)----> Bob
  1. alice首先发送给Bob一个临时值Ra.
  2. bob选择自己的临时值Rb,并连同一个HMAC一起发送回去. HMAC是这样形成的:首先建立一个数据结构, 其中包含了Alice的临时值,Bob的临时值,他们的标识,以及共享的秘密密钥Kab;然后将这个数据结构做散列运算,散列结果为HMAC.
  3. 当Alice接收到消息2时,她现在拥有Ra, Rb, 双方的标识,以及秘密密钥Kab,所以她自己也可以计算处HMAC.如果计算的HMAC与消息中的HMAC一致,那么她知道她在与Bob通话.
  4. Alice回应给Bob的也是一个HMAC,但是此HMAC仅包含两个临时值和Kab

IMS Securiy

这里讲的主要是UE和网络之间的安全,为了容易理解,我简化了一些步骤:

XMAC = MAC = f1(SQN, RAND, K)
XRES = RES = f2(RAND, K)
Ck = f3(RAND, K)
Ik = f4(RAND, K)
AV = RAND+XRES+Ck+Ik+AUTH
AUTH = SQN+MAC
nonce = RAND+AUTH

  1. 用户发送REGISTER Request给IMS网络
  2. S-CSCF向HSS请求
  3. HSS返回一连串的认证数据AV,其中包括
    1. 随机数RAND,
    2. 期望用户返回的response XRES,
    3. 用于保证通信机密的密码Ck,
    4. 用于保证通信内容完整性的密码Ik.
    5. 认证的信息AUTH, AUTH由SQN和MAC组成.HSS和终端各维护着一个SQN值,其中,终端的SQN是上依次成功注册时HSS分配是SQN.所以HSS的SQN必然是大于终端的SQN. MAC是根据K(用户的密钥), SQN, RAND生成的散列值.
  4. S-CSCF保存XRES,并返回401至P-CSCF,其中包含nonce和Ck,Ik.
  5. P-CSCF保存Ck, Ik用于验证成功后对信息的解密和加密,并返回401至中断,其中仅包含nonce.
  6. 终端获得的信息是RAND, SQN, MAC,首先判断自己的SQN是不是小于HSS的SQN
  7. 再根据K, SQN, RAND生成XMAC, 看看是否与MAC匹配,是则表明该消息是由IMS网络发来的
  8. 再根据K和RAND生成RES,并将该值放到下一个REGISTER的属性response中.
  9. 并根据K和RAND生成Ck和Ik.根据这两个密钥对后续消息的加密和解密.
  10. S-CSCF将REGISTER中的response属性和XRES值匹配,如果相同则表明通过验证.
原创粉丝点击