Skip to content

Commit fceb369

Browse files
authored
Update README.md
Extended
1 parent 95bb071 commit fceb369

1 file changed

Lines changed: 165 additions & 110 deletions

File tree

README.md

Lines changed: 165 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,121 @@
1-
# FileShotZKE
2-
ZKE method
1+
# FileShot Zero-Knowledge Encryption (ZKE)
32

4-
# FileShot Zero-Knowledge Encryption
3+
Client-side, open-source zero-knowledge encryption used by FileShot.io.
54

6-
**Open-source zero-knowledge encryption implementation using Web Crypto API**
5+
This repository contains the browser-based encryption system that powers FileShot’s zero-knowledge upload pipeline. All encryption occurs locally in the user’s browser via the Web Crypto API. FileShot servers never receive passwords, keys, or unencrypted data.
76

8-
This repository contains the client-side encryption code that powers FileShot.io's zero-knowledge encryption feature. Files are encrypted entirely in your browser before upload, ensuring that even FileShot's servers cannot decrypt your files.
7+
This ensures files stored and shared through FileShot remain unreadable by FileShot, third parties, attackers, or governments.
98

10-
What is Zero-Knowledge Encryption?
9+
---
10+
11+
## What Zero-Knowledge Encryption Means
12+
13+
Zero-knowledge encryption ensures:
14+
15+
* Files are encrypted before they leave the browser.
16+
* Decryption keys never leave the user’s device.
17+
* FileShot servers store only encrypted blobs.
18+
* No one, including FileShot, can decrypt user files.
19+
20+
All cryptographic operations are performed client-side using the Web Crypto API.
21+
22+
---
23+
24+
## Full FileShot Feature Set
25+
26+
### Core Privacy Features
27+
28+
* Client-side zero-knowledge encryption.
29+
* No accounts or identity required.
30+
* No analytics, tracking, or fingerprinting.
31+
* Keys and passwords never transmitted.
32+
* Open-source encryption implementation.
33+
* Servers store encrypted data only.
34+
35+
### Upload & Sharing Features
36+
37+
* Uploads up to 15GB per file.
38+
* Secure, shareable links.
39+
* Expiration settings from 1 hour to 30 days.
40+
* Optional password protection.
41+
* Anonymous download information.
42+
* NVMe-backed high-speed infrastructure.
43+
44+
### Monetization Features
45+
46+
* Optional paid-access downloads.
47+
* Up to 50% commission per download.
48+
* Payments integrated without compromising encryption.
49+
50+
### Built-In File Tools
51+
52+
#### PDF Tools
53+
54+
* Edit PDFs.
55+
* Merge PDFs.
56+
* Split PDFs.
57+
* Compress PDFs.
58+
* Convert PDFs to and from images.
59+
60+
#### Conversion Tools
61+
62+
* Video to MP4.
63+
* Audio to MP3.
64+
* Image format conversion (PNG, JPG, WebP, AVIF).
65+
* Document conversion (PDF ↔ DOCX, TXT → PDF, etc.).
66+
* Archive conversion (ZIP, TAR, 7Z when supported).
67+
68+
#### Archive Tools
69+
70+
* Create ZIP, TAR, and 7Z archives.
71+
* Extract ZIP, RAR, TAR, GZ, and 7Z.
72+
73+
#### Compression Tools
74+
75+
* Image compression.
76+
* Video compression.
77+
* General file compression.
78+
79+
#### Utility Tools
1180

12-
Zero-knowledge encryption means that **we cannot decrypt your files**, even if we wanted to. The encryption happens entirely in your browser using the Web Crypto API, and we never receive your encryption key or password.
81+
* File metadata inspection.
82+
* SHA-256 hash generation.
83+
* Secure local file deletion.
1384

14-
### Key Features
85+
### Platform-Level Features
1586

16-
-**AES-256-GCM encryption** - Industry-standard encryption algorithm
17-
-**PBKDF2 key derivation** - 100,000 iterations for password-based key derivation
18-
-**Client-side only** - All encryption happens in your browser
19-
-**No server access** - We cannot decrypt your files, even with a court order
20-
-**Open source** - Review the code yourself
87+
* Zero-knowledge encryption pipeline.
88+
* Secure link signing.
89+
* Client-side metadata handling.
90+
* Private, self-hosted infrastructure.
91+
* Modern high-performance UI.
92+
* Web Crypto API for all cryptographic operations.
93+
94+
---
2195

