-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMAVIS.txt
More file actions
135 lines (95 loc) · 4.88 KB
/
MAVIS.txt
File metadata and controls
135 lines (95 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
DCT
GAN
Watermarking
QR Code
MAVIS
Metadata {MAVIS-Secret}
{IMAGE}
-------------------------------------------------------------------------------------------------------------------------
$ (metadata) | {MAVIS-Secret} $ (image-pixel-data) | watermark({MAVIS-Secret}) $
-------------------------------------------------------------------------------------------------------------------------
(1)
What should be {MAVIS-Secret}?
- hash of the image?
- 4-5 byte user?
- user public key? + user/device signed certificate (done int the client device's secure enclave)
- MAVIS Server public key? + certificate
- trusted timestamp
(2) whether to append {MAVIS-Secret} to image (metadata)?
- YES
(3) whether to append "watermarked" {MAVIS-Secret} to (image-pixel-data)?
- YES
(4) For MVP deal with PNG files only and don't worry about lossy files like JPEGs.
-----------------------------------------------------------MVP DONE (make sure it works E2E before moving ahead)---------
(5) Image can be changed or be lossy - if we want to protect against those losess the watermark must be resilient.
- QR Code adds to that resiliency?
- YES
{IMAGE}
-------------------------------------------------------------------------------------------------------------------------
$ (metadata) | {MAVIS-Secret} $ (image-pixcel-data) | watermark(QR-Codify({MAVIS-Secret})) $
-------------------------------------------------------------------------------------------------------------------------
*That's why 5 is extra credit work*
================================
(6) Sphisticated ways of watermarking an image.
|-------------------------> (6.1) DCT -> Deals with image edits. generating frequency maps, embdding them in QR code, and adding that QR code as watermark will help us detect the "source" even when the image is modified.
|
|
|-------------------------> (6.2) GAN -> Deep neural way of watermarking an image + identifying if an image is watermarked or not + retrieving that watermark?
(1234) {len=4 pos={r1c2, r3c5, r5c2, r2c6}}
abaaaaaaaaaaaaaaa
bbbbbbfbbbbbbbbbb
ccccceccccccccccc
ddddddddddddddddd
eheeeeeeeeeeeeeee
fffffffffffffffff
ggggggggggggggggg
--------------------------------------
Our MVP => (1) + (2) + (3) + (4) + whatever boilerplate infra needed for E2E demo.
----
Our final product => MVP + (5) + (6.1) + whatever is PICT requirement for project completion.
===================================================================================================
===================================================================================================
admin creds:
username:
notomkar
password:
omkar
===================================================================================================
# Photographer clicks the image
# Takes and signs the image hash
# sends the image, the signed image hash and the device name to the server on /upload-image/
# The server decrypts the image hash and verifies it against the image (Above function)
# saves the image
# Signs the unincrypted image_hash
# Make the certificate, sign the certificate
# then in the response send the signed certficate and signed hash
# the photographer signs the certificate, the signed hash is unchanged
# Both of these are send to the /get-image/
# Here the server will decrypt the signed hash then get the relevant image if it exists **and is unverified** if verified these is malicious behaviour
# The server generates a new certificate with the photographer new certificate length, public key and the signed certificate
# ==============================================================
# | length | public key length | public key | signed certificate |
# ==============================================================
# The server then adds/ embeds this new certificate to the image
# This signed image is saved separately, the original and watermarked image is now marked verified
# The link is send back to the photographer to download the image or share the link
# The verifier gets the image,
# She will then deserialize the signed certificate then decrypt it to get the original certificate
# Non repundiation can be established by getting the photographer public key from the user id in the original certificate along
# with whatever other provenance data is desired about the image
===================================================================================================
> Only our platform is supported <
1 2 3
Size, entropy, mavis secret size
high entropy (2) -> Better extraction
image gets hash, certificate along with it
make the certificate in the:
metadata,
endpoint response,
dependence
1. on the internet
hash(image) -> certficate(server)
2. you expect image and the certificate
- Core assumption
3. qr code is always readable (minimize length)
4.