# Files

The storage of and access to files through censorship-resistant and confidential technologies is essential to many applications.

#### Core Features:

This SDK harnesses cutting-edge technologies to deliver:

* **Censorship Resistance:** Utilizing the InterPlanetary File System ([IPFS](https://ipfs.tech)), a peer-to-peer file storage protocol, **NotVault** ensures your file's data is resistance to censorship.
* **Confidentiality:** By implementing a Single Key Encryption methodology rooted in the Advanced Encryption Standard ([AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)) algorithm, **NotVault** guarantees the confidentiality of your files. This method creates a unique secret for each file, which is then used to encrypt the file, enabling efficient and confidential file distribution.
* **Private File List:** **NotVault** empowers each user with a private list of their files uploaded to IPFS. This list serves as a reference and includes:
  * File Name
  * Upload Date
  * Secret Encryption Key

#### Workflow

Using **NotVault**, you can create workflows with the following steps:

* **Upload:** When a file is selected for upload, the following process is initiated:
  1. **NotVault** generates a UUID-based random key.
  2. This key is used to encrypt the file via the [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) algorithm.
  3. The encrypted file is then sent to [IPFS](https://ipfs.tech).
  4. Keep in mind, the file departs from the **NotVault** runtime only after encryption.
* **Listing:** Users can access their private file list, returning a list of names, upload dates, and secret encryption keys.
* **Retrieval:** Users can fetch a file from [IPFS](https://ipfs.tech) and decrypt it within the **NotVault** runtime using the corresponding secret key. This design ensures the reduction of potential content leaks.
* **Deletion:** Users can remove a file from their private list and unpin it from [IPFS](https://ipfs.tech).

> Important: Full confidentiality can only be attained by refraining from sharing the data itself, but rather by sharing cryptographic derivates of the confidential data. When a dataset is accessible to more than one person, managing the data's footprint becomes a challenge.
