Başarıyla anahtarın içe aktarıldığını doğrulayan bir çıktı görmelisiniz:
gpg: key 82865C3243CECE97: public key "Tanja Lange <tanja@hyperelliptic.org>" imported gpg: Total number processed: 1 gpg: imported: 1
Anahtarı içe aktardıktan sonra, onu doğrulamak iyi bir uygulamadır:
gpg --list-keys
Bu, az önce içe aktardığınız benim açık anahtarımı ve Lange’nin açık anahtarını gösterecektir.
/home/sefik/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2024-12-19 [SC]
ECA0B32A46F96AA70CEEFD7C30F6E6D21EE91C2F
uid [ultimate] Sefik Serengil <serengil@gmail.com>
sub rsa3072 2024-12-19 [E]
pub rsa4096 2020-02-09 [SC]
A0DD00F5AEFA6086FEEF178E82865C3243CECE97
uid [ unknown] Tanja Lange <tanja@hyperelliptic.org>
sub rsa4096 2020-02-09 [E]
Başkasının Açık Anahtarı İle Şifrelemek
Bu kişiye şifreli bir dosya veya mesaj göndermeniz gerektiğinde, onların açık anahtarını kullanacaksınız. Örneğin, Dr. Lange için message.txt dosyasını şifrelemek için:
# create a plain message echo "Dear Dr. Lange, I have been following your research for a long time, and you influenced me a lot. Wanted to share my respect. Regards." > message.txt # encrypt message gpg --armor --output message.gpg --encrypt --recipient tanja@hyperelliptic.org message.txt
Bu komut, yalnızca Dr. Lange’nin özel anahtarını kullanarak şifresini çözebileceği message.gpg adlı şifreli bir dosya oluşturur.
-----BEGIN PGP MESSAGE----- hQIMAz3PgQH4JT+0AQ/+Mx/WlxGC0C0F/oTdp/fndAmuXWt/Wzog3Cf42tG8ryc9 KuUE37QcXJQ/7d1AXDbOvq6hmYL+QRgVet4BahfqfBibk4ZIwT9uj2eJgdrsi9Dd nOsM4AXIwLAZc7uGO+yYYrEHSEEdRIz4RlXz7UpTIYAxylESXBi5ElL76dm6FsSM qvD1lodZNFkcOdZ5J+PZLurpD7Fh+9MloKI51SlaDp40d1cREp3MPffXdk5ZWzYS avtaBD2qVj7syVuqSSzF23qP7a+sZhdtXlg1YY81Ft0f3PD4VbWZwHOSmrGKqCTA Mg/HI6/5Lq24+ovAdPYhxpjy32CgWUBLyNaq0GYh7jA+Vn7u7bXbMz3f1Mc4CMcy k9h3tLBB/4NvwHMFCD6Xn4GpGBetkLTc8vLpR8PbpHEfrJ/kHl0TuBDxR3Pw+2VL 16c+2ziEKDZxz+93ypvoA93V+sY4Crox7aFv5up7a4TioSHYff+6IgtuQufX4F1L HAEuT8XouCstf79XsrY+m/mx8Vf65hFist2jIzlSp9TkInJf3fvK0WpBZ9WFhuHb /9gf4lFP7zV0QApb4aQsMzkIL1HxsizOp+bObdZTCHn8PsIPUaercUMu/pzkZaef cnW1GrVyLztxc7wdbT9RuG9RnEAE+WtKBjeHO79x6lWzT61pIHFwbKFZ6hD1fKfS sAGE8iUhOo7ZoFvojA11GzcM2HQqtSjQouLh2uBvAATvRcQGRlnUWY6smBU6DY07 46IPh+B4ccVBAEkaxXi9Kk+rBYJjNmpx2bqvLva60iV6wuktCo5tMOP5EXzKWLlz XmIL3Pc5LAi2lhuMXY9fFpv35DLvI10CwZxOwpnHqgZ953vp9V/xWsbLWANjppOQ c54xgMiI7SMHPr86/znV8DzlYSUOp0Ot8HgJ1QbsOeP6 =K5xQ -----END PGP MESSAGE-----
Bu yapı ile, gönderdiğiniz dosya veya mesajları yalnızca alıcının okuyabileceğinden emin olarak güvenli bir şekilde başkalarıyla iletişim kurabilirsiniz.
İmza Eklemek
Önceki bölümde, Dr. Lange’nin açık anahtarıyla bir mesaj şifreledim. Ancak, Dr. Lange mesajın benden geldiğini nasıl doğrulayabilir? O, ancak ve sadece ben imzamı eklediğimde emin olabilir. Mesajı, onun açık anahtarıyla şifrelerim. Bu arada, mesajı özel anahtarım ile imzalamam gerekir. Sonrasında, Dr. Lange mesajı benim açık anahtarım ile doğrulayabilir. Unutmayın, benim açık anahtarım zaten herkese açıktır.
gpg --armor --output message.gpg --encrypt --sign --local-user serengil@gmail.com --recipient tanja@hyperelliptic.org message.txt
Şifreli Mesajın Açılması
Eğer biri size açık anahtarınızı kullanarak şifreli bir mesaj göndermişse, bu mesajı özel anahtarınızla çözebilirsiniz. İşte bunu adım adım nasıl yapacağınız:
Aşağıdaki komutu kullanarak dosyayı şifresini çözebilirsiniz:
gpg --output decrypted-message.txt --decrypt message.gpg
Eğer özel anahtarınız bir parola ile korunuyorsa, şifre çözme komutunu çalıştırdıktan sonra GPG sizden parolanızı girmenizi isteyecektir. Parolanızı girerek işlemi tamamlayabilirsiniz.
Python ile GPG
Üretim hattında çalıştıracağınız bir uygulamada GPG kullanacaksanız shell komutları yerine python kütüphanesini kullanmanız daha rasyonel olacaktır.
Kütüphaneyi indirelim:
pip install python-gnupg
GPG objesi, terminal aracılığıyla içe aktarılan anahtarları otomatik olarak yükleyecektir. Eğer terminal üzerinden anahtarları zaten içe aktardıysanız, bu anahtarlar burada kullanılabilir olacaktır. Aksi takdirde, anahtarlar Python programı tarafından içe aktarılacaktır.
import gnupg
# Initialize the GPG instance
gpg = gnupg.GPG()
name, mail, key_file = ("Tanja Lange", "tanja@hyperelliptic.org", "tanja-2020.asc")
imported_users = [imported_key["uids"][0] for imported_key in gpg.list_keys()]
if f"{name} <{email}>" not in imported_users:
with open(key_file, 'r') as key_file:
gpg.import_keys(key_file.read())Başkasının açık anahtarı ile mesaj şifreleme:
message = "This is a secret message for Someone."
encrypted_data = gpg.encrypt(
message,
recipients=['tanja@hyperelliptic.org'],
sign="serengil@gmail.com",
always_trust=True # Trust the recipient's key without manual confirmation
)
assert encrypted_data.ok is True
# Save the encrypted message to a file
with open('message.gpg', 'w') as encrypted_file:
encrypted_file.write(str(encrypted_data))Sizin açık anahtarınız ile şifrelenmiş bir mesajı açma:
with open('message.gpg', 'r') as encrypted_file:
encrypted_message = encrypted_file.read()
decrypted_data = gpg.decrypt(
encrypted_message, passphrase=MY_PASSPHRASE
)
assert decrypted_data.ok is True
assert decrypted_data.signature is True:
print(f"decrypted message is {decrypted_data.data.decode()}")
print(f"Signed by: {decrypted_data.username}")
Artıları ve Eksileri
Her ne kadar PGP’yi ana hatlarıyla biliyor olsam da girizgahta da bahsettiğim gibi GPG ile fiilen tanışmam iki ayrı banka gerçekleştirdiğimiz bir proje ile gerçekleşti. Bankaya gönderilecek para transferi işlemlerinin bir dosya ile bankanın sftp sunucusuna konulması gerekiyordu. Bunu yaparken bankaya ait açık anahtar ile dosyayı şifreliyor, kendi gizli anahtarımız ile de imzalamamız gerekiyordu. Banka, dosyayı aldıktan sonra kendi gizli anahtarı ile şifreli dosyayı açabiliyor bize ait açık anahtar ile de dosyanın imzasını doğrulayabiliyordu.
Banka para transferi işlemini asenkron olarak gerçekleştirdikten sonra cevabı aynı sftp sunucusuna bir dosya bırakarak bizi haberdar ediyordu. Bunu yaparken cevap dosyasını bize ait açık anahtar ile şifreliyor ve kendilerine ait gizli anahtar ile imzalıyordu. Biz de kendimize ait gizli anahtar ile bu şifreli cevap dosyasını açıyor, bankaya ait açık anahtar ile de imzasını doğruluyorduk.
Bahsettiğim bu altyapı 2024 yılında İngiltere’de çokça büyük iki bankası tarafından halen kullanılmaktaydı.
Dolayısıyla, GPG kriptografi konusunda bir standard olduğu için kurumsal uygulamalarda yaygın olarak kullanılmaktadır
Öte yandan, GPG nihayetinde bir linux paketidir ve linux komut satırında komutlar çalıştırmayı gerektiğinden basit ve hafifsiklet olarak nitelendiremeyiz. Eğer python için hafifsiklet bir şey arıyorsanız dijital imzalar için LightDSA, veri şifreleme için de LightPHE uygulamalarına göz atmanızı tavsiye ederim. Anahtar değişimini ise Eliptik Eğri Diffie-Hellman yöntemiyle 2-3 satırda LightECC kullanarak gerçekleştirebilirsiniz.
Özet
Bu yazıda, GPG anahtarınızı e-posta adresinizle paylaşmanın sadece havalı bir uygulama olmakla kalmayıp, aynı zamanda güvenli iletişimi sağlamak için güçlü bir yöntem olduğunu keşfettik. Hem simetrik hem de asimetrik şifrelemeyi birleştirerek, GPG mesajlarınızı özel ve korumalı tutmak için sağlam bir yöntem sunar.
GPG ilk başta karmaşık görünebilir, ancak dijital etkileşimlerde gizlilik ve güvenliği ön planda tutan herkes için değerli bir araçtır. İster hassas bilgiler paylaşıyor olun, ister başkalarıyla işbirliği yapıyor olun, ya da sadece şifrelemeye yeni başlıyor olun, GPG’yi ve nasıl çalıştığını anlamak çevrimiçi gizliliğinizi korumada büyük fark yaratabilir.
O yüzden bir dahaki sefere e-posta adresinizi paylaştığınızda, GPG anahtarınızı da eklemeyi düşünün – bu sadece güvenliğinizi artırmakla kalmaz, aynı zamanda iletişimlerinize ek bir güven katmanı ekler. Sonuçta, gizliliğin giderek zor elde edildiği bir dünyada, güvenli olmak gerçekten havalıdır!
Referans
S. I. Serengil, A Gentle Introduction to GPG for Encrypted Message Exchange, 21.04.2025 tarihinde erişildi.
Günümüzde veri gizliliği, özellikle bulut bilişim ve dağıtık sistemlerin yaygınlaşmasıyla birlikte her zamankinden daha kritik bir hâle geldi. Hassas verilerin üçüncü taraf sistemlerde işlenmesi gerekliliği, “veriyi açmadan işlem yapabilir miyiz?” sorusunu da beraberinde getiriyor. Bu soruya kriptografi dünyasının verdiği en güçlü yanıtlardan biri homomorfik şifreleme yaklaşımıdır. Temel olarak üç farklı seviyede karşımıza çıkar: yalnızca tek […]]]>

