qwernet 发表于 2008-12-17 00:44:37

[原创]用FPGA实现可用于加密用途的伪随机二进制序列(PRBS)【恢复】

引用自小俊的blog(http://blog.21ic.com/user1/5184/default.html)



(小俊原创,转载请注明出处)



伪随机序列并非真正的随机数序列。计算机无法生成真正的随机数,所谓伪随机二进制序列(PRBS)只是用某种算法生成的一串看似没有任何周期和规律的、0和1出现概率又大致相等的一串二进制数列。由于其线性复杂度很高,而且虽是周期性的但具有很长的周期,因此很难观察出其规律并反推出生成算法。而两个具有相同生成算法和种子的PRBS发生器产生的伪随机序列则是严格相同的,因此伪随机序列可用于系统级加密应用中的码流验证。



一般的PRBS发生器可用移位寄存器实现,具有如下反馈结构:



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_547405.jpg

 (原文件名:-1.jpg) 



多个反馈点经过XOR运算后作为移位寄存器的输入。反馈点由特征多项式决定。当特征多项式为本原多项式(Primitive Polynomials)时,PRBS序列有最长周期2n-1(n为特征多项式的级数)。例如本原多项式x7+x6+1产生的PRBS序列周期为127,而本原多项式x32+x9+x5+x3+1产生的PRBS序列周期为4294967295(4G-1)。可见当特征多项式的级数较高时,PRBS序列周期会很长。



下表是某些级数下本原多项式个数以及前10个本原多项式的对照表:



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_547402.JPG

 (原文件名:0.JPG) 



以48级本原多项式x48+x9+x8+x6+1为例,其周期为281474976710655(约256Tbits),假如以1Mbps的速率发送,发送一个完整周期的时间为约9年。其移位寄存器表示形式为BIN = B9 XOR B8 XOR B6 XOR B0。可以在FPGA中用如下方法实现:



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_547403.JPG

 (原文件名:1.JPG) 



移位寄存器在复位时,从data载入常数1234567890作为种子。种子不同时生成的序列有很大差别。两个具有相同种子相同结构的PRBS发生器产生的序列完全一样。



下图是在Quartus中的仿真结果:



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_547404.JPG

 (原文件名:2.JPG) 

fsclub 发表于 2008-12-17 07:11:06

坐沙发,看楼主

flyaudio 发表于 2013-7-18 09:09:41

知道了发送,那怎么恢复呢?
页: [1]
查看完整版本: [原创]用FPGA实现可用于加密用途的伪随机二进制序列(PRBS)【恢复】