用户名: 密码: 验证码:
软件安全开发关键技术的研究和实现
详细信息    本馆镜像全文|  推荐本文 |  |   获取CNKI官网全文
摘要
软件是在人们使用计算机进行工作和学习时不可或缺的一部分。目前,随着计算机以及互联网技术的发展,软件也面临着越来越多的安全威胁,这就往往会给软件开发商以及软件用户带来安全风险。因此软件安全问题得到了广泛的关注。
     对于软件开发商来说,为了使软件能够应对目前的安全威胁,就必须开发出更加安全的软件产品。于是他们对于软件安全问题的关注焦点在于:“如何才能开发出安全的软件产品?”遗憾的是,传统的软件工程中使用的瀑布模型、螺旋模型和增量模型等软件开发模型并未对软件安全进行过多的关注,这些模型的使用并不能使企业的软件产品得到安全性的保障。传统的软件开发模型需要进行安全方面的改造。
     为了解决这个问题,本文的工作主要是在软件安全生命周期的基础上提出了一个改进的适合于中小型企业的软件安全开发流程,使软件安全能够覆盖到整个软件生命周期,提高软件的安全性水平。本文还对模型中应用在软件开发的编码阶段、测试阶段以及发布阶段的三项软件安全关键技术进行了详细的研究和讨论。另外,还针对该模型设计了一个软件安全开发管理平台,使模型能够更好的应用到企业实际的软件开发过程中去。该平台经过多家单位一段时间的试用,得到了较好的评价。
     本文的主要成果如下:
     1.从版权保护和安全漏洞两个方面对软件目前面临的安全威胁进行了总结。
     2.对目前主要的软件安全开发流程进行了介绍,并对它们进行了比较和分析。
     3.基于目前主要的软件安全开发流程需要较多资源,中小型企业在应用过程中存在障碍的现状,本文在软件安全生命周期的基础上提出了一个改进的适合于中小型企业的软件安全开发流程,使软件安全能够覆盖到整个软件生命周期,并结合了软件版权保护,使软件产品安全性得到保证的同时,也使知识产权得到了保护。
     4.基于软件动态执行过程中的数据之间的依赖关系提出了动态数据依赖图的概念,并结合目前的动态水印算法,提出了基于动态数据依赖图的动态软件水印算法。该算法能够应用于软件的发布阶段,对软件的知识产权进行保护。经过试验证明算法有着较好的抵御混淆攻击的能力。
     5.提出了基于类度量的软件静态分析结果的优化排序算法。该算法综合利用三项对软件中的类进行度量的指标,对静态分析工具所产生的扫描结果进行优化排序,使排在结果列表前面的扫描结果具有较高的重要性,同时使开发人员在使用静态分析工具的效率得到提高。
     6.提出了使用动态数据依赖图对程序进行安全性分析的方法,然后在此基础之上提出了具有零误报特点的动态软件保护的算法以及针对Java应用的动态软件保护模型。该模型能够应用于软件的测试和发布阶段。经过实验证实,该模型能够较为有效的发现Java程序在执行过程中产生的安全问题,并能对Java程序进行较好的安全保护。
     7.针对改进的软件安全开发流程设计并实现了一个软件安全开发管理平台,目的是使企业在软件开发过程中能够更好的对软件安全开发流程进行应用,把软件开发的过程有效管理起来,尽可能早的发现并修复软件中的安全漏洞,使软件的安全性最终得到显著的提高。
