A. 芯片解密过程
芯片解密过程涉及多步骤的技术操作。首先,侵入型攻击的第一步是揭开芯片封装,即“开盖”或“DECAP”。通常有两种方法:一是完全溶解芯片封装,二是仅移除硅核上方的塑料封装。第一种方法需要将芯片固定在测试夹具上,并利用绑定台进行操作。第二种方法则较为简便,适合在家庭环境中完成。
揭开封装后,需要使用小刀去除芯片上的塑料部分,用浓硝酸去除芯片周围的环氧树脂。加热的浓硝酸可以溶解掉封装层而不损害芯片及连线。这一过程需在干燥环境下进行,因为水分可能会侵蚀已暴露的铝线连接,导致解密失败。
接下来,在超声池中用丙酮清洗芯片,去除残余硝酸,并进行浸泡处理。随后,寻找保护熔丝的位置,并将其暴露在紫外光下。通常使用100倍放大倍数的显微镜,从编程电压输入脚的连线跟踪进去,找到保护熔丝。如果没有显微镜,可以采用简单的方法,如将芯片的不同部分暴露到紫外光下并观察结果。操作时需用不透明纸片覆盖芯片,以保护程序存储器不受紫外光影响。暴露保护熔丝5~10分钟后,使用简单的编程器读取程序存储器的内容。
对于采用防护层保护EEPROM单元的单片机,使用紫外光复位保护电路是不可行的。这时,通常使用微探针技术读取存储器内容。将芯片置于显微镜下,很容易找到从存储器连到电路其他部分的数据总线。在编程模式下,通过将探针放置在数据线上,可以读取所有所需数据。重启读过程,连接探针到另一数据线上,就能读取程序和数据存储器中的所有信息。
另一种可能的攻击手段是利用显微镜和激光切割机等设备,寻找保护熔丝及其相关信号线。通过切断从保护熔丝到其他电路的某根信号线(或切割整个加密电路),或连接1~3根金线(通常称为FIB),可以禁止保护功能。这样,使用简单的编程器就能直接读取程序存储器的内容。
尽管大多数普通单片机都具备熔丝保护功能,但由于这些芯片并非专门设计用于制作安全产品,往往缺乏有效的防范措施,安全级别较低。加之单片机应用广泛,销售量大,厂商间频繁委托加工与技术转让,导致大量技术资料外泄。因此,利用该类芯片的设计漏洞和厂商的测试接口,通过修改熔丝保护位等侵入型攻击手段读取单片机内部程序变得相对容易。
B. 计算机里面什么是递归
在数学和计算机科学中,当一类对象或方法可以由两个属性定义时,它们表现出递归行为:
简单的基线条件---不使用递归产生答案的终止情况
一组规则将所有其他情形缩减到基线条件
例如,以下是某人祖先的递归定义:
某人的父母是他的祖先(基线条件)
某人祖先的祖先也是他的祖先(递归步骤)
斐波那契数列是递归的经典例子:
Fib(0) = 1 基线条件1;
Fib(1) = 1 基线条件2;
对所有整数n,n > 1时:Fib(n) = (Fib(n-1) + Fib(n-2))。
许多数学公理基于递归规则。例如,皮亚诺公理对自然数的形式定义可以描述为:0是自然数,每个自然数都有一个后继数,它也是自然数。通过这种基线条件和递归规则,可以生成所有自然数的集合。
递归定义的数学对象包括函数、集合,尤其是分形。
递归还有多种开玩笑的“定义”。
非正式定义
俄罗斯娃娃或俄罗斯套娃是递归概念的一个物理艺术例子。
自1320年乔托的Stefaneschi三联画问世以来,递归就一直用于绘画。它的中央面板包含红衣主教Stefaneschi的跪像,举着三联画本身作为祭品。
M.C. Eschers 印刷画廊 (1956)描绘了一个扭曲的城市,其中包含一个递归包含图片的画廊,因此无限。