Cloud KMS ile verileri imzalama ve doğrulama (Asimetrik)

1. Genel Bakış

Cloud KMS; bulut hizmetiniz için şifreleme anahtarlarını, şirket içinde yapılana benzer şekilde yönetmenizi sağlayan, bulutta barındırılan bir anahtar yönetim hizmetidir. Donanım destekli anahtarlar için Cloud HSM dahil olmak üzere çeşitli anahtar türleri ve kaynakları kullanılarak şifreleme, şifre çözme, imzalama ve doğrulama desteği sunar. Bu eğitimde, asimetrik Cloud KMS anahtarlarını kullanarak verileri nasıl imzalayacağınız ve doğrulayacağınız açıklanmaktadır.

Öğrenecekleriniz

  • Cloud KMS API'yi etkinleştirme
  • Anahtarlık oluşturma
  • Asimetrik imzalama/doğrulama için şifreleme anahtarı oluşturma

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.

  1. Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Bu codelab'de, Google Cloud'da çalışan ücretsiz bir sanallaştırılmış ortam olan Cloud Shell'i kullanacaksınız. GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir ekranla karşılaşırsınız:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Aksi belirtilmedikçe tüm komutları bu kabuktan çalıştırın.

3. Cloud KMS hizmetini etkinleştirme

Cloud KMS'yi kullanabilmek için önce hizmeti projenizde etkinleştirmeniz gerekir. Bu işlemin proje başına bir kez yapılması gerekir. Cloud KMS hizmetini etkinleştirmek için aşağıdaki komutu çalıştırın:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

Etkinleştirme işlemi bir dakika kadar sürebilir. Komut tamamlandığında başarılı olduğunu bildirir.

4. KMS anahtarı oluşturma

Cloud KMS anahtarlığı oluşturun. Cloud KMS'de anahtarlık, şifreleme anahtarlarının mantıksal bir koleksiyonudur. Anahtarlık, anahtarların konumu gibi meta verileri içerir. global bölgesinde my-keyring adlı bir anahtarlık oluşturun:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Şimdi, az önce oluşturduğunuz anahtarlıkta my-asymmetric-signing-key adlı ve asymmetric-signing amaçlı bir şifreleme anahtarı oluşturun.

$ gcloud kms keys create "my-asymmetric-signing-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-signing" \
    --default-algorithm "rsa-sign-pkcs1-4096-sha512"

5. İşaret Verileri

Şifrelemenin aksine, asimetrik bir Cloud KMS anahtarı kullanılarak şifrelenen verilerin şifresinin çözülmesi için Cloud KMS hizmetine online erişim gerekir. gcloud komut satırı aracını kullanarak dosyadaki şifreli metnin şifresini çözün:

İmzalanacak verileri içeren bir dosya oluşturun ve verileri Cloud KMS anahtarıyla imzalamak için gcloud komut satırı aracını kullanın:

$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --version "1" \
    --digest-algorithm "sha512" \
    --input-file ./data.txt \
    --signature-file ./data.txt.sig

İmza, diskteki data.txt.sig konumuna kaydedilir. data.txt.sig dosyasını açarsanız garip ve yazdırılamayan karakterler içerdiğini görürsünüz. Bunun nedeni, elde edilen verilerin ikili biçimde olmasıdır.

İmzayı bir veritabanında saklarken veya HTTP isteği kapsamında iletirken verileri kodlamanız gerekebilir. Base64, yaygın olarak kullanılan bir kodlama mekanizmasıdır.

6. Verileri doğrulama

Asimetrik anahtarlarda Cloud KMS, doğrulamayı doğrudan gerçekleştirmez. Bunun yerine, ortak anahtara erişim sağlar ve ortak anahtar kriptografisi aracılığıyla bu ortak anahtarı kullanarak verileri doğrulamanızı sağlar. Asimetrik anahtarlarla doğrulama tamamen çevrimdışı olarak yapılabilir ve Cloud KMS'ye veya başka bir Google Cloud API'sine erişim gerektirmez. Doğrulama, openssl gibi bir kriptografik araç veya ortak anahtar kriptografisini destekleyen bir programlama dili ya da kitaplık kullanılarak gerçekleştirilir.

Cloud KMS'den ortak anahtarı indirin:

$ gcloud kms keys versions get-public-key "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --output-file ./key.pub

openssl komut satırı aracını kullanarak imzayı ortak anahtara göre doğrulayın:

$ openssl dgst -sha256 \
    -verify ./key.pub \
    -signature ./data.txt.sig ./data.txt

Konsolda, dijital imzanın geçerli olduğunu belirten bir başarı mesajı gösterilir.

Verified OK

7. Tebrikler!

Cloud KMS API'yi etkinleştirdiniz, asimetrik imzalama anahtarı oluşturdunuz ve verileri imzalayıp doğruladınız. Cloud KMS güçlü bir üründür ve imzalama/doğrulama, özelliklerinin yalnızca bir kısmını kapsar.

Temizleme

Keşfetme işlemini tamamladıysanız lütfen projenizi silin.

  • Cloud Platform Console'a gidin.
  • Kapatmak istediğiniz projeyi seçin ve üst kısımdaki "Sil"i tıklayın. Bu işlem, projenin silinmesini planlar.

Daha Fazla Bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.