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ı kullanarak şifreleme, şifre çözme, imzalama ve doğrulama desteği sunar. Bu eğitimde, asimetrik Cloud KMS anahtarları 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
Kendine ait tempoda ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Henüz Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Proje kimliğini unutmayın. Bu, tüm Google Cloud projeleri genelinde benzersiz bir addır (yukarıdaki ad zaten alınmış olduğundan kullanılamaz). Bu kod laboratuvarının ilerleyen bölümlerinde PROJECT_ID
olarak atıfta bulunulacak.
- Ardından, Google Cloud kaynaklarını kullanabilmek için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmak çok pahalı olmayacaktır. Bu eğiticinin dışında faturalandırılmamak için "Temizleme" bölümündeki kaynakları nasıl kapatacağınıza dair talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.
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:
Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:
Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Aksi belirtilmedikçe tüm komutları bu kabuktan çalıştırın.
3. Cloud KMS Hizmeti'ni etkinleştirme
Cloud KMS'yi kullanabilmek için önce projenizde hizmeti 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, anahtarlarla ilgili meta verileri (ör. konumları) 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 asymmetric-signing
amacına sahip my-asymmetric-signing-key
adlı 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. İmza verileri
Şifreleme işleminin aksine, asimetrik bir Cloud KMS anahtarı kullanılarak şifrelenmiş verilerin şifresini çözmek için Cloud KMS hizmetine online erişim gerekir. gcloud
komut satırı aracını kullanarak dosyanın şifrelenmiş metninin şifresini çözme:
İ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 olduğunu fark edersiniz. Bunun nedeni, elde edilen verilerin ikili biçimde olmasıdır.
İmzayı bir veritabanında saklarken veya bir HTTP isteği kapsamında aktarırken verileri kodlamanız gerekebilir. Yaygın bir kodlama mekanizması base64'tür.
6. Verileri doğrulama
Cloud KMS, asimetrik anahtarlarda 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ğrularsınız. 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ığı kullanılarak gerçekleştirilir.
Ortak anahtarı Cloud KMS'den 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 anahtarla doğrulayın:
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
Konsol, dijital imzanın geçerli olduğunu belirten bir başarı mesajı yazdırır.
Verified OK
7. Tebrikler!
Cloud KMS API'yi etkinleştirdiniz, asimetrik bir imzalama anahtarı oluşturdunuz, verileri imzalayıp doğruladınız. Cloud KMS güçlü bir üründür ve imzalama/doğrulama, özelliklerinin sadece bir kısmını kapsar.
Temizleme
Keşif yapmayı tamamladıysanız lütfen projenizi silin.
- Cloud Platform Console'a gidin.
- Kapatmak istediğiniz projeyi seçin, ardından üstteki "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.