You are on page 1of 12

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/317580932

Two Factor Authentication

Technical Report · June 2017


DOI: 10.13140/RG.2.2.16228.99207

CITATIONS READS
0 4,599

1 author:

Jose Costa
University of Westminster
1 PUBLICATION   0 CITATIONS   

SEE PROFILE

All content following this page was uploaded by Jose Costa on 14 June 2017.

The user has requested enhancement of the downloaded file.


2FA2P2: A Two Factor Authentication Scheme
Jose Costa
Cyber Security Group,
Department of Computer Science
University of Westminster, UK
jose.costa@my.westminster.ac.uk

Abstract—While there are some available TFAs, most are either This is where TFA comes into play by adding an extra layer,
privately made in house which other businesses cannot use or are typically in the form of a physical token, such as biometrics
available but come with a lot of overhead which comes attached (fingerprints or retina scans), or electronic token such as a
to drawbacks; this can be expensive to implement and time-
consuming. One Time Password (OTP) generated at the time of the logon
The aim of this project is to provide a secure TFA platform request. If an attacker managed to get hold of the user’s
to enable clients to provide their users with the form of security password, they would also need to get the user’s current OTP
without any change to their current infrastructure making the to login which changes at a particular rate making it hard for
transition effortless while keeping users data as secure as possible. attackers to succeed in infiltrating an account.
Keywords—Security, Two-Factor Authentication;
A. Statement of Purpose
I. I NTRODUCTION While there are some available TFAs, most are either
privately made in house which other businesses cannot use
Two-factor authentication (TFA) is increasingly becoming a or are available but come with a lot of overhead which comes
go-to for user security and identification. With an increase in attached to drawbacks; this can be expensive to implement and
cyber crimes each year more and more businesses (ranging time-consuming.
from financial institutions (HSBC, Barclays, BCA) to retail The aim of our project will be to provide a secure TFA
(Amazon, eBay , Apple)) are implementing TFA as a way platform which will enable our clients to provide their users
to ensure user credibility within their systems which in turn with the form of security without any change to their current
decreases the risk of any malicious users infiltrating into their infrastructure making the transition effortless while keeping
systems. TFA factors can be split into three categories as users data as secure as possible.
written by John Brainard et al [1] As we are based within Europe we are obliged to meet the
Knowledge Factors or Something you know Most com- established legislation for data protection set in the European
mon kind of authentication, examples range from passwords Directive 95/46/EC as well as the regulations set in the GDPR
to secret questions. Passwords are easily forgotten and can be (General Data Protection Regulation). According to [2], article
weak if not enforced properly. 17 in the Directive, as the CSP (Credential Service Provider)
Possessive Factors or Something you have Instead of hav- we must have, we will handle and store users information,
ing to remember something possessive factors uses something ”appropriate technical and organisational measures to protect
the user has, just like a key to a lock. These can vary from personal data against accidental or unlawful destruction or
smart cards which generate codes to USB tokens. Similarly to accidental loss, alteration, unauthorised disclosure or access”.
Knowledge factors, possessive factors can be lost. Authors in [3] also state that in article 17.1 that we must have
Inherence Factors or Something you are Inherence factors ”a level of security appropriate to the risks represented by the
use the users’ characteristics such as fingerprints, retinal scans, processing and the nature of the data to be protected”.
dynamic signature as a matching pattern. These are harder to
spoof as they are unique to every person, however they are B. Aims and Objectives
harder to use and implement in older technology. For this project, we aim to make the application as
There are a multitude of ways that TFA, can work with lightweight and simple as possible while keeping users data
numerous of combinations available. The first normally being protected. While our application is limited in its uses, we will
a password, either created by the user or assigned to them upon be focusing on the security aspect. As we are handling users
account creation, or a PIN (personal Identification Number). data, it’s our responsibility as devs to consider the legal issues
Passwords will typically need to be remembered and this is in addition to the moral obligations we have when storing and
where security fails most often, users tend to create easily moving data around which we’ll cover later on.
memorable passwords and use the same password for several We aim to provide our services via API (Application
of their accounts, when one becomes compromised attackers programming interface) requests which authorised businesses
can then perform malicious activities without the authorisation will be able to call (once they implement the system they’ll be
of the account owner. given a unique API key which can be used to make requests to
our platform) whether it be to add a user to the TFA system or schemes and are not something which we are aiming to correct
check against an OTP provided by the user on a login attempt. or improve on.
We plan to make an iOS app where the user will be able to To compile our requirements, we looked at already existing
receive their dynamic OTP upon login. The OTP generated forms of TFA and how they would compare to our proposed
will be a dynamic one where it changes every so often. system. We covered a variety of different approaches to TFA
and dismissed examples which would not be suitable for our
C. Stakeholders needs. An example of this would be using biometrics as TFA,
Being a stakeholder fundamentally means that you’re some- firstly the complexity of this task would take longer than the
one which will be affected by or use the system. When allotted time given to complete this task. Another problem
developing a system we need to know who’ll be using it so we would be that biometric scanning needs specialised equipment
can tailor the system to them, are they technically able people, which tends to be expensive, we would need to supply
how will they interact with the system once it’s implemented. businesses using our platform with such devices which takes
For our purposes our stakeholders would be external business away from our aim of making it simple and easily integrable
owners who would like to provide a TFA option for their users; into any business. We focused our search on mobile based
therefore their users also become part of our ecosystem. We apps that had a form of two or multi-factor authentication
would provide the services for the owners while authenticating implemented.
their users. Stakeholders also include malicious users which Steams app is also available on both mobile OS;s, once you
we will have to evaluate the ways in which they can attempt have signed up to Steam Guard using your steam account, you
to disrupt our services or impersonate other users and present can then add your phone number which they use to send a
solutions as to combat the threat. verification code to finalise the setup and identify the device
as yours. After that has been setup every time you access your
D. Organization account the app will produce a code which changes regularly
as shown in 1.
The rest of this paper is laid out in the following order.
In Section II we investigate and describe related work on
two factor authentication protocols and examples of existing
implementations. In Section III we walk through some of the
use cases for our project. Section IV describes both the system
and the adversarial model and strictly define the problem
statement. In V we present the cryptographic primitives used
throughout the paper. In VI we outline the functional require-
ments for our project. In VII we describe the protocols both
for the AP and the iOS app as formal constructions. In VIII
we describe the system setup and present relevant test results.

II. R ELATED W ORK


