Encryption scenarios

The PII of a Travel Rule transfer is encrypted in one of the three ways the PII Encryption Guide describes: Hosted, Hybrid or End-to-End. Which one a transfer uses depends on the originator’s Notabene managed encryption setting, which decides who encrypts the PII, and on the beneficiary’s DID document, which decides whose key it is encrypted to. The beneficiary’s own setting only applies to the transfers it sends.

Scenarios

Who manages the keys on each side decides the scenario. The originator manages its own keys when it turns Notabene managed encryption off and encrypts the PII itself, and the beneficiary manages its own keys when it publishes a #pii key in its DID document.

ScenarioOriginator’s keysBeneficiary’s keys
HostedNotabeneNotabene
HybridThe originatorNotabene
HybridNotabeneThe beneficiary
End-to-EndThe originatorThe beneficiary

Hosted

Originator
Notabene’s keys
Copy kept by Notabene
Notabene
Encrypts
Holds both institutions’ keys
Beneficiary
Notabene’s keys
Notabene decrypts it decrypt=true
  1. 1The originator sends the PII in clear text to /append.
  2. 2Notabene encrypts it to the beneficiary’s #notabene-pii and keeps the originator’s copy.
  3. 3Notabene decrypts it on the beneficiary’s behalf.

Notabene manages the keys of both the originator and the beneficiary, which is where every institution starts. The originator sends the PII in clear text with Append PII data to a transfer, Notabene encrypts it to the beneficiary’s #notabene-pii key, and neither institution handles keys or encryption.

Because Notabene holds both keys, it decrypts the originator’s copy when the originator reads its transfer and the beneficiary’s copy when the beneficiary reads the transfer with Get a specific transfer and decrypt=true, each time on that institution’s behalf.

Hybrid: the originator manages its own keys

Originator
Own keys
No copy kept
Notabene
Passes it on
Holds the beneficiary’s keys
Beneficiary
Notabene’s keys
Notabene decrypts it decrypt=true
  1. 1The originator encrypts the PII to the beneficiary’s #notabene-pii and sends it to /presentation.
  2. 2Notabene passes it on and keeps no copy for the originator.
  3. 3Notabene decrypts it on the beneficiary’s behalf.

The originator manages its own keys and Notabene manages the beneficiary’s keys. The originator has turned Notabene managed encryption off, so it encrypts the PII itself to the key in the webhook, which is the beneficiary’s #notabene-pii, and sends it with Present PII data to counterparties, which leaves no copy on the originator’s side.

Nothing changes for the beneficiary, which reads the transfer with decrypt=true while Notabene decrypts the PII on its behalf.

Hybrid: the beneficiary manages its own keys

Originator
Notabene’s keys
Copy kept by Notabene
Notabene
Encrypts
Holds the originator’s keys
Beneficiary
Own keys
Decrypts it with its own key
  1. 1The originator sends the PII in clear text to /append.
  2. 2Notabene encrypts it to the beneficiary’s own #pii and keeps the originator’s copy.
  3. 3The beneficiary decrypts it with its own private key.

Notabene manages the originator’s keys and the beneficiary manages its own keys. The originator sends the PII in clear text with Append PII data to a transfer, as in Hosted, but the beneficiary has published its own #pii key, so Notabene encrypts the PII to that key instead of #notabene-pii.

The beneficiary reads the transfer with decrypt=false and decrypts the PII with its own private key, and Notabene cannot decrypt the beneficiary’s copy. Notabene still keeps the originator’s copy and decrypts it on the originator’s behalf.

End-to-End

Originator
Own keys
No copy kept
Notabene
Passes it on
Holds no keys
Beneficiary
Own keys
Decrypts it with its own key
  1. 1The originator encrypts the PII to the beneficiary’s own #pii and sends it to /presentation.
  2. 2Notabene passes it on without being able to decrypt it.
  3. 3The beneficiary decrypts it with its own private key.

Both institutions manage their own keys. The originator encrypts the PII to the key in the webhook, which is the beneficiary’s own #pii key, and sends it with Present PII data to counterparties, so Notabene keeps no copy for the originator and cannot decrypt the one it passes on.

The beneficiary reads the transfer with decrypt=false and decrypts the PII with its own private key, so only the two institutions ever see it in clear text. What each side sets up is in End-to-End setup.

How the PII travels

