1      CMMB和MBBMS

1.1      定义

CMMB是ChinaMobile Multimedia Broadcasting (中国移动多媒体广播)的简称。是国内自主研发的第一套面向手机、笔记本电脑等多种移动终端的系统,利用S波段信号实现“天地”一体覆盖、全国漫游,支持25套电视和30套广播节目。2006年10月24日,国家广电总局正式颁布中国移动多媒体广播(俗称手机电视)行业标准,确定采用我国自主研发的移动多媒体广播行业标准。标准适用于30MHz到3000MHz频率范围内的广播业务频率,通过卫星和/或地面无线发射电视、广播、数据信息等多媒体信号的广播系统,可实现全国漫游。

MBBMS是指MobileBroadcast Business Management System (广播式手机电视业务管理系统),它的基础是利用现有移动通信网络的管理、计费系统和认证鉴权机制,实现对手机电视用户的管理。

CMMB是一个独立的系统,它可以脱离MBBMS独立的运行,但是无法使用MBBMS所带来的现有的移动通信网络资源。比如,MBBMS的密钥核心算法在SIM卡上存储和执行,CMMB CA的密钥核心算法在小卡/SMD/大卡上存储和执行。再比如,仅仅是CMMB无法使用移动网络现有的计费系统。

MBBMS提供了一系列使用现有移动资源的方法,除CMMB之外的其他手机电视标准也可以使用这些方法,比如MBMS。

1.2  工作原理

首先说硬件,需要提供一颗CMMB芯片,负责调频,接收数据,改芯片上还需要集成一块UAM芯片,负责一些核心解密算法的实现。如果是脱离MBBMS的单独的CMMB系统,还需要提供一块小卡,该小卡的功能类似于MBBMS中的UAM+SIM卡。另外,CMMB理论上使用30MHz~3000MHz频率范围。

CMMB的基本工作原理类似于收音机。也就是调到一定的频段,然后读取某个或某些时隙。物理层逻辑信道分为控制逻辑信道(CLCH)和业务逻辑信道(SLCH)。控制逻辑信道用于承载广播控制信息,业务逻辑信道用于承载广播业务。物理层只有一个固定的控制逻辑信道,占用系统的第0时隙发送。业务逻辑信道由系统配置,每个物理层带宽内业务逻辑信道的数目可以为1~39个,每个业务逻辑信道占用整数个时隙。

2      基础知识

鉴权(authentication)是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。MBBMS采用对称密钥加密系统,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。算法一般采用AES。

在进行网络交换数据时,一般采用HTTP Digest方法。

2.1      HTTP Digest

1.客户端希望取到服务器上的某个资源,向服务器发送Get请求。

2.服务器收到客户端的请求后,发现这个资源需要认证信息,判断请求报文中是否带有Authorization头,如果没有,返回一个 401(Unauthorized)给客户端。在这个401的回复中,同时服务器会加入一个WWW-Authenticate的头,其中有如下信息(各个字段的详细解释见RFC2617):

challenge        = "Digest" digest-challenge

digest-challenge  = 1#( realm | [ domain ] | nonce |

[ opaque ] |[ stale ]| [ algorithm ] |

[ qop-options ] |[auth-param] )

domain            = "domain" "="<"> URI ( 1*SP URI ) <">

URI               = absoluteURI | abs_path

nonce             = "nonce" "="nonce-value

nonce-value       = quoted-string

opaque            = "opaque" "="quoted-string

stale             = "stale" "="( "true" | "false" )

algorithm         = "algorithm" "="( "MD5" | "MD5-sess" |

token )

qop-options       = "qop" "="<"> 1#qop-value <">

qop-value         = "auth" |"auth-int" | token

3.客户端收到服务器的401(Unauthorized)回复后,使用服务器回复报文中的nonce值,加上 username,password,http method, http uri利用MD5(或者服务器指定的其他算法)计算出request-digest,作为repsonse头域的值。并重新发送请求,请求报文中包含 Authorization 头,其中有如下信息:

credentials      = "Digest" digest-response

digest-response  = 1#( username | realm | nonce | digest-uri

| response | [ algorithm] | [cnonce] |

[opaque] | [message-qop]|

[nonce-count]  | [auth-param] )

username         = "username" "="username-value

username-value   = quoted-string

digest-uri       = "uri" "="digest-uri-value

digest-uri-value = request-uri   ; As specified by HTTP/1.1

message-qop      = "qop" "=" qop-value

cnonce           = "cnonce" "="cnonce-value

cnonce-value     =nonce-value

nonce-count      = "nc" "=" nc-value

nc-value         = 8LHEX

response         = "response" "="request-digest

