diff --git a/.circleci/config.yml b/.circleci/config.yml
index 37ce8374349ee3997487c738b8ff1b30319ec520..b367ad73570f6d4d942b9bb723de5db4f07a8dd1 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -64,7 +64,7 @@ jobs:
           command: |
             . venv/bin/activate
             pip install .
-            coverage run -m twisted.trial _secureaccesstokenauthorizer
+            coverage run -m twisted.trial _zkapauthorizer
 
       - run:
           name: "Report Coverage"
diff --git a/CONTRIBUTING b/CONTRIBUTING
index 93055b0dc24d61a9bc3d353e1473b70dd06a33ff..587c37bc5cf8bd3580a6c65dfa1d63220760d2f2 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -1,5 +1,5 @@
-Contributing to SecureAccessTokenAuthorizer
-===========================================
+Contributing to ZKAPAuthorizer
+==============================
 
 Contributions are accepted in many forms.
 
@@ -11,9 +11,9 @@ Examples of contributions include:
 
 File a ticket at:
 
-https://github.com/PrivateStorageio/SecureAccessTokenAuthorizer/issues/new
+https://github.com/PrivateStorageio/ZKAPAuthorizer/issues/new
 
-SecureAccessTokenAuthorizer uses GitHub keep track of bugs, feature requests, and associated patches.
+ZKAPAuthorizer uses GitHub keep track of bugs, feature requests, and associated patches.
 
 Contributions are managed using GitHub's Pull Requests.
 For a PR to be accepted it needs to have:
diff --git a/README.rst b/README.rst
index 18efd3f59bb667abf5fe50bea11faa127315b799..11216b0ce7ea881eda8fd4a87a98aa5b0881abe2 100644
--- a/README.rst
+++ b/README.rst
@@ -33,8 +33,8 @@ Copyright
 
 .. _PrivacyPass: https://privacypass.github.io/
 
-.. |coverage| image:: https://codecov.io/gh/PrivateStorageio/SecureAccessTokenAuthorizer/branch/master/graph/badge.svg
-.. _coverage: https://codecov.io/gh/PrivateStorageio/SecureAccessTokenAuthorizer
+.. |coverage| image:: https://codecov.io/gh/PrivateStorageio/ZKAPAuthorizer/branch/master/graph/badge.svg
+.. _coverage: https://codecov.io/gh/PrivateStorageio/ZKAPAuthorizer
 
-.. |circleci| image:: https://circleci.com/gh/PrivateStorageio/SecureAccessTokenAuthorizer.svg?style=svg
-.. _circleci: https://circleci.com/gh/PrivateStorageio/SecureAccessTokenAuthorizer
+.. |circleci| image:: https://circleci.com/gh/PrivateStorageio/ZKAPAuthorizer.svg?style=svg
+.. _circleci: https://circleci.com/gh/PrivateStorageio/ZKAPAuthorizer
diff --git a/default.nix b/default.nix
index 06e185c4d85697fa06bb7f119d5b306c76e12bb7..bf40653608df88e7c901bb2de015b82c2528191c 100644
--- a/default.nix
+++ b/default.nix
@@ -1,2 +1,2 @@
 { pkgs ? import <nixpkgs> { overlays = [ (import ./overlays.nix) ]; } }:
-pkgs.python27Packages.callPackage ./secure-access-token-authorizer.nix { }
+pkgs.python27Packages.callPackage ./zcapauthorizer.nix { }
diff --git a/docs/source/conf.py b/docs/source/conf.py
index f3522be997054d2ee7f63d614be77a7f84cc0b19..dacdfe51d1cedfe1b5b8baff87f552729808d594 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -19,7 +19,7 @@
 
 # -- Project information -----------------------------------------------------
 
-project = 'Secure Access Token Authorizer'
+project = 'Zero-Knowledge Access Pass Authorizer'
 copyright = '2019, PrivateStorage.io, LLC'
 author = 'PrivateStorage.io, LLC'
 
@@ -101,7 +101,7 @@ html_static_path = ['_static']
 # -- Options for HTMLHelp output ---------------------------------------------
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'SecureAccessTokenAuthorizerdoc'
+htmlhelp_basename = 'ZKAPAuthorizer-doc'
 
 
 # -- Options for LaTeX output ------------------------------------------------
