@rustem_ck

Можно ли передавать по сети OpenSSL encrypt/decrype?

Есть два компьютера, физически в разных местах.
Компьютер А кодирует строку с паролем (1234) и отправляет encrypted строку компьютеру B.
Компьютер B, сможет расшифровать (decrypt) строку, имея этот пароль: 1234?

Сомнения вызывает ф-ия openssl encrypt/decrypt - они кодируют/раскодируют только на основе соли или ещё каких-то данных свойственных железу напр? :)
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
NeLexa
@NeLexa
Можно ли передавать по сети OpenSSL encrypt/decrype?

Конечно можете. Главное, чтобы совпадал пароль и IV.
Для блочного шифрования обычно используют AES-256-CBC.
Если планируется использовать всегда разные пароли, можно продумать схему обмена ключами клиента с сервером по алгоритму Диффи-Хеллмена и на их основе создавать пароль и IV по определённому алгоритму.

К примеру в телеграм используется следующий алгоритм для генерации ключа и вектора:
// псевдокод
x = 0 for messages from client to server 
// or
x = 8 for those from server to client.

data = данные для шифрования или расшифрования
auth_key = ключ аутенификации 256 байт (зашить в клиент и сервер или получать при обмене ключами при помощи DH)
msg_key = substr(SHA1(data), 0, 16)

sha1_a = SHA1 (msg_key + substr (auth_key, x, 32));
sha1_b = SHA1 (substr (auth_key, 32+x, 16) + msg_key + substr (auth_key, 48+x, 16));
sha1_с = SHA1 (substr (auth_key, 64+x, 32) + msg_key);
sha1_d = SHA1 (msg_key + substr (auth_key, 96+x, 32));
aes_key = substr (sha1_a, 0, 8) + substr (sha1_b, 8, 12) + substr (sha1_c, 4, 12);
aes_iv = substr (sha1_a, 8, 12) + substr (sha1_b, 0, 8) + substr (sha1_c, 16, 4) + substr (sha1_d, 0, 8);

Для защиты от MITM, в случае обмена ключами, в клиент и сервер можно зашить свой сертификат и отвергать запросы не подписанные им.

Сомнения вызывает ф-ия openssl encrypt/decrypt - они кодируют/раскодируют только на основе соли или ещё каких-то данных свойственных железу напр? :)

Нет, всё чётко. Это же не random.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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