IMS业务控制机制是什么?业务层与控制层交互过程?
网络安全需要考虑到以下几个要点:
用户的身份认证 ,确定跟我通信的人就是我要找的人
保证内容的机密性 ,不能让别人知道我们说什么
保证内容的完整性 , 保证我收到的信息就是对方发的信息,而不是别人伪造的。
密码学
对称密钥算法
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)
alice发送明文P,先用自己的私钥Da加密。
保证了这条信息是由alice发送出去的。
再用Bob的公钥Eb加密,保证了这条信息只能由Bob才能看见。
bob用自己的私钥Db解密
再用alice的公钥解密,还原P
利用消息摘要数字签名
有时候仅需要认证,不需要内容的保密
(alice)P-->H=SHA-1(P)-->Da(H)+P------------------>bob
alice用SHA-1计算出P的散列值H
再用私钥对H进行加密
bob用alice的公钥进行解密得出散列值H
bob再对明文P用SHA-1计算出P的散列值和H相比较,如果相同,则说明该包是由alice发送过来,且保证内容未经过他人修改
认证
基于共享秘密密钥的认证
前提是双方都有共享的密钥,而且没有第三方知道。
方法1:
alice -----A-----> Bob
alice Bob
alice -----Ra----> Bob
alice Bob
alice Bob
alice首先发送给Bob一个临时值Ra。
bob选择自己的临时值Rb,并连同一个HMAC一起发送回去。 HMAC是这样形成的:首先建立一个数据结构, 其中包含了Alice的临时值,Bob的临时值,他们的标识,以及共享的秘密密钥Kab;然后将这个数据结构做散列运算,散列结果为HMAC。
当Alice接收到消息2时,她现在拥有Ra, Rb, 双方的标识,以及秘密密钥Kab,所以她自己也可以计算处HMAC。 如果计算的HMAC与消息中的HMAC一致,那么她知道她在与Bob通话。
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
用户发送REGISTER Request给IMS网络
S-CSCF向HSS请求
HSS返回一连串的认证数据AV,其中包括
随机数RAND,
期望用户返回的response XRES,
用于保证通信机密的密码Ck,
用于保证通信内容完整性的密码Ik。
认证的信息AUTH, AUTH由SQN和MAC组成。HSS和终端各维护着一个SQN值,其中,终端的SQN是上依次成功注册时HSS分配是SQN。所以HSS的SQN必然是大于终端的SQN。
MAC是根据K(用户的密钥), SQN, RAND生成的散列值。
S-CSCF保存XRES,并返回401至P-CSCF,其中包含nonce和Ck,Ik。
P-CSCF保存Ck, Ik用于验证成功后对信息的解密和加密,并返回401至中断,其中仅包含nonce。
终端获得的信息是RAND, SQN, MAC,首先判断自己的SQN是不是小于HSS的SQN
再根据K, SQN, RAND生成XMAC, 看看是否与MAC匹配,是则表明该消息是由IMS网络发来的
再根据K和RAND生成RES,并将该值放到下一个REGISTER的属性response中。
并根据K和RAND生成Ck和Ik。根据这两个密钥对后续消息的加密和解密。
S-CSCF将REGISTER中的response属性和XRES值匹配,如果相同则表明通过验证。
。