RTL 加密

生活是需要热爱的,尤其在隆冬季节。据说B 站时下流行对对子,于是集美们见缝插针地对了起来,搬一个来图个热闹。

上联:lef, def, spef, flow 搭得舒舒服服,用户说声佩服佩服

下联:genus, joules, tempus, service 做得生生死死,老板道句nice nice

横批:卧薪尝胆,视死如归

来,回到正题,一些IP vendor 为了自我保护,或一些公司为了防抢防盗防AE 经常需要对RTL 进行加密,各家EDA 公司为了满足客户这一需求,都提供有适配于自家工具的加密方式,除此之外还有如下两种加密机制,IEEE1800 跟IEEE 1735, 貌似目前业界用得更多的是IEEE 1735 而且这也是IEEE 推荐的加密机制—— IEEE Std 1735™-2014: "IEEE Recommended Practice for Encryption and Management of Electronic Design Intellectual Property (IP)"

  • The standard mechanism IEEE1800, which lets you protect Verilog files using the IEEE Verilog standard and VHDL files using the IEEE VHDL standard.
  • The new mechanism IEEE 1735, which provides versioning for the encryption of pragma definitions and use models.

对于IP Vendor 或公司内部会使用多家EDA 工具,强烈建议使用1735 来加密,否则需要给每家都加一套,有版本对不齐的风险。1735 的好处是,既可以用用户定义的密钥加密也可以用三家EDA 公司公开的密钥加密,三家EDA 的公开密钥是:

如,用M 的工具加密RTL 用C 的工具去读取:

命令:vcom +protect=r.vhdlp r.vhd 将左侧带有C 家公开密钥的RTL 加密成右侧内容:

同样可以用C 的工具加密,用M 的工具去读取:

除了用公开密钥外,还可以用用户自定义密钥,以C 家工具为例:

  1. 生成私钥,默认的密钥长度是512 bits, 密钥长度可以定义为256 ~ 4096 bits. 密钥越长安全性越高,执行如下命令会生成两个文件:key.pub 跟key.prv. xmprotect -messages -rsakeygenerate -keylength 512 -keyname <name>
  2. 密钥格式转换,用UNIX 命令uuencode 将二进制密钥转换成base 64 格式: uuencode -m key.pub <file>
  3. 配置加密参数,将第二步转换后的密钥赋给key_public_key, 推荐的data_method 是AES128-CBC 和AES256-CBC. <AES: Advanced Encryption Standard, CBC: Cipher Block Chaining >. `protect version = 1 `protect data_method = "AES128-CBC" `protect key_keyowner = "Cadence Design Systems.", key_method = "rsa", key_keyname = "cds_rsa_key", key_public_key = <generated base 64 key>
  4. 将加密后的RTL 跟key.prv 一起提供给用户。
  5. 用户将key.prv 所在路径指给环境变量NCPROTECT_KEYDB 即可。

至于每家EDA 公司各自的加密方式都比较简单,也不需要密钥,如C 家用如下命令即可:

ncprotect -autoprotect -synthesis output_netlist:cleartext -synthesis viewers:debugall

加密后的IP 不能被通过如下方式访问内部对象:

  • Tcl, SimVision, and programming interfaces, including PLI/VPI, VHPI, and C interface.
  • Schematic generators or state machine extraction.
  • Warning and error messages from protected regions are either suppressed or generic messages are issued.

对于数字实现端而言,elaborate 之后就是GTECH, 如果工程师想要debug 只能去抠扒GTECH 了,综合之后的netlist 不要加密,应该到目前为止P&R 工具都不支持加密的netlist. 另外,有些IP Vendor 懒得加密,直接丢一个GTECH 给用户,强烈建议,如果非此不可请为每家EDA 公司都提供一套配套的GTECH, 否则一定会有驴头马嘴的事情发生,不是驴头得错也不是马嘴得过,纯粹是焦仲卿他妈的锅。

还有一个上联没有对出适合的下联,邀请广大驴友来对:

上联:ocv, aocv, socv, 喂饭喂得唯唯诺诺,大爷有钱为所欲为

冬至就要到了,可以准备着开始发春了,阴冷得时候可以阴阳怪气,阳光明媚得时候一定要岁月静好。

本文分享自微信公众号 - 陌上风骑驴看IC(MoShangFengQiLv),作者:陌上风骑驴

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Glitch, Glitch, Glitch

    在IC 圆桌派群,每每提及power 都会说到glitch power, 数字电路实现中有许多重名的概念,如DRC 可回顾《数字电路实现中的DRC》如Glitc...

    老秃胖驴
  • 论职场 | 我们的职场生命有多长?

    最新一期《GQ talk》梁文道对谈马家辉聊职场关系,聊到退休,他们都认为这件事不会在自己身上发生。也是,不论用哪种价值体系衡量,他们都算得上现世的凤毛麟角,所...

    老秃胖驴
  • 论功耗 | 低功耗检查

    低功耗检查是低功耗设计必不可少的一个环节,此处所谓的低功耗设计指:多电压域设计,实现过程中在原有功能逻辑基础上插入低功耗单元,如:isolation cell,...

    老秃胖驴
  • NeurIPS图表示学习研讨会录取论文揭晓:92篇论文看懂图表示学习

    10 月 18 日,2019 中关村论坛平行论坛 ——AI WORLD 2019 世界人工智能峰会在北京启幕。新智元杨静、科大讯飞胡郁、微软王永东、华为王成录、...

    新智元
  • Windows和Android平台上的勒索软件(CS CY)

    恶意软件的扩散性和复杂性急剧增加,并不断演变。最近勒索软件不分青红皂白地对用户进行迫害,因此急切需要有效的侦测技术来防止其进一步损害。于是,勒索软件引起了网络空...

    奥斯特洛夫斯萌
  • MMD_4b_SVD

    Dimensionality Reduction SVD intro property example interpretation Dimensionalit...

    用户1147754
  • [PHP] 设计一个可扩展的用户登陆系统

    1. 大部分互联网业务中 , 用户登陆功能是非常常见的模块 , 针对登陆功能的数据库设计常见的是下面这样的

    陶士涵
  • MBR勒索木马再度来袭:GoldenEye分析

    早在今年上半年,破坏力极强的修改MBR并加密MFT (Master File Table)的勒索木马Petya就引起了杀毒厂商的高度关注,然而在今年下半年360...

    FB客服
  • MariaDB 加密特性及使用方法

    MariaDB在10.1.3版本中加入了支持表加密和表空间加密的特性,在10.1.7版本加入了支持binlog加密的特性,这使得我们可以对数据文件和binlog...

    腾讯云数据库团队
  • Django之ORM数据库

                django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqli...

    超蛋lhy

扫码关注云+社区

领取腾讯云代金券