Python ile OpenPGP Şifreleme Nasıl Yapılır?

Python ile OpenPGP Şifreleme Nasıl Yapılır?

Python ile OpenPGP Şifreleme işlemi nasıl gerçekleştirilir? Bu yazımızda sizlere adım adım OpenPGP şifreleme prosedürünü anlatacağız Python programlama dili ile kolayca şifreleme yapabilmenin yollarını öğreneceksiniz Detaylı bilgi için yazımızı okuyun

Python ile OpenPGP Şifreleme Nasıl Yapılır?

Elektronik postaların, dosya depolama ve diğer uygulamaların güvenliğini sağlamak için kullanılan OpenPGP, gizli anahtarlar ve açık anahtarlar aracılığıyla şifreleme yapar. Bu makalede OpenPGP şifrelemeyi Python ile nasıl yapacağınızı öğreneceksiniz.

Python, gelişmiş kriptografik kütüphaneleriyle OpenPGP şifreleme yapma olanağı sunar. Aynı zamanda PyCryptodome gibi popüler kütüphaneler kullanılarak OpenPGP şifrelemesi yapmak mümkündür. Bu adımları takip ederek siz de kolaylıkla OpenPGP şifrelemesi yapabilirsiniz:

Öncelikle, PyCryptodome kütüphanesini kurmalısınız. PyCryptodome; OpenPGP şifrelemesi, AES, Blowfish, Serpent, ChaCha20, Salsa20, Whirlpool, SHA-512, RSA, DSA, ECDSA, ECDH, Ed25519, Poly1305, SipHash, HMAC ve PBKDF2 gibi işlevler sağlar.

PyCryptodome kurulumu aşağıdaki adımlarla gerçekleştirilebilir:

  • pip install pycryptodome

Alternatif olarak, PyCryptodome kaynak kodu indirilerek yüklenebilir veya PyCryptodome deposundan indirilebilir.


OpenPGP Nedir?

OpenPGP, güvenliği sağlamak için kullanılan bir şifreleme protokolüdür. Bu protokol, birçok alanda - elektronik posta, veri dosyaları ve diğer uygulamalarda - kullanılabilir. Sadece şifreleme yapmakla kalmaz, aynı zamanda imzalama ve anahtar yönetimi gibi güvenlik özellikleri de sağlar.

OpenPGP protokolü, ASCII verisi olarak okunabilen ve şifrelenmiş veriyi kolayca taşımayı mümkün kılan bir seviyede uygulanır. OpenPGP, özellikle açık anahtarlı altyapıyı kullanarak şifreleme yapar. Veri şifrelendiğinde, sadece alıcının özel anahtarı ile çözülebilecek bir simetrik anahtar oluşturulur ve bu anahtarın kendisi, alıcının açık anahtarı ile şifrelenir. Bu sayede, sadece doğru anahtarlara sahip olanların veriyi görebilmesi sağlanır.


Python ve OpenPGP

Python, gelişmiş kriptografi kütüphanelerine sahiptir ve OpenPGP şifrelemeyi de destekler. Bu, Python kullanıcılarının, şifreli mesajlaşma gibi güvenli bir iletişim sağlama ihtiyacını karşılamalarına olanak tanır.

Python, birçok açık kaynaklı kriptografi kütüphanesi de dahil olmak üzere, OpenPGP şifrelemesinde kullanabileceğiniz birçok araç sunar. Bu kütüphanelerin en yaygın kullanılanlarından biri olan PyCryptodome, açık kaynaklı olması ve yüksek performansı nedeniyle tercih edilir. Ancak, OpenPGP protokolüne uygun diğer kütüphaneler olan GnuPG ve OpenPGP de kullanılabilir.


PyCryptodome Kurulumu

OpenPGP şifreleme yapmak için kullanacağımız PyCryptodome kütüphanesi, Python 3.x sürümleri ile uyumlu bir şekilde kullanılabilir. PyCryptodome, Python'da AES, ARC4, Blowfish, ChaCha20, MD5, SHA224, SHA256, SHA384, SHA512, RSA, DSA, Elgamal, Salsa20, Qc, Poly1305 ve birçok diğer kriptografik işlevleri sağlayan birçok kriptografik algoritma içeren bir kütüphanedir.

Kütüphaneyi kurmak için, Python paket yöneticisi pip kullanılabilir. Aşağıdaki komutu kullanarak PyCryptodome'un en son sürümünü kurabilirsiniz:

Komut Açıklama
pip install pycryptodome PyCryptodome kurulumu için temel komut.

Paket yüklendikten sonra, PyCryptodome kütüphanesi yazılımınıza içe aktarılabilir. Aşağıdaki komutu kullanarak PyCryptodome kütüphanesini Python yazılımına dahil edebilirsiniz:

from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEP

PyCryptodome kütüphanesi, OpenPGP şifreleme yapmak için gereken tüm fonksiyonları sağlar. Bu kütüphane, OpenPGP şifreleme için en popüler seçeneklerden biridir.


Alternatif Kütüphaneler

OpenPGP şifreleme yapmak için PyCryptodome kütüphanesi tercih edilse de, alternatif olarak GnuPG ve OpenPGP kütüphaneleri de kullanılabilir.

GnuPG, OpenPGP standartlarını uygulayan ücretsiz ve açık kaynaklı bir yazılımdır. GnuPG, komut satırı arayüzüyle çalışır ve GNU Privacy Guard olarak da bilinir. Daha önce GnuPG kullandıysanız, bu kütüphaneye geçiş yapmak daha kolay olabilir.

OpenPGP kütüphanesi de OpenPGP şifrelemeyi destekler. Bu kütüphane, Python 2.x ve 3.x için uyumludur. OpenPGP kütüphanesi, başka bir proje için geliştirildiği için, PyCryptodome kadar kapsamlı bir kütüphane değildir. Ancak, OpenPGP şifrelemesi gibi spesifik bir özelliğe ihtiyaç duyanlar için mükemmel bir seçenek olabilir.


Şifreleme Adımları

OpenPGP şifrelemesi yapmak için birkaç adım izlenmelidir. İlk adım anahtar oluşturmaktır. Anahtar oluşturmak, uzun bir sabırla yapılması gereken bir işlemdir çünkü anahtarların gücü, ne kadar uzun ve karmaşık olduklarına bağlıdır. Anahtar oluşturmak için, GnuPG gibi araçları kullanabilirsiniz. Anahtar oluştururken, hem açık hem de özel bir anahtar oluşturulması gerektiği unutulmamalıdır. Açık anahtar belgenin şifrelenmesinde kullanılırken, özel anahtar belgenin deşifre edilmesinde kullanılır.

İkinci adım, belgeyi şifrelemektir. Şifrelemeye başlamadan önce, açık anahtarın seçilmesi gerekir. Seçilen anahtar belgeyi şifrelemek için kullanacak anahtar olmalıdır. Sonra, açık anahtar kullanılarak belge şifrelenir ve şifrelenmiş belge bir dosyaya kaydedilir. En son olarak, şifrelenmiş belge, belgeyi deşifrelemek için kullanılacak özel anahtarla birlikte saklanmalıdır.

Üçüncü adım, şifrelenmiş belgenin nasıl deşifre edileceği hakkında bilgi verir. Deşifreleme işlemi, bir özel anahtar kullanılarak yapılır. Özel anahtar, özel anahtarın oluşturulduğu sistemde saklanmalıdır. Deşifreleme işleminin tamamlanması için, şifrelenmiş belge ve doğru özel anahtar belirlenmiş bir dizinde bulunmalıdır.


Anahtar Oluşturma

OpenPGP ile şifreleme yapmak için anahtarların oluşturulması önemlidir. Şifreleme ve deşifreleme işleminin doğru bir şekilde gerçekleştirilmesi için bu adımı atlamamak gerekmektedir.

Anahtar oluşturma işlemi, PyCryptodome kütüphanesi kullanılarak gerçekleştirilebilir. Önce, anahtar için bir çift oluşturulması gerekmektedir. Bu çift, açık anahtar (public key) ve özel anahtar (private key) şeklinde olacaktır. Açık anahtar dosya paylaşımları, belge şifrelemeleri gibi işlemlerde kullanılırken, özel anahtar sadece sahibi tarafından kullanılmalıdır.

PyCryptodome ile anahtar çifti oluşturmak için "Crypto.PublicKey" modülü kullanılabilir. Kodlar aşağıdaki gibidir:

# Anahtar çiftinin oluşturulmasıfrom Crypto.PublicKey import RSAkey = RSA.generate(2048)# Açık anahtarın yazdırılmasıprint(key.publickey().export_key())# Özel anahtarın yazdırılmasıprint(key.export_key())

