SPECS E2EE server

When storing data on cloud, the users usually have to accept the risk of security incidents and failures related to modifications and loss of stored data. Moreover, the users can never be sure that the following properties are always respected:

  • confidentiality (C)
  • integrity (I)
  • write-serializability (WS), i.e., consistency among updates
  • read-freshness (RF), i.e., requested data always being fresh as of the last update

Also, even when the users are aware of data modifications or loss of data, they cannot prove to third parties when the cloud is to blame for WS or RF violations. On the other hand, the cloud provider itself cannot disprove false accusations.

To offer the users the secure storage solution and to allow them not only to detect but also prove violations related to modification and loss of stored data, SPECS is offering two security mechanisms: Database and Backup as a Service (DBB) and End to End Encryption (E2EE).


  • client-side encryption enforcing C and I


  • detection and proof of violations related to WS and RF
  • backup of stored data

There are three components that form the core part of these two mechanisms:

While E2EE could be with some limited functionality used independently from SPECS, it is the SPECS platform that provides the functionality to:

  • automatically deploy E2EE components according to the SLA (deploying the virtual machines with all the required E2EE components according to the security properties selected by user)
  • detect violations out of the monitoring events generated by E2EE monitoring
  • choose the remediation action (like moving the REST API form the primary storage site to the backup) after the analysis of the monitoring events
  • trigger the remediation actions

The implementation is based on the CloudProof idea presented in [1]. E2EE monitoring has the role of CloudProof auditor: it accepts attestations exchanged between E2EE client and E2EE server, and generates monitoring events which are then used in SPECS to detect the SLA alerts and violations. After the analysis of monitoring events, SPECS chooses and triggers the remediation actions.

E2EE server is based on the Crypton framework, as well as is the E2EE client crypto part. It has to be noted that E2EE client is to be installed (it will be provided as a Chrome extension) by the users, SPECS does not manage it. SPECS manages the monitoring (auditor) and server.

The violations SPECS can detect and remediate are mostly related to the scenarios when a server is compromised and starts for example serving the stale files (older versions of the files) or forking the files [2]. Forking is briefly described below.

Fork attack

Let us say the two users are logged in the E2EE server: john and mary.



User john wants to share notes.txt with mary. He first need to add mary as a trusted user (and the other way around). The fingerprint of the public key needs to be verified via out-of-band communication (for example by phone).


After adding mary to his trusted users, john can share the file.



The file immediately appears in the mary's list of files.


Once the file is shared with write permission to mary, she can edit it and push to the server. Now, the server might be compromised in the way that it forked the notes.txt and now serves one version of the file to john, one to mary. However, SPECS will detect this violation when checking the monitoring events generated out of the attestations that are exchanged between the client and the server.

[1] R. A. Popa, J. Lorch, D. Molnar, H. Wang, L. Zhuang. "Enabling Security in Cloud Storage SLAs with CloudProof." Usenix Technical Conference 2011. [2] J. Li, M. Krohn, D. Mazieres, and D. Shasha. "Secure untrusted data repository (SUNDR)". In OSDI, pp. 121–136, 2004.


Installation of Node.js

curl -sL | bash - 
sudo apt-get install nodejs

Installation of PostgreSQL

sudo apt-get install postgresql

Installation of Redis

tar xzf redis-stable.tar.gz 
cd redis-stable 
make && make install

Installation of DBB+E2EE Server

git clone
cd specs-mechanism-enforcement-e2ee-server/server 
npm link

Run DBB+E2EE Server

cd specs-mechanism-enforcement-e2ee-server/server/bin
./cli.js run


E2EE server is to be used using E2EE client.


This product includes software developed at "XLAB d.o.o, Slovenia", as part of the "SPECS - Secure Provisioning of Cloud Services based on SLA Management" research project (an EC FP7-ICT Grant, agreement 610795).


Miha Stopar,


Copyright 2013-2015, XLAB d.o.o, Slovenia

E2EE Server is free software: you can redistribute it and/or modify it
under the terms of the Affero GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

Crypton Server is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the Affero GNU General Public
License for more details.

You should have received a copy of the Affero GNU General Public License
along with Crypton Server.  If not, see <>.