
|
|
| Security in WWW
The Hypertext Transfer Protocol - HTTP/1.0 draft, proposed by the Internet Engineering Task Force or IETF HTTP Working Group, gave initial suggestions as to the possible security threats involved in HTTP. Among the threats they have mentioned are: 1. Client/session authentication. The basic authentication scheme used by HTTP/1.0 does not provide a secure method of user authentication. 2. Idempotent Methods. Writers of client software should make sure make that any actions taken by their software are safe and otherwise idempotent. The actual user of the software should be completely aware of any actions that may be taken by the software they are running. 3. Abuse of Server Log Information. Servers are in the position to collect data about the information requested by clients. This information is considered confidential in nature and may be prohibited by law. Server providers should make sure that logging information is not distributed. More threats and problems are:
As we said SSL, SHTTP and Shen are proposed encryption and user authentication
standards for the Web, though SSL is supported by Netscape thus has more chances to become
a standard, we mention the two others because you can't predict what would happen on the
internet in a few months time. Secure Servers/HTTPSSL - Secure Socket's LayerSSL is the scheme proposed by Netscape Communication Corporation, and was contributed
for free use. SSL is currently implemented commercially on several different browsers, including the two most popular, Netscape Navigator, and Internet Explorer, and Secure Mosaic, and many different servers, including ones from Netscape, Microsoft, IBM, Quarterdeck, OpenMarket and O'Reilly and associates. The main goal of the SSL Protocol is to provide privacy and reliability between two
communicating applications. The three basic things the SSL protocol provides are:
The current SSL version is 3.0. How does it work ?SSL uses the RSA public key cryptography, which is widely used for authentication and encryption in the computer industry. The public key encryption is a technique that uses two asymmetric keys for encryption and decryption. Each pair of keys consists of a public key and a private key. The public key is made public by distributing it widely. The private key is never distributed; it is always kept secret. Data that is encrypted with the public key can be decrypted only with the private
key. A Public Key Cryptography Can Be Used For AuthenticationAuthentication means verifying the identity, and checking if someone is who he claims to be. Here's an example of using public key cryptography for authentication: The basic idea is this: That's the basic idea, but there are some twists in how it is actually done. So Ron, instead of encrypting the original message Yogev sent him takes the message
that was sent to him, constructs a message digest out of it, and encrypts that.
In this way Ron can protect himself. He computes a digest from the random message sent
by Yogev and then encrypts the result and sends the encrypted digest back to him. What we have described now is called digital signature. Ron has signed a message Yogev generated, and that's as dangerous as encrypting a random value. So the protocol takes another twist: some (or all) of the data needs to be originated by Ron. Yogev-> Ron : Hey, is that you Ron? Now Yogev can easily know Ron is Ron, and he hasn't signed something he doesn't know. The Protocol itselfThe SSL messages are records that are 32,767 bytes long. Each message has a header of 2
or 3 bytes which include a security escape function, a flag that indicates padding and the
length of the message (with the padding). The two byte header has no padding, the three
bytes header includes some padding. The record itself has 3 components: MAC-DATA, Actual-Data, and Padding-Data. The SSL HandshakeThere are 3 kinds of SSL handshakes: 1. If there's no session-identifier:The handshake looks like this: CLIENT-HELLO
C -> S: challenge, cipher_specs Explanation: When a client wants to establish a secure connection is sends a CLIENT-HELLO message,
including a challenge and information about the encryption systems it is willing or able
to support. The server then sends a SERVER-HELLO back to the client which includes a
connection-id, it's key certificate, and information about the encryption it
supports. 2. If a session-identifier was found by both client and serverThe handshake looks like this: CLIENT-HELLO
C -> S: challenge, session_id, cipher_specs Explanation: In this case the client already has a session id. 3. Assuming a session-identifier was used and client authentication is usedThe handshake looks like this: CLIENT-HELLO
C -> S: challenge, session_id, cipher_specs Explanation: In this case the client authentication is in use. Explanation about the keysClient-write-key and client-read-key are a function of the master key, and ordinal char, the challenge, and connection-id via a secure hash. The master key is reused across sessions, read-key and write-key are generated again for each session. Is is really safe?The version of SSL that is exportable from the United States is restricted to 40 bit
keys (But it can also use 128 bit), which means they can be broken by anyone with access
to a reasonable amount of computing power (For example, a student who studies
Computer Science in Tel-Aviv University). The breaking
can be done by using brute force (Which means, in simple words, trying all of the
combinations...). SHTTPSHTTP (Secure HTTP) is the scheme designed by Enterprise
Integration Technologies (EIT). It is a higher level protocol that only works with the
HTTP protocol, but is potentially more extensible than SSL. SHTTP provides a wide variety of mechanisms to provide for confidentiality, authentication, and integrity. SHTTP is not tied to any particular cryptographic system, key infrastructure, or cryptographic format. ShenShen is a security scheme proposed by CERN. Shen provides for three separate security related mechanisms:
For some strange reason there isn't a possibility to find information about Shen on the WWW. Firewalls and WWW proxiesA firewall is any one of several ways of protecting one network from another untrusted network. The actual mechanism whereby this is accomplished varies widely, but in principle, the firewall can be thought of as a pair of mechanisms: one which exists to block traffic, and the other which exists to permit traffic. Some firewalls place a greater emphasis on blocking traffic, while others emphasize permitting traffic. You can use a firewall to enhance your site's security in a number of ways. The most straightforward use of a firewall is to create an "internal site", that is accessible only to computers within your own LAN. For that, you just need to place the server inside the firewall:
However, most chances are you'd like to make your server available to the rest of the world, that means you'll have to put it outside the firewall. The safest way to do so is to put it completely outside of the LAN:
This is called a "sacrificial lamb" configuration. The server is at risk of being broken into, but at least when it's broken into it doesn't breach the security of the inner network. In order to connect from the LAN to the outside world, a proxy is often installed on
the Firewall machine. Another way of contacting the outside world from behind a firewall is allowing the firewall to pass requests for port 80 that are bound to or returning from the WWW server machine. This has the effect of poking a small hole in the dike through which the rest of the world can send and receive requests to the WWW server machine. You can have a look at some more information on firewalls on the Firewalls FAQ on http://www.tis.com The connection between Security, spiders and robotsRobots, webcrawlers, web wanderers, ants, worms and spiders are programs that
automatically surf the web and collect information. The information can be used for
indexing, HTML validation, link validation, "What's New" monitoring, or
mirroring. It's a good idea to protect some areas of your server from access by robots. This is done by writing a file called /robots.txt that looks like this: # robots.txt for http://www.rad.co.il/ #Allows robotiti to look everywhere it wants User-agent: robotiti # Disallow spiderico from accessing the tmp and the log directory User-agent: spiderico #Disallows any other user-agent from accessing the /tmp directory tree User-agent: * Another possibility to disallow robots from accessing an html page is to add this tag: <META NAME="ROBOTS" CONTENT="NOFOLLOW"> For more information on robots, have a look at The Web Robots Pages |