Cryptography

Field-level encryption

Sensitive profile fields are encrypted with AES-256-GCM before storage. Each encryption call draws a fresh random IV, so identical values never produce identical ciphertext.

Keys are held outside the autoloaded settings. The key is read from the MCL_DATA_KEY constant when defined, otherwise from a non-autoloaded option, so it is never loaded on every request.

Key storage

Keys live in MCL_DATA_KEY or a non-autoloaded option, kept apart from profile records.

Random IV per write

Every encryption call generates a new initialization vector, so repeated values stay unlinkable.

Audit entries with IP

Each mcl_log entry stores the action, detail, user identifier, and IP address for review.

Retention and log review

Profile, invoice, and testimonial records are kept while an account stays active. Audit log entries are retained for review by administrators, who can check the action, user identifier, and IP address on each entry.