在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。
1 基于SRAM工艺FPGA的保密性问题
通常,采用SRAM工艺的FPGA芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置芯片(如Altera公司的EPCX系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于外围电路非常简单,体积较小,适用于不需要频繁升级的产品;第三种方法的优点在于成本较低,升级性能好。
以上几种方法在系统加电时,都需要将配置的比特流数据按照确定的时序写入SRAM工艺的FPGA。因此,采用一定的电路对配置FPGA的数据引脚进行采样,即可得到配置数据流信息。利用记录下来的配置数据可对另一块FPGA芯片进行配置,就实现了对FPGA内部设计电路的克隆。典型的克隆方法见图1。
电路克隆方法
2对SRAM工艺FPGA进行有效加密的方法
由于SRAM工艺的FPGA上电时的配置数据是可以被复制的,因此单独的一块FPGA芯片是无法实现有效加密的。FPGA芯片供应商对位数据流的定义是不公开的,因此无法通过外部的配置数据流信息推测内部电路。也就是说,通过对FPGA配置引脚的数据进行采样可得到配置信息。但也不能知道内部电路结构。如果在配置完成后使FPGA处于非工作状态,利用另外一块保密性较强的CPU产生密码验证信息与FPGA进行通信,仅在验证成功的情况下使能FPGA正常工作,则能有效地对设计进行加密。具体电路结构见图2。
电路结构
系统加电时,由单片机对SRAM工艺的FPGA进行配置。配置完成时,FPGA内部功能块的使能端为低,不能正常工作。此时,单片机判断到配置完成后,将ASET信号置为高电平,使能FPGA内的伪码发生电路工作;同时,单片机产生一个伪码验证信息,在FPGA中将两路伪码进行比较,两者完全匹配时,FPGA内部电路正常工作,否则不能正常工作。加密电路主要利用了配置完成后处于空闲状态的单片机和FPGA内部分逻辑单元,没有增加硬件成本。
由上述讨论可知,系统的加密能力主要由CPU的加密能力决定。这就要求CPU的加密算法要足够复杂,使得对验证信息的捕获与识别足够困难。最常见的加密算法就是产生两个伪随机序列发生器:一个位于SRAM工艺的FPGA内;另一个位于CPU内。当两者匹配时,通过验斑点。对PN码有两点要求:一方面,要求伪随机序列的长度足够长,使得要捕获整个序列不太可能;另一方面,伪随机序列的线性复杂度要足够高,使推测伪随机序列的结构不易实现。
通常采用的伪随机码发生器的反馈电路如图3所示。实际中,可采用级数较高的线性反馈移位寄存器来产生伪随机码。如采用40级线性移位寄存器产生的最大序列的周期为2?40=10?12。若将所有伪随机码截获并存储,就需要1000Gb的存储空间;若码速率为50Kbps,捕获时间将长达5555小时;当增加移位寄存器的级数时,所需的存储空间和捕获时间都会呈指数增长,以至于难以实现。采用较为简单的线性反馈电路被推测出反馈结构的可能性较大,因此实际的系统中,除了级数要较多之外,往往通过对多个线性移位寄存器产生的伪码进行特定运算产生长码,以增加所产生伪码的线性复杂度。
发生器反馈电路
3 FPGA内的校验工作电路
在此采用40级线性反馈移位寄存器来产生伪随机码,特征多项式为20000012000005(八进制表示)。其移位寄存器表示形式为:Bin=B23?XOR?B21XORB2XORB0,FPGA内工作电路见图4。
FPGA内工作电路
在上电之后,单片机将图4中的电路配置在FPGA中。配置完成后,单片机发送的ASET信号由低电平跳变为高电平,使得FPGA内的PN码产生电路开始工作,并于CPU发送过来的PN码进行比较。比较结果一致就使能USER_DESIGN模块正常工作。其中PLL_BITSYS模块用来发生VERIFY_PN的位同步时钟,采用微分锁相原理实现。各种参考资料都有较多介绍,在此不再详述。
COMPARE_PN模块完成对单片机发送的伪随机码和PNMA_PRODUCER模块产生的伪随机码的比较:当两路相同,输出1,不同时输出0;若两路伪码完全匹配,则恒定输出1,使USER_DESIGN电路正常工作,否则,输出为类似于伪码的信号,使USER_DESIGN电路不能正常工作。
4 FPGA内的伪随机码产生电路
PNMA_PRODUCER模块和来产生伪随机码,采用移位寄存器实现,具体电路见图5。LPM_SHIFTREG为移位寄存器模块。移位寄存器ASET端为异步置位端,高电平有效,即ASET为高时,将初值85置入移位寄存器内,LPMSHIFTREG模块的“DIRECTION”设置为“RIGHT”即移位方向为右移。Q[39..0]表示40位移位寄存器的各个状态,SHIFTIN为串行输入,SHIFTIN为Q0、Q2、Q21、Q23四个状态异或运算的结果。
ASM 04-143164-02
ASM 91210-35118
ASM 1071-018-02
New ASM 02-143889-01
ASM 09-169712D01
ASM 1050-579-01
ASM 02-338116-01
New ASM 1051-446-01
ASM 77-123776A48
ASM 1049-842-01
ASM 2398095-01
ASM D004651D
ASM 1048-432-01
ASM 02-327347D03
ASM 02-146250-01
ASM 02-146714-01
ASM 16-405066-01
ASM 1050-578-01
ASM 78-120442A07
ASM 16-141365-01
ASM 1045-426-01
ASM 1042-744-01
ASM 50-123824A12
ASM 83-125000A56
ASM AMERICA 02-320586D01
ASM 40-106215A31
ASM 16-185408D01
ASM 16-143722-01
ASM 1004-435-01
ASM 1044-179-01
ASM 22-114959A30
ASM 21-115696A83
ASM 1044-176-01
ASM 1016-965-01
ASM 1021-039-01
ASM 16-187017D01
ASM 02-180919B01
ASM 1059-637-01
ASM 845000349
ASM 830025715
ASM/SETRA 02-333876D03
ASM 16-325518C01
ASM 50-125108A63
ASM 16-337289-01
ASM 02-196601-01
ASM 1011-389-01
ASM 60-122486A32
ASM 73021-70380
ASM 1076-997-01
ASM 1076-998-01
ASM 1012-533-01
ASM 16-140018D01
ASM 16-186882D01
ASM 16-331219D01
ASM 16-183913-01
ASM 16-329041B02
ASM 02-147099-01
ASM 02-173020C01
ASM 16-400800-01
ASM 1003-885-01
ASM 1021-082-01
ASM 1017-105-01
ASM 02-144014-01
ASM 50-122938A39
ASM 16-144729-01
ASM 1060-225-01
ASM 02-144014-01
ASM 04-144117-03
ASM 50-122938A70
ASM 16-187372D01
ASM 04-140152-01
ASM 3551113-02
ASM 32-122101A52
ASM 16-179595B01
ASM 16-195762-01
ASM 04-323034A01
ASM 1087-734-01
ASM 16-196198-01
New ASM 16-190469D01
ASM 16-404926-01
ASM 1017-104-01
ASM 16-193139-01
ASM 16-184450-01
ASM 16-333526B01
ASM 16-333526B02
ASM 77-106650A13
ASM 1002-876-01
ASM 16-190202D01
ASM 67-123469A95
ASM 1019-256-01
ASM 1009-433-01
ASM 1009-434-01
ASM 1009-435-01
ASM 1020-709-01
ASM 77-125314A03
ASM 32-123808A88
ASM 16-333477B01
ASM 16-176613D01
ASM 16E02728B01
ASM 1052-890-01
ASM 1039-863-02
ASM 1039-863-03
ASM 1026-745-01
ASM 16-178713D01
ASM 33-123495A70
ASM 1111-982-01
ASM 1111-983-01
ASM 73021-70381
ASM 02-405142-01
ASM 16-196795-01
ASM 32-123808A88
ASM 67-123469A97
ASM 16-404347-01
ASM 1075-805-01
ASM 16-323211B01
ASM 54-106618A57
ASM 1028-330-01
ASM 50-123343A88
ASM 16-323655-B11
ASM 16-321622C01
ASM 3657892-01
ASM 16-328547D02
ASM/KLK 16-325607C01
ASM 38-105458A17
ASM 16-196828-01
ASM 16-404486-01
ASM 1095-463-01
ASM 1021-871-01
ASM 16-145616-01
ASM 16-145616-01
ASM 16-195014-01
ASM 41-125761A03
ASM 16-195733-01
ASM 1062-150-01
ASM 50-125108A49
ASM 1077-522-02
ASM 1094-474-01
ASM 1076-963-01
ASM 1092-629-01
ASM 16-173187D01
ASM 16-330979D01
ASM 16-193072-01
ASM 1017-118-01
ASM 02-196607-01
ASM 04-144006-02
ASM 16-336896-01
ASM 16-187371D01
ASM 16-329739C02
ASM 16-183887-01
ASM 16-184449-01
ASM 16-336896-02
ASM 16-184448-01
ASM 79-122595A09
ASM 02-145351-01
ASM 1048-964-01
ASM 1079-319-01
ASM 43-125707A01
ASM 16-195013-01
ASM 16-196830-01
ASM 1041-878-01
ASM 02-144014-02
ASM 16-402730-01
ASM 16-195192-01
ASM 1007-669-01
ASM 1060-220-01
ASM 1005-715-01
ASM 1092-459-01
ASM 1019-252-01
ASM 1019-629-01
ASM 1018-941-01
ASM 16-331955B01
ASM 50-123343A90
ASM 16-352301-01
ASM 1025-312-01
ASM 3751864-01
ASM 77-125002A23
ASM 04-325663D02
ASM 1097-327-01
ASM 93-123870A06
ASM 16-147264-01
ASM 93-123870A16
ASM 16-403235A01
ASM 16-193094-01
ASM 16-332677D01
ASM 16-193540-01
ASM 53-109279A07
ASM 1005-029-01
ASM 41-105457A80
ASM 1026-573-01
ASM 16-007110B26
ASM 1025-301-01
ASM 16-146554-0
ASM/KLK 16-146947-01
ASM 1063-174-01
ASM 16-142611-01
ASM 1080-770-01
ASM 1091-957-01
ASM 16-404226-01
ASM 54-123388A27
ASM 02-190352D01
ASM 02-400843-04
ASM 16-401650-01
ASM 63-119074A05
ASM 48-122952A33
ASM 1044-178-01
ASM 1069-934-01
ASM 04-321308A01
ASM 1021-872-01
ASM 16-337067-01
ASM 16-143716-01
ASM 1095-462-01
ASM 16-140249-01
ASM 16-177295D01
ASM 54-123388A11
ASM 16-192748-01
ASM 22-122805A78
ASM 1075-495-01
ASM 16-332190E01
ASM 83-125001A23
ASM 16-402737-01
ASM 16-173230C01
ASM 16-195157-01
ASM 16-169822-01
ASM 16-184664-01
ASM 16-184665-01
ASM 90-123159A20
ASM 39-123319A26
ASM 16-192789-01
ASM 16-176260C02
ASM 16-180469B01
ASM 1018-937-01
ASM 1009-445-01
ASM 16-181879-01
ASM 02-143868-01
ASM 16-331715C01
ASM 02-325126D02
ASM 16-333579D01
ASM 20-351547D01
ASM 39-106679A06
ASM 1020-297-01
ASM 16-329808C01
ASM 16-330174C01
ASM 1059-636-01
ASM 1003-891-01
ASM 1087-300-01
ASM 02-194598-01
ASM 16-403307-01
ASM 1031-561-01
ASM 50-122938A34
ASM 50-122938A13
ASM 16-143961-01
ASM 16-332700C01
ASM 16-350119B01
ASM 16-351195B01
ASM 1003-401-01
ASM 16-008212C01
ASM 16-322464C01
ASM 02-196603-01
ASM 1011-595-01
ASM 32-123808A45
ASM 33-123495A15
ASM 75-119073A28
ASM 50-125108A05
ASM 1020-297-01
ASM 02-195250-01
ASM 51-125083A02
ASM 60-122486A28
ASM 60-122486A35
ASM 60-122486A30
ASM 60-122486A36
ASM 1005-783-01
ASM 60-122486A34
ASM 16-404923-01
ASM 16-404449-01
ASM 1056-256-01
ASM 1075-798-01
ASM 1019-861-01
New ASM 04-351013-01
ASM 50-123343A87
ASM 16-325379B01
ASM 1046-624-01
ASM 16-143353-01
ASM 3751899-01
ASM 16-338101-01
ASM 16-338102-01
New ASM 16-195980-01
ASM 16-184480-01
ASM 93-123870A03
ASM 16-403453-01
ASM 1004-434-01
ASM 1006-732-01
ASM 16-404924-01
ASM 1092-804-01
ASM 22-125385A04
ASM 1019-262-01
ASM 1032-351-01
ASM 1018-680-01
ASM 16-145151D01
ASM 02-327661D01
ASM 16-143354-01
ASM 1055-780-01
ASM 60-122486A47
ASM 1012-836-01
ASM 16-193314-01
ASM D005046B
ASM 02-325138C01
ASM 1069-283-01
ASM 60-122486A41
ASM 16-193524-01
ASM 1009-419-01
ASM 830106308
ASM 62-105902A86
ASM 1019-250-01
ASM 1038-682-01
ASM 1019-329-01
ASM 1017-119-01
New ASM 16-326627B08
New ASM 16-326627B10
ASM 16-146876-01
New ASM 1040-882-01
ASM 1047-479-01
ASM 75-125029A04
ASM 1041-878-01
ASM 1004-433-01
ASM 16-321484B02
ASM 39-120364A73
ASM 16-404943-01
ASM 1019-630-01
ASM 1021-314-01
ASM 1020-284-01
ASM 1098-781-01
ASM 16-143351-01
ASM 02-350554-01
ASM 04-144493A01
ASM 16-186699B01
ASM 70-106214A36
ASM 57-106629A09
ASM 1072-457-01
ASM 1069-703-01
ASM 1076-995-01
ASM 1082-109-01
ASM 1051-409-01
ASM 1019-251-01
ASM 1019-257-01
ASM 1024-318-01
ASM 1032-352-01
ASM 1021-430-01
ASM 1021-655-01
ASM 1020-361-01
ASM 1016-959-01
ASM 1020-583-01
ASM 42-122970A96
ASM 02-329586C03
ASM 1046-623-01
ASM/SMC 1029-745-01
ASM 50-125108A55
New ASM 16-144176-01
ASM 32-106655A37
ASM 16-143802-01
ASM 02-140413-01
ASM 16-143352-01
ASM 04-187798-01
ASM 02-144534-01
ASM 02-195848-01
ASM 16-008211C01
ASM 02-195847-01
ASM 02-195849-01
ASM 1040-397-01
ASM 51-106797A80
ASM 1057-919-01
ASM 26-123950A29
ASM 1071-753-01
ASM 1105-604-01
ASM 16-195911-01
ASM 16-400699-01
ASM 1014-579-01
ASM 16-195980-01
ASM 68-125277A02
ASM 68-125277A04
ASM 51-115829A28
ASM 1046-624-01
ASM 55-106635A37
ASM 44-106290A63
ASM 1009-878-01
ASM 16-321998B01
ASM 77-123776A23
ASM 16-404495-01
ASM 22-125537A02
ASM 16-193876-01
ASM 16-405071-01
ASM 1095-220-01
ASM 830106294
ASM 1017-329-01
ASM 1028-241-01
ASM 1025-306-01
ASM 1025-306-02
ASM 1025-306-03
ASM 1020-104-01
ASM 16-007110B28
ASM 1013-663-01
ASM 1018-678-01
ASM 1019-164-01
ASM 1032-345-01
ASM 16-332650C01
ASM 16-185214D01
ASM 1051-411-01
ASM 50-120215A14
ASM 16-350881C01
ASM 16-336874-01
ASM 16-189552-01
ASM 16-325609B01
ASM 16-320484C01
ASM 16-401207-01
ASM 16-350901D01
ASM 1043-932-01
ASM 1061-831-01
ASM 1043-944-01
ASM 1037-290-01
ASM 1038-506-01
ASM 16-191061D01
ASM 16-404942-01
ASM 16-195888-01
ASM 16-195887-01
ASM 60-122486A52
ASM 16-322283D01
ASM 1052-182-01
ASM 21-120903A90
ASM 36-122920A27
ASM 16-330347B01
ASM 1079-466-01
ASM 1068-715-01
ASM 1082-436-01
ASM 1096-833-01
ASM 1051-508-01
ASM 1075-799-01
ASM 1031-423-01
ASM 1019-328-01
ASM 16-187152B01
ASM 1060-224-01
ASM 16-187152-B01
ASM 44-122035A81
ASM 02-333933D01
ASM 04-142330-02
ASM 16-187431B01
ASM 16-186688D01
ASM 86-106293A65
ASM 02-144063-01
ASM 04-142328-01
ASM 16-184447-01
ASM 1003-925-01
ASM 16-169734D01
ASM 04-403261-01
ASM 02-145110-01
ASM 1052-184-01
ASM 1003-920-01
ASM 16-404454-01
ASM 845003011
Aera FC-D980C
ASM 3751821-01
Applied Materials 0100-11002
ASM 16-187453D01
Brooks 001-8092-01
ASM 77-123776A40
ASM 16-179291D01
ASM 1019-763-01
ASM 16-187453D01
Aera FC-D980C
Anelva M-430HG
Entegris KC-HFO-16F
TOBISHI Z624F/0C-5 Fan
ASM 77-123776A40
ASM Heater Exhaust 1090-804-01
ASM 54-125030A06
ASM 16-320492C01
ASM 1006-049-01
ASM 1020-789-01
ASM 02-330608D01
ASM 1095-945-01
D&R ENTERPRISES 16-320637C03
ASM 16-179041-01
New Axcelis 17394930
MKS 622A12TBE
VAT 26332-KA41-1002
Lam Research 715-330889-002
Optronics LX-450
Carl Zeiss 910848-5003
ASM 72-106631A35
SUPERSIC DE-18602
ASM 1030-563-01
ASM 1017-120-01
ASM 1025-220-01
ASM 16-193043-01
ASM 1019-238-01
ASM 1017-117-01
ASM 1018-679-01
ASM 16-323545B01
ASM 32-125040A59
ASM 16-329806D01
ASM 16-333511D01
ASM 16-145606-01
ASM 16-323789C01
ASM 16-329805D01
ASM 16-329807C01
ASM 16-186166D01
ASM 16-143301-01
ASM 16-320080C01
ASM 02-178690D01
ASM 02-336821-03
ASM 02-195438-01
ASM 16-320079C01
ASM 16-332693D02
ASM 1017-122-01
ASM 1014-288-01
ASM 1036-839-01
ASM 16-351170D01
ASM 66-117332A38
ASM 02-400589-01
ASM 02-401786-01
ASM 16-193140-01
ASM 02-144815-01
ASM 1041-588-01
ASM 1046-122-01
ASM 55-106635A40
ASM 73055-72402
ASM 51-106806A14
ASM 1043-128-01
ASM 39-120364A37
ASM 02-195851-01
ASM 02-195852-01
ASM 1073-489-01
ASM 1092-803-01
ASM 1086-834-01
ASM 1051-480-01
ASM 1051-507-01
ASM 1000-298-01
ASM 1019-239-01
ASM 51-106799A16
ASM 16-140829-01
ASM 1051-623-01
ASM 1053-879-01
ASM 1045-190-02
ASM 1045-191-01
ASM 1047-164-01
ASM 1045-190-01
ASM 16-185444D01
ASM 1065-529-01
ASM 16-169537C01
ASM 16-329664C01
ASM 16-322109C02
ASM 16-187592D01
ASM 1008-087-01
ASM 16-143772-01
ASM 16-323736D01
ASM 02-333935D01
ASM 16-329402D01
ASM 16-329752B01
ASM 16-147524-01
ASM 16-329752B02
ASM 16-337250-01
ASM 1020-672-01
ASM 02-142992-01
ASM 16-334760B01
ASM 1106-245-01
ASM 1071-749-01
ASM 72-125221A04
ASM 1014-333-01
ASM 16-325124D01
ASM 16-350880D01
ASM 1025-157-01
ASM 1021-934-01
ASM 26-123950A25
ASM 93-123870A04
ASM 16-195694-01
ASM C002029A
ASM 93-123870A05
ASM 1016-528-01
ASM 1052-183-01
ASM 16-192383D01
ASM 16-332187D01
ASM 16-187766B01
ASM 16-179279D01
ASM 16-187765B01
ASM 86-106293A52
ASM 86-125593A34
ASM 1031-386-01
ASM 62-123805A32
ASM 83-108642A33
ASM 845003879
ASM 845003895
ASM 54-106931A52
ASM 16-176259C02
ASM 16-320174B12
ASM 50-108514A04
ASM 1066-419-01
ASM 16-330368B01