Меня просят предоставить решение для моего внутреннего клиента. Вся сетевая связь является внутренней, и ни приложения, ни их серверы не доступны через Интернет.
- Приложение REQUESTOR будет иметь список SSN для 1000+ человек, для которых им нужна информация (разный список из 1000+ каждый день).
- Приложение REPORTER может выполнять запросы SQL и предоставлять форматированный вывод.
- Приложение DATAOWNER содержит необходимую информацию, хранящуюся в RDBS, включая столбец SSN в виде открытого текста.
REQUESTOR не может напрямую запрашивать информацию у DATAOWNER. Единственный способ, с помощью которого REQUESTOR может запросить информацию, — это URL-адрес REPORTER. Вот где я вхожу.
У меня нет возможности изменить возможности/конфигурацию приложений REQUESTOR или DATAOWNER, кроме предоставления информации REQUESTOR о том, как подготовить и отформатировать URL-адрес.
Я могу создать отчет и настроить REPORTER для приема URL-адреса, например
https://REPORTER/TheReport?argument1=123456789
Я не хочу, чтобы SSN в URL-адресе был в виде открытого текста, так как он будет регистрироваться в веб-журналах REPORTER и кто знает, где еще.
Моя идея для решения состоит в том, чтобы REQUESTOR выполнял хэш SHA256 конкатенации SSN и секретного значения, которое периодически меняется, и использовал этот дайджест в URL-адресе. Когда REPORTER получает запрос, он выполняет SQL-запрос к DATAOWNER, например (псевдокод):
выберите [DesiredFields] из таблицы
где SHA256FUNCTION(CONCATENATE([SSNcolumn],<TheSecretValue>)) = $argument1
.
Я считаю, что это не увеличивает риск раскрытия SSN, поскольку вся обработка с использованием значений открытого текста происходит на серверах, которые уже имеют доступ к ним в открытом виде. Приложение REPORTER никогда не видит SSN открытого текста напрямую, хотя оно должно передавать выходные данные SQL-запроса, который может включать или не включать SSN. Однако из-за конструкции программного обеспечения REPORTER не сохраняются ни результаты запросов, ни отформатированные выходные данные.
Хотя я знаком с некоторыми аспектами криптографии, я определенно не эксперт. Я был бы признателен за любые комментарии по этому подходу, как хорошие, так и плохие.
Спасибо