Private Accounting Security
Private Accounting has both technical and operational security features. Its design protects accounting data at the database, application, and operational levels while minimizing the systems and network services involved in handling that data.
Database Encryption
- Each database is encrypted using ChaCha20-Poly1305 with a random nonce, providing authenticated encryption for the database contents.
- The entire database file is encrypted, including its header. There is no open database header or other exposed database structure; an encrypted database file appears as encrypted data.
- Each company or accounting entity is maintained in its own database file. This provides data segmentation between accounting entities, allowing each company's data to be independently encrypted, backed up, stored, and controlled. This is particularly important when an accountant, bookkeeper, or other user maintains accounting data for multiple parties.
- Backups and cold-storage copies retain the database encryption, providing encryption at rest without requiring the backup or storage system to provide the protection.
- Each encrypted database contains its own audit trail. The audit trail is therefore within the scope of that company's database encryption and remains segmented with the company's accounting data.
Database Integrity and Transaction Protection
- Private Accounting uses SQL delete journal mode rather than write-ahead logging (WAL). This protects against potential data leakage from stray journal or WAL files containing recoverable database pages. Delete journal mode is an SQL technical mechanism and is unrelated to the accounting journal, which remains safely stored as part of the accounting database.
- Extensive database triggers enforce transactional correctness beyond database schema enforcement. Important accounting protections therefore reside within the database transaction mechanism rather than relying solely on application-level controls.
- These protections include safeguards against modification of previously posted reconciliations and other accounting data whose modification would compromise transactional integrity.
- An administrative lock code can prevent inadvertent changes to closed accounting periods, providing an additional control over previously completed accounting periods.
Offline and Air-Gapped Operation
- The PWA, Linux (LIN), and Windows (WIN) versions of Private Accounting operate offline first and offline only.
- Accounting data stays on the user's device. Private Accounting uses neither a network client/server architecture nor a localhost server for accounting operations.
- After registration and licensing, all three versions can operate air-gapped, with no Internet connection and no requirement to update.
- Private Accounting never requires, receives, stores, or uses bank or other financial credentials. The application has no knowledge of those credentials. The user obtains the financial institution's OFX transaction data independently and brings that data to the Private Accounting installation by whatever means the user chooses, including removable media.
Data and Access Segmentation
Private Accounting is a single-user accounting application. Its access model is based on physical access to the device, access to the operating system, and access to the individual encrypted database.
Each company or accounting entity is maintained in its own encrypted database, providing segmentation of accounting data between parties. This is particularly important where an accountant, bookkeeper, or other user maintains accounting records for multiple businesses or clients.
Private Accounting does not provide role-based access controls intended for larger organizations with multiple users and differing authorization levels. Its security model is instead based on controlled physical and machine access, together with independently encrypted databases and database-level controls. See When to consider Private Accounting for whether a single-user access model fits your organization.
Software and Update Control
- The user decides when and whether to install a newer version of Private Accounting.
- After registration and licensing, an installation can remain operational without Internet access or a required update, subject to the limitations of the user's operating system for LIN and WIN versions and browser for the PWA version.
- The LIN and WIN versions are distributed as single-file executables, allowing the application to operate independently of the system browser while maintaining compatibility with the PWA version.
Backup and Redundancy
- The PWA depends on the browser's storage. Private Accounting requests persistent storage, but the operating system or browser can still limit or evict app data, and a user can remove the installed app and its data, by accident or on purpose. Backing up and restoring databases — in full, in part, or individually — is deliberately easy in Private Accounting for exactly this reason.
- Registration and licensing supports multiple seats, allowing Private Accounting to be installed on additional hardware. This provides a practical hot-backup capability.
- A multi-seat license can be used across supported platforms with the PWA version, including Android, Linux, Windows, iOS, and macOS.
- The PWA requires a modern browser with OPFS support.
- The LIN and WIN versions provide isolation from the browser environment and can be used as separate installations for hot backup or on the same operating system as the purchased version.
- License seats can be migrated to another machine through online deactivation. This prevents licenses from becoming orphaned because of operating-system obsolescence, hardware failure, or inadvertent clearing of a hardware device.
- If unforeseen circumstances require migration to new registration license keys, this can be arranged by contacting support@privateaccounting.ca.
- Because database encryption is retained in backups and cold storage, backup copies receive the same database-level encryption protection as the working database.
- See Choosing a version for the tradeoffs between the PWA, LIN, and WIN versions.