Безопасная передача имени пользователя и пароля между двумя внутренними системами - PullRequest
0 голосов
/ 29 сентября 2018

Каким будет самый безопасный способ в java для передачи имени пользователя и пароля, зашифрованных между двумя внутренними системами, написанными на Java за vpn?

Цель будет заключаться в том, что если зашифрованное имя пользователя и пароль захвачены кем-то, его никогда не удастся расшифровать.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Теоретически, для транспортировки конфиденциальных данных используются асимметричные инструменты шифрования.Каждый узел / клиент будет иметь пару ключей, один из которых является частным и известен только сам по себе, а другой - общедоступным, и его должен знать каждый, кто хочет отправить конфиденциальные данные этому конкретному узлу.Дело в том, что если данные полезной нагрузки зашифрованы с помощью открытого ключа клиента X, они могут быть расшифрованы только с помощью частного ключа клиента X.

Протоколы, такие как SSL, TLS и т. Д., Являются некоторыми широко используемыми реализациями этой концепции.

0 голосов
/ 29 сентября 2018

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

, поскольку вы сказали «Никогда не расшифровываться», ваш протокол может использовать ключ шифрования, который уже определен на обоих серверах и являетсяне обмениваются между ними (например, через рукопожатие) и могут использовать алгоритм шифрования, который не хранит никакой проверки ключа шифрования в передаваемых данных (таких как заполнение или хэш и т. д.) и, конечно, не должен обмениваться алгоритмом шифрования.

стоит отметить, что ssl / tls или любой другой протокол, который раскрывает их алгоритм шифрования и обменивается используемыми ключами шифрования, являются плохими идеями для достижения вашей цели, поскольку эти протоколы склонны к дешифровке, если определенные части их трафика перехвачены.

0 голосов
/ 29 сентября 2018

SHA (Secure Hash Algorithm) - одна из популярных криптографических хеш-функций.Криптографический хеш может использоваться для создания подписи для текста или файла данных.

Алгоритм SHA-256 генерирует почти уникальный, 256-битный (32-байтовый) хэш фиксированного размера.Это односторонняя функция, поэтому результат не может быть расшифрован до исходного значения.

В настоящее время хеширование SHA-2 широко используется, поскольку считается наиболее безопасным алгоритмом хеширования в криптографической области..

Некоторые библиотеки, такие как кодек Commons Guava или Apache, предоставляют функции.

В вашем случае я предлагаю вам отправить имя пользователя в открытом виде, но отправить пароль, используя шифрованный SHA, посколькуон не может быть расшифрован, в другой бэкэнд-системе вы сохранили зашифрованную строку где-нибудь в безопасности, например, в базе данных, и когда пароль пересылается, вам просто нужно увидеть совпадение зашифрованной строки.

Это хорошая статья из руководства.SHA в Java: https://www.baeldung.com/sha-256-hashing-java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...