Контекст безопасности моего вопроса выглядит следующим образом:
В настоящее время у меня есть электронное настольное приложение, которое запускает мое веб-приложение. Внутри моего приложения есть функция, которая позволяет аутентифицированному пользователю получить доступ к документу (pdf), который защищен паролем. Документ подготовлен на сервере, а пароль генерируется с использованием хэша SHA256 длиной 10 символов. Эти 10 символов состоят из двух частей: 1) переменный идентификатор документа и вторая фиксированная соль.
На клиенте внутри электрона в настоящее время у меня есть модуль нативного узла, который был написан на C и скомпилирован с использованием node-gyp. Я звоню в этот модуль, который содержит код для генерации одного и того же пароля, используя две части пароля. Вся цель наличия этого модуля нативного узла на клиенте состояла в том, что, поскольку модуль является скомпилированным двоичным файлом, он не может быть подвергнут обратному проектированию, и никто не может получить доступ к моей секретной соли. Если соль обнаружена, то другую часть легко найти, и, следовательно, все документы доступны злоумышленнику.
Я читал о WebAssembly и о том, как он компилирует код нижнего языка в wasm, который затем может быть загружен в браузеры. Это фактически означает, что я могу использовать тот же код C, который я использую в своем родном модуле, но теперь через Интернет, а не в электронном виде.
Мои сомнения были в части безопасности и обратного инжиниринга модуля wasm, который создается. Я читал, что можно выполнить обратный инжиниринг и получить файл C из wasm, но формат, который он дает, не совсем совпадает с исходным, и насколько он может помочь злоумышленнику, опять вопрос.
Некоторые темы, которые я прочитал
Помимо вопросов безопасности, я думаю, что, возможно, я использую wasm для неправильной цели, так как нахожусь в открытой сети, если есть код, источник которого не доступен для просмотра и аудита, он представляет очень большую проблему безопасности в целом.
Любые комментарии / советы будут полезны.