Smart Home: Smart home devices can often only achieve their full potential if they are connected to the internet and can be accessed through mobile devices. However, most such systems store the user's data in the cloud, in a way that the service provider has access to the data. Such access is problematic because it allows the service provider to read highly private data from devices placed in private space, or it allows the service provider to remotely control the user's appliances and other devices (e.g., a smart home service provider should not be able to open smart door locks).
If, instead, FileTrain is used for the data transfer between smart home devices and the user's mobile devices, any private data uses end-to-end encryption and can only be accessed by the user himself. The user can, for example, install a FileTrain-enabled smart home gateway in their local network and block the smart home devices from directly accessing the internet. FileTrain-enabled applications can then use the FileTrain API to download information from smart home devices like power meters or room climate sensors, and to upload control information to control smart home appliances.
Industry 4.0: In modern production environments, complex processes and procedures are increasingly automated. As part of this automation, control and status information is transferred between production machines and central control facilities. Such information is highly critical, so all changes must be tracked and it must be possible to identify the origin of any change. For this and similar scenarios, FileTrain uses unforgeable cryptographic signatures for all data transfers.
Communication solutions: Especially when it potentially involves confidential information, communication should use end-to-end encryption. The FileTrain libraries have previously been used to develop a service for secure exchange of files. Similar mechanisms can be applied to other forms of communication such as instant messaging, where FileTrain can be used for encrypted and authenticated data transfer. As an example, a chat application can register a chat room with the FileTrain servers and can use the FileTrain libraries to automatically share the cryptographic keys with all users involved in the chat. From that point on, if messages are passed to the FileTrain libraries, they will automatically be forwarded to the affected users.
Your application: If your application exchanges data between different devices or requires central storage of data over a longer period, it likely can use the FileTrain API for these tasks. The FileTrain libraries are generic and provide high security without any effect on usability.
FileTrain API uses a client-server architecture to enable clients to synchronize data between clients and to persistently store data on a central server. Data is synchronized as objects (opaque blocks of binary data, similar to files in a file system) in virtual directories (similar to directories in a file system). These directories can form trees, as in a regular file system, and are categorized as collections (where each collection forms the root of a directory tree and is the equivalent of a file system). This flexible structure can be mapped onto any kind of data synchronization problem. All data and all directory and object names are encrypted on the client-side.
There are two types of servers: one central master server which keeps track of all users and maintains meta information about which information is shared with whom, and various data servers which store the synchronized data and which coordinate real-time dissipation of updates to all connected clients. All these servers as well as the client-side libraries are open-source software:
Client-side libraries: The FileTrain client-side libraries implement authentication with the servers as well as client-side encryption of synchronized data. They also provide a high-level data synchronization API on top of low-level update functionality provided by the servers. The libraries are designed for integration into third party projects. So far, only the Java library is available, implementations for other languages will be released soon. The Java FileTrain library is found at https://github.com/filetrain/jfiletrain.
Master server: The master server forms a central point for user management and keeps track of all data servers. The server has information on all collections as well as information about access rights, so that a user can simply query the master server to find out about all accessable data. The master server is written in Java and is available at https://github.com/filetrain/filetrain-server
Data server: The data server is stored in the same Git repository as the master server. It stores and tracks all uploaded data and, whenever the data changes, forwards change events to all connected clients. Clients can also query the data server about changes which happened since a specified point in time, to download all changes which happened while the client was offline.
FileTrain API is available under GNU Lesser General Public License v3.0.
FileTrain API is maintained and used by FileTrain UG (haftungsbeschränkt) from Karlsruhe, Germany, as the basis of the Dropbox-like cloud storage FileTrain.
For further information, please give us a call (+49 721 96496789) or write an E-Mail to firstname.lastname@example.org.