aboutsummaryrefslogtreecommitdiff

Git Privacy

Follow the instructions in this document to obfuscate Git timestamps.

View Commit Timestamps

To view commit timestamps, run:

git log --format=fuller

Obfuscate Timestamps for Future Commits and Annotated Tags

For maximum privacy, set the author and committer dates to a clearly forged fixed date in UTC inside the interactive shell configuration:

export GIT_AUTHOR_DATE="2000/01/01T00:00:00+0000"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"

To balance privacy and timestamp accuracy, set the author and committer dates to a course-grained date in UTC inside the interactive shell configuration:

export GIT_AUTHOR_DATE="$(date -u +%DT00:00:00%z)"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"

Remember that shell environment variables do not change after being set, so dates update only after a new interactive shell is opened.

Obfuscate Timestamps for Future Digital Signatures

For maximum privacy, create a custom version of GnuPG with a fixed timestamp set between when the signing key was generated and the current date:

#!/bin/sh
gpg --faked-system-time <iso>! $@

See gpg(1) for valid <iso> formats.

To balance privacy and timestamp accuracy, create a custom version of GnuPG with a course-grained timestamp in UTC set after the signing key was generated:

#!/bin/sh
gpg --faked-system-time "$(date -u +%Y%m%dT000000)!" $@

Set the script as executable:

chmod +x /path/to/custom-gpg.sh

Tell Git to use the new script:

git config --global gpg.program /path/to/custom-gpg.sh

Obfuscate Timestamps for Existing Commits and Annotated Tags

TODO: Demonstrate how to retroactively rewrite Git timestamps for existing commits and annotated tags.

Obfuscate Timestamps for Existing Digital Signatures

TODO: Demonstrate how to retroactively rewrite GnuPG timestamps for existing signed commits and signed annotated tags.

Forges

To prevent forges from tracking Git push times, create a Cron job which pushes the repository at fixed intervals:

0 6 * * * git -C /path/to/repo/ push origin master

License

This file is licensed under CC-BY-SA 4.0.