This section presents the most important works that have
been done within this area. In addition to that, we briefly
describe how each protocol works, and we present a list of
advantages and drawbacks. Finally, for each described related
work we provide a brief comparison with our approach in Fig. 1: Steam Code
order to highlight the differences and clearly present the
contribution of our work. Duo is a company which focus on verifying the identity of
In [4] the authors propose a two-factor authenticator pro- users for their customers as well as monitoring their devices
tocol which consists of a biometric formulation known as for performance. They incorporate agents which monitor and
BioHash. This combines a user specific fingerprint Bi with enforce stronger policies by using TFA. They focus more on
a tokenised random number T which in turn produces a set remote login side and ensuring users only have access to
of n binary bit strings B = {b1 , . . . , bn }. This method makes specific applications. This is a great tool to have in large
it hard for an adversary ADV to get hold of the required corporations that do not have have their own TFA system
authentication elements (B, T ) to even make the final product that would also like to add some monitoring options to their
needed for a successful authentication. Biometrics would not systems.
be a viable option to use in your system due to the high To show the differences between related products a feature
implementation cost both on our side and on the clients side, table has been created.
also there are some drawbacks with the accuracy of such All of the compared systems are TFAs of their own, they are
systems as covered by the authors, false recognition rate (FRR) all at industry standard, some being more focused on specific
and false acceptance rates (FAR) can be a problem within said areas than others- for example Duo must have an agent to get
Use Case Number UC1
Use case 1
Description Business signs up to TFA, providing the required details
Actor(s) Business
Pre-Conditions User must not already be signed up
FLOW OF EVENTS

1) Business representative goes to TFA website and navigates to the business sign up page.
2) Rep enters required details and submits.

Alternative Flow
N/A
Exception If the business has already signed up or did not fill all
the required fields they will be alerted.
Post Conditions Business will now be registered and an API key will be
generated.
Fig. 2: Duo
TABLE II: Business signs up to TFA
Features HSBC Steam Duo TFA
Use Case Number UC3
Dynamic OTP Yes Yes Yes Yes Use case 3

Mobile Support Yes Yes Yes Yes Description Updating Details


Actor(s) Business User
Multiple Operating systems Yes Yes Yes No Pre-Conditions User must be signed up

Easy to use No Yes No Yes FLOW OF EVENTS

Easy to implement No No No Yes 1) Open app and navigate to according section


2) App loads Details section
Performance Focused Yes Yes No Yes 3) Enter data in required fields
4) App sends data back to server data is updated

TABLE I: Comparison Table Alternative Flow


N/A
Exception In step 3, if not all required fields are entered submission will not be
possible.
system health and performance reports. All of these generate
dynamic OTPs just like we have to implement in our system. TABLE IV: Account management for users on the app
They also all extend their services onto the mobile platform
just like we need to, above we can see their interface and Use Case Number UC4
Use case 4
we can take a lot in concerning user interaction with the app.
Description Deletion of accounts
The Steam app and Duo layouts seem more suitable for our Actor(s) User
needs as we need the app to be simple but serve its purpose of Pre-Conditions User must exist
providing the OTP to the user. Duo being the only one which FLOW OF EVENTS

can provide services to different businesses such as Sofware as 1) User opens app and navigates to correct section
a Service (SaaS) cloud-based services [5] has the drawback of 2)
3)
App loads correct section and prompts user with conditions
User must accept conditions
the extra baggage of needing an agent to be introduced into the 4) App makes request and users records are removed from the system.

client system, while what we need is something simple that can Alternative Flow
easily be implemented. For our TFA platform we must keep it N/A
as simple as we can so businesses do not have to change their Exception User must accept conditions on deletion.

infrastructure to use our services.


TABLE V: Account management and deletion for users
III. U SE C ASES
This chapter describes some of the use cases and how we
handle certain situations. We also provide alternative routes adversaries we’re up against and the security requirements
that could be taken depending on the same events happening needed to deal with them.
in different conditions.
Our system consists of three participating entities: our
IV. S YSTEM M ODEL AND P ROBLEM S TATEMENT Users, Webservices and the 2FA APP.
In this section, we will be discussing the system model. a) User (u): Let U = {u1 , . . . , un } be the set of all users
More precisely, we will walk through each element of the that are registered with our service. Users within the system
system with a brief overview for each. can use the 2FA2 p2 to login to the available webservices (WS)
using the provided OTP from the app regardless if the user is
A. System Model registered to that specific webservice or not. Webservices can
In this part of the paper, we identify all the participating directly communicate with the 2FAApp by using a unique API
parties in our system model and briefly explain their Key acquired when the WS registers to use the service. This
operations and how they relate to each other as well as the will be used to validate by authenticating requests made to the
Use Case Number UC5
Use case 5
c) Two Factor Authentication Service (2FA2 p2 ): 2FA2 p2
Description Request of OTP can communicate both with the users and webservices. 2FA2 p2
Actor(s) User provides issues codes for users to login onto registered web-
Pre-Conditions Must be a member of a business that has incorporated TFA. services. 2FA2 p2 also generates and assigns API Keys when
FLOW OF EVENTS
webservices register to the platform, these will be used to
1) User must login with right credentials on supporting businesses site.
2) Business backend will then make an API call to the TFA platform.
validate and authenticate the webservices’ request.
3) App will produce an OTP that the user can then use to finalise the login process.
B. Adversarial Model
Alternative Flow
Our adversarial model is based on [6], the Dolev-Yao ad-
1) User opens app
2) App requests data from TFA platform and produces OTP
versarial model. In this threat model, the ADV can intercept,
3) OTP displayed and user can then use it to login to business site. overhear and change messages which are sent and received by
Exception N/A
our systems. We also assume that the ADV can be a legitimate
user in the system.
TABLE VI: OTP Request Cryptographic Security: We assume encryption schemes
are secure such that the ADV cannot access the original
Use Case Number UC6 plaintext message. We also take into consideration that the
Use case Generate OTP signature scheme is unforgeable such that ADV cannot forge a
Description On requiring an OTP users can initiate the app and obtain an OTP valid signature and that signature verification algorithms work
Actor(s) Business User
Pre-Conditions User must be part of the system
correctly. We also assume that the ADV cannot predict the
FLOW OF EVENTS output of a pseudorandom function. We take into consideration
that the ADV can compromise data and change the message
1) Users initiates the app
2) App requests data from TFA server on login during transit. We assume the ADV can perform a variety of
3) App then calculates OTP with requested data and displays it.
attacks such as brute force, rainbow attacks and MITM attacks.
Alternative Flow Asset Security: We assume the ADV cannot deny access
N/A to a valid user, such as making a web server unavailable. We
Exception N/A
also assume the ADV cannot gain access to the database but
TABLE VII: OTP Generation on the mobile device when can try SQL injection attacks to gain access to undisclosed
prompted by the login process data from the database server.
V. C RYPTOGRAPHIC P RIMITIVES
Use Case Number UC7
Use case Generate OTP (TFA platform)
We will use the following notations for cryptographic op-
Description Upon needing to validate a OTP entered by the user, the server erations throughout the paper. The set of all binary strings is
recalculates and compares. denoted as {0, 1∗ } and the set of all binary strings of length
Actor(s) Business n h

Pre-Conditions User/Business must be apart of the system


n as {0, 1} . Given a set of U , we refer to the it as ui .
FLOW OF EVENTS Additionally, we use the following notations for cryptographic
1) Server receives request to validate OTP from a specific user.
operations throughout the paper:
2) Server calculates an OTP for the user and compares with the password sent in. Definition 1 (Private-Key Encryption Scheme): A private-
Alternative Flow
key encryption scheme is defined by three algorithms. The
N/A key generation algorithm Gen, the encryption algorithm Enc
Exception N/A and the decryption algorithm Dec such that:
TABLE VIII: Once the webservice has aquired the OTP from 1. Gen is a probabilistic algorithm that outputs a crypto-
the user, it then makes a request providing the OTP which the graphic key K based on a security parameter l and a
TFA platform then validates and sends a response. distribution. The finite set of all possible keys that Gen
can output is called the key space and is denoted by K. In
addition to that, there is a specification of message space
M such that |M > 1|.
2FAApp. 2. Enc takes as input a key K ∈ K and a message
b) Webservice (ws): Let WS = {ws1 , . . . , wsm } be m ∈ M and outputs a ciphertext cm . The encryption
the set of all webservices that 2FA2 p2 provides service to. algorithm may be probabilistic and we denote this by
Each wsi ∈ WS has a public/private key pair denoted as cm ← Enc (K, m). We let C denote the set of all possible
pkwsi /skwsi . The public key is shared with all other entities ciphertexts that can be output by Enc(K, m) for each
in the system model while the private key is kept private. K ∈ K and m ∈ M.
A wsi communicates directly with the 2FAApp to verify 3. Dec is a deterministic algorithm that takes as in-
users credentials to which 2FAApp can respond with a user put a key k ∈ K and a ciphertext c ∈ C and
validation (so a login response) or a registration response if outputs a message m ∈ M. We denote this as
the user does not already belong to said WS system. m := Dec(K, cm ) = DecK (Enc(K, m)).
Definition 2 (Public-Key Encryption Scheme): A public- ,k, from a secret value. Password Based KDFs (PBKDF)
key encryption scheme is a tuple of three probabilistic include input of a password denoted as P , a salt, S, an
polynomial time algorithms (Gen, Enc, Dec) such that: iteration count , C, the length of the desired key kLen and
1. Gen is a probabilistic algorithm that takes as input a the Pseudorandom Function P RF to use. We denote k as: k
security parameter l and outputs a public/private key pair = PBKDF(P, S, C, kLen, P RF )
pk/sk.
2. Enc is a probabilistic algorithm that takes as input a VI. R EQUIREMENTS
public key pk and a message m and outputs a ciphertext Using our research in our previous requirements report we
cm . We denote this by cm ← Encpk (m). can address some of the issues and provide some function and
3. Dec is a deterministic algorithm that takes as input a pri- non functional requirements.
vate key sk and a ciphertext c and outputs a message m.
We denote this as m := Decsk (cm ) = Decsk (Encpk (m)). A. Functional Requirements
Definition 3 (Symmetric-Key Encryption Scheme): A
symmetric-key encryption scheme consists of three Requirement Level
probabilistic polynomial-time algorithms (Gen, Enc, Dec) R1. Businesses must be able to register their users with our services. MUST
Description For our services to run a business must first sign up and
such that: retrieve an API key to implement our system.
1. Gen is a probabilistic algorithm that takes as input a R2. The generation of the OTP must be efficient. MUST
security parameter l and outputs a key K ← Gen 1l ) DescriptionMaking the generation process of the OTP efficient should
be one of our top concerns, if our system generates the codes ineffi-
such that K ∈ K and the key length |K ≥ l| . ciently users will have to wait for them which will drive businesses
2. Enc is a probabilistic algorithm that takes as input a key elsewhere.
K and a message m and outputs a ciphertext cm . We R3. Users must be able to receive the OTP via the app. MUST
DescriptionAs we have gathered via our research users would rather
denote this by cm ← Enck (m). have an app to an extra physical device, for this we must have an app
3. Dec is a deterministic algorithm that takes as input a which displays the generated OTP.
keyK and a ciphertext c ∈ C and outputs a message m. R4. OTP’s must be generated only for legitimate/authenticated users. MUST
Description We must check the legitimacy of the user requesting an
We denote this as m := Deck (cm ) = Deck (Enck (m)). OTP before sending any data for increased security.

Definition 4 (Message Authentication Code (MAC) ): A


Message Authentication Code (MAC) [7] consists of three
probabilistic polynomial-time algorithms (Gen, Sign, Vrfy) Requirement Level

