Скрыть секретный ключ в общедоступном репозитории

Я работаю над приложением javascript с открытым исходным кодом, я пытаюсь взаимодействовать со сторонним API (в частности, с github). Я пытаюсь сохранить все свое приложение только на стороне клиента, поэтому у меня действительно не будет сервера, на который можно было бы вернуться или хранить скрытые файлы. В рамках процесса OAuth мне нужно предоставить секретный ключ, предоставленный для моего ключа API. Я не должен публиковать или делиться этим ключом.

Я придумал следующее решение:

  1. Зашифровать секретный ключ с помощью тройного DES и парольной фразы.
  2. Поместите зашифрованную версию куда-нибудь в мой репозиторий.
  3. Когда мне нужно пройти аутентификацию через Oauth, запросить парольную фразу и восстановить секретный ключ.
  4. Когда секрет будет известен, сохраните его в локальном хранилище, чтобы избежать запросов в будущем.

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

Это достаточно безопасно? Это не сверхкритическое приложение, но я хочу сделать все возможное, чтобы защитить то, чем мне запретили делиться. Есть ли лучший способ, чем 3DES, для обратимого шифрования ключа?

5
задан captncraig 15 May 2012 в 14:17
поделиться