Мне нужно знать, что plaintext
/ ciphertext
, отправляемый в Google CloudKMS, и открытый / закрытый ключ, используемый для аутентификации, безопасны при передаче, но я не знаю, как это доказать.
Согласно Документам KMS я создал учетную запись службы, загрузил файл ключа JSON и подключил его через переменную среды GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
.
Я использую google-api-client gem (в версии 0.10.3
, выпущенный 13 месяцев назад, потому что я не могу установить mime-types >= 3.0
во время использования padrino-mailer: см. этот коммит ), протестировал методы Google::Apis::CloudkmsV1::CloudKMSService
encrypt_crypto_key
и decrypt_crypto_key
, и они прекрасно работают.
Я попытался прочитать исходный код google-api-client , googleauth и signet gems. Все, в чем я уверен, это:
- Файл ключа JSON загружен, и значение
private_key
используется для OpenSSL::PKey::RSA.new
здесь
Signet::OAuth2::Client
дается ключ RSA как signing_key
в этот файл
Я бы посчитал, что безопасность доказана, если файл ключа JSON используется для шифрования строки, отправленной через encrypt_crypto_key
на вызывающем сервере, а также для расшифровки строки, полученной decrypt_crypto_key
, и сервера CloudKMS на другом конце. ведет себя аналогично. Это то, что я предполагаю, что библиотека делает - сквозное шифрование - но я должен увидеть это, чтобы поверить в это. Я попытался просмотреть трафик в Wireshark, но не смог понять его смысл (возможно, этот факт доказывает это? Я не знаю ?)
Может кто-нибудь помочь мне доказать или опровергнуть этот метод вызова CloudKMS для шифрования / дешифрования пользовательских данных - с помощью google-api-client gem с файлом ключа JSON, загруженным как для документов - это безопасно?
Связанный: для тех из вас, кто интересуется, API CloudKMS - это в плане , который будет включен в более новый гем google-cloud .