fore, in this paper, we purpose an improvedversion of
the GOTR protocol, which solves these two problems
and provides some other enhancements to the GOTR
Pidgin plug-in.
Moreover, a network failure of the virtual server
raises another issue. Since the users do not have a
shared key other than with the virtual server, if the vir-
tual server drops off, the communication chain cannot
be established. In this paper, we propose a solution to
the virtual server’s honesty problem using MD5 hash
functions and provide a mechanism to deal with the
problem of virtual server network failure.
4.2 GOTR Enhancement: MD5
Integrity Check and Network
Failure Handling
4.2.1 MD5 Integrity Check
Even though the GOTR communication scheme
seems to be a good solution for the security needs de-
scribed before, it still has a security flaw. Since there
exists a centralized controller (the Virtual Server), a
failed or hacked controller will cause the GOTR sys-
tem to fail. Therefore, the degree of our security
mode is coupled with the trustworthiness or the se-
curity level of the virtual server. The previous version
of GOTR does not provide an integrity check for the
messages relayed over the virtual server. Ideally there
should be a mechanism to warn Carol that a message
has been modified during its transmission.
Consider the previous GOTR example, in which
Alice, Bob, and Carol were having a GOTR chat
room conference. Alice has been dedicated as the
virtual server. The two way communications be-
tween Alice—Bob and Alice—Carol are guarded by
the original OTR protocol. But OTR does not pro-
vide an assurance that Alice, the virtual server, did not
change the content of any message during the repack-
ing process.
Redundancy check mechanisms are well-known
and often used in network applications for the pur-
poses of error detection and correction. Redundancy
checks, although slightly increases the size of each
message, can provide an integrity check for the whole
message. If only error detection is required, the
checksum algorithm is obviously the most widely
used and simplest method. It works by adding up
basic components of data, typically the asserted bits,
and sending the result along with the original mes-
sage. Anyone who receives this message plus its
checksum can later perform the same operation and
compare the resulting value with the checksum. The
receiver can conclude that the message has not been
corrupted during its transmission. Some other redun-
dancy check methods include parity checks, check
digits, and cyclic redundancy check (CRC), etc. For
instance, a CRC function often takes a stream of vari-
able length data as input and produces a fixed size
code as output. Compared to checksum, CRC pro-
vides more precise error detection while maintain-
ing a plausible execution time. Basically, any kind
of (cryptographic) hash function can be used to pro-
duce a message digest, which can be used to verify the
message’s integrity (W.W.Peterson and D.T.Brown,
1961).
In the proposed protocol, since Bob (Carol) en-
crypts messages with keys that are only known by him
(her) and Alice, it is not possible for Carol (Bob) to
decrypt these messages. Therefore, we need the help
from the virtual server, Alice. Following our GOTR
protocol, Alice decrypts the message originated from
Bob and re-encrypts it with the key (SS
Alice&Carol
)
shared between her and Carol. Under such a sys-
tem, there is no way we can prevent Alice from al-
tering the messages. However, we can provide a ver-
ification mechanism, which will give Carol a chance
to check the integrity of messages. In order to as-
sure the integrity of the message, Bob will produce a
hash value H
b
of the message and send it to Carol in a
straight line. After receiving both the hash value from
Bob and the repacked message from Alice, Carol can
check whether the message has been altered or not.
She simply just needs to reproduce the hash value
upon the received message and compare the result
with the one from Bob.
The aforementioned integrity check method has
been implemented in the GOTR protocol. In this ex-
perimental work, a 128-bit MD5 algorithm (Rivest,
1992) has been employed, and it is possible to use
any existing one-way hash function. By using a hash
algorithm that has a higher collision rate, it may al-
low a malicious user to be able to alter the content
of a message, but still produce the same message di-
gest. MD5 takes an arbitrary number of characters as
input but produces a fixed length output. This prop-
erty assures a minimal amount of overhead to each
message. Moreover, MD5 functions are widely avail-
able as libraries in almost all the major programming
languages such as C, C++, Java, PHP, etc. The OTR
library uses libgcrypt (Koch, 2005) to provide the ba-
sic cryptographic functionalities and it also has MD5
algorithm support. Therefore, no extra programming
effort will be required to provide MD5 services.
The tests and mathematical proofs have shown
that the probability of retrieving the plaintext from its
hash value is negligible (Bishop, 2002). Hence, it is
not an infringement of security requirements to trans-
WEBIST 2008 - International Conference on Web Information Systems and Technologies
58