Python İle Dijital İmza
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 kütüphanesini kullanarak Python’da dijital imzaların nasıl uygulanacağını inceleyeceğiz.

Vlog
Dijital İmzalar Nedir?
Dijital imzalar, şifreleme tekniklerini kullanarak dijital mesajların veya belgelerin bütünlüğünü ve kaynağını doğrulayan kriptografik yapılar olarak işlev görür. Geleneksel el yazısı imzalar gibi, dijital imzalar da bir mesajın kimden geldiğini kanıtlamak için kullanılır, ancak çok daha güvenli ve sahteciliğe karşı dayanıklıdırlar.
Dijital bir imza üç temel özelliği garanti eder:
- Kimlik Doğrulama: Mesajın belirli bir gönderen tarafından gönderildiğini doğrular.
- Bütünlük: Mesajın aktarım sırasında değiştirilmediğini doğrular.
- İnkar Edilememe: Gönderen daha sonra mesajı göndermediğini iddia edemez.
LightDSA Nedir?
LightDSA, Python’da RSA, DSA, ECDSA (Elliptic Curve Digital Signature Algorithm), EdDSA (Edwards-Curve Digital Signature Algorithm) gibi çeşitli dijital imzalama algoritmalarını destekleyen açık kaynaklı bir kütüphanedir. Ayrıca eliptik eğri formunu (Weierstrass, Koblitz veya Edwards), yüzlerce hazır eğri arasından seçimini (örneğin, bitcoin protokolü weierstrass formu ve secp256k1 eğrisini kullanır) ve anahtar uzunluklarını özelleştirme esnekliği sunar. LightDSA, özellikle farklı algoritmaları tek bir standart arayüzle karşılaştırmak ve test etmek isteyen geliştiriciler için idealdir.
LightDSA’yı pip aracılığıyla kolayca kurabilirsiniz:
1 2 3 4 5 |
pip install lightdsa |
Sonrasında kütüphaneyi kullanmak için bağımlılığı şu şekilde berlitmeniz gerekiyor:
1 2 3 4 5 |
from lightdsa import LightDSA |
Böylelikle artık LightDSA’ya ait fonksiyoneliteleri kullanabilirsiniz.
Eliptik Eğri Tabanlı Algoritmalar
LightDSA’nın portföyünde ECDSA ve EdDSA olmak üzere 2 eliptik eğri tabanlı modern algoritma bulunmaktadır.
Örneğin ECDSA ile hazır eğriler kullanarak kriptosistemimizi şu şekilde oluşturabiliriz. Bu işlem rastgele gizli ve açık anahtar çiftini üretecektir.
1 2 3 4 5 6 7 8 9 10 |
# bitcoin protokolunde kullanilan algoritma, form ve egri dsa = LightDSA( algorithm_name = "ecdsa", form_name = "weierstrass", curve_name = "secp256k1", ) |
Ya da daha modern bir algoritma olan EdDSA varsayılan form olarak edwards formunu ve ed25519 eğrisini kullanır.
1 2 3 4 5 6 7 8 9 |
dsa = LightDSA( algorithm_name = "eddsa", form_name = "edwards", curve_name = "ed25519" ) |
Tabi ECDSA kullanırken edwards ya da EdDSA kullanırken Weierstrass formunu kullanmamıza bir engel yok ama pratikte çok kullanılmazlar.
Son olarak, Koblitz formu kriptografik donanım tasarımı için özelleştirilmiş asal alanlar yerine (prime field) ikili alanları (binary field) kullanan bir yöntemdir. Koblitz formuna ait bir kriptosistem üretmek için:
1 2 3 4 5 6 7 8 9 |
dsa = LightDSA( algorithm_name = "ecdsa", form_name = "koblitz", curve_name = "k163" ) |
Özetle ECDSA ve EdDSA dijital imza algoritmaları için Weierstrass, Koblitz ya da Edwards formlarından birini seçebilirken bu formlara ait hazır eğrilerin listesine buradan erişebilirsiniz.
RSA ve DSA
Eliptik eğri tabanlı olmayan RSA ve DSA algoritmaları da LightDSA’nın portföyünde bulunmaktadır.
RSA için
1 2 3 4 5 6 7 8 |
# rsa kriptosisteminin insasi dsa = LightDSA( algorithm_name = "rsa", ) |
DSA için
1 2 3 4 5 6 7 8 |
# dsa kriptosisteminin insasi dsa = LightDSA( algorithm_name = "dsa", ) |
Anahtar Boyutları
RSA ve DSA ile insa edilen kriptosistemleri daha güvenli hale getirmek için inşa işlemi sırasında anahtar boyutlarını arttırabilirsiniz. RSA için varsayılan anahtar boyutu 3072, DSA için de 2048 bit’tir.
1 2 3 4 5 6 7 8 |
dsa = LightDSA( algorithm_name = "rsa", # or dsa key_size=7680 ) |
Anahtar boyutu belirleme işleminde bu tabloyu göz önünde bulundurmanızda fayda var.

Öte yandan ECDSA ve EdDSA için anahtar boyutu değiştirmek yerine eğrinin kendisini değiştirmelisiniz. Çünkü eliptik eğrinin toplam nokta sayısı zaten bellidir. Eğri listesinin bulunduğu tabloda “n (bits)” kolonu bu sayıyı belirler ve doğrudan kriptosistemin güvenliği ile ilişkilidir.
Gizli ve Açık Anahtarların Dışarı Aktarılması
İnşa ettiğiniz bir kriptosistemi bundan sonra hep kullanacaksınız. LightDSA objesini her inşa ettiğinizde size rastgele bir gizli – açık anahtar çifti üretecektir. Bunun önüne geçmek için kriptosistem bir kere inşa edildiğinde anahtarı şu şekilde dışarı aktarmalısınız:
1 2 3 4 5 6 7 8 9 |
# export private key dsa.export_keys("secret.txt") # export public key dsa.export_keys("public.txt", public = True) |
Kriptosistemin Restorasyonu
Gizli ve açık anahtarları dışarı aktardıysanız bunlarla kriptosistemi sıfırdan inşa etmek yerine şu şekilde restore edebilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
signer_dsa = LightDSA( algorithm_name = algorithm_name, form_name = form_name, curve_name = curve_name, key_file = "secret.txt" ) verifier_dsa = LightDSA( algorithm_name = algorithm_name, form_name = form_name, curve_name = curve_name, key_file = "public.txt" ) |
Bunu yaparken aynı algoritma adı, form adı ve eğri adını göndermeniz gerekiyor.
İmza
Gizli anahtara sahip olduğunuz sürece imzalama işlemi oldukça basittir:
1 2 3 4 5 6 |
message = "Hello, world!" signature = dsa.sign(message) |
Doğrulama
Açık anahtara sahip olduğunuz sürece ise doğrulama oldukça basit olacaktır:
1 2 3 4 5 |
verifier_dsa.verify(message, signature) |
Doğrulama methodu imzayı mesajdan doğrulayamazsa hata fırlatacaktır.
Sonuç
Özetleyecek olursak, neden LightDSA’yı kullanmalısınız?
- Hafifsiklet ve kullanımı kolay
- Tamamen konfigüre edilebilir kriptografik arka yüz
- Modern kriptografik standartları destekler
- Öğrenme, prototipleme ve hatta üretim ortamında kullanım için uygundur
LightDSA, farklı dijital imza algoritmaları ve eliptik eğri formları ve portföyündeki yüzlerce hazır eğri ile denemeler yapmanızı kolaylaştırır. İster güvenli sistemler geliştiriyor olun, ister modern kriptografinin nasıl çalıştığını öğrenmek istiyor olun, Python araç setinizde bulunması harika bir araçtır.
LightDSA kütüphanesine GitHub üzerinden yıldız vererek projeyi destekleyebilirsiniz!