# Hide secrets in an article composed with Machine Learning?

Say that Alice wants to communicate with Bob, but she does not want any direct contact with him. Instead, Alice will put the secret in public, such as a discussion board, and Bob will come there to get the info.

Assume that the secret is "attack", Alice can come up with the sentence "Apple is the best to eat, and it can really keeps you healthy." Assume Bob knows the magic key 2, he can retrieve the secret.

My question is, how possible it is to generate an article (that makes sense) out of a longer secret, such as a sentence? Is AI good enough to do it?

Of course, the shorter the word-span, the harder it is to compose a suitable article. But if I require a relevant word appears at the location 1, 51, 101, 151, ..., I think it is not too hard.

Update: thank you all for your reply. As you see, the example I gave is rather simple. I can easily improve the "magic number", instead of using 2 or 50 or 100, I can generate a series of random number from the same seed, owned by Alice and Bob.

• What do you need AI for to do something like this? This could be implemented by simply indexing the string at the locations indicated by the key. – Ella Rose Oct 5 '18 at 16:18
• Given the secret "let us attack tonight at ten", I want the AI to come up with a paragraph, which reads natural to human, whose first word start with 'l', 51-th word start with 'e', 101-th word start with 't', 151-th word start with 'u', and so forth. – SamTest Oct 5 '18 at 16:28
• I'm not really sure this is a good question for this site. It seems to be more about machine learning being able to generate natural text with specific constraints. Why cryptography? – mikeazo Oct 5 '18 at 18:14
• @mikeazo good suggestion. I ask it here because I started thinking this question when I was trying to understand steganography: instead of "squeezing" secret into the carrier, why not try to generate the carrier out of the secret? Another reason I ask it here is because I want to know if this is too crazy an idea that is not even being thought about by cryptographers. – SamTest Oct 5 '18 at 21:05
• @EllaRose If so, for each time I want to pass a secret, I would need to find a way to inform Bob what book and the location of each words in the book, which compromise the pre-requisite, i.e., I don't want any direct contact with Bob (of course we need to share a common secret at the beginning). – SamTest Oct 5 '18 at 21:08

To go for the low-hanging fruit, train your machine to be really good at swapping synonyms based on context. Then just have it find suitable synonym replacements for every word of covertext located at a multiple of your magic number.

EDIT: I don't have enough reputation to comment so I'll reply to another post here. Someone objected that the keyspace is quite small. For example, there are only a handful of possible keys in the OP's example, only one of which yields meaningful text. But this can be remedied quite easily. Instead of using simply the first letter of a word, use the letter at an arbitrary position determined by a second key, wrapping around if the word is too short.

For instance, take the key KEY as numerals derived from the position of K, E, Y in the alphabet: 11 5 25. Choose a magic number like 3, and beginning with the first word, hide a secret letter at position 11 (wrapping around if the word is shorter than 11 characters). In the 3rd word after (since 3 is your magic number) hide the next secret letter at the position indicated by the next numeral of your key, etc.

• An apple is healthy to eat. They keep doctors away. You can cook them in pockets of bread and enjoy!
• [A]n apple is heal[t]hy to eat. [T]hey keep doctors aw[a]y. You can [c]ook them in poc[k]ets of bread and enjoy!

• Word 1, position 11: A

Word 3, position 5: T

Word 6, position 25: T

Word 9, position 11: A

Word 12, position 5: C

Word 15, position 25: K

This approach is not trivially broken.

I think that the problem is 2. 2 and human language. 2 is a small number. To be honest, within the realm of modern cryptography (dealing with numbers $$2^{250+}$$ for elliptic curves), even a lofty 50 is small. A full size AES key can take on $$10^{77}$$ values. With such small numbers and modern computing power, your key lends itself to simple brute force attack. Take:-

Apple is the best to eat, and it can really keeps you healthy

The following offsets, what you call keys produce these plain texts:-

1: Aitbteaicrkyh

2: Attackh

3: Abarh

4: Atch

Only offset 2 gives a meaningful plain text. Now of course with larger offsets the number of candidate plain texts will increase. But you're always fighting the grammatical rules of your chosen language. And those rules manifest themselves as probability distributions that greatly reduce your options for the cipher text. Consider that even offsets ranging 2 - 1,000,000 still only give you 1 million candidates which an iPhone could easily compute, whilst your innocent but long communique would start to look out of place. Not good for the concept of steganography by definition - they'd start to suspect messaging. Dictionary analysis could triage the candidates down to a handful I'd expect. Then they'd use life pattern analysis and look for those messages likely /appropriate for the current scenario. I don't think that this system would be too secure once they thought about it for a while.

• It is not secure as long as you started to notice and to think about it. However, if I can generate a paragraph that is so natural, how would you even notice me among the millions of postings, say, on this website? This is my point. – SamTest Oct 8 '18 at 17:17
• @ming I concede your point. Although it then becomes a very dangerous game that you're playing, and one that's out of your control. You can never be certain of the point at which you become a suspect and therefore easily compromised as your scheme is easily brute forced. I would suggest therefore that this might unknowingly threaten the whole potential network and therefore mustn't be used. – Paul Uszak Oct 8 '18 at 21:24
• Use a key to determine the position of the secret letter in a word (mod word length). This way, your steganography can satisfy Kerckhoffs's principle. – Meler Lawler Oct 10 '18 at 14:19

The AI can be trained to make unsuspecting typos on a given text with no typos. Thus encoding extra information in the text when it’s compared with the original text without typos.

Note: This is all about hiding the information from people who don’t know your algorithm. Thus you should also make sure the informaion you’re encoding is encrypted.