Как зашифровать Astring в nodeJs, которые должны использоваться в качестве индекса - PullRequest
0 голосов
/ 10 сентября 2018

Я разрабатываю микросервисную архитектуру, используя nodeJs и mongoDb. У меня есть сценарий сохранения номера водительского удостоверения, который также используется для проверки пользователя. Теперь, поскольку номер DL равен PII, я не хочу сохранять строку как есть, я хочу зашифровать ее перед сохранением. Я могу использовать логику шифрования для генерации общей зашифрованной строки каждый раз, поэтому я могу зашифровать номер DL и выполнить поиск в БД. Но я обеспокоен тем, что хакеры могут расшифровать и получить все номера DL, если они знают логику шифрования для одного. Может ли кто-нибудь предложить мне лучший подход для такого варианта использования?

1 Ответ

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

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

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

Однако, если вам действительно нужно это как индекс, у вас есть то, что кажется конфликтующим приоритетами. Я передам кому-то еще, я не знаю много об индексации БД.

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

...