Merhabalar değerli TürkHackTeam üyeleri, bu konumda AWS KMS sunucusu açma ve bu sunucuyu kullanarak asimetrik şifreleme nasıl yapılcağından bahsedeceğim.
Konu İçeriği
» Anahtar Oluşturma
» Anahtar ile Encryption İşlemleri Yapma
» Anahtar ile Decryption İşlemleri Yapma
Anahtar Oluşturma Websitesinden
Öncelikle AWS root hesabı açıyoruz ve ana sayfaya giriyoruz. Ardından resimde görülebildiği gibi Key Management servisini seçiyoruz.
Sonrasında customer managed keys kısmına geliyoruz ve create key tuşuna basıyoruz (Burada sizde herhangi bir key olmayacak, bende var)
Burada biz asimetrik şifreleme ve istediğimiz RSA türünü seçiyoruz. Bu kısımda RSA_4096 daha güvenlidir ancak encrypt decrypt işlemleri için daha fazla zaman harcar. Ben RSA_4096 seçicem.
Buradan istediğimiz ad ve açıklama giriyoruz ve next diyoruz.
Bu kısımdan key adminlerini seçersiniz.
Bu kısımdan ise bu key'i kullancmaya izin verilen kişileri seçersin.
Buradan alta geçip finish diyoruz ve anahtarımız oluşturuluyor.
Python'dan Yapılan İşlemler İçin Şu Kodu İlk Başta Ekliyoruz
Python:
import boto3
import json
import base64
class Create_Kms_Client:
def __init__(self, acces, secret_acces, region):
self.aws_access_key = acces
self.aws_secret_access_key = secret_acces
self.aws_region_name = region
self.kms_client = self.create_kms_client()
def create_kms_client(self):
return boto3.client('kms',
region_name=self.aws_region_name,
aws_access_key_id=self.aws_access_key,
aws_secret_access_key=self.aws_secret_access_key)
def return_kms_client(self):
return self.kms_client
Python'dan Key Oluşturma
Python'da key oluşturmak için şu kodu kullanabiliriz.
Python:
def generate(ad, aciklama):
acces_key = "acces_olacak"
secret_acces_key = "secret_acces"
region = "us-east-1"
kms = Create_Kms_Client(acces_key, secret_acces_key, region).return_kms_client()
response = kms.create_key(
Description=aciklama,
KeyUsage="ENCRYPT_DECRYPT",
Origin="AWS_KMS",
CustomerMasterKeySpec='RSA_4096',
)
key_id = response["KeyMetadata"]["Arn"]
kms.create_alias(
AliasName=f"alias/{ad}",
TargetKeyId=key_id
)
return key_id
Python'dan Encrypt İşlemleri
Python'da gizli metni şifrelemek için şu kodu kullanabiliriz.
Python'da gizli metni şifrelemek için şu kodu kullanabiliriz.
Python:
def encrypt(gelen_plaintext, key_arn_id):
acces_key = "acces_olucak"
secret_acces_key = "secret_olucak"
region = "us-east-1"
kms_client = Create_Kms_Client(acces_key, secret_acces_key, region).return_kms_client()
public_le_sifrelenmis_cipher = kms_client.encrypt(
KeyId=key_arn_id,
Plaintext=gelen_plaintext.encode(),
EncryptionAlgorithm='RSAES_OAEP_SHA_256'
)['CiphertextBlob']
return base64.b64encode(public_le_sifrelenmis_cipher)
Python'dan Decrypt İşlemleri
Python'da şifrelenmiş metni decrypt etmek için şu kodu kullanabiliriz.
Python:
def decrypt(public_le_ve_base64_ile_sifrelenmis_cipher, key_arn_id):
acces_key = "acces_olucak"
secret_acces_key = "secret_acces_olucak"
region = "us-east-1"
kms_client = Create_Kms_Client(acces_key, secret_acces_key, region).return_kms_client()
base64_den_sonra = base64.b64decode(public_le_ve_base64_ile_sifrelenmis_cipher)
text = kms_client.decrypt(
KeyId=key_arn_id,
CiphertextBlob=base64_den_sonra,
EncryptionAlgorithm='RSAES_OAEP_SHA_256'
)['Plaintext']
return text.decode()
Konu Sonu ve Kapanış
Konumuzun sonuna geldik arkadaşlar. Uzun zamandır böyle konu açmıyordum. Bu konu hakkında yabancı / türkçe kaynak pek bulamadadım (özellikle asimetrik şifrelemede), umarım faydası olur. Okuduğunuz için teşekkürler.
İYİ FORUMLAR DİLERİM
Son düzenleme: