Я пытаюсь разработать простой протокол для двух пользователей, чтобы проверить (относительно доверенного центрального органа), что они (намеренно) встретились/общались друг с другом.
Моя идея заключалась в следующем: пользователи владеют парой ключей (общедоступных и секретных) любой распространенной асимметричной системы, такой как RSA. Их открытый ключ также служит их идентификатором. Чтобы два человека подтвердили, что у них был контакт, они оба сгенерируют случайное 256-битное число, поделятся им друг с другом (в случае приложения/использования с отступом это должно происходить только лично, а не на расстоянии) и затем оба по отдельности безопасно передают (например, HTTPs) составной номер центральному органу, зашифрованному их соответствующими закрытыми ключами. Они также передают свой соответствующий открытый ключ/идентификатор, чтобы идентифицировать себя, в центральный орган, который, в свою очередь, может проверить, что оба они отправили одно и то же сообщение после расшифровки с помощью своих соответствующих открытых ключей, что подтверждает их личность и их предшествующую связь.
Я понимаю, что это поддается атаке «человек посередине», когда посредник может передавать друг другу случайные числа двух человек, фактически имитируя встречу между этими двумя и не включая себя.Реальная система, в которой я намереваюсь использовать это, сделает это практически невозможным, поскольку оба пользователя должны отправить сообщение ЦС за очень короткий промежуток времени, и пользователи, как правило, обмениваются случайными кодами только лично, где такая атака MITM будет очевидна.
Редактировать: основная цель состоит в том, чтобы два пользователя доказали свою преднамеренный общение/встреча. Нет никакого стимула и никакого вреда в сговоре, чтобы подтвердить таким образом встречу, которая произошла только дистанционно, пока обе стороны знают об этом действии.
С учетом сказанного, это плохая идея, если да, то почему?