combox-paper

notes and other things concerning combox
git clone git://git.ricketyspace.net/combox-paper.git
Log | Files | Refs

commit 9497ded90b9e48a08e103fab25ccac8adf5bc4d5
parent 7e08085aa5314c2a9b9845fef9d4a7d49c23df00
Author: Siddharth Ravikumar <sravik@bgsu.edu>
Date:   Mon,  7 Mar 2016 19:33:48 -0500

Edited Chapter 1.

Diffstat:
report/chapters/1-intr.tex | 72+++++++++++++++++++++++++++++++++++++++---------------------------------
report/combox-report.pdf | 0
report/prologue/abbrev.tex | 1+
3 files changed, 40 insertions(+), 33 deletions(-)

diff --git a/report/chapters/1-intr.tex b/report/chapters/1-intr.tex @@ -4,10 +4,10 @@ screwed.}{\textit{Daniel J. Bernstein}} Internet companies have made it trivial for computer users to store -data/information on their computers and at the same time there is a -lot of evidence of governments and other powerful organizations being -able to access information/data stored on the Internet companies' -computers\cite{website:wikileaks-spyfiles}. Also most companies add a +data/information on their servers and at the same time there is a lot +of evidence of governments and other powerful organizations being able +to access information/data stored on the Internet companies' +computers\cite{website:wikileaks-spyfiles}. Also, most companies add a standard clause in their privacy policy that allows them to disclose information about users or information stored/created by users to ``third parties'': @@ -25,16 +25,17 @@ In this type of world, it did be good to have a program that would encrypt all the data/information before storing it on the storage provided by Internet companies. combox aims to be one such program which not only encrypts but stores only a part of the encrypted -data/information on the Internet company' storage, thus making it -non-trivial for ``third parties'' get access the user's -data/information. Section \ref{1-sec-b} gives a conceptual -introduction to combox; Section \ref{1-sec-cb-diff} enumerates how combox -is different from Combo-Box; lastly, section \ref{1-sec-using-cb} -contains information on how one can start using combox. +data/information on the storage provided by an Internet company, thus +making it non-trivial for ``third parties'' get access the user's +data/information. Section \ref{1-sec-cb} gives a conceptual +introduction to combox; Section \ref{1-sec-cb-diff} enumerates how +combox is different from Vollmar's Combo-Box; lastly, section +\ref{1-sec-using-cb} contains information on how one can start using +combox. \section{What is combox?}\label{1-sec-cb} -combox allows the user to store all her files in the ``combox +combox allows the user to store all their files in the ``combox directory'' and combox picks each file stored in the combox directory, splits them into N shards, encrypts each of the N shards and spreads the shards to N node directories. A ``node directory'' is the @@ -121,29 +122,32 @@ respective node directory on the user's computer. \label{fig:1-combox-overview-1} \end{figure} -As of combox \verb+v0.2.2+, combox is compatible on GNU/Linux and OS +As of combox \verb+v0.2.3+, combox is compatible on GNU/Linux and OS X, it supports just two file storage providers -- Google Drive and Dropbox. \section{How is combox different from Combo-Box?}\label{1-sec-cb-diff} Combo-Box by Wesley Vollmar\cite{vollmar-combo-box} was the first -implementation of the idea storing encrypted shards of a file on the -computers different of different file storage providers. Differences -between Vollmar's Combo-Box and combox are enumerated below: +implementation of the idea of storing encrypted shards of a file on +storage provided different file storage providers and depending on the +file storage provider's client to sync shards to their respective +servers. Differences between Vollmar's Combo-Box and combox are +enumerated below: \begin{description} \item[Platform] Combo-Box runs Microsoft Windows, whereas combox runs - on GNU/Linux and OS X and is not compatible with Microsoft Windows. + on GNU/Linux and OS X and is not compatible with Microsoft Windows + as of version 0.2.3. \item[File splitting] Combo-Box splits a file into shards based on the space available on each node directory\cite{vollmar-combo-box}, while combox is not yet cognizant about about space left in each node directory and splits the file into N equal shards, where N is equal to the number of node directories. \item[User Interface] Combo-Box is graphical application while combox - mostly a commandline program; combox's configuration wizard has a - graphical interface and the wizard has a commandline interface for - users who just like to do everything from the commandline. + is mostly a commandline program; combox's configuration wizard has a + graphical interface. The configuration wizard has a commandline + interface too for users who like TUI. \item[Database] Combo-Box uses a SQL traditional database with two tables to keep track of files' shards, files' hash, files' last ``sync time'' and for ``security and stability'' uses stored @@ -154,12 +158,14 @@ between Vollmar's Combo-Box and combox are enumerated below: the files stored in the combox directory using the pickleDB library\cite{pylib:pickledb}. The key-value data store is a JSON file and all access to this data store is done through an instance - of \verb+combox.silo.ComboxSilo+ which enforces synchronization - through a lock (\verb+threading.Lock+). In the data store, combox - keeps track of the hashes of all the files stored in the combox - directory; the data store also contains dictionaries that track - number of shards which have been create/moved/modified/deleted on - another computer. + of \verb+combox.silo.ComboxSilo+ + class\footnote{https://git.ricketyspace.net/combox/tree/combox/silo.py?id=fb7fdd218\#n29} + which ensures that only one thread can read from or write to the + data store at any time through a lock (\verb+threading.Lock+). In + the data store, combox keeps track of the hashes of all the files + stored in the combox directory; the data store also contains + dictionaries that track number of shards which have been + create/moved/modified/deleted on another computer. \item[Installation] Combo-Box uses the proprietary InstallShield\cite{nonfree-installshield} to install the program, @@ -168,7 +174,7 @@ between Vollmar's Combo-Box and combox are enumerated below: combox is a python package, it either be installed through python's package manager (\verb+pip+\cite{py:pip}) with \verb+pip install combox+ or it can be installed from the source - with the standard $python setup.py install$. + with the standard \verb+python setup.py install+. \item[Configuration] Combo-Box saves its configuration inside the Combo-Box directory and this configuration is shared by all @@ -178,11 +184,11 @@ between Vollmar's Combo-Box and combox are enumerated below: combox stores its configuration at \verb+$HOME/.combox/config.yaml+; the configuration file is not - shared on computers on which the user runs combox and therefore is - independent; this makes it possible to keep the combox directory and - the directories of the file storage providers' (node directories) in - different location on each computer. The configuration file is a - YAML file and can be directly edited by the user if she wishes to. + shared on computers on which the user runs combox; this makes it + possible to keep the combox directory and the directories of the + file storage providers' (node directories) in different locations on + each computer. The configuration file is a YAML file and can be + directly edited by the user if they wish to. \end{description} \section{Using combox}\label{1-sec-using-cb} @@ -203,7 +209,7 @@ combox is extremely event-driven and depends on file-system events to do the right thing when a file is created/modified/moved/deleted, so the user must sure to start combox before starting the file storage providers' client programs that sync encrypted shards to the -respective node directories; on most GNU/Linux distributions this can -be automated through by using the distribution's startup system (most +respective node directories; on GNU/Linux distributions this can be +automated through by using the distribution's startup system (most GNU/Linux distributions seem to use \verb+systemd+\cite{website:systemd} these days). diff --git a/report/combox-report.pdf b/report/combox-report.pdf Binary files differ. diff --git a/report/prologue/abbrev.tex b/report/prologue/abbrev.tex @@ -3,6 +3,7 @@ \abbreviation{YAML}{YAML Ain't Markup Language} \abbreviation{CLI}{Command Line Interface} \abbreviation{GUI}{Graphical User Interface} + \abbreviation{TUI}{Text User Interface} \abbreviation{JSON}{JavaScript Object Notation} \end{listofabbreviations}