Privacy Tools Guide

NAS encryption (using TrueNAS, unRAID, or Linux md with LUKS) provides complete control but requires hardware investment, maintenance, and reliable power/internet; encrypted cloud storage offers simplicity and provider redundancy but requires trusting the provider with encryption keys (unless zero-knowledge). Choose NAS for maximum control, zero-knowledge cloud storage (Proton Drive, Filen) for privacy with managed convenience, or server-side encrypted cloud (AWS S3) if you don’t need provider-proof privacy.

Understanding the Core Difference

A NAS is physical hardware you own and manage, sitting on your local network. When properly encrypted, data stored on a NAS never leaves your premises in an accessible form. Cloud storage, by contrast, entrusts your data to a third-party provider—though many offer zero-knowledge encryption options that maintain privacy even from the provider.

The security of your data in both scenarios depends heavily on how encryption is implemented, not just whether it’s present.

Encryption Models Compared

NAS Encryption Approaches

Most enterprise NAS devices support encryption at rest using AES-256. The critical distinction is where the encryption key lives:

Hardware-encrypted NAS: The encryption key is stored on a dedicated security chip or TPM module. The NAS automatically encrypts and decrypts data as it’s written or read. This protects against physical theft of the drives, but the system remains vulnerable if an attacker gains network access while the NAS is powered on.

Software-encrypted NAS: Encryption is handled by the operating system, typically using LUKS (Linux Unified Key Setup) on Linux-based NAS systems like TrueNAS or OpenMediaVault. You manage the passphrase directly, giving you explicit control over when data becomes accessible.

A practical software encryption setup using LUKS on a Linux NAS:

# Initialize encrypted volume
sudo cryptsetup luksFormat /dev/sdX1

# Open the encrypted container
sudo cryptsetup luksOpen /dev/sdX1 encrypted_storage

# Create filesystem
sudo mkfs.ext4 /dev/mapper/encrypted_storage

# Mount the encrypted volume
sudo mount /dev/mapper/encrypted_storage /mnt/private

For users wanting additional protection, you can combine LUKS with a keyfile stored on a separate USB device that must be present at boot:

# Add keyfile to LUKS volume
sudo cryptsetup luksAddKey /dev/sdX1 /path/to/keyfile

# Configure automatic unlock with keyfile in /etc/crypttab
encrypted_storage /dev/sdX1 /path/to/keyfile luks,discard

Cloud Storage Encryption Models

Cloud providers typically offer encryption in one of three models:

Provider-managed encryption: The cloud provider handles encryption and key management. Your data is encrypted at rest, but the provider holds the keys. This protects against external attackers and physical drive theft, but the provider’s employees can theoretically access your data.

Customer-managed encryption: You provide encryption keys to the provider, who uses them to encrypt your data. The provider cannot read your data without your key, but you must securely manage and back up the key yourself.

Zero-knowledge (client-side) encryption: Your data is encrypted before it leaves your device. The cloud provider never sees your plaintext data or encryption keys. Services like Tresorit, Sync.com, and Proton Drive offer this model.

For developers who want zero-knowledge cloud storage with full control, tools like rclone can encrypt data before uploading to any cloud provider:

# Configure rclone with crypt backend
rclone config

# Create encrypted remote
# In interactive config: New remote > type "crypt" >
# remote "gdrive:" > encryption "standard" >
# password "your-strong-password" > confirm

# Copy files with automatic client-side encryption
rclone copy /local/data encrypted_drive:/backup

The encrypted files stored in your cloud account will look like this:

# What the cloud provider actually stores:
5f93f983524def3d5e5d3d2a7e65e1c3.enc
8a7bc3d2e5f9123456789abcdef0123.enc

Performance Considerations

Network speed often becomes the bottleneck with NAS solutions. A typical gigabit ethernet connection delivers about 125 MB/s throughput, while a NAS with RAID configuration and mechanical drives might achieve 80-100 MB/s for sequential reads. SSD-based NAS units can exceed 500 MB/s but at significantly higher cost.

Cloud storage performance depends on your internet upload speed. Uploading large files to the cloud can take hours on typical residential connections, while downloading is usually faster due to asymmetric bandwidth allocations.

For developers working with large code repositories or datasets, consider these approaches:

# Use rclone with bandwidth limits to prevent saturating your connection
rclone sync /project/data nas_backup:/project \
  --bwlimit "08:00,1M" \
  --transfers 2

# Sync only changed files using checksums
rclone sync /project/data nas_backup:/project \
  --checksum \
  --update

Access Patterns and Multi-Device Sync

Cloud storage excels at multi-device synchronization. Your files are available instantly on any device with an internet connection. Modern cloud clients handle conflict resolution, selective sync, and offline access automatically.

NAS solutions require more manual configuration for multi-device access. You’ll need to set up:

TrueNAS Scale, for example, offers a cloud sync module that can integrate with multiple providers while maintaining local encrypted storage:

# TrueNAS Scale cloud sync configuration (via API)
{
  "name": "backup-to-cloud",
  "direction": "PUSH",
  "transfer_mode": "COPY",
  "encryption": true,
  "remote": {
    "provider": "S3",
    "endpoint": "s3.amazonaws.com",
    "bucket": "my-backup-bucket"
  },
  "credentials": {
    "access_key_id": "AKIAIOSFODNN7EXAMPLE",
    "secret_access_key": "***"
  }
}

Threat Model Analysis

Each approach protects against different threats:

Threat Encrypted NAS Zero-Knowledge Cloud
Physical drive theft ✅ Protected ✅ Protected
Cloud provider breach ✅ N/A ✅ Protected
Network eavesdropping ⚠️ Depends on setup ⚠️ Depends on TLS
Device loss/theft ✅ Full control ✅ With client-side sync
Service discontinuation ⚠️ Hardware-dependent ✅ Data portable
Remote access ⚠️ Requires VPN ✅ Built-in

Practical Recommendations

For most developers and power users, a hybrid approach often makes sense:

Encrypted NAS suits large media files that don’t need remote access, local backups requiring fast restore, latency-sensitive development environments, and data with on-premises regulatory requirements. Zero-knowledge cloud storage fits sensitive documents needing secure remote access, cross-device synchronization without trust assumptions, offsite disaster recovery, and collaboration where you control decryption.

Implementing a Hybrid Setup

A practical hybrid configuration might look like this:

#!/bin/bash
# Automated backup script combining NAS and cloud

# Local NAS backup (encrypted)
rclone sync ~/projects /mnt/nas/projects \
  --encrypt \
  --exclude "*.log" \
  --exclude ".git/" \
  --verbose

# Cloud backup (zero-knowledge)
rclone sync ~/projects cloud:projects-backup \
  --crypt-remote remote: \
  --verbose

# Verify both backups completed
echo "NAS backup: $(ls -la /mnt/nas/projects | wc -l) files"
echo "Cloud backup: $(rclone lsl cloud:projects-backup | wc -l) files"

Built by theluckystrike — More at zovo.one