presented by the server
. If the server does not know
the pre-shared key, then the connection simply cannot
be made.
Additionally, using pre-shared keys is less prone
than certificate authentication to certain types of
configuration mistakes, such as expired certificates or
mismatched common name fields
. However, the
system must apply restrictions on the accepted pre-
shared keys to avoid low entropy.
Furthermore, such an implementation provides
mutual authentication (i.e
. the client and the server
both authenticate each other), while TLS with server
certificates only authenticates the server to the client,
leaving the client authentication to the application
logic
. Client certificates can be used to authenticate
the client, but it may be easier for a user to remember
a pre-shared secret, such as a password, than to
manage a certificate. Additionally, the business would
have to trust the client to keep their private key safe.
However, using pre-shared keys can give rise to
some new issues, such as the possibility of the users
writing down the keys or how the endpoints agree on
a shared-key securely. These issues can also be
mitigated and will be discussed.
A previous work is presented (Pereira et al.,
2014)(Regateiro et al., 2014) and (Pereira et al.,
2015), called Dynamic Access Control Architecture
(DACA), where a distributed access control
framework allows the clients to connect to a database
through runtime generated access control
mechanisms. There, the client applications can use an
interface based on Java Database Connectivity
(JDBC), which is implemented by the access control
mechanisms, to access and manipulate data stored in
a server. A connection to a server side application is
also made to configure the runtime generation of the
access control mechanisms, based on the security
policy that applied to that client. The method
proposed in this paper can then be used to secure this
framework without the issues described.
This paper contributes with a method to avoid the
usage of digital certificates to authenticate the server
and the client using TLS. It also analyzes the changes
necessary to make this possible, the security
considerations that must be taken into account and its
impact on the performance of a system.
The paper is divided as follows: chapter 2 presents
the related wok, chapter 3 presents the proposed
concept solution, chapter 4 presents a proof of
concept detailing the method of implementation and
the related issues, on chapter 5 a performance
assessment is carried out to measure the overhead of
the solution and on chapter 6 a discussion of the
proposed work is made.
2 RELATED WORK
The work described in this article attempts to add
support for pre-shared keys in SSL/TLS (IETF,
2008), even though the standard does define cipher
suits that make use of pre-shared keys instead of
digital certificates. Therefore, this article is not aimed
to modify the standard, but instead to make it possible
to use pre-shared keys with closed implementations
of TLS that do not support these cipher suits. One
such case is the Java implementation (Oracle, n.d.),
which is not extensible to support new cipher suits
programmatically and does not implement the cipher
suits using pre-shared keys. The method described in
this paper will allow to use pre-shared keys in the Java
implementation of TLS.
In terms of security, the SSL/TLS protocol has
seen some work to try to improve it. In (Oppliger et
al., 2006) and (Oppliger et al., 2008), a session aware
user authentication is introduced and expanded in an
attempt to thwart Man-In-The-Middle (MITM)
attacks. Unfortunately, these approaches still use
digital certificates. While the proposed solution is not
completely invulnerable to these kind of attacks, it
can detect when one occurs and preventive measures
can be taken before sensitive data is disclosed.
There are SSL/TLS cipher suits that do not require
digital certificates, and therefore certificate
authorities and a public key infrastructure, that
provide secure communication based on passwords
such as TLS-SRP (Taylor et al., 2007). The Secure
Remote Password (SRP) (Wu, 1998) is a password
authenticated key exchange that allows to parties to
agree on a common value derived from a password
and a salt, known in advance. This value is then used
to establish a TLS connection. The SRP protocol is
also a form of augmented password authenticated key
exchange, meaning that the server does not store any
password equivalent data. The solution in this paper
does not possess this feature, but is not as complex
and requires less computing power to use since it does
not utilize complex mathematics.
Other password authenticated key exchange
protocols exist, such as the Simple Password
Exponential Key Exchange (SPEKE) (Hao and
Shahandashti, 2014) (MacKenzie and MacKenzie,
2001) or Password Authenticated Key Exchange by
Juggling (J-PAKE) (Hao and Ryan, 2010) (Toorani,
2014) (MacKenzie and MacKenzie, 2001). However,
no known actively supported implementation in TLS
exist.