Currently, widely used decentralized storage networks, such as IPFS & Filecoin, mainly store public unencrypted data. The data encryption and decryption process must be completed by storage clients. Decentralized storage of personal data still faces challenges. Therefore, we hope to develop a tool that can perform various tasks, including encryption and decryption of private data, uploading to Web3.Storage and retrieving data from IPFS Gateway.
What it does
CipherBox is a desktop application for backing up personal data. After the user's private data is encrypted, it can be backed up to the IPFS & Filecoin network using data aggregators such as Web3.Storage.
How we built it
We use various algorithms, keys, and data models such as Password-Based Key Derivation Function 2, ChaCha20, IPLD, CAR, and Tauri. CipherBox also adopts a custom method to manage the IPLD data structure, which is more conducive to network transmission and subsequent continuous optimization.
Challenges we ran into
Regarding encryption algorithms and strategies, we need to consider and balance three aspects of security, efficiency, and convenience. At present, users only need to set a password to manage applications, which brings convenience to users. The password is not stored on any medium, and only the derivation method of the key is recorded, which improves the application's security. At the same time, we choose to use ChaCha20, a fast and high-strength cipher stream algorithm, to improve the efficiency of the application.
Instead of directly using IPFS's default data structure, CipherBox implements a custom IPLD data structure to more efficiently utilize network transmission with the IPLD specification.
There are several difficulties and challenges in the process of asynchronous programming in Rust and the interaction logic of desktop applications.
Accomplishments that we're proud of
Data saved on a single device may be lost for various reasons, such as operational errors, mechanical failures, and natural disasters. One of the main methods to protect important data is data backup. CipherBox we developed can successfully use the decentralized storage network to back up personal data safely and efficiently.
What we learned
Security measures such as data encryption and decryption and key protection
The method of building a custom IPLD data structure
Better understanding and use of Rust language
The process of docking Web3.Storage API
What's next for CipherBox
Set the implementation of the corresponding key to further improve data security and lay the foundation for sharing encrypted data in a small area
Increase the use of asymmetric keys to solving the problem of sharing data between users
Export and import of meta information in CipherBox
Add data sources in addition to Web3.Storage
Add support for more data for backup