- Overview
This section provides an overview of the successful implementation of the Secure Cryptographic
Watermarking and Encryption Technology for Video Verification. The POC illustrates the core
functionalities of the system, which include video signing, encryption, and verification. The tests
conducted demonstrate that the implemented technology effectively ensures the integrity and
authenticity of video data. - Key Functions
The following key functions were successfully implemented in the POC: - Key Generation
RSA keys were generated to facilitate the signing and verification processes. The implementation
ensures secure management of the keys necessary for video integrity checks.
Pseudocode:
plaintext
Copy code
Generate RSA key pair
Export private key to ‘private.pem’
Export public key to ‘public.pem’ - Signing Video Metadata
The video metadata was securely signed using the RSA private key. This step is crucial for establishing
authenticity, allowing later verification of the video’s integrity.
Pseudocode:
plaintext
Copy code
Create SHA256 hash of video metadata
Sign hash with RSA private key
Save signature to ‘signature.bin’ - Verifying Video Signature
The system was able to verify whether a video was signed by utilizing the RSA public key. This
function is essential for confirming that the metadata has not been altered.
Pseudocode:
plaintext
Copy code
Load video metadata
Create SHA256 hash of video metadata
Load public key
Load signature
Verify signature against hash - Encrypting Video
The video data was encrypted using AES encryption, ensuring that unauthorized access is prevented
during transmission and storage.
Pseudocode:
plaintext
Copy code
Generate random AES key
Initialize AES cipher
Encrypt video data
Save encrypted data with nonce and tag - Decrypting Video
The system successfully decrypted the encrypted video data for playback, ensuring that only authorized
users can access the content.
Pseudocode:
plaintext
Copy code
Load AES key
Load encrypted data (nonce, tag, ciphertext)
Initialize AES cipher with nonce
Decrypt ciphertext - POC Results
The results from the POC are summarized below:
- Successful Signing: The system accurately signed the video metadata, which can be
independently verified at a later time. - Encryption Success: The video was encrypted successfully and stored in a secure format,
safeguarding it from unauthorized access. - Verification Accuracy: The system successfully identified unsigned video as “NOT
RealSealed” while confirming that the signed video was “RealSealed.” This verification process
underscores the reliability of the implemented cryptographic methods.
Attachments Notes – POC Results Output
Overview
This section provides a detailed look at the output from the Proof of Concept (POC) testing. It includes
screenshots of key files and an explanation of the output generated by running the POC, showcasing
the storage of keys, signatures, encryption status, and video verification results.
- POC File Storage and Key Files
The following files were generated and stored in the specified directory, which is structured to securely
hold the cryptographic keys and encrypted video files:
- Private Key: Stored in private.pem.
- Public Key: Stored in public.pem.
- Digital Signature: Stored in signature.bin.
Screenshots have been included below for each file to visually verify the contents and confirm correct
file generation.
- Text Output from Running POC Test
The following is the direct output from the POC test run:
plaintext
Copy code
PS C:\Users\Owner> & C:/Users/Owner/anaconda3/python.exe
“c:/Users/Owner/Documents/RealSeal/from Crypto.py”
Private key saved to private.pem.
Public key saved to public.pem.
Signature saved to signature.bin.
Video signed successfully.
Encrypted video saved to Documents/RealSeal/RealSeal.mp4.enc.
Documents/RealSeal/RealSealNoUpdate.mp4 is RealSealed.
Video decrypted successfully.
Decrypted video saved to Documents/RealSeal/RealSeal.mp4_decrypted.mp4. - Detailed Analysis of POC Output
- Private Key Storage:
- Message: “Private key saved to private.pem.”
- Explanation: The private key used for signing is securely saved in the file
private.pem. - Reference: See screenshot for the internal structure of the private key file.
- Public Key Storage:
- Message: “Public key saved to public.pem.”
- Explanation: The public key, used for verifying the video signature, is stored in
public.pem. - Reference: See screenshot for the structure of the public key file.
- Signature File:
- Message: “Signature saved to signature.bin.”
- Explanation: The generated signature for video metadata is saved as signature.bin.
- Reference: See screenshot for the internal content of the signature file.
- Video Signing:
- Message: “Video signed successfully.”
- Explanation: This indicates the video metadata was successfully signed using the private
key. - Reference: Refer to the metadata screenshot to confirm the presence of the signature.
- Video Encryption:
- Message: “Encrypted video saved to Documents/RealSeal/RealSeal.mp4.enc.”
- Explanation: The video has been encrypted and saved in RealSeal.mp4.enc,
ensuring secure storage. - Reference: See screenshot of the encrypted file metadata.
- Video Integrity Check (RealSeal Verification):
- Message: “Documents/RealSeal/RealSealNoUpdate.mp4 is RealSealed.”
- Explanation: This confirms the video has passed the integrity check, verifying it as
“RealSealed.” - Reference: Metadata screenshot confirms the RealSeal status of
RealSealNoUpdate.mp4.
“ebucore:ebuCoreMain”: {
“@version”: “1.8”,
“@writingLibraryName”: “MediaInfoLib”,
“@writingLibraryVersion”: “24.11”,
“@dateLastModified”: “2024-11-07”,
“@timeLastModified”: “19:32:37”,
“ebucore:coreMetadata”: [
{
“ebucore:format”: [
{
“ebucore:videoFormat”: [
{
“@videoFormatName”: “AVC”,
“ebucore:width”: [
{
“@unit”: “pixel”,
“#value”: “1920”
}
],
“ebucore:height”: [
{
“@unit”: “pixel”,
“#value”: “1080”
}
],
“ebucore:frameRate”: [
{
“@factorNumerator”: “999”,
“@factorDenominator”:
“1000”,
“#value”: “24”
}
],
“ebucore:aspectRatio”: [
{
“@typeLabel”: “display”,
“ebucore:factorNumerator”: [
{
“#value”: “16”
}
],
“ebucore:factorDenominator”
: [
{
“#value”: “9”
}
]
}
],
“ebucore:videoEncoding”: [
{
“@typeLabel”: “High@L4”
}
],
“ebucore:codec”: [
{
“ebucore:codecIdentifier”: [
{
“dc:identifier”:
[
{
“#value”: “avc1”
}
]
}
]
}
],
“ebucore:bitRate”: [
{
“#value”: “2319897”
}
],
“ebucore:scanningFormat”: [
{
“#value”: “progressive”
}
],
“ebucore:videoTrack”: [
{
“@trackId”: “1”
}
],
“ebucore:technicalAttributeString”: [
{
“@typeLabel”: “ColorSpace”,
“#value”: “YUV”
},
{
“@typeLabel”:
“ChromaSubsampling”,
“#value”: “4:2:0”
},
{
“@typeLabel”:
“WritingLibrary”,
“#value”: “x264 core 155”
}
],
“ebucore:technicalAttributeInteger”: [
{
“@typeLabel”: “BitDepth”,
“@unit”: “bit”,
“#value”: “8”
},
{
“@typeLabel”: “StreamSize”,
“@unit”: “byte”,
“#value”: “1765854”
}
],
“ebucore:technicalAttributeBoolean”: [
{
“@typeLabel”: “CABAC”,
“#value”: “true”
},
{
“@typeLabel”: “MBAFF”,
“#value”: “false”
}
]
}
],
“ebucore:containerFormat”: [
{
“@containerFormatName”: “MPEG-4”,
“ebucore:containerEncoding”: [
{
“@formatLabel”: “MPEG-4”
}
],
“ebucore:codec”: [
{
“ebucore:codecIdentifier”: [
{
“dc:identifier”:
[
{
“#value”: “isom”
}
]
}
]
}
],
“ebucore:technicalAttributeString”: [
{
“@typeLabel”:
“FormatProfile”,
“#value”: “Base Media”
},
{
“@typeLabel”:
“WritingApplication”,
“#value”: “Lavf58.17.101”
}
]
}
],
“ebucore:duration”: [
{
“ebucore:normalPlayTime”: [
{
“#value”: “PT6.090S”
}
]
}
],
“ebucore:fileSize”: [
{
“#value”: “1768400”
}
],
“ebucore:fileName”: [
{
“#value”: “RealSealNoUpdate.mp4”
}
],
“ebucore:locator”: [
{
“#value”:
“C:\Users\Owner\Documents\RealSeal\RealSealNoUpdate.mp4”
}
],
“ebucore:technicalAttributeInteger”: [
{
“@typeLabel”: “OverallBitRate”,
“@unit”: “bps”,
“#value”: “2323021”
}
]
}
]
}
]
}
}
Only partly printout
- Video Decryption:
- Message: “Video decrypted successfully.”
- Explanation: The encrypted video was decrypted successfully.
- Reference: See the decrypted file’s metadata in the provided screenshot.
- Original Baseline Video Path:
- Location: Documents/RealSeal/RealSeal.mp4
- Explanation: This is the original video file, serving as the baseline for comparison.
- Reference: See metadata screenshot of the baseline file.
“ebucore:ebuCoreMain”: {
“@version”: “1.8”,
“@writingLibraryName”: “MediaInfoLib”,
“@writingLibraryVersion”: “24.11”,
“@dateLastModified”: “2024-11-07”,
“@timeLastModified”: “19:46:25”,
“ebucore:coreMetadata”: [
{
“ebucore:format”: [
{
“ebucore:videoFormat”: [
{
“@videoFormatName”: “AVC”,
“ebucore:width”: [
{
“@unit”: “pixel”,
“#value”: “1920”
}
],
“ebucore:height”: [
{
“@unit”: “pixel”,
“#value”: “1080”
}
],
“ebucore:frameRate”: [
{
“@factorNumerator”: “999”,
“@factorDenominator”:
“1000”,
“#value”: “24”
}
],
“ebucore:aspectRatio”: [
{
“@typeLabel”: “display”,
“ebucore:factorNumerator”: [
{
“#value”: “16”
}
],
“ebucore:factorDenominator”
: [
{
“#value”: “9”
}
]
}
],
“ebucore:videoEncoding”: [
{
“@typeLabel”: “High@L4”
}
],
“ebucore:codec”: [
{
“ebucore:codecIdentifier”: [
{
“dc:identifier”:
[
{
“#value”: “avc1”
}
]
}
]
}
],
“ebucore:bitRate”: [
{
“#value”: “2319897”
}
],
“ebucore:scanningFormat”: [
{
“#value”: “progressive”
}
],
“ebucore:videoTrack”: [
{
“@trackId”: “1”
}
],
“ebucore:technicalAttributeString”: [
{
“@typeLabel”: “ColorSpace”,
“#value”: “YUV”
},
{
“@typeLabel”:
“ChromaSubsampling”,
“#value”: “4:2:0”
},
{
“@typeLabel”:
“WritingLibrary”,
“#value”: “x264 core 155”
}
],
“ebucore:technicalAttributeInteger”: [
{
“@typeLabel”: “BitDepth”,
“@unit”: “bit”,
“#value”: “8”
},
{
“@typeLabel”: “StreamSize”,
“@unit”: “byte”,
“#value”: “1765854”
}
],
“ebucore:technicalAttributeBoolean”: [
{
“@typeLabel”: “CABAC”,
“#value”: “true”
},
{
“@typeLabel”: “MBAFF”,
“#value”: “false”
}
]
}
],
“ebucore:containerFormat”: [
{
“@containerFormatName”: “MPEG-4”,
“ebucore:containerEncoding”: [
{
“@formatLabel”: “MPEG-4”
}
],
“ebucore:codec”: [
{
“ebucore:codecIdentifier”: [
{
“dc:identifier”:
[
{
“#value”: “isom”
}
]
}
]
}
],
“ebucore:technicalAttributeString”: [
{
“@typeLabel”:
“FormatProfile”,
“#value”: “Base Media”
},
{
“@typeLabel”:
“WritingApplication”,
“#value”: “Lavf58.17.101”
}
]
}
],
“ebucore:duration”: [
{
“ebucore:normalPlayTime”: [
{
“#value”: “PT6.090S”
}
]
}
],
“ebucore:fileSize”: [
{
“#value”: “1768400”
}
],
“ebucore:fileName”: [
{
“#value”: “RealSeal.mp4”
}
],
“ebucore:locator”: [
{
“#value”:
“C:\Users\Owner\Documents\RealSeal\RealSeal.mp4”
}
],
“ebucore:technicalAttributeInteger”: [
{
“@typeLabel”: “OverallBitRate”,
“@unit”: “bps”,
“#value”: “2323021”
}
]