消息认证与数字签名可以应用到数字水印中。
传统水印用来证明纸币或纸张上内容的合法性,数字水印(digital watermark)用以证明一个数字产品的拥有权、真实性。数字水印是嵌在数字产品中的数字信息。可以是作者的序列号、公司标志、有特殊意义的文本等。
数字水印主要用于:阻止非法复制(间接的)、确定所有权(作者、发行人、分发商、合法的最终用户)、确定作品的真实性和完整性(是否伪造、被篡改)、证实收件人、不可否认的传送、法庭证据的验证、赝品甄别、识别文件来源与版本、Web网络巡逻监视盗贼等。
传统水印是人眼可以看得见的,而数字水印可以分为可感知的(Perceptible)和不易感知的(Inperceptible)两种。
可感知的数字水印,主要用于当场声明对产品的所有权、著作权及来源,起到一个宣传广告或约束的作用。可感知水印一般为较淡的或半透明的不碍观瞻的图案;比如电视台节目播放的同时,在某个角落插上电视台的半透明标志。另一个用途是为了在线分发作品,比如先将一个低分辨率的有可见水印的图像免费送人,其水印往往是拥有者或卖主的信息,它提供了寻找原高分辨率作品的线索,若想得到高分辨率的原作品则需付费。有些公司在产品出售前为了在网络上宣传其产品,先做上可逆可见水印分发,付费购买时,再用专用软件将可见水印去掉,加入不可见水印(发行人、分发商、最终用户等的信息)。可见水印还有另一些用途,那就是为了节约带宽、存储空间等原因,在VCD、DVD等电影拷贝中用嵌入不可见水印的方式配上多种语言的副标题和字幕,待播放时由硬件根据需要实时地解出每一帧中的水印文字,将其显示在屏幕上。
可见水印在某些产品中或多或少降低了作品的观赏价值,使其用途相对受到一定限制。不易感知的水印的应用层次更高,制作难度更大。
不易感知的数字水印就像隐形墨水技术中的看不见的文字,隐藏在数字产品中。水印的存在要以不破坏原数据的欣赏价值、使用价值为原则。数字水印按照某种方式植入被保护的信息中,在产生版权纠纷时,通过相应的算法提取出该数字水印,从而验证版权的归属。被保护的信息可以是图像、声音、视频或一般性的电子文档等。为了给攻击者增加去除水印的难度,大多数水印制作方案都在水印的嵌入、提取时使用密钥。
图5.7水印的嵌入与提取
数字水印技术虽然不能阻止盗版活动的发生,但它可以判别对象是否受到保护,监视被保护数据的传播、真伪鉴别和非法拷贝、解决版权纠纷并为法庭提供证据。
数字水印的设计需要考虑以下几个方面:
鲁棒性:是指被保护的信息经过某种改动后抵抗隐藏信息丢失的能力。例如传输过程中的信道噪音、滤波 *** 作、重采样、有损编码压缩、D/ A或 A/ D转换、图像的几何变换(如平移、伸缩、旋转、剪裁等)。
不可检测性(不可见性):是指隐蔽载体与原始载体具有一致的特性。如具有一致的统计噪声分布等,以便使非法拦截者很难判断是否有隐蔽信息。
透明性:是指经过一系列隐藏处理后,原始数据没有明显的降质现象。
安全性:要求隐藏算法有较强的抗攻击能力(篡改、伪造、去除水印),使隐藏信息不会被破坏。如不因文件格式转换而丢失水印,且未经授权者不能检测出水印。
自恢复性:由于经过一些 *** 作或变换后,可能会使原数据产生较大的破坏,如果只从留下的片段数据,仍能恢复隐藏信号,而且恢复过程不需要原数据,这就是自恢复性(自相似性)。
水印容量:水印容量和鲁棒性之间是相互矛盾的。水印容量的增加会带来鲁棒性的下降,对不可见性也有影响。为抵抗各种变换,水印通常需要按照一定的排列方式反复加入多次,当水印容量大时重复次数只好减少,而鲁棒性不好就会导致检测结果的不可靠。
数字水印技术有多种分类。
按作用可划分为鲁棒水印和脆弱水印。前者主要应用于数字作品中标志著作版权信息,需要嵌入的水印能够抵抗常见的编辑处理和有损压缩;后者主要用于完整性保护,判断信号是否被篡改。
按水印的载体可分为图像水印、视频水印、音频水印、文本水印和印刷水印等。
按检测方法可分为明水印和盲水印。在检测过程中需要原数据的技术称为明水印,其鲁棒性较强;在检测过程中不需要原数据的技术称为盲水印。
按内容可分为内容水印和标志水印。内容水印是指水印经过攻击受损后人们仍能通过感觉判断内容;标志水印是指通过检测判断来确定信号中是否有水印标志。
按用途可分为版权保护水印、篡改提示水印、票据防伪水印、隐蔽标识水印、印刷数字水印等。
数字水印其内容可以是任何具有代表意义的信息,如图像、文字、数字、符号等,为了便于隐藏,水印的体积越小越好。用文本作为水印信息是较好的选择,既节约空间又能直读出其含义。数字水印主要应用在版权保护、加指纹、标题与注释、篡改提示、使用控制等领域。
版权保护:即数字媒体的所有者可用密钥产生一个水印,并将其嵌入原始数据,然后公开发布他的水印版本作品。数字媒体包括音像制品、数字广播、DVD、MP3等。当该作品被盗版或出现版权纠纷时,所有者即可从盗版作品或水印版作品中获取水印信号作为依据,从而保护所有者的权益。
版权跟踪:为避免未经授权的拷贝制作和发行,出品人可以将不同用户的ID或序列号作为不同的水印嵌入作品的合法拷贝中,称为数字指纹。其目的是通过授权用户的信息来识别数据的发行拷贝,监控和跟踪使用过程中的非法拷贝。一旦发现未经授权的拷贝,就可以根据此拷贝所恢复出的指纹来确定它的来源。
标题与注释:即将作品的标题、注释等内容以水印形式嵌入该作品中,这种隐式注释不需要额外的带宽,且不易丢失。如在遥感图像等信息中隐藏日期、经纬度等。
篡改提示:当数字作品被用于法庭、医学、新闻及商业时,常需确定它们的内容是否被修改、伪造或特殊处理过。为实现该目的,通常可将原始图象分成多个独立块,再将每个块加入不同的水印。同时可通过检测每个数据块中的水印信号,来确定作品的完整性。与其他水印不同的是,这类水印必须是脆弱的,并且检测水印信号时,不需要原始数据。
使用控制:这种应用的一个典型的例子是DVD防拷贝系统,即将水印信息加入DVD数据中,这样DVD播放机即可通过检测DVD数据中的水印信息而判断其合法性和可拷贝性。从而保护制造商的商业利益。
典型数字水印算法包括以下几种算法。
空域算法:此算法首先把一个密钥输入一个m-序列发生器来产生水印信号,然后排列成2维水印信号,按象素点逐一嵌入到原始图象最不重要的像素位枣最低位(LSB:least significant bits)。这可保证嵌入的水印是不可见的。但是由于使用了图像不重要的像素位,算法的鲁棒性差,水印信息很容易为滤波、图像量化、几何变形的 *** 作破坏,因此不够强壮。
文本水印算法:通过轻微改变字符间距,行间距或是增加、删除字符特征如底纹线等方法来嵌入水印。或是在符号级或语义级加入水印,例如,可以用big替换文本中的large。
基于改变图象数据统计特性的水印算法:Patchwork算法首先随机选取N对象素点,然后通过增加象素对中一个点的亮度值,而相应降低另一个点的亮度值。这样整个图像的平均亮度保持不变。适当地调整参数,Patchwork方法对JPEG压缩、FIR滤波以及图像裁剪有一定的抵抗力,但该方法嵌入的信息量有限。
频域算法:它是利用一个信号可以掩盖另一个较弱的信号这一频率掩盖现象。图象的频域空间中可以嵌入大量的比特而不引起可察的降质,当选择改变中频或低频分量(除去直流分量)来加入水印时,强壮性可大大提高。频域水印技术可以利用通用的离散余弦变换,小波变换和傅立叶变换等变换方法。其优点是隐藏效果好,人眼不能发觉与原始图象间的差别;使用密钥控制,只有知晓伪装密钥的人才能解密;可以有效的抵抗剪切及JEPG等有损压缩编码;水印图象可以是灰度图象。但该类算法的隐藏和提取信息 *** 作复杂,隐藏信息量不能很大。
压缩域算法:水印检测与提取直接在压缩域数据中进行。把水印信号加到表示视频帧的数据流中去。MPEG-2数据流可分为数据头信息、运动向量(用于运动补偿)和DCT编码信号块3部分,该算法只有DCT编码信号块被改变。首先对DCT编码数据块中每一输入的Huffman码进行解码和逆量化,以得到当前数据块的一个DCT系数;其次,把相应水印信号块的变换系数与之相加,从而得到水印叠加的DCT系数,再重新进行量化和Huffman编码,最后对新的Huffman码字的位数n1与原来的无水印系数的码字n0进行比较,只在n1不大于n0的时候,才传输水印码字,否则传输原码字,这就保证了不增加视频数据流位率。该方法中水印信号的引入是一种引起降质的误差信号,而基于运动补偿的编码方案会将一个误差扩散和累积起来,为解决此问题,该算法采取了漂移补偿的方案来抵消因水印信号的引入所引起的视觉变形。
NEC算法:该算法由NEC实验室的COX等人提出,在数字水印算法中占有重要地位。COX认为水印信号应该嵌入源数据中对人的感觉最重要的部分。在频谱空间中,这种重要部分就是低频分量。这样,攻击者在破坏水印的过程中,不可避免地会引起图象质量的严重下降。水印信号应该由具有高斯分布的独立同分布随机实数序列构成。这使得水印经受多拷贝联合攻击的能力大大增强。实现方法是:首先以密钥为种子来产生伪随机序列,该序列具有高斯N(0,1)分布,密钥一般由作者的标识码和图象的哈希值组成,对整幅图象做DCT变换,用伪随机高斯序列来调制(叠加)该图象除直流分量(DC)外的1000个最大的DCT系数。该算法具有较强的鲁棒性、安全性、透明性等。
生理模型算法:人的生理模型包括人类视觉系统HVS(HumanVisualSystem)和人类听觉系统HAS。利用视觉模型的基本思想是利用从视觉模型导出的JND(Just Noticeable Difference)描述来确定在图象的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图象相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。
数字水印在版权标识、隐藏标识和篡改提示、数据防伪上具有不可替代的作用,它将在商业、金融、军事和个人消费上带来巨大的商业利润。自1995年以来,该领域的研究工作已经取得了巨大的进展。随着数字水印技术的日趋成熟,数字水印技术将在电子商务、视频点播、远程教学和远程培训中发挥越来越大的作用。
public class TestActionAction extends Action {public void doSome(){
try {
//
//ImageIO.read("http://210.75.193.191:8080/Vector/4/3728/1275.png")
ImageIcon[] image={new ImageIcon("G://公司项目/Images/Map/157.png"),new ImageIcon("G://公司项目/Images/Map/158.png"),new ImageIcon("G://公司项目/Images/Map/159.png"),new ImageIcon("G://公司项目/Images/Map/160.png")}
//BufferedImage相当于一个画布,在存在于内存中
BufferedImage img=new BufferedImage((image.length)*256 ,256,BufferedImage.TYPE_INT_RGB)
//必须创建Graphics2D对象和drawImage,不然画出来的只是image.getIconWidth*image.getIconHeight()那么大一个全黑图像
Graphics2D gs=(Graphics2D)img.getGraphics()
for(int i=0i<image.lengthi++){
String k=""
gs.
}
gs.drawImage(image[0].getImage(), 0, 0, image[0].getImageObserver())
int huabuwid=img.getWidth()
int huabuhid=img.getHeight()
for(int i=0i<huabuwidi++){
for(int j=0j<huabuhidj++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j)
int R = (rgb &0xff0000) >>16
int G = (rgb &0xff00) >>8
int B = (rgb &0xff)
rgb=((R*256)+G)*256+B
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb)
}
}
gs.drawImage(image[1].getImage(), 256, 0, image[1].getImageObserver())
for(int i=0i<huabuwidi++){
for(int j=0j<huabuhidj++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j)
int R = (rgb &0xff0000) >>16
int G = (rgb &0xff00) >>8
int B = (rgb &0xff)
rgb=((R*256)+G)*256+B
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb)
}
}
gs.drawImage(image[2].getImage(), 512, 0, image[2].getImageObserver())
for(int i=0i<huabuwidi++){
for(int j=0j<huabuhidj++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j)
int R = (rgb &0xff0000) >>16
int G = (rgb &0xff00) >>8
int B = (rgb &0xff)
rgb=((R*256)+G)*256+B
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb)
}
}
gs.drawImage(image[3].getImage(), 768, 0, image[3].getImageObserver())
for(int i=0i<huabuwidi++){
for(int j=0j<huabuhidj++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j)
int R = (rgb &0xff0000) >>16
int G = (rgb &0xff00) >>8
int B = (rgb &0xff)
rgb=((R*256)+G)*256+B
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb)
}
}
//释放Graphics2D对象
gs.dispose()
//以流的方式保存文件
FileOutputStream outfile = new FileOutputStream("G:/1.png" )
ImageOutputStream i=ImageIO.createImageOutputStream(outfile)
ImageIO.write(img, "png", i)
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
public static void main(String[] args){
new TestActionAction().doSome()
}
}
那就要用上防盗链技术了。
首先介绍一下加密视频被盗链的几种常见方式:
1、播放器破解。这种方式利用一组正版的注册码,把其对应的机器码固定住,达到任何机器都可以注册成功。
2、翻录。分为软翻录(用软件录屏)和硬翻录(视频采集设备来录制,当然,拿手机拍也算是一种啦)
3、提取。这种方式技术难度最高,效果最好,最终效果是提取出原始未加密的视频。
接下来分析一下视频加密技术是怎么防止视频被破解或者说怎么提升破解成本的。
严格来说没有什么破解播放器既能达到破解视频的目的,点量在这方便的经验是在播放器和视频本身的加密方面都做了充分加密。点量加密文件指定播放器区别于普通播放器的的地方是在播放视频时不全部载入,而是先只载入前面5分钟,等播放到4分钟左右时再去载入后面的5分钟视频。这样还可以节省很多服务器流量,避免用户只看2-3分钟暂停在那,也把整个视频给分发下去。另外就是播放器获取视频时传入一些token给服务器,服务器可以通过session等判断用户的权限,权限确认通过才发放flv文件,并且发放的flv文件是经过处理的,播放器收到flv数据后合并播放,用户即使下载到这些零散的flv文件,也很难形成完整的视频。以上技术结合使用点量视频加密系统,也完全可以不安装任何软件就能实现视频的防破解。
对于视频破解中的翻录来说,针对软翻录,视频加密软件预设翻录程序黑名单,禁止翻录程序启动。而且用户还可以根据市场动向,不断增加黑名单。甚至禁止视频播放期间启动其他播放器、浏览器等任何程序。针对硬翻录,除了在视频上添加LOGO、水印、跑马灯信息等,还可以设置观看用户ID飘屏。即便视频外泄,也能及时查到直接相关人追究责任。还有一种技术方式是视频播放过程中加入问题,视频播放到指定的时间点后播放器会自动d出问题(如果是幼儿课程,也可以是互动动画),要求观看者回答,观看者只有在正确回答问题后才能继续播放,如问题回答错误,视频可以被跳至其它指定时间点或者禁止观看等。
至于视频提取,这种破解的方式一般是专业技术人员所为。既然说到专业技术,那么一些课程成本较高或者特殊单位的视频需要加密保护防破解,则更应该选择加密技术水平高的合作公司,而不是千篇一律的市面化产品。私有定制化加密技术显然更适合这类客户群体,除了可以提供加密安全系数,还可以随着技术水平的不断上升进行私有加密产品的不断升级维护。像点量的老客户百度传课、勤学网等,甚至在专供破解的各大论坛都是一直传闻的大难题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)