such that: R5. Businesses should be able to manage their account SHOULD
DescriptionBusinesses may have the ability to manage their subscrip-
1. Gen is a probabilistic algorithm that takes as input a tion to our services and update any of their details.
security parameter l and outputs a key K ← Gen 1l ) R6. Users should be able to manage their account. SHOULD
Description Users should be able to modify details or delete their
such that K ∈ K and the key length |K ≥ l| . account if required.
2. Sign is a probabilistic algorithm that takes as input a key R7. Malicious requests for the generation of OTP’s that could lead to SHOULD
K and a message m and outputs a tag T ← Signk (m). a Denial of Service attack [8], [9], [10], [11] should be identified and
the corresponding IP addresses should be blocked.
3. Vrfy is a probabilistic algorithm that takes as input a Description Looking at login patterns and general area of access is
key K, ciphertext m ∈ M and a tag T and verifies a way in which this could be achieved, if the request does not fit
the authenticity of T such that the ouput bit b := the pattern we could temporarily block access and have the business
request an unblock when verified.
Vrfyk (m, T ) = Vrfyk (m, Signk (m)) where b = 0||1 if
R8. Users should be able to register via various businesses. SHOULD
the signature is valid or not. DescriptionUsers working for different businesses that are using our
platform should have different OTPs for both every business they
Definition 5 (Non-keyed Hash): A hash function H takes belong to.
m as the input and produces an output known as a hash −
value or hash denoted by h = H(m). Hashes serve as a
digitalf ingerprint also called a messagedigest and can be B. Non-Functional Requirements
used to uniquely identify a messages integrity. Once m and h
VII. P ROTOCOL D ESCRIPTION
is sent to the recipient we can hash m and compare with h.
Definition 6 (Salt and CSPRNGs): A salt is denoted as S = In this section, we will describe the main protocols. These
RAND(n) where n is the number of bits using a cryptograph- protocols are successively applied to deploy a two-factor
ically secure pseudorandom number generator (CSPRNG) op- authentication infrastructure providing web-services user au-
posed to a pseudorandom number generator (PRNG). PRNGs thentication as well as data integrity and security. We cover
produce numbers which look random but are in fact created the 2FA architecture and what programming languages were
by a deterministic algorithm which makes the random values used.
reproducible making them insecure to use. We present our construction for 2FA2 p2 with our 3 partici-
Definition 7 (Key Derived Function): KDFs are determin- pating entities: a webservice (W S), a user and an authentica-
istic algorithms which are used to derive cryptographic keys tion platform (AP ).
Requirement Level
and then encrypting it with AP s public key pkAP to get c1 ,
NF1. Sending and receiving of data between CSP and business must MUST
be encrypted at all times
where c1 is the encrypted message:
DescriptionTo combat packet sniffing/snoopers and keep data secure
we must not send plain messages and we have to comply with laws c1 = EncpkAP ({username kH(password) kdetails })
stated in [2].
NF2. Data transactions between CSP and user must be encrypted at MUST
Upon reception, AP uses skAP to decrypt c1 and recover
all times m1 = DecskAP (c1 ). Next AP checks if said ui is part of
Description To combat packet sniffing/snoopers and keep data secure their system already, if not it saves their details into a secure
we must not send plain messages and we have to comply with laws
stated in [2] section. database while storing registration time by executing the cur-
NF3. An OTP must be generated in a truly random way MUST rent time function to get τ . AP also generates a salt, si ,using
Description This is a must as if the algorithm is simple and data is a cryptographically secure pseudorandom number generator
intercepted codes could easily be generated.
(CSPRNG) which is unique to ui . The salt will also be stored
NF4. The same OTP must not be generated more than once MUST
Description to be concatenated to the end of the hashed password to be
NF5. Freshness of the OTP must be verified from the authentication MUST hashed and stored.
server Passwords on server are determined and stored as such:
DescriptionAuthentication server will use time based systems when
verifying OTPs validity. SPui p = H(H(password) + si ).

Requirement Level AP also generates another random binary sequence of