Özellikle kriptografiyle uğraşanlar ya da teknolojiye hakim kişiler arasında, iletişim bilgilerine GPG anahtarlarını eklediklerini hiç fark ettiniz mi? Uzun bir süredir bunun çok havalı bir şey olduğunu düşünüyordum. Son zamanlarda üzerinde çalıştığım kurumsal bir proje, GPG’ye olan takdirimi daha da artırdı. Bu proje, bankalara SFTP üzerinden dosya gönderip almayı içeriyordu ve bu da dosyaların GPG […]]]>

Anahtar Türü (Key type): Varsayılan seçeneği, yani genellikle “RSA and RSA” olanı seçin. Bu seçenek hem imzalama hem de şifreleme için RSA algoritmasını kullanır.
Anahtar Boyutu (Key size): Bir anahtar boyutu belirtin. Önerilen 3072-bit RSA anahtarıdır. Bu uzunluk, 128-bit AES anahtarına denktir ve 2030 sonrasına kadar güvenli olduğu düşünülmektedir.
Geçerlilik Süresi (Expiration date): Süresiz geçerli olması için bu değeri 0 olarak ayarlayın. Dilerseniz belirli bir süre de tanımlayabilirsiniz.
Kullanıcı Kimliği (User ID): Adınızı ve e-posta adresinizi girin. Bu bilgiler, anahtarı listelerken onun kimliğini tanımlamak için kullanılır.
Parola (Passphrase): Özel anahtarınızı korumak için güçlü bir parola belirleyin. Bu parola, anahtarınızı izinsiz kullanıma karşı korur.
Dijital imzalar, modern sistemlerde veri bütünlüğünü ve kimlik doğrulamasını sağlamak için kritik bir rol oynar. Belgeleri imzalamaktan işlemleri doğrulamaya ve iletişim kanallarını güvence altına almaya kadar, dijital imzalar mesajların güvenilir kaynaklardan geldiğini ve değiştirilmediğini garanti eder. Bu yazıda, birden fazla imzalama algoritmasını ve eliptik eğri konfigürasyonunu destekleyen hafif ve esnek bir kriptografi aracı olan LightDSA […]]]>

