diff --git a/README.md b/README.md index 6aa34f4..2b96ee0 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,24 @@
-PangoLock — Folder Lock & Encryption +PangoLock: a 3D ball of pangolin scales curling shut, next to the headline “Curl your files into armor.” # PangoLock **Hide and password-lock any folder on your Mac — like a pangolin curling into an armored ball.** +[![Website](https://img.shields.io/badge/Website-suriya4code.github.io%2FPangoLock-c8945a?style=for-the-badge&logo=githubpages&logoColor=white&labelColor=1c150f)](https://suriya4code.github.io/PangoLock/) + [![CI](https://github.com/suriya4code/PangoLock/actions/workflows/ci.yml/badge.svg)](https://github.com/suriya4code/PangoLock/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Platform: macOS 13+](https://img.shields.io/badge/macOS-13%2B-blue.svg)](#requirements) [![Swift 5.9](https://img.shields.io/badge/Swift-5.9-orange.svg)](#requirements) +[![AES-256-GCM](https://img.shields.io/badge/crypto-AES--256--GCM-c8945a.svg)](SECURITY.md) +[![Zero-knowledge](https://img.shields.io/badge/password-zero--knowledge-5cc58a.svg)](SECURITY.md) **100% free & open source. Every feature. No paywall, no premium tier, no account.** +[**Website**](https://suriya4code.github.io/PangoLock/) · [**Build from source**](#build--run) · [**Security model**](SECURITY.md) · [**Architecture**](docs/ARCHITECTURE.md) · [**Sponsor**](https://github.com/sponsors/suriya4code) +
PangoLock demo — hide and encrypt a folder in one click @@ -25,20 +31,86 @@ PangoLock is a native macOS app that hides and **AES‑256 encrypts** your priva folders and files behind a master password — with a zero‑knowledge design where your password is never stored and your data is encrypted at rest. +## Hide vs. Lock + +| | 🙈 **Hide** | 🔒 **Lock** | +|---|---|---| +| **What it does** | Removes the item from Finder, strips all permissions (`chmod 000`) and adds a Spotlight skip marker | Encrypts it with AES‑256‑GCM into a managed `.plock` blob, verifies the result, then removes the plaintext | +| **Who can't reach it** | Finder, video players, media scanners, search | Anyone without your password | +| **Strength** | Strong against ordinary apps, **not encryption** | **The real defense** — use it for anything sensitive | +| **Undo** | Show restores everything | Unlock decrypts and restores to the original path | + ## Features -- 🔒 **Lock & encrypt** unlimited folders with **AES‑256‑GCM**; optional per‑folder password. -- 🙈 **Hide & show** — one click removes an item from Finder **and** strips its access (chmod 000) + adds a Spotlight skip marker, so other apps (video players, media scanners, search) can't reach it; Show restores everything. -- 🔑 **Zero‑knowledge master password** (PBKDF2‑210k); **Touch ID** unlock; idle auto‑lock. -- 🧯 **Fail‑safe by design** — verify‑before‑delete, atomic writes, journaled moves: an interrupted operation never loses data. -- 🛟 **Recovery key** for a forgotten password; **encrypted backups**; **export everything** so deleting the app never strands your data. -- 💳 **Encrypted wallet** for logins, cards, notes & licenses, with a strong‑password generator. -- 💾 **Portable USB lockers** (`.pangolocker`) and **encrypted sharing** (`.pangoshare`, with a password hint). -- 🕵️ **Intruder snapshot** after repeated failed unlocks (opt‑in), **stealth mode** (hide Dock icon), and **panic** lock‑&‑hide. -- 🧹 **Secure shredder** and **trace cleaner**; **cloud‑awareness** warnings for iCloud/Dropbox/Drive/OneDrive paths. + + + + + + + + + + + + + + + + +
+ +### 🔒 Lock & encrypt +Unlimited folders with **AES‑256‑GCM**; optional per‑folder password. + + + +### 🙈 Hide & show +Gone from Finder **and** other apps: permissions stripped (`chmod 000`), Spotlight skipped. Show restores everything. + + + +### 🔑 Zero‑knowledge +Master password never stored (PBKDF2‑210k); **Touch ID** unlock; idle auto‑lock. + +
+ +### 🧯 Fail‑safe +Verify‑before‑delete, atomic writes, journaled moves: an interrupted operation never loses data. + + + +### 🛟 Recovery & backups +**Recovery key** for a forgotten password, **encrypted backups**, and **export everything** so deleting the app never strands your data. + + + +### 💳 Encrypted wallet +Logins, cards, notes & licenses, with a strong‑password generator. + +
+ +### 💾 Portable & shareable +USB lockers (`.pangolocker`) and encrypted sharing (`.pangoshare`, with a password hint). + + + +### 🕵️ Intruder & stealth +Opt‑in **intruder snapshot** after failed unlocks, **stealth mode** (hide Dock icon), and **panic** lock‑&‑hide. + + + +### 🧹 Shredder & cleaner +Secure shredder, trace cleaner, and **cloud‑awareness** warnings for iCloud/Dropbox/Drive/OneDrive paths. + +
## Security +

+ Encryption pipeline: your password, PBKDF2-SHA256 with 210,000 iterations, HKDF per item, AES-256-GCM, then verify before deleting the plaintext +

+ PangoLock encrypts everything at rest with **AES‑256‑GCM**, derives keys with **PBKDF2‑HMAC‑SHA256 (210,000 iterations)**, stores secrets in the macOS **Keychain**, runs in the **App Sandbox**, and makes **no logging calls** that @@ -49,6 +121,14 @@ are in **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**. > Honest positioning: PangoLock protects your data **at rest** on your Mac. It is > not a defense against a fully compromised or root‑level‑owned machine. +
+Architecture diagram +
+ +PangoLock architecture: SwiftUI views, AppModel, services, and encrypted stores + +
+ ## Requirements - macOS 13 (Ventura) or later — universal (Apple Silicon + Intel) diff --git a/assets/readme/hero.webp b/assets/readme/hero.webp new file mode 100644 index 0000000..fde8346 Binary files /dev/null and b/assets/readme/hero.webp differ diff --git a/assets/readme/pipeline.svg b/assets/readme/pipeline.svg new file mode 100644 index 0000000..52878d3 --- /dev/null +++ b/assets/readme/pipeline.svg @@ -0,0 +1,63 @@ + + PangoLock encryption pipeline + + + + + + + + + + + + + + + + + + + + FROM PASSWORD TO CIPHERTEXT + + + + + + 01 + Your passwordnever stored,wiped with memset_s + 02 + PBKDF2-SHA256210,000 iterations,random 16-byte salt + 03 + HKDF per itemevery folder getsits own key + 04 + AES-256-GCMnonce ‖ ciphertext ‖ tag,tamper-evident + 05 + Verify, then deleteplaintext removed onlyafter a clean decrypt + + + ~/Documents/TripsAndTours + 9f3a0c7e·b41d6e2a95f07c38d1e4a6b2.plock ✓ encrypted at rest +