@@ -128,7 +128,7 @@ latex_elements = {
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, 'SecureAccessTokenAuthorizer.tex', 'Secure Access Token Authorizer Documentation',
+    (master_doc, 'ZKAPAuthorizer.tex', 'ZKAP Authorizer Documentation',
      'PrivateStorage.io, LLC', 'manual'),
 ]
 
@@ -138,7 +138,7 @@ latex_documents = [
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    (master_doc, 'secureaccesstokenauthorizer', 'Secure Access Token Authorizer Documentation',
+    (master_doc, 'zkapauthorizer', 'ZKAP Authorizer Documentation',
      [author], 1)
 ]
 
@@ -149,8 +149,8 @@ man_pages = [
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-    (master_doc, 'SecureAccessTokenAuthorizer', 'Secure Access Token Authorizer Documentation',
-     author, 'SecureAccessTokenAuthorizer', 'One line description of project.',
+    (master_doc, 'ZKAPAuthorizer', 'ZKAP Authorizer Documentation',
+     author, 'ZKAPAuthorizer', 'One line description of project.',
      'Miscellaneous'),
 ]
 
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 58bf2107b2c7e5a2b482b018d3eb9aa2165339c6..d178b7d084c4716add8d5527a579dab470159b3d 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,10 +1,10 @@
-.. Secure Access Token Authorizer documentation master file, created by
+.. ZKAP Authorizer documentation master file, created by
    sphinx-quickstart on Fri Jun  7 13:47:30 2019.
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-Welcome to Secure Access Token Authorizer's documentation!
-==========================================================
+Welcome to ZKAP Authorizer's documentation!
+===========================================
 
 .. toctree::
    :maxdepth: 2
diff --git a/docs/source/interface.rst b/docs/source/interface.rst
index 909d05e134e68cb75c0640e28baf395700fd8b13..73c83bda0d5d634b385daf0760db8bd6653fe756 100644
--- a/docs/source/interface.rst
+++ b/docs/source/interface.rst
@@ -5,7 +5,7 @@ Client
 ------
 
 When enabled in a Tahoe-LAFS client node,
-SecureAccessTokenAuthorizer publishes an HTTP-based interface inside the main Tahoe-LAFS web interface.
+ZKAPAuthorizer publishes an HTTP-based interface inside the main Tahoe-LAFS web interface.
 
 ``PUT /storage-plugins/privatestorageio-satauthz-v1/voucher``
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/pyproject.toml b/pyproject.toml
index 9e80cabc04445c41c931abb192cf5058084c8777..72280c92ba5d9213a24c71a6777a1d0a1b1f6d34 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
 [tool.towncrier]
-    package = "_secureaccesstokenauthorizer"
+    package = "_zkapauthorizer"
     package_dir = "src"
     filename = "ChangeLog.rst"
 
diff --git a/secure-access-token-authorizer.nix b/secure-access-token-authorizer.nix
index e0b7508acfb0ff8b60cde29ba17d075fa108229d..c5f52fbac02604a3230adbbd99aa177c4655a3a4 100644
--- a/secure-access-token-authorizer.nix
+++ b/secure-access-token-authorizer.nix
@@ -4,7 +4,7 @@
 }:
 buildPythonPackage rec {
   version = "0.0";
-  name = "secure-access-token-authorizer-${version}";
+  name = "zero-knowledge-access-pass-authorizer-${version}";
   src = ./.;
 
   depsBuildBuild = [
@@ -29,7 +29,7 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
-    ${pyflakes}/bin/pyflakes src/_secureaccesstokenauthorizer
-    python -m coverage run --source _secureaccesstokenauthorizer,twisted.plugins.secureaccesstokenauthorizer --module twisted.trial _secureaccesstokenauthorizer
+    ${pyflakes}/bin/pyflakes src/_zkapauthorizer
+    python -m coverage run --source _zkapauthorizer,twisted.plugins.zkapauthorizer --module twisted.trial _zkapauthorizer
   '';
 }
diff --git a/setup.cfg b/setup.cfg
index ea683eefb824023d09d2cdcc42afef4d5c9803b7..c4ae93ac82f9cb95c62808094828edd783ce255d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,7 +1,7 @@
 # Generally describe the project
 [metadata]
-name = Secure Access Token Authorizer
-version = attr: _secureaccesstokenauthorizer.__version__
+name = Zero-Knowledge Access Pass Authorizer
+version = attr: _zkapauthorizer.__version__
 description = A `Tahoe-LAFS`_ storage-system plugin which authorizes storage operations based on privacy-respecting tokens.
 long_description = file: README.rst, CHANGELOG.rst, LICENSE-2.0.txt
 keywords = tahoe-lafs, storage, privacy, cryptography
@@ -26,6 +26,6 @@ package_dir =
 # Explicitly list our packages because the automatic finder can't deal with
 # the plugins package we want to ship.
 packages =
-    _secureaccesstokenauthorizer
-    _secureaccesstokenauthorizer.tests
+    _zkapauthorizer
+    _zkapauthorizer.tests
     twisted.plugins
diff --git a/src/_secureaccesstokenauthorizer/_plugin.py b/src/_secureaccesstokenauthorizer/_plugin.py
index ac1dd02b3c0af55fdc63e7d383ec663b02db45b3..bd4cc37175f73121812c1cd82f795acc4e697ade 100644
--- a/src/_secureaccesstokenauthorizer/_plugin.py
+++ b/src/_secureaccesstokenauthorizer/_plugin.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 """
-The Twisted plugin that glues the Secure Access Token system into
+The Twisted plugin that glues the Zero-Knowledge Access Pass system into
 Tahoe-LAFS.
 """
 
@@ -33,8 +33,8 @@ from allmydata.interfaces import (
 )
 
 from .api import (
-    SecureAccessTokenAuthorizerStorageServer,
-    SecureAccessTokenAuthorizerStorageClient,
+    ZKAPAuthorizerStorageServer,
+    ZKAPAuthorizerStorageClient,
 )
 
 from ._storage_server import (
@@ -54,7 +54,7 @@ class AnnounceableStorageServer(object):
 
 
 @implementer(IFoolscapStoragePlugin)
-class SecureAccessTokenAuthorizer(object):
+class ZKAPAuthorizer(object):
     """
     A storage plugin which provides a token-based access control mechanism on
     top of the Tahoe-LAFS built-in storage server interface.
@@ -63,7 +63,7 @@ class SecureAccessTokenAuthorizer(object):
 
     def get_storage_server(self, configuration, get_anonymous_storage_server):
         announcement = {}
-        storage_server = SecureAccessTokenAuthorizerStorageServer(
+        storage_server = ZKAPAuthorizerStorageServer(
             get_anonymous_storage_server(),
             **configuration
         )
@@ -77,7 +77,7 @@ class SecureAccessTokenAuthorizer(object):
 
     def get_storage_client(self, configuration, announcement, get_rref):
         return succeed(
-            SecureAccessTokenAuthorizerStorageClient(
+            ZKAPAuthorizerStorageClient(
                 get_rref,
                 lambda: [b"x" * TOKEN_LENGTH],
             )
diff --git a/src/_secureaccesstokenauthorizer/_storage_client.py b/src/_secureaccesstokenauthorizer/_storage_client.py
index 9ba11b25c0a29409c95d44743b4737524147f627..7615bbaf1b2fb08a8f9509e596bacedffc9d67dc 100644
--- a/src/_secureaccesstokenauthorizer/_storage_client.py
+++ b/src/_secureaccesstokenauthorizer/_storage_client.py
@@ -32,7 +32,7 @@ from allmydata.interfaces import (
 
 @implementer(IStorageServer)
 @attr.s
-class SecureAccessTokenAuthorizerStorageClient(object):
+class ZKAPAuthorizerStorageClient(object):
     """
     An implementation of the client portion of an access-token-based
     authorization scheme on top of the basic Tahoe-LAFS storage protocol.
diff --git a/src/_secureaccesstokenauthorizer/_storage_server.py b/src/_secureaccesstokenauthorizer/_storage_server.py
index 3181f4e0008afb748257717e32d66d29264d6abe..a3364f5e4328b7a1b3e89958bfec34c66629b5b5 100644
--- a/src/_secureaccesstokenauthorizer/_storage_server.py
+++ b/src/_secureaccesstokenauthorizer/_storage_server.py
@@ -156,7 +156,7 @@ class RITokenAuthorizedStorageServer(RemoteInterface):
 # `cmp=False` (identity based hashing) but Referenceable wants to set some
 # attributes on self and it's hard to avoid that.
 @attr.s(cmp=False)
-class SecureAccessTokenAuthorizerStorageServer(Referenceable):
+class ZKAPAuthorizerStorageServer(Referenceable):
     """
     A class which wraps an ``RIStorageServer`` to insert token validity checks
     before allowing certain functionality.
@@ -240,7 +240,7 @@ class SecureAccessTokenAuthorizerStorageServer(Referenceable):
         return self._original.remote_slot_readv(*a, **kw)
 
 # I don't understand why this is required.
-# SecureAccessTokenAuthorizerStorageServer is-a Referenceable.  It seems like
+# ZKAPAuthorizerStorageServer is-a Referenceable.  It seems like
 # the built in adapter should take care of this case.
 from twisted.python.components import (
     registerAdapter,
@@ -251,4 +251,4 @@ from foolscap.referenceable import (
 from foolscap.ipb import (
     ISlicer,
 )
-registerAdapter(ReferenceableSlicer, SecureAccessTokenAuthorizerStorageServer, ISlicer)
+registerAdapter(ReferenceableSlicer, ZKAPAuthorizerStorageServer, ISlicer)
diff --git a/src/_secureaccesstokenauthorizer/api.py b/src/_secureaccesstokenauthorizer/api.py
index 53887349735138b3d8463c5d070361a422b3da72..81f47520ce66ffadb55a41fb3885d1cd50a7947c 100644
--- a/src/_secureaccesstokenauthorizer/api.py
+++ b/src/_secureaccesstokenauthorizer/api.py
@@ -13,18 +13,18 @@
 # limitations under the License.
 
 __all__ = [
-    "SecureAccessTokenAuthorizerStorageServer",
-    "SecureAccessTokenAuthorizerStorageClient",
-    "SecureAccessTokenAuthorizer",
+    "ZKAPAuthorizerStorageServer",
+    "ZKAPAuthorizerStorageClient",
+    "ZKAPAuthorizer",
 ]
 
 from ._storage_server import (
-    SecureAccessTokenAuthorizerStorageServer,
+    ZKAPAuthorizerStorageServer,
 )
 from ._storage_client import (
-    SecureAccessTokenAuthorizerStorageClient,
+    ZKAPAuthorizerStorageClient,
 )
 
 from ._plugin import (
-    SecureAccessTokenAuthorizer,
+    ZKAPAuthorizer,
 )
diff --git a/src/_secureaccesstokenauthorizer/tests/strategies.py b/src/_secureaccesstokenauthorizer/tests/strategies.py
index 38f4afa502b565ee64799250d7aa22d30e36644e..e615137fd615201776e7ccfa46ba1d908a8f883b 100644
--- a/src/_secureaccesstokenauthorizer/tests/strategies.py
+++ b/src/_secureaccesstokenauthorizer/tests/strategies.py
@@ -383,6 +383,6 @@ def test_and_write_vectors_for_shares():
 
 def announcements():
     """
-    Build announcements for the SecureAccessTokenAuthorizer plugin.
+    Build announcements for the ZKAPAuthorizer plugin.
     """
     return just({})
diff --git a/src/_secureaccesstokenauthorizer/tests/test_base64.py b/src/_secureaccesstokenauthorizer/tests/test_base64.py
index 569cd6994b6c7ce030070927cac978498917ef3d..05501c6caae6d185a413a9d5876d78c0c5df9322 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_base64.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_base64.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 """
-Tests for ``_secureaccesstokenauthorizer._base64``.
+Tests for ``_zkapauthorizer._base64``.
 """
 
 from base64 import (
diff --git a/src/_secureaccesstokenauthorizer/tests/test_client_resource.py b/src/_secureaccesstokenauthorizer/tests/test_client_resource.py
index 2fc1651bfbfeee07f9f0b1d47d27aca98ef2ff5a..246223d636d20550ed82be44aaa885753efb839a 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_client_resource.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_client_resource.py
@@ -208,7 +208,7 @@ def root_from_config(config):
 class VoucherTests(TestCase):
     """
     Tests relating to ``/voucher`` as implemented by the
-    ``_secureaccesstokenauthorizer.resource`` module and its handling of
+    ``_zkapauthorizer.resource`` module and its handling of
     vouchers.
     """
     def setUp(self):
diff --git a/src/_secureaccesstokenauthorizer/tests/test_matchers.py b/src/_secureaccesstokenauthorizer/tests/test_matchers.py
index ab95ee31b6a7f402406f40ca31dccd443a9c9d56..7ff71c0fd360daefab6a0485dd62abbf4bc4d187 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_matchers.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_matchers.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 """
-Tests for ``_secureaccesstokenauthorizer.tests.matchers``.
+Tests for ``_zkapauthorizer.tests.matchers``.
 """
 
 from zope.interface import (
diff --git a/src/_secureaccesstokenauthorizer/tests/test_model.py b/src/_secureaccesstokenauthorizer/tests/test_model.py
index d700078e3ef31afde38b8799ea17b7033728bf02..7732e5e06f40460bf1acf00665ab1e4501298afa 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_model.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_model.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-Tests for ``_secureaccesstokenauthorizer.model``.
+Tests for ``_zkapauthorizer.model``.
 """
 
 from os import (
diff --git a/src/_secureaccesstokenauthorizer/tests/test_plugin.py b/src/_secureaccesstokenauthorizer/tests/test_plugin.py
index a7b9dceca6ac9f768d8d9b0f7722f4b25dc7a643..72c017ace8af653dfac8198446e3aa98753265ed 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_plugin.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_plugin.py
@@ -64,7 +64,7 @@ from twisted.test.proto_helpers import (
 from twisted.web.resource import (
     IResource,
 )
-from twisted.plugins.secureaccesstokenauthorizer import (
+from twisted.plugins.zkapauthorizer import (
     storage_server,
 )
 
@@ -93,7 +93,7 @@ def get_rref():
 
 class PluginTests(TestCase):
     """
-    Tests for ``twisted.plugins.secureaccesstokenauthorizer.storage_server``.
+    Tests for ``twisted.plugins.zkapauthorizer.storage_server``.
     """
     def test_discoverable(self):
         """
diff --git a/src/_secureaccesstokenauthorizer/tests/test_storage_protocol.py b/src/_secureaccesstokenauthorizer/tests/test_storage_protocol.py
index 95abe60a5aa6721e4faf049c8b35481896062928..f821ad5278814518ffa196b6c8e47e206f2546d1 100644
--- a/src/_secureaccesstokenauthorizer/tests/test_storage_protocol.py
+++ b/src/_secureaccesstokenauthorizer/tests/test_storage_protocol.py
@@ -79,8 +79,8 @@ from .matchers import (
     matches_version_dictionary,
 )
 from ..api import (
-    SecureAccessTokenAuthorizerStorageServer,
-    SecureAccessTokenAuthorizerStorageClient,
+    ZKAPAuthorizerStorageServer,
+    ZKAPAuthorizerStorageClient,
 )
 from .._storage_server import (
     TOKEN_LENGTH,
@@ -155,11 +155,11 @@ class ShareTests(TestCase):
         def get_tokens():
             return [b"x" * TOKEN_LENGTH]
 
-        self.server = SecureAccessTokenAuthorizerStorageServer(
+        self.server = ZKAPAuthorizerStorageServer(
             self.anonymous_storage_server,
         )
         self.local_remote_server = LocalRemote(self.server)
-        self.client = SecureAccessTokenAuthorizerStorageClient(
+        self.client = ZKAPAuthorizerStorageClient(
             get_rref=lambda: self.local_remote_server,
             get_tokens=get_tokens,
         )
diff --git a/src/twisted/plugins/secureaccesstokenauthorizer.py b/src/twisted/plugins/secureaccesstokenauthorizer.py
index 908d022a1c29f8dab0bbe9cdf891bedab631325e..0b02795d806ebcb58bf279eac9f744d4e539c360 100644
--- a/src/twisted/plugins/secureaccesstokenauthorizer.py
+++ b/src/twisted/plugins/secureaccesstokenauthorizer.py
@@ -16,8 +16,8 @@
 A drop-in to supply plugins to the Twisted plugin system.
 """
 
-from _secureaccesstokenauthorizer.api import (
-    SecureAccessTokenAuthorizer,
+from _zkapauthorizer.api import (
+    ZKAPAuthorizer,
 )
 
-storage_server = SecureAccessTokenAuthorizer()
+storage_server = ZKAPAuthorizer()