Here's a problem that I've been thinking about:

  • An individual, Alice, wishes to authenticate herself.
  • She may wish to authenticate to Bob (who is on the blue team) that they are both on the blue team.
  • She may wish to authenticate to Charlie (who is on the green team) that she is on the green team.
  • However, when approaching a person, she has to send a message that could authenticate her to either of the two (as she does not know which one she is approaching)
  • The goal is for members of the blue team to not know she is on the green team, and for members of the green team to not know she is on the blue team.
  • Additionally, Eve, who is on the red team, should not be able to determine anything about which teams alice is on due to the message.

How would one construct such a system?

  • $\begingroup$ Do you require the protocol to only consist of a single message from Alice, or would you allow them to exchange messages in as in some challenge-response system? $\endgroup$ – ZeroOne Apr 18 '18 at 14:23
  • $\begingroup$ @ZeroOne just a single message from Alice. $\endgroup$ – Stack Tracer Apr 21 '18 at 4:50
  • $\begingroup$ What if someone else is also on both teams? $\endgroup$ – PyRulez Jan 14 '19 at 3:26

It would be possible to do this if the authentication method was designed to allow for redundancy. The simplest example would be if team members authenticated to each other with a password, but they were allowed to send redundant characters along with the password. (I'm assuming here that all teams use the same authentication method!)

So let's say the blue team password is "BERRY" and the green team password is "LEAF". Now, the string "ASDBERRYFOO" would successfully authenticate a blue team member. However, "FOOBERRYLEAF" would successfully authenticate a member to both teams! The teams don't know each others' passwords, so the latter does not look any more suspicious to anyone than the former. Eve doesn't know the passwords of red or blue teams either, so she cannot know whether that string actually includes a password to one or more teams.

Of course, this method is highly vulnerable to replay attacks. Eve can very well just go ahead and send "FOOBERRYLEAF" to anyone she might encounter, and that way she would find out that it authenticates to both blue and green teams (even if she still doesn't actually know the passwords -- they might as well be "OOBE" and "RYLEA"!).

One could try to improve the scheme by only accepting a certain authentication string once -- so if "FOOBERRYLEAF" has been used, it shouldn't work again. Alice can still create an unlimited amount of similar strings as she knows the passwords.

A better method would be to use one-time passwords so that even the "BERRY" part does not repeat.

The redundancy part is still my main issue though: why would anyone actually use a scheme where the same message could be interpreted in two different ways? Obviously my "FOOBERRYLEAF" example is too naive. I think in reality you wouldn't just concatenate strings, but you'd find some clever hash collision or something like that to achieve the same result. But I'll leave that part for others to ponder...

  • $\begingroup$ I was starting to think along these lines (along with a couple of clever tricks involving Galois Fields). $\endgroup$ – Stack Tracer Apr 29 '18 at 23:23

I believe that Alice could just say 'I am in your team.' This way, whether she is talking to Charlie or Bob, either will come to know in which team she is. And, Eve and the other teams would not be able to figure out Alice's team as they would not know whom she talked to in the first place!

  • 3
    $\begingroup$ That's not what authentication is. Bob and Charlie should be able to verify Alice's statement to be true. $\endgroup$ – ZeroOne Apr 18 '18 at 14:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.