NF6. Each OTP must be secretly bound to a specific user identity MUST length n, where the resultant sequence becomes a unique key
DescriptionEach OTP must be unique to each individual user every (uki ) for ui which will later be used to calculate the OT P .
time a user makes a request.
NF7. Data integrity must be insured MUST UserTable : {username kSPui p ksi kτ kuki }
DescriptionAs we are keeping user data we must ensure that any c) Requests: User ui wishes to login to W Si using
unauthorised data tampering is avoided at all times
2FAAPP. u1 provides their username and password so that
NF8. Data logs must be kept SHOULD
DescriptionTo keep track of user requests and data access we should W si can make an account verification request to the AP
keep logs to reference, this will make it significantly easier to identity by constructing a message m1 such that m1 = {username
problems with our system and spot malicious activity.
kH(password) kW SiAP Ikey }. W Si then encrypts m1 with
NF9. API call rate limiting SHOULD
DescriptionTo ensure we do not get attacked via DoS we can put AP s public key pkAP to get c1 = EncpkAP (m1 ).
a limit on how many requests we can take over a certain period of Upon receiving c1 , AP then decrypts the ciphertext using
time to make sure the servers do not get overload and completely stop
functioning.
skAP to get m1 := DecskAP (c1 ) and follows up with an API
key validation of W SiAP Ikey . Providing the key is valid and
the user exists AP proceeds to find the username supplied
a) Key Setup: W S and AP both obtain a public/private in its users table and calculates the salted hash of the hashed
key pair. The public key of each entity is shared with everyone password provided in m1 , H(H(password) + si ), comparing
while the private remains secret. Below we provide the list of it to the stored hash. Once the users credentials have been
the key pairs used in by the entities that are participating in certified AP sends back a signed response to W Si , c2 =
our protocol: {(σskAP (m2 )k(m2 )}. W Si checks the digital signature σskA P
and if the resulting check returns true (sender verified), W Si
• pkWSi /skWSi - public/private key pair for W Si
prompts ui for an OT P .
• pkAP /skAP - public/private key pair for AP
d) OTP Generation: When ui is requested for an OT P
b) Registration: For a W S to gain access to our platform they open their app and an OT P will be displayed for a given
they must first sign up providing details about their webser- amount of time.
vice. Upon completion, they will be assigned a unique AP I OT P generation algorithm:
key which solely identifies the specific W S. This key will be Take τ , uki and si for ui (locally stored)
used to authenticate requests made by the W S when they wish current time = CT , OT P gen rate = α
to validate user access. η = δ( CT - τ ) / α
In addition to W S, each user ui must also register to C = base iterations
our platform 1 . When ui sends a registration request, AP is OT P = PBKDF(uki ksi k(C + η)kP RF )
responsible to verify the validity of the request (e.g. user ui is By hashing uki η times we can always ensure that the OT P
not already registered). If the request is legitimate, then AP is always different as η will always change every α seconds.
initiates the registration process. Our algorithm will give us a hexadecimal string which we’ll
When ui registers they are required to provide personal take a substring of which will be our OT P .
details along with a username and password combination. ui e) OTP verification: In the verification step we first
proceeds by constructing the message, m1 , to be sent: determine the signature of the decrypted ciphertext, c3 , and
AP repeats the OT P generation algorithm above since the
m1 = {username kH(password) kdetails }
required data is also stored.
1 Note that registration process of user is different from the registration of During the last phase of the protocol, ui provides W Si
a W S. their current OT P which then W Si makes an API request
to the AP by constructing message m3 consisting of W Si in service in which case on restart PM2 will start the Node
API Key, OT P , ui username such that m3 = { (user- server again as soon as the VM has relaunched.
name kOT P kW SiAP Ikey ) } and then signing with W Sisk Following Kerckhoffs principle [15], where a crytosystem
and encrypting with APpk such that the ciphertext c3 = should be secure if everything about such system but the pri-
EncAPpk (σ W Sisk (m3 )km3 ). vate key were to be public knowledge including the algorithms
used, we have to provide security to our system as to not allow
VIII. I MPLEMENTATION any foreign users access to our VM.
We now describe the implementation and setup of our We took several steps to try and achieve this, we first created
system and which technologies were chosen to fully meet a user in our machine and added it to do the SUDOers group,
our needs and requirements. We’ll discuss the languages and this allows us to disable root login onto the machine which
frameworks that we used and how they were used throughout is typically what ADV will try to attempt first. We then
the project. proceeded by setting up a firewall to block any connections
Our platform is deployed on a resizable Virtual Private made to the server on any unauthorised ports. We kept SSH
Server (VPS) or Cloud Server on Digital Ocean [12] called connections open for server maintenance but only accessible
a droplet. The droplets current specs for the VM hosted on by our recently made sudo user. On top of everything else,
Digital Ocean: we introduced NGINX [16] onto the stack. NGINX is used as
———————————————————————— a reverse proxy to redirect HTTP connections to our HTTPS
———————————————————— 512 MB enabled Node server (HTTP on 80, forward to our declared
Memory / 20 GB Disk / LON1 - Debian 8.7 x64 kernel Node ports which have SSL enabled).
version 3.16.0-4-amd64 NGINX also serves as a load-balancer for our services. It
————————————————————————— allows us to have multiple Node servers running on various
——————————————————— secure ports and we can configure NGINX to round-robin
Hosting the VPM on Digital Ocean allows us to scale requests on the various Node servers.
effortlessly, both vertically and horizontally, depending on the We can further fine tune this by providing server weights
traffic to our server. They offer block storage which allows us to the load balancing algorithm in case the hypervisor hosting
to increase the storage size of our system easily without taking one of our VMs is running on better hardware allowing us
it down. We can also improve the system specs by selecting more computing power on a particular Node server. NGINX
a different package plan, for our purposes the lowest of the can also perform health checks on servers, if one of the servers
package plans was sufficient. is operating under par, it will lower its priority to give jobs to.
A. Server-side Setup C. Languages
We run our authentication platform on a Node JS server, 1) Typescript: TypeScript [17] is a free open source lan-
Node JS is an environment which allows JavaScript to be run guage that has been developed by Microsoft to add static type
outside a Web Browser. Due to the lack of object oriented checking and class based objected oriented programming
nature of JavaScript we decided to use Typescript. Typescript (OOP), it compiles into basic JavaScript. This is a great
is a superset of JavaScript developed my Microsfot which adds language to work with in large projects where we need
class based objected oriented programming into JavacScript. structure mechanisms in place; TS allows us to do that while
B. Setup also enabling us to use all the JavaScript tools. TS is a
great development language as it comes with error detection
1) Back-End: For our server, we needed something which before compilation which is helpful during the implementation
had asynchronous and non blocking capabilities which would process.
allow us to upscale or downscale depending on the user base.
2) Pug: Pug [18] formerly known as Jade, is a templating
Node JS framework matched our criteria on every front; it
language which allows us to generate HTML from JavaScript.
also makes it possible to deploy new instances effortlessly in
We use this so that our Node server (using Express) can deliver
the event that our user base grows to the point where our
data onto the page effectively. Below is an example of how
current system model cannot handle the volume of requests.
this works.
In [13], Tilkov et al cover the main aspects of using the Node
framework for a high-performance server. 1 r e s . r e n d e r ( ’ i n d e x ’ , { t i t l e : ’ Pug Demo ’ , m e s s a g e : ’
T e s t Data ! ’ } ) ;
Since our VPS has been hosted on Digital Ocean we can
aim to have 99.99% uptime as stated in DOs service-level 2
agreement (SLA) [14], with this in mind we must make sure
1 doctype html
that our Node server has minimal downtime to not disrupt the 2 h t m l ( l a n g = ’ en ’ )
usual service. To do this, we introduced a production process 3 head
manager, PM2. Its job is to keep our server alive and restart 4 meta ( c h a r s e t = ’ u t f −8 ’)
5 title title
it if the server goes down, this may be due to an error that 6 body
got through the production stage, or Digital Ocean has a lapse 7 h1 m e s s a g e
User Web Service 2FA Platform

Login.Request
* +
c1 = EncpkAP ({username kH(password)})

Verify

Response

Gen.OTP
* +
OT P = PBKDF(uki ksi k(C + η)kP RF )

username,OT P

Gen.OTP
* +
c2 = Enc(APpk {username kOT P kW SiAP Ikey }kσ W Sisk )

Verify

Response
Grant or deny access

Fig. 3: Sequence Diagram of Login Request and OT P Generation Verification

8 . 3) Swift: Swift [19] is a general purpose open source