Originator’s Notabene managed encryption
Beneficiary’s DID document
HostedNotabene manages both institutions’ keys
Originator
Notabene’s keys
Webhook/append
Copy kept by Notabene
Notabene
Encrypts
Holds both institutions’ keys
Beneficiary
Notabene’s keys
DID document#notabene-pii
Notabene decrypts it decrypt=true
  1. 1The beneficiary asks for the PII, and Notabene picks its #notabene-pii key, as it has no #pii key.
  2. 2Notabene sends the originator tap.requirePresentationRequested, with a callbackUrl to /append.
  3. 3The originator sends the PII in clear text with Append PII data to a transfer, and Notabene encrypts it to that key.
  4. 4The beneficiary reads the transfer with Get a specific transfer and decrypt=true, and Notabene decrypts the PII on its behalf.
HybridThe originator manages its own keys
Originator
Own keys
Webhook/presentationencryptionKey
No copy kept
Notabene
Passes it on
Holds the beneficiary’s keys
Beneficiary
Notabene’s keys
DID document#notabene-pii
Notabene decrypts it decrypt=true
  1. 1The beneficiary asks for the PII, and Notabene picks its #notabene-pii key, as it has no #pii key.
  2. 2Notabene sends the originator tap.requirePresentationRequested, with a callbackUrl to /presentation and that key as encryptionKey.
  3. 3The originator encrypts the PII to that key and sends it with Present PII data to counterparties.
  4. 4The beneficiary reads the transfer with Get a specific transfer and decrypt=true, and Notabene decrypts the PII on its behalf.
HybridThe beneficiary manages its own keys
Originator
Notabene’s keys
Webhook/append
Copy kept by Notabene
Notabene
Encrypts
Holds the originator’s keys
Beneficiary
Own keys
DID document#pii#notabene-pii
Decrypts it with its own key
  1. 1The beneficiary asks for the PII, and Notabene picks its own #pii key, which always comes before #notabene-pii.
  2. 2Notabene sends the originator tap.requirePresentationRequested, with a callbackUrl to /append.
  3. 3The originator sends the PII in clear text with Append PII data to a transfer, and Notabene encrypts it to that key.
  4. 4The beneficiary reads the transfer with Get a specific transfer and decrypt=false, then decrypts the PII with its own private key.
End-to-EndBoth institutions manage their own keys
Originator
Own keys
Webhook/presentationencryptionKey
No copy kept
Notabene
Passes it on
Holds no keys
Beneficiary
Own keys
DID document#pii#notabene-pii
Decrypts it with its own key
  1. 1The beneficiary asks for the PII, and Notabene picks its own #pii key, which always comes before #notabene-pii.
  2. 2Notabene sends the originator tap.requirePresentationRequested, with a callbackUrl to /presentation and that key as encryptionKey.
  3. 3The originator encrypts the PII to that key and sends it with Present PII data to counterparties.
  4. 4The beneficiary reads the transfer with Get a specific transfer and decrypt=false, then decrypts the PII with its own private key.

Key selection

Notabene chooses the beneficiary’s PII key automatically, from its DID document, and nobody picks it per transfer. A key whose id ends in #pii always comes first, so as soon as an institution publishes one, Notabene encrypts to it and gives it to originators that encrypt themselves, in the webhook’s encryptionKey and through Get entity public encryption keys.

OrderKey id ends inUsedDecrypted by
1#piiWhenever the DID document has oneThe institution, with its own private key
2#notabene-piiOnly when there is no #pii keyNotabene, on the institution’s behalf
📘

Adding a #pii key to your DID document is all it takes for the PII you receive to be encrypted to your own key, which Notabene cannot decrypt. Notabene switches to it within 5 minutes, whatever your own Notabene managed encryption setting is.

End-to-End setup

To receive PII that only you can decrypt, generate a P-256 key pair and keep the private key in your KMS or HSM. Add the public key to your DID document with an id ending in #pii and reference it in keyAgreement, as shown in Key Management in DIDdocs. When PII arrives, read it as described in Receive Travel Rule (PII) data transfers and decrypt it with your private key.

To send PII that Notabene cannot decrypt, turn off Notabene managed encryption in the dashboard Settings and subscribe to tap.requirePresentationRequested. When it arrives, encrypt the IVMS101 to the encryptionKey it carries and send it to its callbackUrl with Present PII data to counterparties. The key agreement, key derivation and JWE format are in Encryption workflow.


Did this page help you?