Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

The GCM module will take care of padding automatically, as long as the user specifies which operation should be performed
on the data. When the user first calls BLOCK_CIPHER_GCM_Encrypt or BLOCK_CIPHER_GCM_Decrypt, he or she can
optionally specify one of the options as BLOCK_CIPHER_OPTION_AUTHENTICATE_ONLY. This will indicate to the GCM
module that the data being passed in should be authenticated, but not encrypted or decrypted. If this option is specified, the
user does not need to specify an output buffer (the cipherText parameter for Encrypt, or the plainText parameter for
Decrypt). Once the user has passed in all data that must be authenticated but not encrypted/decrypted, they can call the
Encrypt or Decrypt function without the AUTHENTICATE_ONLY option. This will automatically generate zero-padding for the
block of non-encrypted data.
If the user calls the Encrypt or Decrypt function without the AUTHENTICATE_ONLY option, any data they pass in to that call
(and every subsequent call) will be both authenticated and encrypted or decrypted. Once the user is finished
authenticating/encrypting/decrypting data, he or she will call the Encrypt or Decrypt function with the
BLOCK_CIPHER_OPTION_STREAM_COMPLETE option. This will indicate to the GCM module that all encryption and
decryption has been completed, and it will pad the encrypted data with zeros (and with the lengths of the authenticated-only
and the encrypted data) and calculate the final authentication tag. If the data is being encrypted, this tag will be returned to
the user. If the data is being decrypted, this tag will be compared to a tag provided by the user and an error will be returned
in the event of a mismatch.
Note that the user doesn't necessarily need to provide data to encrypt/decrypt. If the user only provides data with the
BLOCK_CIPHER_OPTION_AUTHENTICATE_ONLY option, and specifies
BLOCK_CIPHER_OPTION_STREAM_COMPLETE on the last block of authenticated data, an authentication tag will be
produced, but there will be no resultant cipherText or plainText. This is known as a Galois Message Authentication Code
(GMAC).
GCM/GMAC Software Abstraction Block Diagram
ARCFOUR
ARCFOUR has a relatively straightforward usage model. The user will use the ARCFOUR key to create an "S-Box" and then
use that S-Box to encrypt or decrypt the message.
1.4 Using the Library MLA - Crypto Library Help Abstraction Model
13

e-Highlighter

Click to send permalink to address bar, or right-click to copy permalink.

Un-highlight all Un-highlight selectionu Highlight selectionh