X:/Chat-это веб-приложение, которое использует HTML, CSS и JavaScript на переднем конце, а Node.js на заднем плане. Это позволяет пользователям безопасно общаться друг с другом (хотя я новичок в node.js и не могу гарантировать указанную безопасность).
JavaScript и локальное хранилище абсолютно обязательны для функционирования веб -приложения. Местное хранилище используется для хранения общественных ключей, частных ключей, настройки и многого другого.
Если вы используете функцию «Анонимный чат», сервером абсолютно ничего не хранится. Я хотел сделать самую безопасную форму общения, о которой я мог придумать, и в итоге я решил даже не хранить журналы разговоров через анонимный чат. Когда вы нажимаете на кнопку «Анонимный чат», вы перенаправляете на «/Anonymous», где для вас генерируется идентификатор, а также открытый ключ и закрытый ключ. Они сохраняются исключительно в вашем браузере (в местном хранилище). Сервер не хранит ни одной из этой информации. Единственное, что хранит сервер, - это идентификатор разговора и время создания. Это сделано для того, чтобы разговоры могли быть установлены на срок действия истечения через час. После завершения загрузки вы можете отправить свой URL всем, кого вы хотите, и попросить их подключиться к вам. После того, как они это сделают, они также получают сгенерированную для них пару открытых/частных ключей, а также идентификатор. Затем вам предоставлены их открытый ключ и их удостоверение личности. Когда вы отправляете сообщение, вы зашифруете его, используя их открытый ключ RSA-201 Поскольку сообщение зашифровано на стороне клиента, сервер никогда не знает, что говорится. Обновление страницы удаляет сообщения для тех, кто обновлялся, так как сообщения нигде не хранятся. Из -за того, что на сервере ничего не хранится, это означает, что пользователи могут легко изменить свои идентификаторы и тому подобное, поэтому этот проект был сделан для использования небольшими группами, а не широкой публикой. Наличие сервера хранить анонимные разговоры обеспечит выгоду от использования разговоров для пользователей, но это будет означать, что сервер может их изменять, и что журналы будут существовать. Так вы бы предпочли доверять своему другу или какому -нибудь случайному серверу?
Обычный чат больше похож на ваше общее приложение в чате. Сообщения по-прежнему зашифрованы на стороне клиента с RSA-2048, а частные ключи пользователей зашифрованы с помощью AES-256-CTR, который использует хэш SHA512 пароля пользователя в качестве ключа дешифрования. Пароль пользователя хранится с использованием BCRYPT с 10 раундами соляных раундов. Короче говоря, если код сервера не изменен или что -то в этом роде, чтобы захватить закрытый ключ пользователя, нет абсолютно никакого способа получить содержание разговора. Настройки, контакты и другие данные пользователя хранятся в формате JSON в текстовых файлах для легкого доступа. Они хранятся в открытом виде, но их было бы легко зашифровать с помощью пароля пользователя и AES. Если вы хотите сделать это реальностью, помните, уже есть функции, написанные, чтобы сделать это проще. Вы можете использовать функции «AES_ENCRYPT (PloundText, Password)» и «AES_DECRYPT (зашифрованный, пароль)», которые я написал, чтобы легко шифровать/расшифровать все, что вы хотите.
Там могут быть некоторые ошибки или какое -то неожиданное поведение, но этого следует ожидать, это, в конце концов, мой первый проект Node.js. Если вы попытаетесь сломать приложение, вы, скорее всего, добьетесь успеха. Там не так много проверки проверки, и я хотел бы, но их достаточно, чтобы защитить учетные записи и разговоры пользователя. Я заранее извиняюсь, если что -то пойдет не так, хотя.