二维条码子单元中隐藏的信息外文翻译资料
2021-12-20 21:58:40
英语原文共 5 页
二维条码子单元中隐藏的信息
摘要:在本文提出了一种在二维条码中隐藏信息的方法,该方法保持了针对二维条码阅读器的向后兼容性。这种方法是通过将每个单元分割成存储机密信息的子单元来实现的。
关键字:二维条码,子小区,纠错,信息隐藏
一、引言
A、背景
二维(2D)条码可以包含比传统条码更多的数据,而且由于它们具有纠错功能,因此能够抵抗灰尘、油渍和其他瑕疵。最初,二维条码被用于商业应用程序,但由于它们可以用手机读取,因此在各种应用程序中都很流行。由于它们是为了让任何人都能阅读二维条码而开发的,因此通常可以使用合适的阅读器获取代码中包含的所有内容。
另一方面,有些应用程序需要特殊特权才能读取代码。在这种情况下,二维条码既有与现有二维条码兼容的公共部分,又有一个隐藏秘密部分。
B、动机
二维条码是20世纪90年代发明的[1,2],是围绕当时的成像技术而设计的。随着数码相机的爆炸式扩散,成像设备可以快速解析的像素数量增加,现在可以轻松获得1000万像素或更高像素的设备。因此,基于具有大量像素的成像设备现在已经司空见惯,即使这些秘密信息包含在当前二维条码单元的详细结构中,也可以识别这些秘密信息。
因此,我们决定研究可以将公共内容视为现有二维代码的二维代码,同时添加一个高度机密的秘密部分,该部分使用精细的子单元结构。
C、现有工程
为了防止第三方访问机密数据,开发了具有公共和机密区域的二维代码[3]。虽然公共区域可以像普通的二维条码一样被读取,但是秘密区域只能由那些知道解密密钥的人来读取。为了提高安全性,提出了通过在二维条码中插入彩色数字水印来检测复制信息的方法[4-7]。
此外,为了实现二维单元的大容量、多比特编码[8-11],还对二维单元的精细分割进行了一些研究,其中利用了颜色编码。
二维条码的秘密区[3]以常规(非秘密区)二维条码的数据保持格式存储加密数据,隐藏原理依靠加密。相比之下,本文提出了一种真正隐藏的编码表的方法。有许多适用的编码表,攻击者无法轻松发现真正的编码表。
D、挑战性问题
一个二维条码,其中的秘密部分应该坚持本文的目的,应遵循以下原则:
(1)个二维条码必须适用于新的印刷、显示和图像采集技术相对应的新的光学信息媒体。
(2)个二维条码必须保持与现有二维条码的向上兼容性
(3)个二维条码应该可以向上兼容现有的代码阅读器。
(4)个二维条码必须实现代码不兼容部分的高度机密性
二、结构
本文主要研究具有传统的向上兼容公共部分和秘密部分的二维条码。整个单元的结构与通常的二维条码相同,通过在特定单元中建立一个精细的结构,每个单元中可以存储大约6位数据。
这些数据是通过使用秘密方法分析精细结构获得的。我们对如何根据二维条码的原理构建二维条码[1]给出以下解释。
A、细胞分割
二维条码由单元组成,单元可以进一步划分为子单元。为了确保每个子单元都是方形的,原始单元的每个维度都被相同的比例分割。单元和子单元之间的关系如图1所示。
图1、细胞与其子细胞之间的关系。
B、子单元的布局和相对色调的数量
当某些子细胞的色调与原始细胞的色调相反时,细胞色调可能会受到影响。因此,有必要选择给定相反色调的子单元的位置和数量,以便不影响原始单元色调。
下面讨论子单元的布局。第三节讨论了子电池的数量。
C、布局
细胞的外缘与其他细胞相邻,在识别单个细胞时很重要。希望电池的原始色调不受噪声影响。由于在提取图像时相机抖动等原因,单元外缘上的任何子单元都叠加在其他接触单元的图像上,因此这些子单元也是缓冲区。
能够读取子单元级代码的单元通常是专门的设备,因此我们可以考虑针对摄像机抖动采取特殊措施。由于传统的设备在单元级别读取代码,而不能采取这种特殊措施,因此上述缓冲区的作用相当大。此外,由于在解密过程中搜索水平和垂直轴以对二维代码的单元进行分类,缓冲区区域可以成为指针。
外围的子单元与单元具有相同的色调,只有内部的子单元才具有相反的色调。因此,必须将单元划分为至少3times;3的子单元结构
三、编码
我们现在讨论3times;3和5times;5子单元分区的编码模式。
A、3times;3配置的情况
单元的最小分段为3times;3。由于外围子单元必须保持原始单元的色调,因此可以保存附加数据的变量部分只是单个中央子单元。因此,在编码中,中心部分将以白色或黑色表示一位数据,如图2所示。
图2、3times;3子单元配置的编码模式
在这种编码中,机密性级别非常低,只能预期会造成保留双数据的效果。
B、5times;5配置的情况
在这种情况下,细胞周围有一个3times;3的子细胞结构,因此数据可以用9个子细胞的黑白染色来表示。如果我们假设允许反向率为16%,那么可以反向1到4个子单元(25times;0.16=4)。
图3所示为四个子单元在5times;5结构中反向布置的一些示例。
图3、5times;5子单元配置的编码模式
为了简化将单元切片为子单元结构及其后续标识,我们考虑将中央子单元固定为与原始单元相同的色调。在5times;5配置中,变量部分是3times;3子单元结构,但是当图像被选取时,对该子单元进行分类的边界变得模糊。通过将中心子单元固定到单元色调,该位置可以用作子单元日志记录的标记,并且可以帮助绘制该边界。此外,由于现有的单元级二维条码的读卡器单元常常识别单元中心附近的像素,因此使该中心子单元采用单元色调似乎是合适的,以便现有设备仍然可以读取代码。
C、多位编码
在3位编码中,我们可以假设两个数据布局中的一个。第一种是连续数据集,其大小由单元级存储的数据的双精度存储决定,第二种是考虑将3位数据分散到三层虚拟数据。在第二种情况下,我们得到三个不同的数据集,每个数据集的体积等于单元级别的数据体积。因此,在我们随后的讨论中,多位编码被认为是在子单元级别具有两个或多个二维条码的数据结构,如图4所示。
图4、单元和子单元级别的二维代码
在这种情况下,每个单元获得四个代码块U=(U0,U1,U2,U3)。这里,u0是单元级别的色调数据,u1、u2和u3是子单元级别的色调数据。
四、纠错码介绍
上面介绍的子单元的大小相对较小,因此由于二维条码上的污垢、油渍或其他瑕疵问题而导致误读的可能性比常规单元大。因此,我们现在讨论如何为子单元中的数据引入误差校正函数。
A.扩展汉明码
对应于整数m的汉明码构成如下:
码长:N=2米-1
数据长度:K=N-m
数据长度是原始数据的位计数,代码长度是生成的整个代码的位计数。此外,为了区分1位和2位错误,扩展汉明码增加了一个奇偶校验位。
在m=3的情况下,每个8位由4位数据、3位纠错和一个奇偶校验位组成。我们现在讨论使用这个8位扩展汉明码执行错误纠正。
表1.扩展汉明代码示例
5times;5子电池配置内部有3times;3配置。当中央子单元被分配到原始单元的色调时,剩下的八个子单元作为可变部分。我们现在考虑对应于表I中所示扩展汉明代码的位数组的布局模式,其中0和1表示相反的色调。在解密过程中,与单元格色调相同的子单元格被分配为0,相反色调的子单元格被设置为1,并检查扩展的汉明代码。在这种情况下,如果由于二维条码上的污垢或瑕疵而错误地识别了子单元,则可以检测到两个子单元中的错误,并且可以纠正一个子单元中的错误。除了在子单元级别进行错误检查外,二维代码在单元级别还具有错误更正功能。因此,即使在子单元级别不可能进行修正,也可能发生修正。
表二所示的编码示例与表一所示的扩展汉明码相对应。
表二、与扩展汉明码对应的编码示例
图5、子单元配置示例
B.编码表的数量
在完整的编码列表中有14行(其中表2给出了8个例子),其中4个子单元格变成了相反的色调。它被用作编码比特流。因此,编码模式pe的数目如下:
PE = 14. (1)
在这种情况下,因为pe大于23(=8),所以最多可以进行3位编码。编码表ne的数目如下:
NE = 14P8 times; 6!
≒ 8.7 times; 1010 (2)
表一位流显示1为黑0为白的3times;3子小区布局如图5所示。未显示所有1和0的情况。
C、子单元级错误检测
由于子单元的色调布局是使用扩展的汉明码确定的,因此单元中子单元级别的标识具有纠正1位错误和检测2位错误的功能。由于可能出现超出这些范围的错误,我们考虑一些无法检测到错误的情况。
在扩展汉明码的编码中,四个子单元格采用单元格色调,四个子单元格采用相反的色调。因此,当一种色调的子单元的数量因损坏或错误的读数而增加或减少时,就会检测到错误。但是,无法检测到每个色调的子单元中出现相同数量错误的情况。
然后,在出现错误的情况下,数字的和被设置为11。八个子单元的色调组合总数为28,因此未检测率RER如下:
Rer = 11/256 = 0.044. (3)
每个子单元中错误的发生概率不均匀,并且由于相邻子单元经常被一个块弄脏,因此认为实际未检测率接近于零。也就是说,子单元级错误的检测率大约为100%。
五、编解码过程
本节描述了使用所提出的精细分割结构对二维条码进行编码和解密的过程。
A.编码
我们首先解释以下条件的编码过程:
单位:5times;5配置
编码:3位编码
表三、编码过程
提出的二维条码的四步编码过程如表三所示。我们省略了单元级的纠错过程,因为它超出了本文的范围。
四步流程解释如下。
第一步:数据准备
我们首先为公共区域(d0)和秘密区域(d1、d2、d3)准备数据,并将其纳入二维条码中。设d=(d0,d1,d2,d3)。
第二步:在单元级别为公共区域创建二维代码
根据给定二维条码的条件,确定公共区域中每个单元的黑白色调。因此,每4位代码块u=(u0,u1,u2,u3)中的u0是为每个单元确定的。
第三步:为单元级别的秘密区域创建二维代码
对于秘密区域中的三个数据集(d1、d2、d3),构成一个虚拟的二维条码,并确定每个单元的黑白色调。因此,为每个单元分配U1、U2和U3。
第四步:子单元级别的数据布局
从每个类(U1、U2、U3)中选择一位数据构成3位数据,子单元的单色布局取自事先选择的编码表。此时,子单元将更改为相反的色调。子单元布局决定了整个单元的配置。
因此,确定了整个二维条码的结构,包括子码,并且可以打印出代码。
B.解码
解码过程包括表四所示的四个步骤:
表四、解码过程
第一步:对于各细胞色调的测定
从打印的代码中,可以确定每个单元及其色调;因此,可以立即确定每个单元的U0。
第二步:对于子单元级解码
从打印的代码中,每个单元的图像被分解,允许从单元的单色测定中获得每个子单元级别的色调。根据扩展的子单元汉明码进行错误检测和纠错处理,虚拟二维条码的单元色调由编码表中的子单元色调布局给出。
对所有单元格执行此过程。因此,逐渐确定4位编码块U=(U0、U1、U2、U3)中的U1、U2和U3。
第三步:对于公共区域解码
从公共区域的单色代码U0中解密二维代码。这个过程与普通的二维条码相同,并且有效地从二维条码中解码D0。
第四步:对于秘密区域解码
虚拟二维条码中的单色码(U1、U2、U3)分别给出了数据集d1、d2和d3。通过这个过程,我们完全从公共区域(D0)和秘密区域(D1,D2,D3)解码。
六、精细子单元结构的实施
A.打印密度
现在,我们将讨论打印可用大小的二维代码的可能性,以及前面章节中详细介绍的精细子单元结构。商用打印机的打印密度大约为每英寸600点(dpi)级,对于高度详细的类型,可能为1200 dpi。
在印刷品中,通常可以分辨出尺寸为2times;2点的子单元。当25times;25单元的二维条码被分为5times;5子单元配置时,一台600 dpi打印机将输出一个Ltimes;L大小的码,每边的长度如下:
L = (25 times; 5 times; 2 times; 25.4)/600 ≒ 10.6 (mm). (4)
这类似于通常的二维条码;因此,当使用1200 dpi打印机时,相同尺寸的二维条码可以包含50times;50个单元。
B、获取的图像像素数
用于读取二维条码的成像设备通常有400万像素。因此,如果二维条码的图像占成像设备可用区域的四分之一,那么我们在每个方向上有大约1000个像素。对于ntimes;n配置中的二维代码,每个子单元(n)的像素数pp如下:
Pp(N) = 1000/(5N). (5)
因此,在n=50的情况下,Pp(50)=4。
当一个2times;2像素的块存在时,稳定的识别通常是可能的
资料编号:[4209]