Вот, блин, все люди как люди, ночью спят. А меня вот идеи посещают.
0. Генерим пару ключей.
1. Открытый колюч и UUID, который будет нашим user id (UID) отправляем в сеть. На этом процедура регистрации заканчивается.
2. Допустим, мы хотим отправить некое сообщение. Подписываем, шифруем его нашим открытым ключом и отправляем: UID, UUID-сообщения, UUID-родителя (или наш UID если нет), хэш подписанного сообщения, криптованное собщение, ЭЦП пакета. Такое сообщение будем назыать первичным сообщением.
3. Ессно, на данном этапе никто прочитать сообщение не может, но зато может его "запросить". Отправляем запрос: UUID-сообщения, UID получателя.
4. Теперь, пользователь сети увидит запрос и может его обработать: найти нужное сообщение, расшифровать его своим секретным ключом, зашифровать открытым ключом получателя и отправить в сеть. Такое сообщение будем называть зеркальным сообщением.
5. Получатель расшифровывает своим секретным ключом, проверяет хэш, проверяет ЭЦП.
6. Поскольку, у нас социальная сеть, значит у нас есть френды. Допустим, мы делаем так, что при отправке нового сообщения, юзер ОБЯЗАН отправлять зеркальное сообщение всем своим взаимным френдам.
7. Чтобы не захламлять сеть зеркальными сообщениями, разумно установить срок их жизни, по истечении которого сообщение удаляется.
8. Ессно, владелец зеркального сообшения, может самостоятельно перешифровать его другому получателю, т.е. исполнить запрос в п.4. В принципе, можно сделать ограничения на "зеркалирование" зеркальных сообщений, но реальных рычагов для осуществления подобного ограничения я найти не могу.
9. Поскольку, это социальная сеть, значит есть сообщества. Чисто технически, сообщество - это специальный UID, который указывается в поле "родитель" сообщения.
10. Поскольку это сообщество, то значит нужно обеспечить быстрое получение зеркальных сообщений. Этим занимаются модераторы. При формировании первичного сообщения в сообщество, пользователь ОБЯЗАН отправить "зеркало" модераторам.
11. В принципе, модератор может быть демоном, который будет рассылать "зеркала" членам сообщества и отвечать на их запросы. Ессно, "время жизни" сообщений на модераторов не распространяется.
Что это дает:
1. Простота реализации. Полное отсутствие логики обеспечения безопасности. Все что нужно - это проведение нескольких проверок перед помещением сообщения в сеть.
2. На серваке все шифровано. И паяльник против владельца сети поможет слабо. Нужно искать, либо владельца первичного сообщения, либо владельцев зеркал.
3. Обеспечение приватности с одной стороны, обеспечение широкой доступности с другой.
Дополнительные возможности (не рассмотренные здесь):
1. Можно сделать только зеркальные сообщения, которые будут жить в сети только то время, пока они востребованы.
2. Можно сделать отправку по поручению. Т.е. отправляем кому-нибудь сообщение, в теле которого содержится сообщение, которое получатель может отправить в сеть. (Для сокрытия IP отправителя, притом, глубина рекурсии может быть произвольной).
3. Различные модели доверия, подписки, рассылки, фильтры, подтверждения.
4. Служба меток времени.
>>>