Хранилище ключей безопасности в постоянный файл безопасно или предлагает какое-либо альтернативное решение?

#ios #objective-c #amazon-web-services #keychain

#iOS #objective-c #amazon-web-services #брелок

Вопрос:

Я использую AWS сервисы для публикации в нем своих изображений и SNS сервисов для push-уведомлений. Для размещения изображений на AWS сервере у меня есть secret key amp; access key со мной в настоящее время я использую этот ключ из постоянного файла, который является очень простым и легким способом доступа к любому определенному ключу.

 #define AWS_AccessKey               @"###############"
#define AWS_SecretKey               @"####################"
  

Но в чем мой вопрос

защищен ли этот ключ от других?

кто-нибудь может легко получить доступ к постоянному файлу? если ДА, то как?

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

 #define DB_KEY             @"####################"
  

Каков наилучший способ хранения наших важных ключей? и где?

Заранее спасибо.

Комментарии:

1. в зависимости от среды есть лучшие способы. где запущено приложение? ec2?

2. да, это на ec2.

Ответ №1:

Поскольку приложение работает на ec2, более безопасным способом было бы использовать роль IAM, прикрепленную к экземпляру. Смотрите: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

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

Комментарии:

1. Я не получил environment подробных сведений, что означает невозможность понять, как использовать config file в приложении iOS, можете ли вы объяснить это?

2.Не рекомендуется хранить ключ в пользовательских данных EC2. Из руководства пользователя: Хотя вы можете получить доступ к метаданным экземпляра и пользовательским данным только из самого экземпляра, данные не защищены криптографическими методами. Любой, кто имеет доступ к экземпляру, может просматривать его метаданные. Поэтому вы должны принять соответствующие меры предосторожности для защиты конфиденциальных данных (например, ключей шифрования с длительным сроком службы). Вы не должны хранить конфиденциальные данные, такие как пароли, как пользователь data.docs.aws.amazon.com/AWSEC2/latest/UserGuide /…

Ответ №2:

Как было предложено, лучший способ использовать сервисы AWS из EC2, не требуя долгосрочных учетных данных, — назначить экземпляру роль IAM (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html ).

Если для вас важна безопасность, я предлагаю сохранить ключ SQLCypher в AWS KMS. Затем ваш экземпляр EC2 может получить доступ к KMS, используя его роль IAM.

Ответ №3:

Поскольку я исследовал больше в вышеупомянутой secret key проблеме хранилища, я нашел свое решение, как указано ниже.

Ссылочный вопрос AWS для ссылки на ключ безопасности: https://forums.aws.amazon.com/thread.jspa?threadID=63089

Согласно приведенной выше ссылке, AWS предполагается, что нам необходимо реализовать вызов службы на основе TVM (Token Vending Machine), чтобы предоставить особые права пользователю на загрузку данных S3 или загрузку данных S3 с определенным bucket .

TVM — это своего рода служба токенов, которая предоставляет пользователю токен, действительный для 12 hours 36 hours (максимум) связи с сервером.

если токен истекает, он снова вызовет службу и получит новый токен AWS .

Временные учетные данные, предоставляемые службой AWS токенов безопасности, состоят из четырех компонентов:

  • Ключ доступа
  • Секрет идентификатора
  • ключ доступа
  • Токен сеанса
  • Время истечения

Источник для TVM доступен на GitHub как для анонимного TVM, так и для идентификационного TVM. На этом примере мы можем понять, как получить TVM и как использовать его для связи с сервером.

Анонимный TVM: https: //github.com/amazonwebservices/aws-tvm-анонимный

Identity TVM: https: //github.com/amazonwebservices/aws-tvm-identity

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

Полная ссылка для хранения секретного ключа AWS: https://aws.amazon.com/articles/Mobile/4611615499399490