Software is an indispensable part in our daily use of computer. Nowadays, as the development of the computer and Internet technology, software is faced with more and more security threats, which bring security risk to software companies and endusers. Therefore, the security problem of software is broadly concerned right now.
     From the perspective of software companies, In order for software to deal with current security threats, they must develop software products with higher security. So, their focus of the software security problem is "How to develop software products with high security?" Unfortunately, the traditional software development methodologies used in software engineering, such as waterfall model, spiral model and incremental model, do not concern about security. Therefore, these methodologies cannot make software more secure, and need security reform.
     To resolve this problem, the main work of this paper is proposing a revised software security development methodology basing on Security Development Lifecycle (SDL) which is suitable for small and medium organizations. This methodology covers whole lifecycle of software with security focus, and raises the security level of software products. Two techniques used in the methodology during test phase and release phase are discussed detailedly. In this paper we also design and implement a software security development management system, in order for companies to apply the methodology better. After a period time of trail in some organizations, this system received good rate.
     The chiefly achievements of this paper are as follows:
     1. This paper summarizes the security threats which software faced with from two aspects, copyright protection and security vulnerabilities.
     2. The chiefly software security development methodologies are introduced in this paper. Comparison and Analysis of them are also performed.
     3. Currently, the chiefly software security development methodologies do require a resource investment, and this brings a barrier for small organizations to apply them. Basing on this situation, this paper proposes a revised software security development methodology basing on SDL which is suitable for small and medium organizations. This methodology covers whole lifecycle of software with security focus. And accompanying with copyright protection technique, the intellectual property rights of software is protected while the security level is raised.
     4. Basing on the dependency among the data during the execution of software, this paper presents a concept of Dynamic Data Dependency Graph (D3G). Consulting current software watermarking algorithm, the D3G-based dynamic software watermarking algorithm is illustrated. This algorithm can be applied in release phase of software products, and it is proved with experiment that this algorithm is resilient to obfuscating attack.
     5. This paper presents a static analysis warnings prioritizing algorithm basing on three metrics of class measuring. This Algorithm ranks the warnings according to its importance, actionable warnings get a higher rank while false positive and trivial warnings get lower one. We believe this algorithm makes the user of static analysis tools more effective in decide which warning is going to be fixed.
     6. A method of software security analysis with D3G is proposed. And then presents dynamic software protecting algorithm, which has the feature of zero-false-positive, and the dynamic software protecting model for Java applications. This model can be applied in test phase and release phase of software products. It is proved with experiment that the model can inspect the security vulnerabilities during software execution, and can protect software against the attack utilizing the vulnerabilities.
     7. In this paper we design and implement a software security development management system, in order for companies to apply the methodology better and raise the security of software products.
