ch30.htm
来自「Maximum Security (First Edition) 网络安全 英文」· HTM 代码 · 共 1,283 行 · 第 1/5 页
HTM
1,283 行
<DL> <DD>Current versions of Netscape Navigator use random information to generate session encryption keys of either 40 or 128 bits in length. The random information is found through a variety of functions that look into a user's machine for information about how many processes are running, process ID numbers, the current time in microseconds, etc. The current vulnerability exists because the size of random input is less than the size of the subsequent keys. This means that instead of searching through all the 2^128 possible keys by brute force, a potential intruder only has to search through a significantly smaller key space by brute force. This is substantially easier problem to solve because it takes much less compute time and means 40-bit or 128-bit key strength is substantially reduced.</DL><BLOCKQUOTE> <P><HR><FONT COLOR="#000077"><B>Cross Reference:</B></FONT><B> </B>"Potential Vulnerability in Netscape Products" can be found on the Web at <A HREF="http://www.netscape.com/newsref/std/random_seed_security.html"><TT>http://www.netscape.com/newsref/std/random_seed_security.html</TT></A>. <HR></BLOCKQUOTE><P>As Netscape was quick to point out, there has never been a known instance of anyNet surfer's financial information being stolen in such a manner. Nor have therebeen any recorded instances of such information being intercepted over the Internet.At the day's end, the technique employed was complex and not one that would be commonlyknown to criminals. However, the episode threw many products into a suspicious light,and again, Internet security was reduced to a hope rather than a reality.</P><P>Information now suggests that peripheral components used in implementation ofSSL may even be flawed. Specifically, MD5 is now under suspicion. On May 2, 1996,a member of the German Information Security Agency issued a report titled "Cryptanalysisof MD5 Compress." In it, the author demonstrates a weakness inherent in MD5.<BLOCKQUOTE> <P><HR><FONT COLOR="#000077"><B>Cross Reference:</B></FONT><B> </B>"Cryptanalysis of MD5 Compress" by Dr. Hans Dobbertin can by found at <A HREF="http://www.cs.ucsd.edu/users/bsy/dobbertin.ps"><TT>http://www.cs.ucsd.edu/users/bsy/dobbertin.ps</TT></A>.<BR> <HR></P> <P><HR><FONT COLOR="#000077"><B>Cross Reference:</B></FONT><B> </B>Some forces in encryption suggest that MD5 be phased out. To learn more about these matters, check out the Secure Sockets Layer Discussion List. In this mailing list, members discuss the various security characteristics of SSL. You can subscribe to that list by sending a mail message to <A HREF="mailto:ssl-talk-request@netscape.com"><TT>ssl-talk-request@netscape.com</TT></A>. The mail message should be empty, and the Subject line should include the word <TT>SUBSCRIBE</TT>. The material discussed in the Secure Sockets Layer Discussion List is quite technical. If you are new to the subject matter, it would be wise to obtain the FAQ (<A HREF="http://www.consensus.com/ security/ssl-talk-sec01.html"><TT>http://www.consensus.com/ security/ssl-talk-sec01.html</TT></A><TT>)</TT>. <HR></BLOCKQUOTE><P>Today, a stronger version of SSL is selling like wildfire. To date, there havebeen no successful attempts to crack these newer implementations; they have a muchstronger random-generation routine. Dozens of third-party products now support SSL,including most of the browser clients commercially available (and a good number ofservers).<BLOCKQUOTE> <P><HR><FONT COLOR="#000077"><B>Cross Reference:</B></FONT><B> </B>An interesting comparison of third-party products that support SSL is available at <A HREF="http://webcompare.iworld.com/compare/security.shtml"><TT>http://webcompare.iworld.com/compare/security.shtml</TT></A>. <HR></BLOCKQUOTE><P><B>S-HTTP</B> <I>S-HTTP</I> (Secure Hypertext Transfer Protocol) differs fromSSL in several ways. First, Netscape's SSL is a published implementation; therefore,there is a wide range of information available about it. In contrast, S-HTTP is anoften-discussed but seldom-seen protocol.</P><P>The main body of information about S-HTTP is in the "Internet Draft"authored by E. Rescorla and A. Schiffman of Enterprise Integration Technologies (Eit.com).Immediately on examining that document, you can see that S-HTTP is implemented inan entirely different manner from SSL. For a start, S-HTTP works at the applicationlevel of TCP/IP communications, whereas SSL works at the data-transport level.</P><P>As you learned in Chapter 6, "A Brief Primer on TC/IP," these levelsrepresent different phases of the TCP/IP stack implementation. Application-levelexchanges are those available to (and viewable by) the operator. Well-known application-levelprotocols include FTP, Telnet, HTTP, and so on.</P><P>A company called Terisa Systems (<TT>www.terisa.com</TT>) licenses several developmenttoolkits that incorporate S-HTTP into applications. These toolkits come with pre-fabbedlibraries and a crypto engine from RSA.</P><P>S-HTTP's main feature (and one that is very attractive) is that it does not requireusers to engage in a public key exchange. Remember how I wrote about Microsoft'simplementation of SSL, which required that you obtain a certificate? This means youhave to identify yourself to a third party. In contrast, according to Rescorla andSchiffman:<DL> <DD>S-HTTP does not require client-side public key certificates (or public keys), supporting symmetric session key operation modes. This is significant because it means that spontaneous private transactions can occur without requiring individual users to have an established public key.</DL><BLOCKQUOTE> <P><HR><FONT COLOR="#000077"><B>Cross Reference:</B></FONT><B> </B>You can find "The Secure HyperText Transfer Protocol" by E. Rescorla and A. Schiffman on the Web at <A HREF="http://www.eit.com/creations/s-http/draft-ietf-wts-shttp-00.txt"><TT>http://www.eit.com/creations/s-http/draft-ietf-wts-shttp-00.txt</TT></A>. <HR></BLOCKQUOTE><P>In my view, this seems more acceptable and less Orwellian. There should neverbe an instance where an individual MUST identify himself or herself simply to makea purchase or cruise a page, just as one should not have to identify oneself at abookstore or a supermarket in the "real" world. One has to question themotivation of corporations such as Microsoft that insist on certificates and publickey schemes. Why are they so concerned that we identify ourselves? I would view anysuch scheme with extreme suspicion. In fact, I would personally lobby against suchschemes before they become acceptable Internet standards. Many other efforts in electroniccommerce are aimed toward complete anonymity of the client and consumer. These effortsseem to be working out nicely, without need for such rigid identification schemes.</P><P>Moreover, the S-HTTP may be a more realistic choice. Even if public key exchangesystems were desirable (as opposed to anonymous transactions), the number of Internetusers with a public key is small. New users in particular are more likely targetsfor online commercial transactions, and the majority of these individuals do noteven know that public key systems exist. If a public key is required to completea transaction using a secure protocol, many millions of people will be unable totrade. It seems highly unrealistic that vendors will suggest methods of educating(or prodding) consumers into obtaining a public key.<BLOCKQUOTE> <P><HR><FONT COLOR="#000077"><B>NOTE:</B></FONT><B> </B>Although S-HTTP does not require public key exchange-style authentication, it supports such authentication. It also supports Kerberos authentication, which is an additional benefit. <HR></BLOCKQUOTE><P>S-HTTP also supports message authentication and integrity in much the same fashionas SSL. As noted in "The Secure HyperText Transfer Protocol":<DL> <DD>Secure HTTP provides a means to verify message integrity and sender authenticity for a HTTP message via the computation of a Message Authentication Code (MAC), computed as a keyed hash over the document using a shared secret--which could potentially have been arranged in a number of ways, e.g.: manual arrangement or Kerberos. This technique requires neither the use of public key cryptography nor encryption.</DL><P>To date, not enough public information about S-HTTP is available for me to formulatea truly educated advisory. However, it seems clear that the designers integratedsome of the best elements of SSL while allowing for maximum privacy of client users.Also, I am aware of no instance in which S-HTTP has been cracked, but this may bebecause the cracking communities have not taken as lively an interest in S-HTTP asthey have Netscape. No one can say for certain.<H4><FONT COLOR="#000077"><B>HTML in General</B></FONT></H4><P>The problems with Web security that stem from HTML are mainly those that involvethe traffic of data. In other words, the main concern is whether information canbe intercepted over the Internet. Because commerce on the Internet is becoming morecommon, these issues will continue to be a matter of public concern.</P><P>As it currently stands, very few sites actually use secure HTML technology. Whenwas the last time you landed on a page that used this technology? (You can recognizesuch pages because the little key in the left corner of Netscape Navigator is solidas opposed to broken.) This, of course, depends partly on what sites you visit onthe WWW. If you spend your time exclusively at sites that engage in commerce, youare likely to see more of this activity. However, even sampling 100 commerce sites,the number of those using secure HTTP technology is small.<H2><FONT COLOR="#000077"><B>Java and JavaScript</B></FONT></H2><P>Java and JavaScript are two entirely different things, but they are often confusedby nonprogrammers as being one and the same. Here's an explanation of each:<UL> <LI>JavaScript is a scripting language created at Netscape Communications Corporation. It is designed for use inside the Netscape Navigator environment (and other supported browsers). It is not a compiled language, it does not use class libraries, and it is generally nested within HTML. In other words, you can generally see JavaScript source by examining the source code of an HTML document. The exception to this is when the JavaScript routine is contained within a file and the HTML points to that source. Standalone applications cannot be developed with JavaScript, but very complex programs can be constructed that will run within the Netscape Navigator environment (and other supported browsers).<BR> <BR> <LI>Java, developed by Sun Microsystems, is a real, full-fledged, object-oriented, platform-independent, interpreted language. Java code requires a Java interpreter to be present on the target machine and its code is not nested. Java can be used to generate completely standalone programs. Java is very similar in construct to C++.</UL><P>JavaScript is far more easily learned by a non-programmer; it can be learned byalmost anyone. Moreover, because Netscape Navigator and supported browsers alreadycontain an interpreter, JavaScript functions can be seen by a much wider range ofusers. Java, in contrast, is to some degree dependent on class files and thereforehas a greater overhead. Also, Java applications require a real Java runtime environment,a feature that many Netizens do not currently possess (users of Lynx, for example).Finally, Java applets take infinitely more memory to run than do JavaScript functions;although, to be fair, badly written JavaScript functions can recursively soak upmemory each time the originating page is reloaded. This can sometimes lead to a crashof the browser, even if the programmer had no malicious intent.</P><P>Of these two languages, Java is far more powerful. In fact, Java is just as powerfulas its distant cousin, C++. Whole applications have been written in Java. HotJava,the famous browser from Sun Microsystems, is one example. Because Java is more powerful,it is also more dangerous from a security standpoint.<H3><FONT COLOR="#000077"><B>Java</B></FONT></H3><P>When Java was released, it ran through the Internet like a shockwave. Programmerswere enthralled by the prospect of a platform-independent language, and with goodreason. Developing cross-platform applications is a complex process that requiresa lot of expense. For example, after writing a program in C++ for the Microsoft Windowsenvironment, a programmer faces a formidable task in porting that application toUNIX.</P><P>Special tools have been developed for this process, but the cost of such enginesis often staggering, especially for the small outfit. Many of these products costmore than $5,000 for a single user license. Moreover, no matter what conversion vendorsmay claim about their products, the porting process is never perfect. How can itbe? In anything more than a trivial application, the inherent differences betweenX and Windows 95, for example, are substantial indeed. Quite frequently, furtherhuman hacking must be done to make a smooth transition to the targeted platform.</P><P>With these factors in mind, Java was a wonderful step forward in the developmentof cross- platform applications. Even more importantly, Java was designed (perhapsnot initially, but ultimately) with components specifically for development of platform-independentapplications for use on the Internet. From this, we can deduce the following: Javawas a revolutionary step in Internet-based development (particularly that type ofdevelopment that incorporates multimedia and living, breathing applications withanimation, sound, and graphics). It is unfortunate that Java had such serious securityflaws.</P><P>I'd like to explain the process of how Java became such a terrific security issueon the Internet. This may help you understand the concept of how security holes inone language can affect the entire Net community.</P><P>Certain types of languages and encryption routines are composed of libraries andfunctions that can be incorporated into other applications. This is a common scenario,well known to anyone who uses C or C++ as a programming language. These librariesconsist of files of plain text that contain code that defines particular procedures,constant variables, and other elements that are necessary to perform the desiredoperation (encryption, for example). To include these libraries and functions withinhis or her program, the programmer inserts them into the program at compile time.This is generally done with an <TT>#include</TT> statement, as in</P><PRE><FONT COLOR="#0066FF">#include <stdio.h></FONT></PRE><P>After these routines have been included into a program, the programmer may call
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?