第1页共8页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共8页Java安全性的演变和理念第一部分:安全性的基本要点本系列文章将提供对网络安全的一般了解,以及开发人员所必需掌握的Java编程语言的独特性能。在后续的连载中,将讨论Java平台安全性的设计和演变,以及不同的Java安全性API。今后的文章还将讨论Java2Platform,EnterpriseEdition(J2EE)中的安全特性,J2EE正迅速变为.com平台的首选。虽然,深入了解密码学对读者的数学水平来说是一个挑战,但第一篇文章概述的是网络安全和密码学的基本概念,而这些是非常简单,极易掌握的。又:请参阅讨论AES和密钥长度对安全性的重要性的专题。在最近的几十年内,计算模型发生了巨大的变化,由于这些变化,出现了对大规模电子商务与电子交易系统应用程序安全的更大需求,这正如最近对几个受欢迎站点的大量拒绝服务(DoS)攻击所表明的那样。尤其是对于Java团体,随着Java作为因特网编程的事实上的标准平台出现,安全移动Java代码的能力已成为基本要求。本文是系列文章中的第一篇,讨论计算机安全和密码学的一般概念。虽然可移动代码并不是一个革命性的概念,但是Java和因特网给计算机安全带来了一些不同寻常的挑战。Java体系结构的演化及其对安全的影响、不同的安全API和工具软件以及applet安全,等等,将在随后的文章中讨论。此安全性论文系列并不打算提供计算机安全问题的综合指南。计算机安全是一个多层面的问题,它涉及若干学科、部门和文化。技术投资后,接着就应该着手培训、严格的策略强制执行和总体安全策略的定期审查。注:有关算法进展的详细信息,请参阅专题“二十一世纪的加密算法”;有关密钥长度在安全性中的重要性的讨论,请参阅专题“密钥的长度是否重要?”。什么是计算机安全?要从总体上理解什么是计算机安全,有必要考虑一下安全在日常生活中意味着什么。我们将看到,日常生活中的一般安全规则同样适用于计算机安全。计算机安全的局限性有没有绝对计算机安全这样的事情?一句话,没有这样的事情。术语安全系统是一个不恰当的名称,因为它暗示了系统要么是安全的,要么是不安全的。安全实际上是一种平衡。如果提供的资源是无限的,则任何形式的安全都能遭到破坏。尽管攻击者可用来实施攻击的资源越来越多,但在现实世界中,这些资源仍然是有限的。考虑到这一点,我们应该这样来设计所有系统:让攻击者为破坏这些系统所付出的,远远大于破坏之后他们所能得到的。端到端的安全什么是端到端的安全?在一个多层系统中,每一层都应该有其自身的安全,并且与其他层协调一致。为汇集在一起的不同系统和中间件设计安全,是一个相当大的挑战。简单地说,系统安全的程度仅相当于最弱的一环的安全程度;除非您按端到端的观点考虑安全,否则安全随时可以遭到破坏。简单性一个复杂的安全设计会起作用吗?乍看起来,制止未授权用户访问系统的最佳方法也许是,设计一个非常复杂的安全方案,但事实并非如此。不仅设计复杂的安全系统的高成本使人不敢问津,而且,要是这种安全系统太复杂了,恐怕连合法用户也难以进入。另一方面,简单系统更容易理解,也更容易分析。好的系统设计需要安全有可能对安全进行翻新吗?答案是,这几乎是不可能的。在很多情况下,翻新安全而不必重新设计系统的实质性部分,可能是不现实的。在几乎所有的情况下,翻新的成本非常昂贵。因此,安全从来不应是事后考虑的事情--从一开始它就必须是系统设计的不可分割的一部分。计算机安全的基础知识了解这样一些内容是有用的:计算机安全的防御对象、相应的防御机制,以及与计算机安全有关的不同术语。威胁威胁--对计算机安全的攻击--大致可以分为以下几类:机密性攻击:利用加密算法中的弱点或以其他方式,试图窃取机密信息。完整性攻击:出于自私或恶意而试图修改信息。应该注意的是,完整性攻击也可以是偶然的。可用性攻击:试图中断系统的正常运行。可用性攻击又称为拒绝服务(DoS)攻击,后者是最近流行的术语。几种攻击归属于上面提到的一个或几个类别。示例包括:暴力攻击通常指搜索每一把钥匙,直到用正确的那一把打开门为止...