Listing 1: Pug Template language designed by Apple released in 2014. This language
was created inhouse and it provides a wide plethora of
improvements from the legacy iOS programming language,
Objective C. Swift was picked over Objective C due to the
fact Swift is faster overall. It has less overhead and it lets us
do more with less with it’s strong typing and simple syntax.
D. DBMS
1 <! d o c t y p e html> 1) Redis: During the start of our implementation process
2 <h t m l l a n g = ’ en ’> we used Redis [20] as a temporary solution for our DBMS.
3 <head>
4 <meta c h a r s e t = ’ u t f −8’> Redis is a fast in-memory noSQL database which together
5 < t i t l e >Pug Demo</ t i t l e > with Node allows for quick integration and data storage. Redis
6 </ head> could also be used as a way to store current session data,
7 <body>
8 <h1>T e s t D a t a ! </ h1> temporary data which will be accsssed multiple times over
9 </body> the session, to decrease querying time.
10 </ html> 2) PostgreSQL: In our final implementation we switched
Listing 2: HTML output over from Redis to PostgreSQL [21] as we need a relational
database (RDBMS) to store our relational data. PostgresQL
setup time is a little longer comparing to Redis and not as fast a) : Another library used as mentioned previously is
but it has the ability of vertical scaling, no limit on record a template engine, PUG, used to interpolate variables into
numbers, which would be needed for our client base. the HTML without concatenating them in directly ourselves.
1 v a r q u e r y S t r i n g = ”INSERT INTO U s e r s ( f i r s t n a m e , We use Helmet [26] to aid with with HTTP header security
l a s t n a m e ) VALUES ( ”D” , ”McCoy ” ) ; in Express.js. Helmet is a collection of smaller middleware
Listing 3: Typical SQL insert query with PostgreSQL functions that set HTTP headers. One way in which an
ADV can try to attack our system is by investigating which
3) Other worthy mentions: MongoDB [22], first released in
technologies we’re using and using known exploits to penetrate
2009, is a noSQL database which uses JSON-like documents
our systems. Helmet provides ways to combat some of theses
for storage. This DBMS can scale horizontally by sharding
attacks. An example of this would be the X-Powered-By
(creating new partitions which are held separate to each other),
header, this gives information on which technology powers
this can increase latency when querying due to multiple
the server. By default this tells the client we’re using Express,
shards having to be queried. MongoDB was a tempting choice
the ADV could use this to find a known vulnerability with
at first due to its meshing capabilities with Node however a
Express or Node upon seeing this header. Examples of other
RDBMS was the better option for our needs.
attack preventions include cross-site scripting (XSS), which is
1 v a r c o l l e c t i o n = db . c o l l e c t i o n ( ” t a b l e N a m e ” ) ; when an ADV can place malicious JavaScript onto our page.
2 / / I n s e r t a s i n g l e document
3 c o l l e c t i o n . i n s e r t ( { key : ’ i t e m ’ } ) ; Helmet solves this by allowing us to set the Content-Security-
Policy (CSP) header, we define a whitelist of sites where the
4) Libraries,Frameworks and Packages: Since we are using
browser should load things from such as CSS.
Node, we have access to NPM. This is the packet manager for
b) : Another module used is Crypto [27], this module is
JavaScript and it’s the self proclaimed world’s largest software
the most important one security wise. Crypto provides us the
registry.
cryptographic functions that include signing and verification
Through NPM we have numerous tools at our disposal
of messages, general hashing and PBKDF functions.
to make the implementation as smooth as possible. We can
install and easily introduce packages and add them to our Below are some snippets of the implementation of cryptos
dependencies list all with NPM. functions:
1 # I n s t a l l t h e p a c k a g e and s a v e i t i n o u r d e p e n d e n c i e s
2 $ npm i n s t a l l e x p r e s s −−s a v e 1 c r y p t o . p b k d f 2 S y n c ( p a s s w o r d , s a l t , i t , kLength , t h i s .
hashAlgo ) . t o S t r i n g ( ’ base64 ’ ) ;
Listing 4: Installing a package with npm
Express [23] is a minimal Node web framework that Fig. 4: Generating an OTP using PBKDF snippet
provides a robust set of features to facilitate the development
of web applications. It enables rapid development of Node
based applications. For our purposes we mainly take advantage 1 l e t e n c r y p e d D a t a = c r y p t o . p u b l i c E n c r y p t ( c e r t , new
of its routing capabilities and create all our servers endpoints. B u f f e r ( d a t a ) ) . t o S t r i n g ( ’ base64 ’ ) ;
Below is an example route, when accessing the ”/” route, 2 l e t s i g n = c r y p t o . c r e a t e S i g n ( ’ sha256 ’ ) ;
3 sign . update ( ’ encryptedData ’ ) ;
www.example.com/, the server responds by rendering the 4 l e t s i g n a t u r e = s i g n . s i g n ( privateKey , ’ base64 ’ ) ;
index page.
1 app . g e t ( ” / ” , f u n c t i o n ( r e q , r e s ) { Fig. 5: Encrypting data with the public key derived from the
2 r e s . r e n d e r ( ’ index ’ , r e s ) ; certificate and signing with the private key
3 }) ;

Asynchronous JavaScript uses callbacks to return data after


