zoukankan      html  css  js  c++  java
  • DRM系统工作原理

     

    一、系统工作原理
        DRM
    技 术是一项加强对音频、视频数字化产品内容版权保护的技术,其基本的工作原理是将音频、视频等文件进行加密编码处理,再建立一个证书授权服务中心;当用户使 用这些加密文件时,应用软件会根据其包含在头文件中的有关属性自动链接到相应的站点(证书授权服务中心)获取相应的证书;只有通过授权中心的验证并获得授 权,才能使用这些音、视频等文件,从而严密有效的保护了这些数字多媒体产品的版权和使用权限。基于Internet认证的视频版权保护系统是基于微软的DRM7.0技术开发的,下面具体介绍本系统加密解密的运行过程及原理。



                                                                      (原理图)

        1
    .文件加密与内容打包
       
    先用加密软件对欲加密的媒体文件进行加密。
    此过程的原理为:由WMRMKeys对象创建私有签名密钥(Privkey)、公有签名密钥(Pubkey)、许可密钥种子(Seek)和密钥标识(KeyID),并由许可密钥种子(Seek)和密钥标识(KeyID)生成一个密钥(Key),此密钥是用来加密保护媒体文件内容的;把密钥标识(KeyID)、证书颁发中心的网站地址、版本号等信息存放于加密媒体文件头部(即WMRMHeader对象中),并由WMRMHeader对象根据私有签名密钥(Privkey)签名其头部;然后由WMRMProtect对象加密内容并和头部打包成一个扩展名为.asf.wma.wmv形式存在的媒体文件。
        2
    .发布内容
       
    经加密打包的文件放在网上供用户下载、点播,也可刻录成光盘发售等途径发布内容,但在使用时必须确保能通过授权中心的验证并获得授权。
        3
    .获取证书
       
    用户使用加密文件时,客户端Windows媒体版权管理器首先在本地计算机上检索是否存在有效证书,如果失败,则链接到证书颁发中心;证书颁发中心的证书颁发页面通过WMRMChallenge对象接受客户端发送的加密文件内容头部和用户电脑的有关信息后,将许可密钥种子(Seek)和接收的密钥标识(KeyID)通过WMRMKeys对象生成一个与内容打包时相同的密钥(Key),用于解密,再用WMRMHeader对象根据公有签名密钥(Pubkey)验证其头部;证书颁发中心再通过WMRMRights对象定义许可证的权限,如播放次数、起止时间等;接着用WMRMLicGen对象创建一个证书,包含着解密内容的密钥和权限等内容;最后就是通过WMRMResponse对象把证书传送到客户电脑的Windows媒体版权管理器上。
       
    4.文件播放
       
    获取证书后,客户端Windows媒体版权管理器验证该签名,并将该许可证放在许可证库中;接着客户端Windows媒体版权管理器对内容进行解密,并根据权限播放流媒体文件。

    二、系统设计环境与功能
       
    基于Internet认证的视频版权保护系统需在windows2000或更高版本的操作系统上运行。开发语言为ASPVisualBasic6.0,数据库为Access2000
       
    系统分为加密软件和许可证权限管理颁发两部分。加密软件采用单机版形式,主要用于加密媒体文件;为方便管理,许可证权限管理颁发采用B/S结 构。许可证权限管理颁发包含用户注册、用户权限管理、证书颁发等模块。系统只能为注册用户发证书,而且可为每一位用户颁发含不同权限(如播放次数、起止时 间)的证书,这样就能很有效的控制用户对点播系统的使用并对媒体文件进行版权保护。本系统可方便的套接在现有点播系统外使用,系统的功能与流程如图1所 示。
    三、系统具体实现
        1
    .运行要求
       
    运行本系统需安装Windows媒体版权管理7.0程序开发包,其目的是注册enrollobj.dlllicenseserver.dllwmrmobjs.dll三个组件,同时为了运行WindowsMediaLicenseService,还需到http://licenseserver.windowsmedia.com/站点获取证书。此外还要安装IIS4.0或更高版本的Internet服务管理器。
    客户端可用带有Windows媒体版权管理器的WindowsMediaPlay7.0或更高版本播放器播放加密文件。
        2
    .数据库设计
       
    本系统的数据量不大,对数据库的要求不高,用Access2000即可。数据库中只需创建两张表,如表1、表2所示。
    1用于储存用户的注册信息,如姓名、密码等,主要完成用户登录时进行身份验证任务。
    1用户注册信息表
    字段名用户信息ID姓名密码邮件
    类型自增型文本型文本型文本型
    2用于储存注册用户所获取证书的权限的信息,即WMRMRights对象的属性,如播放次数、起止日期、是否允许刻盘、安全级别等,主要完成在为用户颁发证书时,定义其权限任务。
    2证书权限信息表
    字段名用户信息ID备份与恢复拷贝至CDPC上播放播放次数
    类型数字型是/否型是/否型是/否型数字型
    3
    .加密软件设计
    加密软件完成对ASF/WMV/WMA格式文件加密打包处理。此软件用VisualBasic6.0开发,窗体上主要包含五个文本框按钮控件、三个按钮控件、一个对话框控件等,用于源、目的文件路径、证书颁发站点、许可密钥种子、私有签名密钥信息的录入等,其界面如图2所示。

    2加密窗口图
    加密打包的函数如源代码1”
    源代码1
    SubEncoerFile(Str_FInputFileAsString,Str_FOutPutFileAsString,Str_FLicenseURLAsString,Str_FSeedAsString,Str_FPriKeyAsString)
    DimObj_Key As New WMRMKeys
    DimObj_Header As New WMRMHeader
    DimObj_Protect As New WMRMProtect
    Int_KeyID=Obj_Key.GenerateKeyID()
    Obj_Key.Seed=Str_FSeed
    Obj_Key.KeyID=Int_KeyID
    Int_Key=Obj_Key.GenerateKey()
    Obj_Header.KeyID=Int_KeyID
    Obj_Header.LicenseAcqURL=Str_FLicenseURL
    Obj_Header.ContentID=Int_KeyID
    CallObj_Header.SetCheckSum(Int_Key)
    CallObj_Header.Sign(Str_FPriKey)
    Str_Header=Obj_Header.Header
    If(Str_FInputFile<>"")Then
     Obj_Protect.InputFile=Str_FInputFile
     Obj_Protect.Key=Int_Key
     Obj_Protect.Header=Str_Header
     Obj_Protect.V1KeyID=Int_KeyID
     CallObj_Protect.ProtectFile(Str_FOutPutFile)
    EndIf
    SetObj_Key=Nothing
    SetObj_Header=Nothing
    SetObj_Protect=Nothing
    EndSub

    4
    .用户注册、证书权限及证书颁发模块的实现
    用户注册模块、证书权限模块和证书颁发模块均用ASP动态网页编程脚本语言编写,故需配置IIS,建立WEB站点。用户注册模块、证书权限模块实现比较简单,在此不作介绍。证书颁发页面制作可在windowsmediarightsmanager7sdk中的simple.asp页面上进行二次开发,即添加根据用户定义权限的功能,见源代码2”。该页面中用到了wmrmchallengewmrmheaderwmrmkeyswmrmRightswmrmlicgenwmrmresponse对象,可实现从验证、定义权限、创建证书到证书颁发的功能。
    源代码2
    ASP_SQL="SELECT*FROMTab_RightWHEREStr_Name='cdy'"
    setRst_Recordset=FUN_GetRecordset(ASP_SQL)
    ifRst_Recordset("Bln_AllowBackupRestore")=truethen
    .AllowBackupRestore=true
    else
    .AllowBackupRestore=false
    endif
    ifRst_Recordset("Bln_AllowPlayOnPC")=truethen
    .AllowPlayOnPC=true
    else
    .AllowPlayOnPC=false
    endif
    ……
    Rst_Recordset.close
    setRst_Recordset=nothing
    系统设计完成后经测试能正常运行,达到设计目的。

    五、结论
    本系统结构、功能并不复杂,但它能有效的杜绝视频文件在网上非法传播,并强化了点播系统的使用权限控制功能。

    参考文献:
    (美)MicrosoftWindowsMediaSoftwareDevelopmentKitHelpDocument]]>http://www.week2.com/duke/blogview.asp?logID=177

  • 相关阅读:
    JS键盘码值表
    JS入门笔记
    CSS居中的方法总结
    CSS布局模型思考
    条件、循环、函数定义、字符串操作练习
    Python输入输出练习,运算练习,turtle初步练习
    如何理解Comparator接口中的升降序?
    12个非常实用的JavaScript小技巧
    JAVA泛型知识(一)
    开窗函数简介
  • 原文地址:https://www.cnblogs.com/roland1982/p/3489234.html
Copyright © 2011-2022 走看看