Yukarıdaki kodlarla, 2048 bitlik bir anahtar çifti oluşturulmuştur. Açık anahtar ve özel anahtar ayrı ayrı yazdırılmıştır. Bu anahtar çifti, şifreleme ve deşifreleme işlemlerinde kullanılabilir.


Şifreleme

Şifreleme işlemi için, öncelikle belgenin şifreleneceği anahtarlar seçilmelidir. Genel anahtar ile birlikte, belgenin şifresi de gönderilir. Bu sayede, belgenin sadece belirli bir kişi tarafından okunması sağlanır.

Şifreleme işlemi sırasında, belgenin açık metni şifrelenir ve şifrelenmiş metin oluşur. Bu işlem için kullanılacak anahtarlar, RSA algoritması kullanılarak oluşturulabilir. Belgenin şifreli hali, sadece belirtilen kişi tarafından deşifre edilebilir.

Ayrıca, PyCryptodome kütüphanesi kullanılarak şifreleme işlemi gerçekleştirilebilir. Bu kütüphane, kullanıcı dostu bir arayüz sunar ve Tek Seferlik Anahtar (OTP) yöntemi kullanarak yüksek güvenlikli şifreleme işlemi gerçekleştirebilir.

Adım Açıklama
1 Anahtarların oluşturulması
2 Belgenin şifrelenmesi
3 Şifrelenmiş belgenin gönderilmesi

Şifreleme işlemi yapılırken, anahtarların güvenliği de önemlidir. Bu nedenle, anahtarların saklanması için güvenli bir ortam oluşturulması gerekmektedir. Ayrıca, anahtarların yalnızca belirli kişiler tarafından erişilebilir olması sağlanmalıdır.

Şifreleme işlemi başarılı bir şekilde gerçekleştirildiğinde, özellikle hassas verilerin paylaşımı gibi durumlarda yüksek seviyede güvenlik sağlanmış olur.


Deşifreleme

OpenPGP şifrelemesi ile oluşturulmuş bir belgeyi açmak için öncelikle şifreli belgeyi elde etmeli ve bunu açmak için özel anahtarınıza erişim sağlamalısınız. Deşifreleme adımı, şifreleme adımının tam tersidir. Alıcının, belgenin gönderildiği kişinin kullanmış olduğu sabit genel anahtarını kullanarak belgeyi açması gerekir. Ayrıca alıcının, belgeyi açmak için kendi özel anahtarını kullanması gerektiğinden emin olması gerekir.

Bir belgenin deşifrelenmesi için, öncelikle alıcının şifreli verilerin yer aldığı dosyayı indirmesi gerekir. Dosyayı indirdikten sonra, kendi özel anahtarını kullanarak belgeyi deşifre etmelidir. Bu işlemi gerçekleştirmek için, alıcının özel anahtar dosyasını kullanması ve şifrelenmiş belgeyi açmak için sabit genel anahtar dosyasının varlığına ihtiyacı vardır. Eğer alıcı, belgeyi uluslararası bir e-mail ile alırsa, diğer bir seçenek olarak GnuPG kullanılabilir.

Ayrıca unutulmamalıdır ki, verilerin güvenliği için özel anahtarlar korunmalıdır. Özel anahtarların güvenliği önemlidir çünkü bu anahtarlarla verileri açabilirsiniz. Anahtarların hiçbir zaman üçüncü kişilerle paylaşılmaması gerekir. Özel anahtarınızı korumak için bir şifre belirleyebilirsiniz. Şifreli özel anahtar belgesi, özel bilgileri açık hale getirecek şekilde saklanmamalıdır.


Örnek Kod

OpenPGP şifreleme için Python kodları oldukça faydalıdır. İşte, OpenPGP şifreleme için kullanılabilecek bazı örnek Python kodları:

İlk olarak, anahtar oluşturma kodu:

from Crypto.PublicKey import RSA
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.public_key().export_key()

Şifreleme işlemi için kullanılacak kod:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
public_key = RSA.import_key(open('public_key.pem').read())
message = b'This is a secret message.'
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(message)

Şifrelenmiş belgeyi deşifre etmek için aşağıdaki kod kullanılabilir:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
private_key = RSA.import_key(open('private_key.pem').read())
cipher = PKCS1_OAEP.new(private_key)
message = cipher.decrypt(ciphertext)

OpenPGP şifreleme için Python kodları ve örnekleri oldukça kullanışlıdır. Yukarıdaki örnek kodlar, etkili bir şekilde şifreleme ve deşifreleme işlemlerinin yapılmasına yardımcı olabilir.