execution of async functions have finished. This is a widely
1 l e t e n c r y p t e d D a t a : s t r i n g = r e q . body ;
known nightmare for most JS developers as it can get difficult 2 l e t b u f f e r = new B u f f e r ( e n c r y p t e d D a t a , ’ b a s e 6 4 ’ )
to stay on top of callbacks due to the nesting nature of them. ;
To make things easier promises were made. In our project we 3 l e t decryped = crypto . privateDecrypt ( privateKey ,
buffer ) ;
use Bluebird promises [24], they provide us with a cleaner and
more robust way of handling async code and error handling.
Fig. 6: Decrypting Snippet
This is much needed as all of the database queries are async
functions.
PostgreSQL does not support promises but npm can provide To generate our API-keys we used the node–uuid li-
us another library, pg-promise [25], which translates their brary [28], this library generates universally unique indentifiers
callback interface into responses based on promises. This facil- (UUID). node-uuid follows the the UUID standards published
itates data transactions and connections and also provides great by the Internet Engineering Task Force (IETF),RFC 4122 [29],
query chaining ability and error handling. pg-promise also and can generate 2 of the 4 versions of UUIDs. Version one
escapes SQL queries before executing queries, this eliminates being time based generation and version 4 being randomly
that security weakness by preventing SQL injections. generated using cryptos CSPRNG. For our purpose we use
the the latter of the two that returns the string form of the From a data transmission point of view the proposed model
uuid which we assign the a specific webservice. has met most of the guidelines proposed by NIST, such
as interoperability or ability to function with already exists
KeyChain Services [30] was used in our mobile app to
systems by implementing and using and adhering to standard
provide the means to keep sensitive information such as pass-
communications protocols as well as using the common base
words certificates and the sort safe. Data is stored locally and
and approved cryptographic algorithms and key lengths. We
can be restricted access by setting passwords and specifying
try to assure data integrity by signing before data is sent and
who has access to the data.
then computing the resultant check when the data is received.
Another library used in our app was Alamofire [31], a HTTP This provides a measure of assurance of data integrity as
networking library. It facilitates the process of sending requests stated in the NIST guidelines. Using RSA certificates keeps
to our platform with the right data and has the ability to parse messages under wraps between end points and it’s currently
the response accordingly. It allows for chain requests to be impossible to break, calculated to take a system with the
made as well as the ability to download responses to files standard computing power of a desktop 4,294,967,296 x 1.5
which helps with logging if necessary. million years to break the certificate.
We try to keep password entropy high by enforcing case
E. Keys, Certificates, Certificate Authorities and Safety fea- sensitive alpha numeric with at least 14 character length l
tures which is in the 99th percentile of password length disctribtion
For our platform to incorporate our desired security stan- according to Bruce schiener [38], this equates to a total of
dards relaying hashed data via an unsecured channel was not 62 symbols (N ) where the key space K ← N l , which is
enough. This could easily be intercepted by an ADV and 1.25 ∗ 1025 and has 57.6 bits of entropy. We think this is a
changed via a man-in-the-middle-attack (MITM) which could good length as any longer and users will start to write their
change the data without the recipient ever being aware. passwords down which causes another problem entirely.
At the beginning stages of development we produced our To prevent a variety of attacks, we implement failed attempt
own self-signed certificate via OpenSSL [32]. This provides lock-outs to prevent brute forcing; and salting and hashing of
the means to create our own private key and certificate signing the passwords which automatically negates dictionary attacks
request which is required to create an SSL certificate. With our and rainbow table attacks. By also using derived keys (using
certificate being self-signed it still provided the protection a PBKDF2) we increase the computational time needed to
Certificate Authority (CA), the entity that is responsible for calculate the passwords also known as key stretching, this
issuing certificates, signed certificate would provide but users can vastly increase the time required for an ADV to try and
would have to add our certificate to their exception list which compute the password. With CPU power being left trailing
would would turn them away. To solve this we turned to Let’s by new GPU technology, ADV are now switching over to
Encrypt [33]. Let’s Encrypt is a non profit automated CA GPU systems to try and get into systems. The most powerful
whose aim is to promote the adoption of HTTPS for a more GPU system being a rig which consists of 8x Nvidia GTX
secure and privacy-respecting Web. They provide the means to 1080 hashing dedicated machine [39] running Hashcat [40]
obtain, renew and manage SSL/TLS certificates. Technology to and can produce staggering numbers of hashes, over 1000
encrypt web communication has been around for a long time kH/s (thousand hashes per second) PBKDF2-HMAC-SHA256
but it’s been a challenge to use even for technical people, hashes, which totals to 9473.2 kH/s. Although our system will
Let’s Encrypt allows us to acquire, install and manage our probably never face an ADV like the one mentioned, lock-
certificates at no cost. outs are a must to prevent online attacks. We’ve covered only
After successfully setting up our certificate and our 2048- a small sample of attacks in our project but have learnt a
bit RSA keys we ran tests on SSL Labs and HTBridge [34] massive amount from taking this task on.
which provide the means to perform deep analysis on config- The product has met it’s goal of being lightweight and
uration of a web server by check NIST guidelines [35], PCI easy to integrate into interested businesses of any kind by
DSS compiances [36], HIPPA guidance [37] as well as the having little to no work needed to implement into other
industry’s best practices and assigns it a rating. webservices and just having the user download an app on their
phone. Further steps to take in the future development in this
IX. C ONCLUSION project would be to implement a white list of ips which our
In this paper, we proposed a protocol for secure and efficient platform can trust and also a database for known malicious
sharing of ehealth data in a multi-cloud environment. The users or ips. Also develop a wider distribution of platforms
proposed protocol was based on a Revocable Key-Policy that can run our app. With a little more work this system
Attribute-Encryption and allowed users to control access rights can definitely be implemented into real life environments to
directly on encrypted data. Moreover, the proposed protocol essentially strengthen their security.
allows secure and efficient revocation of access to data, for a In addition to that, we plan to implement our protocol in
certain user that is compromised, misbehaving or is no longer a cloud environment [41], [42], [43], [44], [45], [46], [47]
part of a user group, without having to decrypt and re-encrypt and measure its performance. Furthermore, we plan to explore
the original data. the incorporation of our protocol with mobile sensing ap-
plications and with privacy-preserving reputation systems for [33] “Let’s encrypt.”
cloud-based participatory sensing applications. The envisioned [34] “Htbridge.”
[35] P. Mell, T. Grance, et al., “The nist definition of cloud computing,”
system will be based on [48], [49], [50] and will effectively 2011.
maintain the privacy and anonymity of users [51], [52]. Finally, [36] A. Shaw, “Data breach: from notification to prevention using pci dss,”
we plan to explore the possibility of use such an authentication Colum. JL & Soc. Probs., vol. 43, p. 517, 2009.
[37] C. for Disease Control, Prevention, et al., “Hipaa privacy rule and public
technique in e-Health applications [53], [54], [55] where users’ health. guidance from cdc and the us department of health and human
data are considered sacrosanct [56], [57]. services,” MMWR: Morbidity and mortality weekly report, vol. 52,
no. Suppl. 1, pp. 1–17, 2003.
R EFERENCES [38] “Real-world passwords.”
[39] “Brutalis gpu.”
[1] J. Brainard, A. Juels, R. L. Rivest, M. Szydlo, and M. Yung, “Fourth- [40] “Hashcat.”
factor authentication: somebody you know,” in Proceedings of the 13th [41] N. Paladi, A. Michalas, and C. Gehrmann, “Domain based storage
ACM conference on Computer and communications security, pp. 168– protection with secure access control for the cloud,” in Proceedings
178, ACM, 2006. of the 2014 International Workshop on Security in Cloud Computing,
[2] E. Kennedy and C. Millard, “Data security and multi-factor authentica- ASIACCS ’14, (New York, NY, USA), ACM, 2014.
tion: Analysis of requirements under eu law and in selected eu member [42] Y. Verginadis, A. Michalas, P. Gouvas, G. Schiefer, G. Hbsch, and
states,” Computer Law & Security Review, vol. 32, no. 1, pp. 91–110, I. Paraskakis, “Paasword: A holistic data privacy and security by design
2016. framework for cloud services,” in Proceedings of the 5th International
[3] J. Camenisch, S. Fischer-Hübner, and K. Rannenberg, Privacy and Conference on Cloud Computing and Services Science, pp. 206–213,
identity management for life. Springer Science & Business Media, 2011. 2015.
[4] A. T. B. Jin, D. N. C. Ling, and A. Goh, “Biohashing: two factor [43] N. Paladi, C. Gehrmann, and A. Michalas, “Providing user security
authentication featuring fingerprint data and tokenised random number,” guarantees in public infrastructure clouds,” IEEE Transactions on Cloud
Pattern recognition, vol. 37, no. 11, pp. 2245–2255, 2004. Computing, vol. PP, no. 99, pp. 1–1, 2016.
[5] A. Michalas and M. Bakopoulos, “Secgod google docs: Now i feel [44] Y. Verginadis, A. Michalas, P. Gouvas, G. Schiefer, G. Hübsch, and
safer!,” in 2012 International Conference for Internet Technology And I. Paraskakis, “Paasword: A holistic data privacy and security by design
Secured Transactions, pp. 589–595, Dec 2012. framework for cloud services,” pp. 1–16, 2017.
[6] D. Dolev and A. Yao, “On the security of public key protocols,” IEEE [45] N. Paladi and A. Michalas, ““One of our hosts in another country”:
Transactions on information theory, vol. 29, no. 2, pp. 198–208, 1983. Challenges of data geolocation in cloud storage,” in Wireless Com-
[7] H. Krawczyk, R. Canetti, and M. Bellare, “Hmac: Keyed-hashing for munications, Vehicular Technology, Information Theory and Aerospace
message authentication,” 1997. Electronic Systems (VITAE), 2014 4th International Conference on,
[8] A. Michalas, N. Komninos, N. R. Prasad, and V. A. Oleshchuk, “New pp. 1–6, May 2014.
client puzzle approach for dos resistance in ad hoc networks,” in [46] A. Michalas, “Sharing in the rain: Secure and efficient data sharing for
Information Theory and Information Security (ICITIS), 2010 IEEE the cloud,” in 2016 International Conference for Internet Technology
International Conference, pp. 568–573, IEEE, 2010. And Secured Transactions, pp. 589–595, Dec 2016.
[9] A. Michalas, N. Komninos, and N. R. Prasad, “Mitigate dos and ddos [47] A. Michalas and K. Y. Yigzaw, “Locless: Do you really care your cloud
attack in mobile ad hoc networks,” International Journal of Digital files are?,” in 2016 IEEE/ACM 9th International Conference on Utility
Crime and Forensics (IJDCF), vol. 3, no. 1, pp. 14–36, 2011. and Cloud Computing (UCC), pp. 618–623, Dec 2015.
[10] A. Michalas, N. Komninos, and N. Prasad, “Multiplayer game for ddos [48] T. Dimitriou and A. Michalas, “Multi-party trust computation in decen-
attacks resilience in ad hoc networks,” in Wireless Communication, tralized environments,” in 2012 5th International Conference on New
Vehicular Technology, Information Theory and Aerospace Electronic Technologies, Mobility and Security (NTMS), pp. 1–5, May 2012.
Systems Technology (Wireless VITAE), 2011 2nd International Confer- [49] T. Dimitriou and A. Michalas, “Multi-party trust computation in decen-
ence on, pp. 1–5, Feb 2011. tralized environments in the presence of malicious adversaries,” Ad Hoc
[11] A. Michalas, N. Komninos, and N. R. Prasad, “Cryptographic puzzles Networks, vol. 15, pp. 53–66, Apr. 2014.
and game theory against dos and ddos attacks in networks,” International [50] A. Michalas, V. A. Oleshchuk, N. Komninos, and N. R. Prasad, “Privacy-
Journal of Computer Research, vol. 19, no. 1, p. 79, 2012. preserving scheme for mobile ad hoc networks,” in Computers and
[12] “Digitalocean: Cloud computing designed for developers.” Communications (ISCC), 2011 IEEE Symposium on, pp. 752–757, June
[13] S. Tilkov and S. Vinoski, “Node. js: Using javascript to build high- 2011.
performance network programs,” IEEE Internet Computing, vol. 14, [51] A. Michalas and N. Komninos, “The lord of the sense: A privacy
no. 6, pp. 80–83, 2010. preserving reputation system for participatory sensing applications,” in
[14] “Digital ocean sla.” Computers and Communication (ISCC), 2014 IEEE Symposium, pp. 1–
[15] F. A. Petitcolas, “Kerckhoffs principle,” in Encyclopedia of cryptography 6, IEEE, 2014.
and security, pp. 675–675, Springer, 2011. [52] A. Michalas, M. Bakopoulos, N. Komninos, and N. R. Prasad, “Secure
[16] “Nginx — high performance load balancer, web server, reverse proxy.” amp; trusted communication in emergency situations,” in Sarnoff Sym-
[17] “Typescript - javascript that scales.” posium (SARNOFF), 2012 35th IEEE, pp. 1–5, May 2012.
[18] “Pug.” [53] A. Michalas and R. Dowsley, “Towards trusted ehealth services in the
[19] “Swift.” cloud,” in 2015 IEEE/ACM 8th International Conference on Utility and
[20] “Tredis.” Cloud Computing (UCC), pp. 618–623, Dec 2015.
[21] “Postgresql.” [54] K. Y. Yigzaw, A. Michalas, and J. G. Bellika, “Secure and scalable dedu-
[22] “Tmongodb for giant ideas — mongodb.” plication of horizontally partitioned health data for privacy-preserving
[23] “Express - node.js web application framework.” distributed statistical computation,” BMC Medical Informatics and De-
[24] “bluebird.” cision Making, vol. 17, no. 1, p. 1, 2017.
[25] “pg-promise.” [55] K. Yigzaw, A. Michalas, and J. Bellika, “Secure and scalable statistical
[26] “Helmet helps you secure your express.js apps by setting various http computation of questionnaire data in r,” IEEE Access, vol. PP, no. 99,
headers. it’s not a silver bullet, but it can help!.” pp. 1–1, 2016.
[27] “Node crypto.” [56] A. Michalas, N. Paladi, and C. Gehrmann, “Security aspects of e-health
[28] “node-uuid.” systems migration to the cloud,” in e-Health Networking, Applications
[29] P. Leach, M. Mealling, and R. Salz, “Rfc 4122: A universally unique and Services (Healthcom), 2014 IEEE 16th International Conference
identifier (uuid) urn namespace, 2005,” Online: http://www. ietf. org/r- on, pp. 212–218, IEEE, 2014.
fc/rfc4122. txt. Accessed, vol. 4, 2013. [57] R. Dowsley, A. Michalas, and M. Nagel, “A report on design and
[30] “Keychain swift.” implementation of protected searchable data in iaas,” tech. rep., Swedish
[31] “Alamofire.” Institute of Computer Science (SICS), 2016.
[32] “Openssl.”

View publication stats

You might also like