Zero width character's can be used to hide text in plain sight.I am building a system where user's can provide their secret message , cover message and a password (key) which I would encrypt and give an output back with only the cover message which has encrypted secret message embedded as zero width characters invisible.When the receiver provides the key with the message, the system would decrypt and translate the zwc's back to the original secret message.
The cost of zwc's is that every two bits can contain one zwc as there are only 4zwc's available in unicode.So to represent a character 'b',it takes 4zwc's (ZWJ,ZW-NJ,ZWS,ZW-No break space).
I have been using AES with ebc mode and I encrypt the secret message with the key given by the user,but due to padding even if the user's secret message is 'hi' its padded as 16bytes when encryption due to aes block size.This means to convey 'hi', I needed 16bytes and due to zwc inclusion its 16*4 =64chars.So I researched more to find cipher text stealing where len(p)=len(cipher text) eliminating padding which is exactly what I needed.But during this process I came to know that EBC mode is insecure and CBC should be used (pretty late realization).CBC requires an IV which takes one byte again imposing more restrictions on my zwc situation.If I don't use a fixed IV, every message is suddenly two bytes 128 characters with zwc.
According to my research,fixed IV's can be used if you key changes in my case user's give the keys to encrypt so technically key changes but as its a password two messages from the same user is encrypted with the same key cause same password.Is it safe to use a fixed IV In my situation.
And I dont understand according to wiki,len(p)=len(ct) for cipher text stealing but if a fixed iv is not used len(p) is never equal to the length of the cipher text?
Can I use cbc with fixedIV and cipher text stealing for my situation?
Is this the right way to design this ? Cause this is my first crypto project