377 похожих чатов

Господа - нужно экспертное мнение по вот такой криптографической штуке введение ————- 1

есть чат между A и B , используем end-to-end шифрование
у A есть пара ключей privKeyA, pubKeyA
у B есть пара ключей privKeyB, pubKeyB
оба знают публичные ключи друг друга
и могут посылать шифрованные сообщения друг друга используя публичный ключ (RSA)

2 теперь для оптимизации мы хотим использовать AES для шифрования
A придумывает sessionKey
и посылает B и в зашифрованном виде использя для этого publicKeyB

3 теперь при посылке сообщения от A в чат мы шифруем сообщение с помощью sessionKey
encryptWithAES(message, sessionKey)

4 при добавлении-удалении любого участника в чате
каждый участник перегенирвает sessionKey
и посылает каждому участнику чата свой session key зашифрованные для него персонально

пакет с паролями выглядит как-то так от user50 для user1,user2
{ u1: encryptedWithPubKey1(u50_sessionPass), u2: encryptedWithPubKey2(u50_sessionPass)}

и каждый получатель сообщения строит маппинг из полученных пакетов с паролями
hash1 -> decrypted u50SessionKey_1
hash2 -> decrypted u50SessionKey_2

и чат сообщение от user50 на группу чата выглядит примерно так

{ text: encryptWithUser50SessionKey(plainText), sessionKey: SOME_HASH_FROM_USER50}

——————
и вот теперь вопрос,
————-

мы хотим сократить размер пересылаемых данных - SOME_HASH_FROM_USER50
и сделать так чтобы каждое сообщение зашифрованное каким-то паролем
который уже ранее присылали было легко ассоциировать с этим паролем
не зная самого пароля

5 и тут 2 метода есть - мой и коллеги

5.1 мой метод
SOME_HASH_FROM_USER50 = md5(u50SessionKey)
а если это много то почему не взять первые 8 байт этого md5
или даже взять crc64

5.2 метод коллеги
SOME_HASH_FROM_USER50 = nonce

и идея в том что мол nonce короче чем md5
и nonce может использоваться как кусочек рандома для генерации пароля (однозначной)
и у каждого юзера по использованному nonce можно однозначно сопоставить использованный пароль

------------
итак - нужен совет - что лучше 5.1 или 5.2 ?

2 ответов

65 просмотров

"2 теперь для оптимизации мы хотим использовать AES для шифрования A придумывает sessionKey и посылает B и в зашифрованном виде использя для этого publicKeyB" Гениально. Очень полезно, когда нужно будет передавать очень много зашифрованных данных.

Так у тебя 2 человека в чате или может быть больше? Система с сервером или p2p?

Похожие вопросы

Обсуждают сегодня

Карта сайта