发布时间:2008-11-21阅读:1005
智能卡软件的开发遵照了软件开发原则,不管用的是那种开发模型(瀑布型、生命期模型、螺旋形或其他),一般的条件必须遵守。
开发用的计算机总是需要一个单独的完全隔离的网路,不允许任何外部的访问。开发工具,诸如汇编器和仿真器都是软件程序包,其工作的正确性必须经过指定的测试。某些时候甚至使用两个不同的汇编器,以确保结果的正确。使用来源不是完全可以追踪的软件,基本上是禁止的。因为这样的软件将提供一种可能的手段来操纵开发工具而结果是修改了所产生的程序。
1)保护:开发原则
就像硬件开发一样,没有说明文件的功能可能被构建在软件中。例如,插入用来读出任何存储区的命令就有可能把智能卡的黑箱测试变成白箱测试。如果这些命令被不小心留在操作系统中,就可能用它们来读出真正智能卡的秘密密钥。为了消除这种攻击的可能性,作为一项原则哑命令的建立是被禁止的,即便使用它们能节约宝贵的开发时间。
另一个原则是程序员决不单独承担一个项目,考虑到软件的质量保证,它已经是被禁止了的。出于安全的原因同样要遵守“四只眼”的原则。至少有两个开发者在一起工作,任何攻击必须在两个人都同意时才能实施,这样就有效地阻止内部人员的攻击。此外,内部源代码的复审要严格,这样既保证了代码质量,同时也管理了开发过程。
一旦软件开发完成,整个源代码和它的功能经常由一独立的测试机构检查,以作为软件评估①的一部分,执行这项费时而又费钱的测试的主要理由是检查软件的错误,但也包括了使开发者不能实现隐藏一匹特洛伊木马在操作系统中的目的。在实践中,只有审阅全部代码才能发现这类问题,因为有经验的程序员确实可以找到能不被黑箱测试发现的方法与技术把一匹特洛伊木马隐藏在程序中。
2)保护:分散知识
若数人共同完成一个软件,结果将较能经得起攻击,因为它包含了全体人员的不同意见和经验之故。分散知识(共享秘密)的原则和“任何人知道任何事的任何情况”的观念是相对立的。在开发秘密部件时,关于秘密部件的完整知识不应授予某一个人,因为此人将成为攻击的目标。在许多军事领域,在开发阶段中秘密被分割给几个人,虽然可能和专家去讨论特殊的专题,但永远不会有人知道每一件事。
类似的情况出现在智能卡操作系统的完工中。为了增加操作系统的灵活性,一些表格、程序代码和配置数据都将在此时装入EEPROM之中。这个方法也有保密的一面,卡制造商接收了用于生产制作掩膜的汇编ROM代码,但却不可能获得完整的操作系统知识。因为,部分操作系统是装在EEPROM之中,而芯片制造商是不知道的,他不能靠分析ROM代码去发现操作系统完整的安全机制和功能。
上一篇:智能卡的测试模块
下一篇:工业控制计箅机系统的设计过程