To strengthen the security of the process, the
content of the index document is ciphered with the
AES algorithm using a 128-bit key, meaning that its
sensitive information will not be exposed when
stored on Google servers. Thus, an additional
security layer for the ciphered documents is
provided, since the password needed to access the
information for deciphering the documents is
different from the Google account password or the
password used to encrypt each document.
Thanks to the listeners explained in the previous
section, combined with the selected algorithm and a
master password, the documents are decrypted and
presented to the user as plain text when requested. In
most cases, the document will be received in
packets, meaning that it will have to be stored
temporarily in a buffer until it is ready to be
deciphered.
As expected, the size of the documents increases
after encryption. Depending on the algorithm used,
this size can double. The documents are thus
compressed before they reach the servers as the
current storage limit of Google Docs is 512 KB.
Thus, we can assume that the ciphering process does
not have a significant effect on typical editing in
terms of size. Furthermore, there are even cases in
which the compressed ciphered document is smaller
than the original, unciphered version.
4.2 Encrypted Document Sharing
To address the encrypted document-sharing
problem, we have extended our previous work and
proposed a new solution based on the creation of a
new index for each new document to be shared. This
new shared index document must contain a unique
line with data related to the encryption of the shared
document, as it appears in the general index. This
data will be created as a hidden file.
The names of the different indices follow a
particular notation to identify them:
plugin.doc: the general index. This contains
data related to all ciphered documents,
regardless of their status (shared or private).
plugin_<docID>.doc: shared index for the
shared document with the identifier docID. Its
content is also included in the general index.
For the owner, sharing a ciphered document with
other users involves the same process as in the case
of unciphered documents; there is no difference in
the use of the Google Docs interface.
When an owner shares a document, the request is
intercepted by the listeners. If this is the first time
the owner is sharing a ciphered document, a new
popup will appear asking for a new password: the
shared key. Once this value has been set, it will be
written in the general index for future operations.
Moreover, the first time a specific encrypted
document is shared, a new associated shared index
will be created using the Google Docs API.
The new shared index will contain the
information associated with the encryption of the
document, copied from the general index. The
content of this index is also ciphered using AES with
a 128-bit key, as occurs with the general index. The
password to encrypt the index will be the shared
key, which will preferably be different from the
master key. Accordingly, when an owner shares a
document he will simply have to give the shared key
to the rest of the users (using a secure channel),
meaning that the master key will remain private and
safe.
It is important to highlight that the information
relating to the shared and general index must be
synchronized at all times. If any kind of incoherence
occurs, the data from the owner’s general index will
be prioritized, and the shared index information will
be updated accordingly.
4.2.1 Sharing the New Index
After the sharing of the ciphered document and the
creation of its shared index, the index itself needs to
be shared with the users who have access to the
corresponding document. To share this index, a new
petition will be made through the Google Docs API
with all the necessary information. This petition will
be repeated for every user who has access to the
document, keeping the owner’s general index with
its critical information private.
As shown in Figure 2, the owner of the documents
will have as many shared indices as documents that
are being shared, each distinguishable by its name,
which contains the document identifier. In the
example, the owner has four encrypted documents,
two of which (UD1 and UD2) are private; their
ciphering information is stored in the hidden index
file plugin.doc. The other two documents, with
docID values SD1 and SD2, are shared with three
different users. For each document a new hidden
document is created, plugin_<docID>.doc,
containing the same ciphering information as in the
general index, plugin.doc. The general index is
ciphered with the private master key (MK), while
the shared indices use the same shared key (SK). If
the owner decides to assign a different encryption
key to SD1 or SD2, it would be transparent to the
rest of the users, who would only need to know the
CLOSER 2011 - International Conference on Cloud Computing and Services Science
442