request-digest = <"> 32LHEX<">

LHEX             = "0" | "1" | "2" | "3" |

"4" | "5" |"6" | "7" |

"8" |"9" | "a" | "b" |

"c" |"d" | "e" | "f"

4.服务器收到客户端发来的请求后,根据username,查找出用户的password,用和客户端同样的方法计算出request- digest(response)。然后和收到的request-digest进行对比,如果一致,则验证成功,接受客户端的请求,成功返回结果。

2.2      AV3,5鉴权

3      加密流程

3.1      GBA

通用认证机制GBA(General Bootstrapping Architecture),是3GPP定义的一种利用现有移动通信网络资源的认证机制。最终的一个目的就是为了在终端与业务平台之间共享一个秘密的密钥,用于安全通信。 GBA流程中使用HTTP Digest,此协议的好处是无需明文传password,跟目前网站流行的加密密码是一个道理。明文传username,然后查询password并算出。所谓Digest,是因为采用了某些摘要算法,如MD5。另外,需要用到2G和3G的鉴权机制。

1.mbbmsExecuteGBA,通过SetRequest把REQ放入g_requestListHeader,然后通过GetRequest把REQ拿到g_currentRequest

此REQ的特征:

req.cmd= REQCMD_INITIALIZE;

req.param= force;

2.在REQ处理线程中,进入InnerInitialize

3.get imsi, HTTP_SendRequest(httpHandle, NULL, gbaBuf, STRLEN(gbaBuf), 0, 0, 0),其中有HTTP的header和gbaBuf

(HTTP的请求消息体,类似这样的消息

"<?xmlversion="1.0" encoding="UTF-8"?>

<UserID

xmlns:xs="http://www.w3.org/2001/XMLSchema\"xmlns="urn:3GPP:metadata:2005:mTV:IMPIRequest"

Type="IMSI"

TerminalCapability="%s"

UserAgent="%s">

%s

</UserID>",

其中UserID就是imsi)

4.然后函数进入循环死等RESP,成功后 解析Bootstrapping_Initiation.RESP

5.Create一个IMPI,impi:460029106017665@amobile.com,通过uam_get_version来获取Version

6.Create一个Digest请求,继续死等RESP

7.开始鉴权ProcessGbaUnAuthorized,具体步骤是首先是SIM Card鉴权(2G,3G不同的鉴权步骤),然后是UAM鉴权。

卡鉴权做完之后(即AV3,5鉴权)利用鉴权的中间结果,进行UAM鉴权。发送给UAM的中间结果是:如果是SIM卡,在命令中携带(Kc,RAND,Ks-Input,SRES), 如果是USIM卡,在命令中携带(RES,CK,IK)。UAM计算Ks和RES‘,并生成cnonce,把Ks存储下来,并将RES'和cnonce返回给终端。然后发送RES’给网络,网络生成Ks生命周期和B-TID,并发给终端。

8.网络生成Ks生命周期和B-TID,返回给终端,写入UAM中。

综上,GBA之后,终端和网络都生成了用户共享密钥Ks,这是以后所有密钥工作的基础。

3.2      获取MSK

MSK是通过HTTP交互获取的:根据订购关系表拿到MSKID,然后向网络发起请求

Fieldname Content-Type, value application/mbms-msk+xml

里面带有KeyDomainID和MSKID。

然后收到HTTP RESP,从中拿到 MSK Mikey。•

这是一个MSK Mikey的例子:

MSK:010015000C84B26D00010503000B00030100000104025A22E40B0250E7A1D9061031353730313439303936383836353833060000196E61662E6D62626D732E6368696E616D6F62696C652E636F6D010000355677744A2B62657733794B30487532535259494F74673D3D406273662E626A2E6D62626D732E6368696E616D6F62696C652E636F6D0001001E4534458CE203062C74A37816FCC3ABFAD4D3D39B58F5452BFFB4EB60CF7601041C2A6A570E7F3EE0F07494EDD3642714F61D75

拿到MSK Mikey后,通过UAM计算出MSK。

3.3      获取MTK

1.然后试图播放一个频道。如果是加密频道,需要解析SG里的SDP,拿到相关的解扰参数。这里是一个SDP的例子