Eliptik Eğri Kriptografisi (Elliptic Curve Cryptography – ECC), günümüz kriptografik sistemlerinin temel taşlarından biri haline geldi. Blockchain teknolojilerinde cüzdan adreslerinin oluşturulmasından işlem imzalarına kadar birçok alanda aktif olarak kullanılıyor. Peki ECC neden bu kadar popüler? RSA’dan farkı ne? Ve Python ile bunu nasıl uygulayabiliriz? Bu yazıda ECC’nin teorisine kısa bir giriş yaptıktan sonra, LightECC kütüphanesi […]]]>

Veri tabanı derslerinde anlatılan normal formlar 90’lı yıllarda disklerin yüksek maliyetli olmaları sebebiyle veri çoklamayı önlemek üzere ortaya atılmış tekniklerdir. Günümüzde özellikle de bulut sistemler hayatımıza girdiğinden beridir verinin saklanması çok ucuzlamıştır. Fakat verinin bize ait olmayan üçüncü parti sistemlerde saklanması sebebiyle verinin güvenliği bugün hiç olmadığı kadar önem kazanmıştır. Bulutta yer alan bir veri […]]]>
Kütüphane çeşitliliği python programlama dilini günümüzde bu kadar popüler yapan tetikleyicidir. Bu aynı zamanda açık kaynak kültürünü de benimsemeyi teşvik eden bir etkendir. Bu notkada PyPI (Python Package Index) conda gibi alternatifleri olsa da standart haline gelmiştir. Komut satırında pip install komutundan sonra indirmek istediğiniz paketin ismini yazmanız kurulumu gerçekleştirmeniz için yeterlidir. Kurulumun kolaylığı ile […]]]>
Merhaba Arkadaşlar , Bu makalemizde big data (büyük veri) uygulamaları yapabilmemizi sağlayan spark’ın kurulum ve üzerinde basit uygulamalar yapacağız. Spark basit manada ne yapıyor diyecek olursak anlık veri işleyen , belirlediğimiz queryleri aralıklarla çalıştıran , makine öğrenmesi yapabilen ve en son olarak farklı veri tiplerimizi aynı platform üzerinde işlememize yardımcı olan bir veri işleme motorudur. […]]]>







Herkese tekrardan selamlar, Python yazı serisinin ikinci etabına hoş geldiniz. Bu yazıda Python ile yazacağımız kodları kullanıcı ile etkileşime nasıl geçireceğimize ve değişkenlere değineceğiz. Peki nedir bu kullanıcı ile etkileşim? Kullanıcıya bir kaç soru soracağız ve kullanıcı bu sorulara cevap verecek kullanıcıdan gelen cevapları ise değişkenlerimizin içerisine koyup kullanıcıdan gelen veri ile işlem yapabilecek hale […]]]>

Python nedir? Nasıl kurulur ve biz nasıl kullanırızı anlatan yazı serisi. Giriş seviyesinden başlayarak hep birlikte çok güzel işler başaracağız.]]>

