Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] A safe area in steganography to provide high anti-compressibility #410

Closed
SunriseFox opened this issue Nov 21, 2019 · 24 comments
Closed
Assignees

Comments

@SunriseFox
Copy link
Contributor

Metadata

Field Value
Manifest Meta/Article-3
Purpose provide high anti-compressibility
Feedback deadline 2019-11-23 12:00:00 UTC
Explicitly designated reviewers @neruthes @guanbinrui

Abstract

We cannot prevent facebook/twitter from compressing our images and causing data loss. As the current implementation of steganography relies heavily on the raw original data of images, compressed images may not be acceptable for reading data.

Attempt to download all original images and decrypt is neither a good idea. It consumes too many bandwidths of users, as well as slows down the decryption progress.

I think we could provide a safe area on the image, e.g, a corner. In this area, we encrypt some metadata with high anti-compressibility (it is possible, such as barcode). Only after successfully decrypted the metadata and verified it shall we try to decrypt the main part of the image. If failed, try fetching the original image and try again.

Dependencies

#354

Glossary

Phrase Definition
... ...

Notes

  • I can hardly decrypt a message with an encrypted image.
@neruthes
Copy link
Contributor

We can use the top-left 25vw*25vw corner to do this. In this area, the pixel blocks should be larger. So that only if we can detect a pattern in this corner will we try downloading the whole image. Nice idea! 👍

@neruthes
Copy link
Contributor

The easiest pattern may be a 4*4 black-and-white chess pattern, with top-left being black.

@guanbinrui
Copy link
Member

I think it works when vendor gives user highly compressed image in order to reduce using of bandwidths. We can add the safe area to the base image and create a coressponing mask image which hide the area from steganography.

@neruthes
Copy link
Contributor

Steg-Example-003
Steg-Example-003-mask

@Jack-Works
Copy link
Member

Objection, this make steganography no longer "steganography"

@neruthes
Copy link
Contributor

@Jack-Works I suggest that hiding the fact that an image contains a Maskbook payload is not necessary at this stage. There are many months ahead before we need to introduce countermeasures against anti-Maskbook censorship.

@Jack-Works
Copy link
Member

@Jack-Works I suggest that hiding the fact that an image contains a Maskbook payload is not necessary at this stage. There are many months ahead before we need to introduce countermeasures against anti-Maskbook censorship.

If the design target is not tending to prevent anti-Maskbook, please change a term, use "steganography" may mislead users and they will think this "steganography" feature can keep them safe.

@SunriseFox
Copy link
Contributor Author

It stays safe. We just increase the anti-compressibility. We do not expose anything new to anyone.

@neruthes
Copy link
Contributor

@Jack-Works I suggest that hiding the fact that an image contains a Maskbook payload is not necessary at this stage. There are many months ahead before we need to introduce countermeasures against anti-Maskbook censorship.

If the design target is not tending to prevent anti-Maskbook, please change a term, use "steganography" may mislead users and they will think this "steganography" feature can keep them safe.
@Jack-Works

Image-Based Payload (IBP) might be a good option.

It stays safe. We just increase the anti-compressibility. We do not expose anything new to anyone.
@SunriseFox

Yes. Allowing only one base image is already non-confidential enough. This pattern does not introduce new risks when it enhances recognizability for Maskwork-compatible softwares.

@neruthes
Copy link
Contributor

I think we can ratify this now.

@neruthes
Copy link
Contributor

I will mark this as Ratified at today 05:13 UTC if no further discussion.

cc @yisiliu @Jack-Works @SunriseFox @guanbinrui

@guanbinrui
Copy link
Member

For now we will judge image payload dimension before decoding it and there is no ORIGINAL IMAGE we can found. So it may not urgent for this?
Futher more the mosaic style metadata really vision disturbing. What about use the MASK FACE for this purpose?

@yisiliu
Copy link
Member

yisiliu commented Dec 10, 2019

Objection, this make steganography no longer "steganography"

In our current version, we are posting a Maskbook poster, which is already too open to hide. When we decide to go full steal mode, then it's the time to consider removing all "public" features from the image.

@Tedko
Copy link
Member

Tedko commented Dec 10, 2019 via email

@yisiliu
Copy link
Member

yisiliu commented Dec 10, 2019

Mask face is fixed in the middle, being a good option for our validation purpose.

@neruthes
Copy link
Contributor

The chess board should be avoided if possible.

@guanbinrui
Copy link
Member

As the disscusion above the chess board opinion will be considered only if we can't get stable validation result from MASK FACE and I think we can mark this issue as Ratified if no further discussion.

@SunriseFox @Jack-Works @yisiliu @Tedko @neruthes

@yisiliu
Copy link
Member

yisiliu commented Dec 10, 2019

Let add this to our steganography process:

  • Use the mask face as the validation area
  • If it doesn't work, try at most 3 times
    • If it works, go ahead
    • if it doesn't, fall back to url based payload

@Jack-Works
Copy link
Member

It stays safe. We just increase the anti-compressibility. We do not expose anything new to anyone. -- @SunriseFox

The ability to distinguish if someone is using steganography is a serious information leak. (though preventing this type of leaking is not our goal at the current process accroding to @neruthes )

We should really change the term steganography to something else to avoid the misleading to user since we're not real secure at the steganography level. (Like Image-Based Payload by @neruthes )

@guanbinrui
Copy link
Member

The ability to distinguish if someone is using steganography is a serious information leak.

Steganography do not mean 100% secret. Beside steganography exists steganalysis detecting messages hidden in image using steganography.

But I think Image-Based Payload is a more user friendly name.

@Tedko
Copy link
Member

Tedko commented Dec 26, 2019

Any updates on this? Let’s use the mask as an indicator etc.

@neruthes
Copy link
Contributor

I think that the term Image-Based Payload may be used in all contexts to address this feature.

@neruthes
Copy link
Contributor

But wording is beyond the scope of this issue. Please talk in alternative places.

@Tedko
Copy link
Member

Tedko commented Feb 8, 2020

@guanbinrui @SunriseFox I think we can close this issue? Seems like the Image-Based Payload decryption is working well

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants