AWS KMS Sunucusu Açma - Python'la Asimetrik Şifreleme İşlemleri

S_w_o_R_d

Uzman üye
17 Eki 2020
1,914
183
Neptün
JgIxQZ.gif




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.



4dKDtQ.png



Konu İçeriği


» Anahtar Oluşturma


» Anahtar ile Encryption İşlemleri Yapma

» Anahtar ile Decryption İşlemleri Yapma


4dKDtQ.png




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.

tu86jco.png


Sonrasında customer managed keys kısmına geliyoruz ve create key tuşuna basıyoruz (Burada sizde herhangi bir key olmayacak, bende var)

fyf5px7.png


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.


hm0fr8u.png


Buradan istediğimiz ad ve açıklama giriyoruz ve next diyoruz.

4r1ezun.png


Bu kısımdan key adminlerini seçersiniz.

bwt77j0.png


Bu kısımdan ise bu key'i kullancmaya izin verilen kişileri seçersin.


ltb55bg.png

Buradan alta geçip finish diyoruz ve anahtarımız oluşturuluyor.
s2jeijt.png


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

9mdi3jb.jpg


Python'dan Encrypt İşlemleri

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)

12m95a0.jpg


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()

8dcslz8.jpg



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.


eHld9l.png



İYİ FORUMLAR DİLERİM
 
Son düzenleme:

TOMMYŞH

Katılımcı Üye
28 Haz 2021
449
164
Turan
JgIxQZ.gif




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.



4dKDtQ.png



Konu İçeriği


» Anahtar Oluşturma

» Anahtar ile Encryption İşlemleri Yapma

» Anahtar ile Decryption İşlemleri Yapma


4dKDtQ.png




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.

tu86jco.png


Sonrasında customer managed keys kısmına geliyoruz ve create key tuşuna basıyoruz (Burada sizde herhangi bir key olmayacak, bende var)

fyf5px7.png


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.


hm0fr8u.png


Buradan istediğimiz ad ve açıklama giriyoruz ve next diyoruz.

4r1ezun.png


Bu kısımdan key adminlerini seçersiniz.​

bwt77j0.png


Bu kısımdan ise bu key'i kullancmaya izin verilen kişileri seçersin.


ltb55bg.png

Buradan alta geçip finish diyoruz ve anahtarımız oluşturuluyor.
s2jeijt.png


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

9mdi3jb.jpg


Python'dan Encrypt İşlemleri

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)

12m95a0.jpg


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()

8dcslz8.jpg



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.


eHld9l.png



İYİ FORUMLAR DİLERİM
konu muazzam olmuş fakat yazıları biraz daha büyük yapsanız daha iyi olurdu
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.