I'm trying to add a watermark to the text in the Arduino and there are several levels of watermarks (fragile, semi-fragile, robust). What is the difference between these levels in terms of algorithms used?
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
"Robustness", in the context of digital watermarking, specifies the ability to detect the watermark after some signal processing modification (for images, this might be translation, rotation, scaling, compression, etc.) Some digital watermarking techniques are robust against some operations but not against others. The classifications are:
- Robust: The watermark should be able to survive against any and all modification. This is often used in copyright protection, for example.
- Fragile: This kind of watermark is designed to be destroyed by any modification to the original. This allows any manipulation, even slight changes, to be detected. Fragile watermarks are generally used to enable authentication and integrity verification.
- Semi-fragile: The watermark should be "robust" against certain, defined, modifications, but "fragile" against others. In other words, the watermark should survive intact under the operations you want to allow, but be destroyed by anything else. Again, these are used to enable authentication.
For more information, you might find the 2005 paper A Review Study on Digital Watermarking by L. Jian and H. Xiangjian (in the journal Information and Communication Technologies) useful.
Watermarking is used to detect changes against the original source. In images this is done by changing some pixels, almost invisible to see, but enough to check the source or see if changes have been made.
For text this is not possible normally, since changing the text will visible change the output (when you print it).
Instead a so called CRC (cyclic Redundancy Code) is used and stored separately. E.g. a certain text has a specific CRC code. When the code is changed, the CRC code should be changed too. But if someone only changes the text, you can check the text against the (unchanged/encrypted) CRC code to see it has been mangled with.