引文
[1]Wikipedia. "Software engineering", http://en.wikipedia.org/wiki/Software_engineering
    [2]C Ghezzi, M Jazayeri, D Mandrioli. "Fundamentals of software engineering", 2002.
    [3]D Nce, D Anderew. "The Software Life Cycle", Butterworths.
    [4]Wikipedia. "Waterfall Model", http://en.wikipedia.org/wiki/Waterfall_model
    [5]B Boehm, "A Spiral Model of Software Development and Enhancement", ACM, 1986.
    [6]Wikipedia. "Spiral model", http://en.wikipedia.org/wiki/Spiral_model
    [7]J McDermid, P Rook. "Software Engineer's Reference Book", CRC Press,1993:15
    [8]A Cockburn, "Using Both Incremental and Iterative Development", STSC CrossTalk (USAF Software Technology Support Center),2008.
    [9]Gartner, http://www.gartner.com/
    [10]National Institute of Standards and Technology (NIST), http://www.nist.gov/
    [11]BSA, Sixth Annual BSA and IDC Global Software Piracy Study, http://www.bsa.org/,2008.
    [12]CERT, CERT statistics, http://www.cert.org/stats/
    [13]Common Weakness Enumeration (CWE), http://cwe.mitre.org/
    [14]Open Web Application Security Project (OWASP), "OWASP ASDR Project", http://www.owasp.org/index.php/Category:OWASP_ASDR_Project
    [15]Gary McGraw. "Software Security:Building Security In. Addison Wesley Professional". January 23,2006.
    [16]Open Web Application Security Project (OWASP), "The ten most critical web application security vulnerabilities",2007, http://www.owasp.org/index.php/Top_10_2007
    [17]Wikipedia, "Cross-site scripting", http://en.wikipedia.org/wiki/Cross-site_scripting
    [18]K Spett. "Cross-site scripting", Are your Web Applications Vulnerable, SPI Labs whitepaper.
    [19]MR Faghani, H Saidi. "Social Networks'XSS Worms", Proceedings of the 2009 International Conference on Computational Science and Engineering-Volume 04,2009. pp.1137-1141
    [20]Wikipedia, "XSS Worm", http://en.wikipedia.org/wiki/XSS_Worm
    [21]D Endler, The evolution of cross site scripting attacks, Whitepaper, iDefense Inc., 2002, http://www.cgisecurity.com/lib/XSS.pdf
    [22]S Fogie, J Grossman et al. "XSS Attacks:Cross Site Scripting Exploits and Defense",2007.
    [23]J Grossman, "Cross-site scripting worms and viruses", WhiteHat Security,2006.
    [24]Wikipedia, "SQL Injection", http://en.wikipedia.org/wiki/SQL_Injection
    [25]S McDonald. "SQL Injection:Modes of attack, defense, and why it matters", 2007.
    [26]P Finnigan. "Sql injection and oracle", Securityfocus.com,2002.
    [27]G Tassey. "The economic impacts of inadequate infrastructure for software testing", National Institute of Standards and Technology,2002.
    [28]S Lipner, M Howard. "The trustworthy computing security development lifecycle",20th Annual Computer Security Applications Conference (ACSAC 2004).
    [29]M Howard, S Lipner. "The Security Development Lifecycle", Microsoft Press, 2006.
    [30]Microsoft. "The SDL Reduces the Number and Severity of Vulnerabilities", http://www.microsoft.com/security/sdl/benefits/measurable.aspx
    [31]OWASP, "Comprehensive, Lightweight Application Security Process", http://www.owasp.org/index.php/Category:OWASP_CLASP_Project
    [32]G McGraw, "Software Security:Building Security In", Addison Wesley,2006.
    [33]MM Marco. "Producing secure software with security enhanced software development processes", (IN)SECURE Magazine, Issue-16, April,2008
    [34]B De Win, R Scandariato et al. "On the secure software development process: Clasp, sdl and touchpoints compared", Information and Software Technology, 2009. pp.1152-1171
    [35]MUA Khan, M Zulkernine. "On Selecting Appropriate Development Processes and Requirements Engineering Methods for Secure Software",33rd Annual IEEE International Computer Software and Applications Conference,2009. pp.353-358
    [36]Errata. "Integrating Security Into the Software Development Lifecycle", http://www.erratasec.com/ErrataSurveyResults.pdf
    [37]D Evans, D Larochelle. "Improving Security Using Extensible Lightweight Static Analysis", IEEE software,2002.
    [38]BSA, Software Piracy on the Internet:A Threat To Your Security,2009.
    [39]Pinch Media, Piracy in the App Store, http://www.pinchmedia.com/blog/piracy-in-the-app-store-from-360idev/
    [40]J Lacy, S Quackenbush et al. "Intellectual property protection systems and digital watermarking", Information Hiding, pp.158-168
    [41]谭貌,陈义,涂杰.“软件版权保护技术的研究与分析”,计算机应用与软件,2007
    [42]段钢.“加密与解密(第二版)”,电子工业出版社,2003.
    [43]Wikipedia, "Copy protection", http://en.wikipedia.org/wiki/Copy_protection
    [44]Wikipedia. "Disassembler", http://en.wikipedia.org/wiki/Disassembler
    [45]Wikipedia. "List of copy protection schemes", http://en.wikipedia.org/wiki/ List_of_co py_protection_schemes
    [46]M Atallah, J Li. "Enhanced smart-card based license management", IEEE International Conference on E-Commerce (CEC),2003.
    [47]C Collberg, C Thomborson, and D Low. "A taxonomy of obfuscating transformations",1997.
    [48]C Linn, S Debray. "Obfuscation of executable code to improve resistance to static disassembly", Proceedings of the 10th ACM conference on Computer and communications security,2003. pp.290-299
    [49]张立和,杨义先,钮心忻,牛少彰.“软件水印综述”,软件学报,2003
    [50]J Nagra, C Thomborson, C Collberg. "A functional taxonomy for software watermarking", Proceedings of the twenty-fifth Australasian conference on Computer science-Volume 4,2002
    [51]C Collberg, C Thomborson, and NZ Auckland. "Software Watermarking:Models and Dynamic Embeddings",1999.
    [52]RI Davidson, N Myhrvold. "Method and system for generating and auditing a signature for a computer program". September 24,1996.
    [53]A Monden et al. "A practical method for watermarking Java programs", Computer Software and Applications Conference,2000. COMPSAC 2000. The 24th Annual International,2000,191-197.
    [54]G Arboit. "A method for watermarking Java programs via opaque predicates", The Fifth International Conference on Electronic Commerce Research (ICECR-5), 2002.
    [55]J Nagra, C Thomborson. "Threading Software Watermarks", Information Hiding, 2004.
    [56]C Collberg, A Huntwork, et al. "More on graph theoretic software watermarks: Implementation, analysis, and attacks", Information and Software Technology, 2009, Vol.51, pp.56-67
    [57]R Venkatesan, V Vazirani, S Sinha. "A graph theoretic approach to software watermarking", Information Hiding,2001, pp.157-168
    [58]Z Sha, H Jiang, A Xuan. "Software Watermarking Algorithm by Coefficients of Equation",2009 Third International Conference on Genetic and Evolutionary Computing, pp.410-413.
    [59]J Zhu, J Xiao, Y Wang. "A Fragile Software Watermarking Algorithm for Software Configuration Management",2009 International Conference on Multimedia Information Networking and Security, pp.75-78
    [60]C Collberg, C Thomborson and GM Townsend. "Dynamic graph-based software watermarking",2004.
    [61]C Collberg, E Carter et al. "Dynamic Path-Based Software Watermarking",2004.
    [62]W Myrvold, F Ruskey. "Ranking and unranking permutations in linear time", Information Processing Letters,2001.
    [63]C Collberg, S Kobourov et al. "Error-Correcting Graphs for Software Watermarking".29th Workshop on Graph Theoretic Concepts in Computer Science,156-167. Springer,2003.
    [64]R Venkatesan, V Vazirani, S Sinha. "A graph theoretic approach to software watermarking", Information Hiding,2001.
    [65]P Cousot, R Cousot. "An abstract interpretation-based framework for software watermarking", ACM SIGPLAN Notices,2004.
    [66]J Stern, G Hachez et al. "Robust object watermarking:Application to code", Information Hiding,1999.
    [67]SC Johnson. "Lint, A C program checker", Unix Programmer's Manual,4.2 Berkeley Software Distribution Supplementary Documents,1984.
    [68]AV Aho, R Sethi, JD Ullman. "Compilers:principles, techniques, and tools", Reading, MA,1986
    [69]A Aiken. "Introduction to set constraint-based program analysis", Science of Computer Programming,1999.
    [70]J Viega, JT Bloch, Y Kohno and G McGraw. "ITS4:A static vulnerability scanner for C and C++ code", Computer Security Applications,2000. ACSAC'00.16th Annual Conference.
    [71]Secure Software (Fortify acquired). "RATS-Rough Auditing Tool for Security", http://www.fortify.com/security-resources/rats.jsp
    [72]D Wagner, JS Foster, EA Brewer and A Aiken. "A first step towards automated detection of buffer overrun vulnerabilities", Network and Distributed System Security Symposium,2000.
    [73]R Johnson, D Wagner. "Finding user/kernel pointer bugs with type inference", USENIX Security Symposium,2004.
    [74]D Evans, D Larochelle. "Improving Security Using Extensible Lightweight Static Analysis", IEEE software,2002.
    [75]N. Ayewah, D. Hovemeyer. "Using static analysis to find bugs", IEEE Software, pp.22-29, September/October,2008.
    [76]WR Bush, JD Pincus, DJ Sielaff. "A static analyzer for finding dynamic programming errors", Software-Practice and Experience,2000.
    [77]G Zhao, H Chen. "Data-flow based analysis of Java bytecode vulnerability", in Proceedings of the 2008 the Ninth international Conference on Web-Age information Management (July 20-22,2008).
    [78]Open Web Application Security Project (OWASP). "The ten most critical web application security vulnerabilities",2007, http://www.owasp.org/index.php/Top_10_2007.
    [79]D Baca, K Petersen. "Static code analysis to detect software security vulnerabilities-Does experience matter?", International Conference on Availability, Reliability and Security,2009.
    [80]CR Myers. "Software systems as complex networks:Structure, function, and evolvability of software collaboration", Physical Review E,2003, Vol.68
    [81]T Kremenek, D Engler. "Z-ranking:Using statistical analysis to counter the impact of static analysis approximations", Static Analysis,2003, pp.1075
    [82]T Kremenek, K Ashcraft, et al. "Correlation exploitation in error ranking", ACM SIGSOFT Software Engineering Notes,2004, Vol.26, pp.83-93
    [83]SS Heckman. "Adaptively ranking alerts generated from automated static analysis", Crossroads,2007, Vol.14, pp.1-11
    [84]S Kim, MD Ernst. "Prioritizing warning categories by analyzing software history", Proceedings of the Fourth International Workshop on Mining Software Repositories,2007, pp.27
    [85]S Kim, MD Ernst. "Which warnings should I fix first?", Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering,2007, pp.54
    [86]JR Ruthruff, J Penix, et al. "Predicting accurate and actionable static analysis warnings:an experimental approach", Proceedings of the 30th international conference on Software engineering,2008, pp.341-350
    [87]J Walden, A Messer, A Kuhl. "Measuring the Effect of Code Complexity on Static Analysis Results", Engineering Secure Software and Systems,2009, pp.195-199
    [88]N Ayewah, W Pugh. "Using checklists to review static analysis warnings", Proceedings of the 2nd International Workshop on Defects in Large Software Systems:Held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2009), pp.11-15
    [89]Java Virtual Machine Tool Interface Reference, http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html
    [90]WebGoat, http://code.google.eom/p/webgoat/
    [91]A Goldberg, K Havelund. "Instrumentation of Java bytecode for runtime analysis", Proc. Formal Techniques for Java-like Programs,2003, Vol.408
    [92]LC Lam, T Chiueh. "A general dynamic information flow tracking framework for security applications", Computer Security Applications Conference,2006. ACSAC'06.22nd Annual, pp.463-472
    [93]D Chandra, M Franz. "Fine-grained information flow analysis and enforcement in a Java virtual machine", acsac,2007, pp.456-475
    [94]Y Yang, X Chen, et al. "Automatic discovery of transition symmetry in multithreaded programs using dynamic analysis", Model Checking Software, 2009, pp.279.295
    [95]B Anckaert, MH Jakubowski, et al. "Runtime protection via dataflow flattening", 2009 Third International Conference on Emerging Security Information, Systems and Technologies, pp.242-248
    [96]Q Chen, L Wang, et al. "HAVE:Detecting atomicity violations via integrated dynamic and static analysis", Fundamental Approaches to Software Engineering, 2009, pp.429-439

© 2004-2018 中国地质图书馆版权所有 京ICP备05064691号 京公网安备11010802017129号

地址:北京市海淀区学院路29号 邮编:100083

电话:办公室:(+86 10)66554848;文献借阅、咨询服务、科技查新:66554700