2296
## Quick Start
2397

2498
### Try the Demo
2599

26-
1. Open `demo.html` in your browser
27-
2. Select a file and encrypt it
28-
3. Download the encrypted file
29-
4. Decrypt it with the same password
100+
1. Open `demo.html`.
101+
2. Select a file and encrypt it.
102+
3. Download the encrypted output.
103+
4. Decrypt using the same password.
104+
105+
---
30106

31-
### Use in Your Project
107+
## Using in Your Own Project
32108

33109
```html
34110
<script src="zero-knowledge.js"></script>
35111
<script>
36-
// Encrypt a file
37112
const fileInput = document.getElementById('fileInput');
38113
const file = fileInput.files[0];
39114
const password = 'your-secure-password';
40-
115+
41116
const result = await window.zeroKnowledgeEncrypt(file, password);
42-
// result.encryptedBlob - encrypted file ready to upload
43-
// result.metadata - file metadata (name, size, type)
44-
45-
// Decrypt a file
46-
const decryptedBlob = await window.zeroKnowledgeDecrypt(
117+
118+
const decrypted = await window.zeroKnowledgeDecrypt(
47119
encryptedBlob,
48120
password,
49121
originalFileName,
@@ -52,57 +124,60 @@ Zero-knowledge encryption means that **we cannot decrypt your files**, even if w
52124
</script>
53125
```
54126

55-
## How It Works
127+
---
128+
129+
## How It Works
130+
131+
1. **Key Derivation** – A random salt is generated; a key is derived using PBKDF2 (100,000 iterations, SHA-256).
132+
2. **Encryption** – AES-256-GCM encrypts the file with a 12-byte IV.
133+
3. **Upload** – Only the encrypted blob is transmitted.
134+
4. **Storage** – Servers store encrypted blobs and encrypted metadata only.
135+
5. **Download & Decryption** – Recipients decrypt files entirely in-browser using the shared password.
56136

57-
1. **Key Generation**: Your browser generates a random salt and derives an encryption key from your password using PBKDF2
58-
2. **Encryption**: Your file is encrypted using AES-256-GCM before upload
59-
3. **Upload**: Only the encrypted data is sent to FileShot's servers
60-
4. **Storage**: We store encrypted blobs that we cannot decrypt
61-
5. **Download**: Recipients decrypt files in their browser using the password you shared
137+
---
138+
139+
## Security Details
62140

63-
## Security Details
141+
* AES-256-GCM.
142+
* PBKDF2 (SHA-256, 100,000 iterations).
143+
* 16-byte salt.
144+
* 12-byte IV for GCM.
145+
* 256-bit keys.
64146

65-
- **Algorithm**: AES-256-GCM (Galois/Counter Mode)
66-
- **Key Derivation**: PBKDF2 with SHA-256
67-
- **Iterations**: 100,000 (recommended for 2025)
68-
- **Salt Length**: 16 bytes (128 bits)
69-
- **IV Length**: 12 bytes (96 bits) for GCM
70-
- **Key Length**: 256 bits
147+
---
71148

72-
## File Structure
149+
## File Structure
73150

74151
```
75152
fileshot-zke/
76-
├── zero-knowledge.js # Main encryption implementation
77-
├── demo.html # Interactive demo page
78-
├── README.md # This file
79-
└── LICENSE # MIT License
153+
├── zero-knowledge.js
154+
├── demo.html
155+
├── README.md
156+
└── LICENSE
80157
```
81158

82-
## Testing
159+
---
160+
161+
## Testing
83162

84-
Open `demo.html` in a modern browser to test the encryption implementation. The demo allows you to:
163+
* Encrypt and decrypt files.
164+
* Validate metadata.
165+
* Verify incorrect passwords fail.
85166

86-
- Encrypt files with a password
87-
- Download encrypted files
88-
- Decrypt files with the correct password
89-
- Verify that incorrect passwords fail
167+
---
90168

91-
## API Reference
169+
## API Reference
92170

93-
### `zeroKnowledgeEncrypt(file, password)`
171+
### zeroKnowledgeEncrypt(file, password)
94172

95-
Encrypts a file in the browser.
173+
Encrypts a file client-side.
96174

