есть несколько компонентов моего приложения, которым требуется их безопасная связь в том смысле, что происхождение проверено. эти компоненты не могут иметь общий секрет. Поэтому я должен выбрать шифрование с асимметричным ключом. предполагая, что у меня есть два компонента A
и B
, A отправляет некоторые данные F
в B
, а B
должен убедиться, что они действительно поступили от A
A
генерирует дайджест H
из F
со своим закрытым ключомA
прикрепляет A_pub
, H
к своим параметрам запроса, отправляет F
и объявляет источник/отправителя как A
B
проверяет дайджест H
с помощью A_pub
, предоставленного для F
по-видимому, это выглядит нормально. Но если какой-либо другой компонент V
делает то же самое с V_pub
и объявляет себя A
, B
все еще думает, что запрос пришел от A
, так как этот H
создается с помощью V_prv
openssl подтверждает, что все в порядке.
Я хочу дать защиту от этой атаки V
Я использую ecparam
secp112r1
, чтобы минимизировать длину ключа. и ключи неоднократно меняются.
-- ИЗМЕНИТЬ --
A
, B
и V
— это компоненты приложения, идентифицируемые уникальным URI
. В настоящее время он предназначен для ограничения безопасного потока страниц. например вы можете предположить, что A
, B
, V
будут URL-адресами. Я хочу, чтобы только A
мог перейти к B
, и только B
может перейти к C
.... и я не хочу поддерживать для этого глобальный/общий сеанс приложения. поэтому If B
может просто проверить происхождение этой ссылки на основе специальных параметров, которые A
передали ей без состояния/без сеанса. и чем более общим он может быть, тем более многоразовым он будет для реализации и в других сценариях.
Однажды я подумал сохранить контрольные суммы A_pub
в доверенном глобальном хранилище. однако я боюсь, что это не будет чрезмерной инженерией?
мне приходит в голову еще один способ - запросить исходный URL-адрес открытого ключа. Однако я хочу избежать этого.
A
иV
— это просто произвольные идентификаторы (например, «первая сторона» и «вторая сторона»), и не имеет значения, какой из них какой, покаB
сохраняет их прямолинейность. 2)A
иV
не произвольны и обозначают что-то конкретное. В этом случае вы не получите полезного ответа, если не скажете нам, что это такое. - person David Schwartz   schedule 01.04.2012