<SDP>v=0o=- 1736101621 822899201 IN IP4 192.168.2.77 s=Profile 1 c=IN IP4 224.12.34.56/64t=0 0 a=min-buffer-time:1002 a=IPDCKSMStream:1 a=IPDCKSMStream:607a=IPDCKSMStream:607 m=video 55410 RTP/AVP 96 b=AS:356 b=TIAS:337792 b=RS:3000b=RR:0 a=rtpmap:96 enc-mpeg4-generic/90000 a=fmtp:96 profile-level-id=127;config=0142E00DFFE1000B6742E00D96520283F4900801000468CE3880; streamtype=4;ObjectType=33; mode=avc-video; DTSDeltaLength=22; RandomAccessIndication=1;ISMACrypCryptoSuite=AES_CTR_128; ISMACrypIVLength=4; ISMACrypDeltaIVLength=0;ISMACrypSelectiveEncryption=0; ISMACrypKeyIndicatorLength=1;ISMACrypKeyIndicatorPerAU=1; ISMACrypSalt=base64,ubH5Rf/nCGI=a=cliprect:0,0,240,320 a=framerate:25. a=mpeg4-esid:201a=x-envivio-verid:0002302D a=mid:1 a=avg-br:355392 a=maxprate:55. m=audio 55412RTP/AVP 97 b=AS:42 b=TIAS:33831 b=RS:525 b=RR:0 a=rtpmap:97enc-mpeg4-generic/48000/2 a=fmtp:97 profile-level-id=15; config=131056E598;streamtype=5; ObjectType=64; mode=AAC-hbr; SizeLength=13; IndexLength=3;IndexDeltaLength=3; ISMACrypCryptoSuite=AES_CTR_128; ISMACrypIVLength=4;ISMACrypDeltaIVLength=0; ISMACrypSelectiveEncryption=0;ISMACrypKeyIndicatorLength=1; ISMACrypKeyIndicatorPerAU=1;ISMACrypSalt=base64,ubH56f/nCGI= a=mpeg4-esid:101 a=x-envivio-verid:0002302Da=mid:2 a=avg-br:32000 a=maxprate:25.4375 m=data 7691 UDP ipdc-ksma=fmtp:ipdc-ksm IPDCStreamId=1; IPDCKMSId=1; IPDCOperatorId=8 m=data 7491 UDPipdc-ksm a=fmtp:ipdc-ksm IPDCStreamId=607; IPDCKMSId=6176; IPDCOperatorId=3089m=data 7401 UDP ipdc-ksm a=fmtp:ipdc-ksm IPDCStreamId=607; IPDCKMSId=6178;IPDCOperatorId=3089</SDP>

其中

ISMACrypCryptoSuite=AES_CTR_128; ISMACrypIVLength=4;ISMACrypDeltaIVLength=0; ISMACrypSelectiveEncryption=0;ISMACrypKeyIndicatorLength=1; ISMACrypKeyIndicatorPerAU=1;ISMACrypSalt=base64

这些就是对加密进行描述的参数。

然后根据加扰相关参数信息从加密节目流中RTP包的AU头取出keyIndicator和IV。

根据协议AU Header的结构如下:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-.. -+-+-+-+-+-+-+-+-+-+

|AU-headers-length|AU-header|AU-header|      |AU-header|padding|

|                 |   (1)  |   (2)   |     |   (n)   | bits |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-.. -+-+-+-+-+-+-+-+-+-+

例子:

比如某数据流第一秒数据的第一个视频单元,原数据如下:

0,2a, f5, 85, 4d, fe, 6f, 0, fd, 63, b2, 2e, 70, 92, 70,e0….

其中0,2a是指的是AuHeader的长度(42bits ,换算成byte是6)所以真正的加密数据从fd,63… 开始。在AuHeader中ismaCrypIVLength为4,ismaCrypKeyIndicatorLength为1,所以KeyIndicator为6f,而IV为f5, 85, 4d,fe

然后,根据key Indicator从key Indicator和MTK(CW)的对应关系表中查找对应的MTK(CW)

输入Mikey到UAM,输出MTK。

3.4      解扰

然后就是解扰,使用MTK(CW)以及CW、IV、SDP中的Salt等信息,解密节目流。

比较常用的是AES解密方法。

4      总结

综上,整个MBBMS的安全架构已经比较清晰了,可以用下面这张图来概括一下:

手机电视(CMMB+MBBMS)安全架构原理相关推荐

  1. 手机电视推广优先权让位地面国标?

    在近期举行的2009年广电发展论坛上,国家广电总局规划院院长姜文波表示,今年包括已经覆盖地面数字电视的北京.深圳等8个城市在内,将在37个城市(包括所有省会城市)完成地面数字电视的覆盖,并将在3年内实 ...

  2. 手机电视的概念及其发展状况

    一.手机电视的概念及其发展状况 1.1 手机电视的概念 所谓"手机电视"业务,就是利用移动终端为用户提供视频资讯服务.手机电视业务是利用具有操作系统和视频功能的智能手机观看电视的业 ...

  3. 手机电视入网难题将不了了之

    随着中广移动集采百万CMMB终端消息的发布,CMMB手机电视入网问题再一次被提上了议事日程,甚至有媒体称中广移动集采的百万终端将违规销售,老杳倒认为CMMB手机电视入网难题很可能不了了之. 虽然说工信 ...

  4. 什么是底层架构_厉害!阿里技术专家发布1500多页计算机底层架构原理解析宝典|现代汽车|计算机|原理|操作系统|存储器...

    计算机被称为20世纪最伟大的发明之一 .1946年诞生的第一台电子计算机ENIAC,是一个每秒能运行5000次.重达30吨的庞然大物.如今计算机变得无处不在,以至于人们大大低估了它的复杂性一今天一 部 ...

  5. Day123.ElasticSearch:CAP定理、集群搭建、架构原理及分片、倒排索引、面试题

    目录 一.CAP定理 二.ES集群 1.搭建集群: 2.head 插件安装 3.集群测试 4.核心概念 二.架构原理及分片 一. ElasticSearch 分片 二. 分片控制 三. 分片原理 1. ...

  6. 微信摇一摇怎么连接服务器,微信摇一摇电视有什么用 摇一摇电视互动玩法及原理...

    微信摇一摇功能确实是越来越丰富了,摇朋友,搜歌,摇红包,在近日的版本中还加入了摇一摇电视功能,微信摇一摇电视有什么用?下面小编就为大家介绍摇一摇电视互动玩法及原理. 微信摇一摇电视有什么用 摇一摇电视 ...

  7. 欧盟确立手机电视标准 或将搅局中国

    手机电视标准的天平开始倾斜. 3月17日,欧盟委员会对外宣布,已将诺基亚.摩托罗拉.沃达丰等手机厂商和移动运营商支持的DVB-H(手持设备数字电视广播规范)作为欧洲市场的单一手机电视标准, 并要求各成 ...

  8. 03 ElasticSearch笔记-搜索技术深入与集群架构原理

    回顾: 1.通过term 和 match查询数据时细节点以及数据类型keyword与text区别 1.1 term查询 1.1.1 term查询keyword字段. term不会分词.而keyword ...

  9. 手机电视与奥运将擦肩而过

    国产标准将与奥运擦肩而过? 用手机看奥运,听起来很美,现在看来手机电视很有可能与北京奥运擦肩而过. 距离北京奥运只有不到六个月的时间,要想在五个月的时间完成手机电视芯片的量产.电视手机的量产.上市,已 ...

  10. 2021年大数据ELK(十一):Elasticsearch架构原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch架构原理 一.Elasticsearch的节点类型 ...

最新文章

  1. Java™ 教程(Collection接口)
  2. python turtle库画图案-Python如何使用turtle库绘制图形
  3. 从oracle10g 10.2.0.1 升级到10.2.0.4碰到的问题及解决
  4. Linux对I/O端口资源的管理〔1〕
  5. 范围管理6个过程及相关重点
  6. oracle12c双机热备方案,Oracle 共享磁盘阵列 双机热备 实战 配置教程 配置手册
  7. ASP.NET 数据库缓存依赖
  8. MFC开发IM-用GDI函数画圆。可确定圆心的
  9. Java中try catch的原则
  10. 项目lib上传maven仓库配置
  11. java自行车s码适合身高_捷安特s码适合多高
  12. python打印右对齐_python右对齐的实例方法
  13. 帆软图表切换接口和图标轮播接口
  14. linux 关闭防火墙,关闭8081端口防火墙
  15. MATLAB读二进制数据文件
  16. 标题:书号验证 2004年起,国际ISBN中心出版了《13位国际标准书号指南》。 原有10位书号前加978作为商品分类标识;校验规则也改变。 校验位的加权算法与10位ISBN的算法不同,具体算法是
  17. 用二代测序数据的reads组装一个基因序列
  18. 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 /返回这三个数的和。
  19. #前端# 如何获取你的token?
  20. 千年人参多少钱,如果真的有的话

热门文章

  1. buck电路的matlab仿真,buck电路simulink仿真
  2. 测试覆盖:语句覆盖 判定覆盖(即分支覆盖) 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖
  3. C#可用的RSA公钥加密私钥解密以及私钥加密公钥解密,支持2048
  4. WinCC V7.4 过程值归档概述及流程演示
  5. getParameterValues和getParameter的区别
  6. 智能客服FAQ问答任务的技术选型探讨
  7. 医院计算机房相关制度,医院机房管理制度.docx
  8. 计算机设备招标书范文,计算机设备招标书
  9. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.9.27
  10. JavaScript 设计模式之组合模式