I have to implement protocol of secure data transfer that can be described as
- Alice selects data to send from finite set $m\in M$ (e.g. $M$ could be a column of values in database table)
- Alice encrypts selected data with some symmetric(!) algorithm and sends it to Bob.
- Bob decrypts data and get $m$
- Bob verifies that $m\in M$. It's important to realize here that Bob have no need to authenticate Alice, he must only be sure that $m$ is belong to $M$. However, Bob have no direct access to $M$
- If $m\in M$ then Bob sends $m$ via secure channel to Carol, else Bob ignore the $m$.
In other words, Bob serves as a gateway that provide secured communication and keeps Carol away from flooding of invalid messages.
Is there a protocol to achieve my goal? Please share any thoughts about it.
P.S. I don't want to use any TTP.