Since its development,
the SSL protocol had various upgrades. The original protocol was SSL version
2.0. This protocol had some security weaknesses and could be attacked easily
by active and passive attackers.
The first improvement
of the SSL protocol was SSL version 3.0, which was an Internet Draft version
and was developed in order to solve those weaknesses.
Later on, a second
revision of the SSL protocol was formed within IETF to develop a common
Internet standard. This protocol is called Transaction Layer Security (TLS)
and is also known as SSL version 3.1. SSL v3.0 and TLS are very similar
and have only minor differences.
SSL v2.0
SSL v3.0
SSL v2.0 MAC computing
is weaker than that of SSL v3.0 because the first one leaves the padding
length field unauthenticated. This gives opportunity for potential attackers
to modify the padding bytes at the end of messages.
Another flaw of SSL
v2.0 is the CipherSuite rollback attack. An attacker may alter the list
of CipherSuite preferences to weaker forms of encryption and by doing that
could force the parties to use a weaker encryption algorithm while exchanging
sensitive application data. SSL v3.0 solves this problem by using two phases
of CipherSuites, pending and current session states.
Another feature that
was added to SSL v3.0 is the support of certificate chain loading. This
means that a server can pass a server certificate to the browser.
An additional difference
between these versions lies in the algorithms used for key exchange and
cipher algorithms. SSL v2.0 mainly uses the RSA algorithm for key-exchange
while SSL v3.0 supports the Diffie-Hellman algorithm, as well as other,
more complete key-exchange and cipher algorithms.
Opposed to SSL v2.0,
where the client is responsible for choosing the CipherSuite and compression
algorithms, in SSL v3.0 the server is responsible for choosing them.