# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.notcentralised.com/workflows/files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