97-
**Parameters:**
98-
- `file` (File/Blob): The file to encrypt
99-
- `password` (string): Encryption password
175+
Returns:
100176

101-
**Returns:** Promise resolving to:
102-
```javascript
177+
```js
103178
{
104-
encryptedBlob: Blob, // Encrypted file data
105-
metadata: { // File metadata (not encrypted)
179+
encryptedBlob: Blob,
180+
metadata: {
106181
originalName: string,
107182
originalSize: number,
108183
originalType: string,
@@ -111,75 +186,55 @@ Encrypts a file in the browser.
111186
}
112187
```
113188

114-
### `zeroKnowledgeDecrypt(encryptedBlob, password, originalName, originalType)`
115-
116-
Decrypts a file in the browser.
117-
118-
**Parameters:**
119-
- `encryptedBlob` (Blob): Encrypted file data
120-
- `password` (string): Decryption password
121-
- `originalName` (string): Original filename
122-
- `originalType` (string): Original MIME type
123-
124-
**Returns:** Promise resolving to a Blob containing the decrypted file.
189+
### zeroKnowledgeDecrypt(encryptedBlob, password, originalName, originalType)
125190

126-
## Important Security Notes
191+
Decrypts encrypted data client-side.
127192

128-
1. **Password Strength**: Use a strong, unique password for each file
129-
2. **Password Sharing**: Share passwords through a secure channel (not via FileShot)
130-
3. **Password Loss**: If you lose your password, the file cannot be recovered
131-
4. **Browser Security**: Ensure your browser and system are secure and up-to-date
132-
5. **HTTPS Only**: Only use this on HTTPS connections in production
193+
Returns:
194+
A Blob containing the decrypted file.
133195

134-
## Verification
135-
136-
This code is used by FileShot.io. You can verify:
137-
138-
1. The code served on FileShot.io matches this repository
139-
2. Encryption happens client-side (check Network tab in DevTools)
140-
3. The encryption key never leaves your browser
196+
---
141197

142-
## License
198+
## Important Security Notes
143199

144-
MIT License - See [LICENSE](LICENSE) file for details.
200+
* Use strong, unique passwords.
201+
* Share passwords securely.
202+
* Lost passwords cannot be recovered.
203+
* Keep browsers and systems up to date.
204+
* Use HTTPS in production.
145205

146-
## Contributing
206+
---
147207

148-
We welcome security reviews and improvements! Please:
208+
## Verification
149209

150-
1. Fork the repository
151-
2. Review the code
152-
3. Submit issues or pull requests
153-
4. Report security vulnerabilities responsibly
210+
Users can verify:
154211

155-
## Security Policy
212+
* Client code matches this repository.
213+
* Encryption runs entirely in the browser.
214+
* No keys or plaintext leave the client.
156215

157-
If you discover a security vulnerability, please email **fileshot.adm@gmail.como** instead of opening a public issue.
216+
Verification page: [https://fileshot.io/verify-encryption.html](https://fileshot.io/verify-encryption.html)
158217

159-
## 📞 Contact
218+
---
160219

161-
- **Website**: [FileShot.io](https://fileshot.io)
162-
- **Verification Page**: [Verify Encryption](https://fileshot.io/verify-encryption.html)
220+
## Browser Support
163221

164-
## ✅ Browser Support
222+
* Chrome 37+
223+
* Firefox 34+
224+
* Safari 11+
225+
* Edge 12+
226+
* Opera 24+
165227

166-
This implementation uses the Web Crypto API, which is supported in:
228+
---
167229

168-
- Chrome 37+
169-
- Firefox 34+
170-
- Safari 11+
171-
- Edge 12+
172-
- Opera 24+
230+
## Security Policy
173231

174-
## 🙏 Acknowledgments
232+
Report vulnerabilities privately to:
175233

176-
Built using the Web Crypto API, which provides secure cryptographic primitives in modern browsers.
234+
[fileshot.adm@gmail.com](mailto:fileshot.adm@gmail.com)
177235

178236
---
179237

180-
**Remember**: This is client-side encryption code. The security of your files depends on:
181-
- Using a strong password
182-
- Keeping your password secret
183-
- Using a secure browser and system
184-
- Verifying you're on the real FileShot.io domain (check SSL certificate)
238+
## License
185239

240+
MIT License.

0 commit comments

Comments
 (0)