软件保护及应用安全:了解战场
A.Main1 P.C. van Oorschot2
1Cloakware Corporation,Ottawa,Canada
2Computer Science,Carleton University, Ottawa, Canada
摘要. 我们对软件保护和应用安全进行 a state of the art 说明.讨论了应用安全与数据安全、网络安全、软件安全之间的关系。描述了危害软件的三个简单的模型。为了改善软件的安全性,就必须更好地了解攻击本身的特性,我们调查软件攻击方法以及攻击工具。并给出了软件应用的简单的软件安全观,并利用说明性的举例,来生成软件安全应用要求列表。
1引言
在20多年前,在网络系统中对包括编码控制、存储控制、信息流控制、推断控制以及备份和恢复程序等保护数据的的方法的研究科学的过程中,Denning[22]定义了数据安全。其中,编码控制也得到了学术界的高度重视,重要强调包含密钥的经典数学方法的数据处理算法-例如针对机密性的加密算法,以及信息鉴定代码和实时鉴定的数字签名算法,数据来源鉴定,完整性或者认可。应用密码学包含了附加的实际的应用价值---例如数据鉴定和关键管理协议,以及执行事项。完全安全的基础架构现在已应用到实际中,例如Kerberos认证服务[56]和更强大的(或相当复杂的)密钥以及PKI(Public-Key Infrastructure)的证书管理系统。
然而,为网络信息系统安全性服务远不止提供保护数据,已编码的密钥材料,和证书。通过客户服务器体系结构,从基于主框架结构的计算机基础结构到当今因特网的全局连通性的转变,导致了大批的新的安全威胁和挑战。确实,准确定义“security”的含义是一件很困难的事-普遍认同的是保护“具有价值的东西”并"对抗具有威胁的操作"。
更正式的定义(例如,查阅Bishop[5])安全通常的定义相近与安全政策,它定义了典型的与存储资源(内存读/写,CPU,通讯端口,输入输出设备,等等)有关的动作,如允许或不允许。方法,工具或者执行政策的程序被称为安全机制。一个系统或者处在允许状态或者处在不允许状态;这些状态通常是在理论上精确定义的。攻击是指对安全构成威胁的操作(向不安全状态的运动)。安全的目标是阻止,探测和揭示攻击。
实际中,当然,这种情况时相当模糊的。政策是利用经常不准确的和不完全的一般的语言进行描述如什么用户,管理员和入侵者被允诺去进行操作。典型的是他们既没有被明确的表达也没有描述---部分原因是对安全标准的要求的错误理解,和准确描述的困难。甚至专家也发现对一特定环境下的准确定义所有相关的威胁(安全的隐患)是一项有挑战的工作。由于他们庞大的数量和不断变化的性质,事实上定义很难总是与相关的类型的攻击,攻击的层次,可探测执行的细节以及复杂的保护机制相符合。
在本文中,我们将利用一部分章节来详细阐述文章的架构,其中特别关注应用安全,软件保护,和与商业实务相关的软件安全。我们一直在寻找,使软件保护和它的错综复杂的关系的能被容易地理解一种更好的方式,并将我们自己更好的定位,来改善软件安全。这就使得对the state of the art 中的攻击工具和方式研究成为必要。最后,本文内容结构安排如下。在第2节中,我们分析总结出三种不结构的安全,其中每一种类型都在0、4应用安全中起着重要的作用。第三节讨论了实际的威胁的模型。第四节考虑了软件攻击的方式以及入侵攻击是如何发展起来的。第五节,对入侵攻击者的使用的工具进行研究。第六节提供了为阐述软件保护的特定的说明性的例证。第七节总结出软件应用的安全观,并列出了特定软件安全的必须条件。第八节,最后总结得出结论。
2 应用安全和结构类型
我们通常将应用安全定义为针对威胁(潜意识地包含现在未知的)的软件应用保护。我们详细阐述如下。通过软件应用(察看第七节),我们不能将我们仅仅限制在OSI1层―7感觉层122222(例如,察看[54])的应用,也不能只研究客户机上的终端用户应用。从我们的观念出发,应用安全包括,要求或者依赖于具有内在联系的三种不同结构的安全,如下所示:
1、数据安全 这种安全主要关注的保护数据的可靠性和完整性,特别是在数据传输和存储过程中数据安全(上面是cf.Denning对数据安全的定义)。我们注意到
G)数字式权利管理(DRM) 。
DRM 系统允许用户下载数字式内容对个人计算机和演奏它有限的时间。故意地, DRM 服务器只寄发数据到合法的球员;当请求被做, 球员必须证实自己(安全代码) 。这设定服务器球员对话键保证被编成密码的内容是没拦截在运输(数据保密) 。服务器检查如果球员有被取消在送内容之前。球员保护了认证的关键材料使用软件保护。球员并且检查本身为窜改, 和某些系统组分(为表现限制) 不是窜改有抵抗性。在查出窜改, 它警告服务器在美满的请求期间。废止或窜改的侦查可以要求用户软件升级[ 34 ] 。内容被演奏被解码使用美满的钥匙, 被回报和即被显示在屏幕产品。水印增加并且美满的决议轻微地被贬低在rendering 期间。评论: 软件保护是需要的保护提交算法,并且掩藏美满的钥匙、被解码的内容, 和水印应用。被回报的内容不掩藏, 仅被考虑的更加低值的对攻击者。球员必须是堵塞器抗性防止"外流o?" 内容。
7软件安全: 应用看法和要求
一个被简化的看法是, 应用是运行在硬件和的软件操作数据。一张更加现实的图片是, 应用依靠反过来依靠仁和设备驱动程序通信的一个操作系统与hardware.The 应用也许被分布横跨各种各样的服务器和通信横跨网络的客户。因而在广义, 所有软件、参与的硬件和数据是应用的一部分, 和是因而介入在应用安全。这里我们将观看所有软件, 包括系统和操作系统软件, 作为应用, 和包括软件跑在所有类型设备- 不仅终端用户个人计算机, 每sonal 通信设备和个人数字助理, 而且服务器,开关、防火墙、路由器, 和其它网络设备。
简化的模型图1 代表应用作为软件
处理那输入数据, 操作它和输出数据。软件介入了在输入- 输出处理是卓越的从数据。在敌对环境, 应用的输入- 输出数据也许理想地被保护数据保密技术; 软件处理这样数据也许被硬化软件保护技术。模型分离内部数据入锁上材料和其它内部数据。帮助定义软件安全要求(下面), 以下应用组分被突出。
1. 输入软件。读数据入一个内部表示法的软件处理。如果输入被加密保护, 输入软件
功能包括数据解密、正直证明, 等。
2. 产品软件。给产品媒介的软件(即RAM 写数据,CD, 插口) 在处理以后。如果输出数据加密保护, 产品软件功能然后包括资料加密, 正直处理, 等。应用经常是节目链子, 但典型地在
一些指向一些数据必须输出在"清楚", 譬如对屏幕。
3. 内部数据。数据由应用初始化, 数据读入内部表示法, 或数据被计算在应用(即中间体之内
价值或为准备产品) 。
4. 关键材料。特点是上限值的一个子集内部数据对攻击者。尤其, 这也许包括密码钥匙(即必须保留私有或正直必须被保证),安全重要数据和与特权相关的数据。
上述看法, 和第6节 例子, 刺激以下, 我们提出作为应用的高级软件安全要求一张部份名单。它满足要求软件保护, 也许并且要求安全代码。
1. 巩固输入。认证, 检验, 数据掩藏和正直输入对应用。(例子方法: PKI, 区域检查, 型
检查, 数字签名, 检查总和, 白色箱子密码学。)
2. 巩固产品。认证和掩藏应用数据投入。(例子方法: 相似与那些为巩固输入。)
3. 数据掩藏。掩藏的数据和关键材料从直接存取(.4.2)静态或动态分析。(例子方法: 迷惑, 代码转换, 封皮, 及时解密, 自已修改代码, 技术反对分析用工具加工即反调试器技术。)
4. 算法掩藏。掩藏的算法和计算从直接存取(.4.2) 静态或动态分析。(例子方法: 看数据掩藏。)
5. 堵塞器抵抗。做软件diffcult 修改或窜改。这可以 包括静态和动态堵塞器侦查即查出正直侵害软件应用或它的操作环境的任何组分。(例子方法: 许多那些列出了为数据掩藏上述; 代码签字和动态自检技术。)
6. 损伤缓和。前摄和易反应的战略为保护折襞基础设施或产品安装信息库一旦应用减弱。(例子方法: 废止、翻新, 软件变化。)
8 结束语
多数攻击在今天互联网环境里利用软件。许多这些导致攻击者取得对应用的施行环境控制。
这带领未信任的主机威胁模型(.3) 进入相关性, 导致二观察。1) 威胁固有在这个模型必须演讲在应该是软件设计过程的一部分为applica- 的安全模型tions 。2) 软件保护该当重要性在软件产业。应用单一地包括功能代码, 错误处理代码, 和安全code(.2), 没有软件保护硬化这些代码小组, 典型地未达到在安全级别上被要求为保险柜, 可靠的基于软件的系统。
我们相信软件产业, 和因而我们的工业界(依靠
沉重在基于软件的系统), 是在一个危险地飘摇的状态由于
攻击者利用软件弱点和窜改的舒适
基于软件的系统。软件产业、它的安全专家, 和学术研究团体, 丢失地面在争斗反对攻击者
计算机软件系统。新拷贝保护计划是残破的在他们的商业introduction;new watermarking 计划之后迅速打破
由薄脆饼干;堆栈 溢出攻击继续控制被报告的电脑名单软件事件; 并且损伤由计算机蠕虫和病毒造成继续每年增加。我们相信, 有学会从薄脆饼干社区。工具和资源线上可以得到, 自由地分享并且由薄脆饼干支配, 象数字是两个震惊和令人烦恼,被盗版的软件应用和知识产权枣树(包括电影并且音乐) 。这要求对研究的更加巨大的关注对软件安全-产业和学术界- 和对可利用的软件保护的更加巨大的用途技术。这提出巨大的机会为安全研究员。
软件安全是一个高度学科领域, 涉及专家从
不同的区域计算的科学和设计有: 编程语言, 操作系统, 编译器, 软件工程, 网络安全和
密码学。我们期待, 以后10 年, 许多前进将来
从成功地跨过几个这些之中领域的研究员。
致谢:第二位作者承认加拿大的全国科学并且工程研究委员会(NSERC) 为资助NSERC 发现格兰特和他的加拿大研究椅子在网络和软件安全。
参考文献
1. C. Adams, S. Lloyd, Understanding Public-Key Infrastructure (2nd edition),
Macmillan Technical, 2002.
2. Ahpah Software Inc. (Moutainview, California), http://www.ahpah.com/.
3. Alcohol Soft Development Team, http://www.alcohol-soft.com/.
4. L. D’Anna, B. Matt, A. Reisse, T. Van Vleck, S. Schwab, P. LeBlanc, “Self-
Protecting Mobile Agents Obfuscation Report”, Network Associates Labs Report
#03-015, 30 June 2003.
5. M. Bishop, Computer Security: Art and Science, Addison Wesley, 2003.
6. D. Bleichenbacher, “Chosen Ciphertext Attacks against Protocols Based on
RSA Encryption Standard PKCS #1”, Advances in Cryptology ? CRYPTO’98,
Springer-Verlag LNCS 1462 (1998), pp.1?12.
7. CAIDA (Cooperative Association of Internet Data Analysis), CAIDA Analysis of
Code-Red,http://www.caida.org/analysis/security/code-red/,visited5Dec.2003.
8. G. Caprino, http://www.backerstreet.com/rec/rec.htm/, “REC - Reverse Engi-
neering Compiler”, accessed 29 December 2003.
9. CMU Software Eng. Inst., Definition of Software Risk Management, accessed 5
Dec. 2003, http://www.sei.cmu.edu/programs/sepm/risk/definition.html.
10. S. Cesare, “Linux Anti-debugging Techniques (Fooling the Debugger)”, Jan. 1999,
http://www.uebi.net/silvio/linux-anti-debugging.txt, accessed 29 Dec. 2003.
11. CERT Advisory CA-1996-26 Denial-of-Service Attack via ping (“Ping of Death”),
http://www.cert.org/advisories/CA-1996-26.html, accessed 29 Dec. 2003.
12. H. Chang, M. Atallah, “Protecting Software Code by Guards”, pp.160?175, Proc.
1st ACM Workshop on DRM (DRM 2001), Springer-Verlag LNCS 2320 (2002).
13. S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot, “White-Box Cryptography and
an AES Implementation”, Proc. 9th International Workshop on Selected Areas in
Cryptography (SAC 2002), Springer LNCS 2595 (2003).
14. C. Cifuentes, Reverse Compilation Techniques, Ph.D. thesis, Queensland Univer-
sity of Technology (Australia), Dept. of Computing Science, 1994.
15. C. Cifuentes, K.J. Gough, “Decompilation of Binary Programs”, Software ? Prac-
tice and Experience, vol.25 no.7 (July 1995), pp.811-829.
16. C. Cifuentes, M. Van Emmerik, “UQBT: Adaptable Binary Translation at Low
Cost”, IEEE Computer vol.33 no.3 (March 2000), pp.60-66.
17. C. Cifuentes, T. Waddington, M. Van Emmerik, “Computer Security Analysis
through Decompilation and High-Level Debugging”, Workshop on Decompilation
Techniques, pp.375-380, 8th IEEE WCRE (Working Conf. Rev. Eng.), Oct.2001.
18. C. Cifuentes, M. Van Emmerik, N. Ramsey, B. Lewis, “Experience in the Design,
Implementation and Use of a Retargetable Static Binary Translation Framework”,
Jan.2002, http://research.sun.com/techrep/2002/smli tr-2002-105.pdf.
19. F.Cohen,“OperatingSystemProtectionThroughProgramEvolution”,Computers
and Security vol.12 no.6, 1 Oct. 1993, pp. 565?584.
20. C.S. Collberg, C. Thomborson, “Watermarking, Tamper-Proofing, Obfuscation -
Tools for Software Protection”, IEEE Trans. Soft. Eng., vol.28 no.6 (June 2002).
21. DataRescue Inc. (Li`ege, Belgium), IDA Pro 4.6 Disassembler and Debugger, site
accessed 29 Dec. 2003, http://www.datarescue.com/idabase/.
22. D. Denning, Cryptography and Data Security, Addison Wesley, 1982.
23. Ed Felton, 28 November 2001, Declaration in Support of Motion for Sum-
mary Judgement, in DVDCCA v. McLaughlin, Bunner, et al., Case No. CV?
786804, Superior Court of the State of California, County of Santa Clara, U.S.A.,
http://www.e?.org/IP/Video/DVDCCA case/20011128 felten decl.html.
24. Fravia’s pages of reverse engineering (cracker’s viewpoint), site accessed 29 Decem-
ber 2003, http://fravia.anticrack.de/.
25. GNU Project, GDB: The GNU Project Debugger, site accessed 29 December 2003,
http://www.gnu.org/software/gdb/documentation/.
26. GNU Project, objdump binary utility, site accessed 29 December 2003,
http://www.gnu.org/software/binutils/manual/html node/binutils toc.html/.
27. O. Goldreich, R. Ostrovsky, “Software Protection and Simulation on Oblivious
RAMs”, Journal of the ACM, vol.43 no.3 (May 1996), pp.431?473.
28. V. Golubev, “White, Grey and Black Hackers Hats”, 28 Jun. 2003,
http://www.crime-research.org/eng/news/2003/06/Mess2803.html, accessed 29
Dec. 2003, Computer Crime Research Center web site.
29. J. Gosler, “Software Protection: Myth or Reality?”, Advances in Cryptology ?
CRYPTO’85, Springer-Verlag LNCS 218 (1985), pp.140?157.
30. HeaventoolsSoftware(Vancouver,B.C.,Canada),PE Explorer utility,siteaccessed
29 Dec. 2003, http://www.heaventools.com/.
31. R. Kennell, L.H. Jamieson, “Establishing the Genuity of Remote Computer Sys-
tems”, Proc. of 12th USENIX Security Symposium (August 2003), pp.295-310.
32. B. Horne, L. Matheson, C. Sheehan, R. Tarjan, “Dynamic Self-Checking Tech-
niques for Improved Tamper Resistance”, pp.141?159, Proc. 1st ACM Workshop
on Digital Rights Management (DRM 2001), Springer LNCS 2320 (2002).
33. M. Howard, D.C. LeBlanc, Writing Secure Code, 2nd ed., Microsoft Press, 2002.
34. M. Jakobsson, M.K. Reiter, “Discouraging Software Piracy Using Software Aging”,
pp.1?12, Proc. 1st ACM Workshop on Digital Rights Management (DRM 2001),
Springer-Verlag LNCS 2320 (2002).
35. D.M. Kienzle, M.C. Elder, “Recent Worms: A Survey and Trends”, pp.1-10 in [51].
36. G.H. Kim, E.H. Spa?ord, “The Design and Implementation of Tripwire: A File
System Integrity Checker” (Feb. 1995), pp.18?29, Proc. 2nd ACM Conference on
Computer and Communications Security (1994).
37. C. Linn, S. Debray, “Obfuscation of Executable Code to Improve Resistance to
Static Disassembly”, pp.290-299, Proc. 10th ACM Conference on Computer and
Communications Security (ACM CCS 2003), Wash. D.C., Oct. 2003 (ACM Press).
38. P.S. Magnusson, M. Christianson, J. Eskilson et al., “Simics: A full system simu-
lation platform”, IEEE Computer vol.35 no.2 (Feb.2002), pp.50-58.
39. A.J. Menezes, P.C. van Oorschot, S.A. Vanstone, Handbook of Applied Cryp-
tography, CRC Press, 1996 (5th printing 2001, with corrections), full text at
http://www.cacr.math.uwaterloo.ca/hac/.
40. NuMega (Braeside, Victoria, Australia), SoftICE 4.0 kernel mode debugger,
http://www.microway.com.au/compuware/softice.stm, accessed 29 Dec. 2003.
41. O. Yuschuk (Olly), OllyDbg analysing debugger for MSFT Windows (binary code
to assembler), http://home.t-online.de/home/Ollydbg/, accessed 29 Dec. 2003.
42. Openlaw DVD/DeCSS Forum, Frequently Asked Questions (FAQ), accessed 29
Dec. 2003, http://cyber.law.harvard.edu/openlaw/DVD/dvd-discuss-faq.html.
43. plex86.org, Plex86 x86 Virtual Machine Project, http://plex86.org, site accessed
29 December 2003.
44. Preemptive Solutions Inc. (Cleveland, Ohio), Dotfuscator, site accessed 29 Dec.
2003, http://www.preemptive.com/.
45. Program-Transformation.Org, Reengineering Wiki, http://www.program-
transformation.org/twiki/bin/view/Transform/ReengineeringWiki, site accessed
29 December 2003.
46. Program-Transformation.Org, The Program Transformation Wiki, De-
Compilation page, site accessed 29 December 2003, http://www.program-
transformation.org/twiki/bin/view/Transform/DeCompilation/.
47. Red Hat, Inc. (2002), Red Hat Linux 9: Red Hat Linux Security Guide, Chapter 2 ?
Attackers and Vulnerabilities, http://www.redhat.com/docs/manuals/linux/RHL-
9-Manual/security-guide/, accessed 29 December 2003.
48. E.S.Raymond,JargonFileversion4.4.6,http://www.jargon.8hz.com/,accessed29
December 2003. (See also print version: Eric S. Raymond (ed.), The New Hacker’s
Dictionary, third edition, 1996, MIT Press.)
49. E. Rescorla, SSL and TLS: Designing and Building Secure Systems, Addison Wes-
ley, 2001.
50. T. Sander, C.F. Tschudin, “Protecting Mobile Agents Against Malicious Hosts”,
pp.44?60, Mobile Agents and Security, G. Vigna (ed.), Springer LNCS 1419 (1998).
51. S. Savage, ed., Proceedings of the 2003 ACM Workshop on Rapid Malcode
(WORM’03), Washington D.C., 27 October 2003, ACM Press.
52. F. Schneider (ed.), Trust in Cyberspace, report of the Committee on Informa-
tion Systems Trustworthiness, Computer Science and Telecommunications Board,
(U.S.) National Research Council (National Academy Press, 1999).
53. B. Schwarz, S. Debray, G. Andrews, “Disassembly of Executable Code Revisited”,
pp.45?54, Proc. 9th IEEE WCRE (Working Conference on Reverse Engineering),
Nov.2002, Richmond, VA.
54. W. Stallings, Data and Computer Communications, 7th ed., Prentice Hall, 2004.
55. R.M.Stallman,R.H.Pesch,S.Shebsetal.,Debugging with GDB: The GNU Source-
Level Debugger, GNU Press, 2002. Online version: ninth edition, for GDB version
5.1.1, Jan. 2002, http://www.gnu.org/manual/gdb-5.1.1/, accessed 29 Dec. 2003.
56. J.G. Steiner, C. Neuman, J.I. Schiller, “Kerberos: An Authentication Service for
Open Network Systems”, Proc. Winter 1988 USENIX Conf., pp.191-201.
57. M. Stytz, J. Whittaker, “Caution: This Product Contains Security Code”, pp.86-
88,IEEE Security & Privacy vol.1no.5(Sept./Oct.2003),IEEEComputerSociety.
58. Symantec, “What is the di?erence between viruses, worms, and Trojans?”,
http://service1.symantec.com/SUPPORT/nav.nsf/pfdocs/1999041209131106,Oc-
tober 1 2003.
59. Technologismiki (Athens, Greece), Hackman Hex Editor 7.05, Hackman Disassem-
ber 8.01, Hackman Debugger, http://www.technologismiki.com/en/index-h.html,
accessed 29 Dec. 2003.
60. P.C. van Oorschot, “Revisiting Software Protection”, pp.1?13, Proc. of 6th Inter-
national Information Security Conference (ISC 2003), Bristol, UK, October 2003,
Springer-Verlag LNCS 2851 (2003).
61. N. van Someren, A. Shamir, “Playing Hide and Seek with Keys”, pp. 118?124,
Financial Cryptography’99, Springer-Verlag LNCS 1648 (1999).
62. J. Viega, G. McGraw, Building Secure Software, Addison Wesley, 2001.
63. J. Vinciguerra, L. Wills, N. Kejriwal, P. Martino, R. Vinciguerra, “An Experimen-
tation Framework for Evaluating Disassembly and Decompilation Tools for C++
andJava”,Proc.10thIEEEWCRE(WorkingConferenceonReverseEngineering),
Victoria, Canada, Nov.2003.
64. VMWare Inc., VMWare Workstation (virtual machine), http://www.vmware.com,
site accessed 29 December 2003.
65. N. Weaver, V. Paxson, S. Staniford, R. Cunningham, “A Taxonomy of Computer
Worms”, pp.11?18 in [51].
66. J. Wilander, M. Kamkar, “A Comparison of Publicly Available Tools for Dynamic
Bu?er Overflow Prevention”, pp.149-162, Proc. of NDSS’03 (Internet Society):
Network and Distributed System Security Symp., Feb. 2003, San Diego.
67. Winternals Software (Austin, Texas), FileMon monitoring tool, site accessed 29
December 2003, http://www.winternals.com.