Let's assume we have a ton of users, and each user has a list of fruits they like - Those will be keywords. I want my users to be able to encode any data they store (Let's say, the location of their favorite fruit trees), as well as decode it: Therefore, I want to be able to generate a public/private key pair based on their specific keyword list.
This also implies that any user with the same keyword list should be able to access the data that was previously encoded. However, I'd like to take this a step further: I want all users, that have a keyword list which contains the keyword list used to encode data as a subset, to also have access to that encoded data.
In my example, this would mean the following: All people that like the same fruits or more as someone else should be able to decode the fruit tree locations of that person.
In essence, I want my key pairs to somehow encapsulate each other: A public key generated by a certain keyword list should be able to match all private keys generated by any subset of that keyword list.
Unfortunately, I'm no expert in the field of cryptography, so I was wondering: Does anyone know how I can achieve key pair generation with the properties described above?
Thanks!