Dijital İmza Oluşturma ve Kullanma
Giriş
Günümüzde elektronik belgelerin güvenilirliği, bütünlüğü ve kaynağının doğrulanması kritik öneme sahiptir. Bir PDF sözleşmesi, yazılım paketi, yedekleme dosyası veya resmi belge, gönderildikten sonra değiştirilmiş olabilir. Bu değişikliği tespit etmenin en güvenilir yöntemlerinden biri dijital imzadır.
Dijital imza;
Belgenin gerçekten belirtilen kişi tarafından oluşturulduğunu,
Belgenin sonradan değiştirilmediğini,
Gönderenin belgeyi inkâr edemeyeceğini
kanıtlayan kriptografik bir mekanizmadır.
Bu eğitimde OpenSSL kullanarak sıfırdan dijital imza oluşturacak, belgeleri imzalayacak, doğrulayacak ve belge üzerinde yapılan küçük bir değişikliğin bile imzayı nasıl geçersiz hale getirdiğini uygulamalı olarak göreceğiz.
Laboratuvar Hedefleri
Bu laboratuvar sonunda aşağıdaki işlemleri yapabiliyor olacaksınız.
✅ Dijital imza mantığını anlamak
✅ RSA anahtar çifti oluşturmak
✅ OpenSSL ile belge imzalamak
✅ Dijital imzayı doğrulamak
✅ Belgenin değiştirilmesi durumunda doğrulamanın neden başarısız olduğunu görmek
✅ Dijital imzanın gerçek hayatta nasıl kullanıldığını öğrenmek
Ön Bilgiler
Birçok kişi dijital imzayı elektronik imza ile karıştırır.
Aslında dijital imza;
Matematiksel algoritmalar kullanır.
Private Key ile oluşturulur.
Public Key ile doğrulanır.
Dijital İmzanın Sağladığı Güvenlik
Bir dijital imza dört önemli özelliği garanti eder.
1. Kimlik Doğrulama (Authentication)
Belge gerçekten imzalayan kişiye mi ait?
2. Veri Bütünlüğü (Integrity)
Belge imzalandıktan sonra değiştirildi mi?
3. İnkâr Edememe (Non-Repudiation)
İmzayı atan kişi daha sonra
"Ben imzalamadım."
diyemez.
4. Güven
Alıcı belgenin değiştirilmediğinden emin olur.
Dijital İmza Nasıl Çalışır?
Belge│▼Hash Fonksiyonu│▼Belge Özeti (Hash)│Private Key│▼Dijital İmza
Karşı tarafta ise
Belge│Hash Hesapla│Public Key│İmzayı Aç│Hash Karşılaştır
İki hash aynıysa
✓ Belge değiştirilmemiştir.
Dijital İmza ile Şifreleme Arasındaki Fark
| Şifreleme | Dijital İmza |
|---|---|
| Gizlilik sağlar | Kimlik doğrular |
| Public Key ile şifrelenir | Private Key ile imzalanır |
| Private Key ile açılır | Public Key ile doğrulanır |
| Veriyi gizler | Veriyi doğrular |
Laboratuvar Ortamı
Bu laboratuvar;
Linux
macOS
Windows (OpenSSL kurulu)
üzerinde uygulanabilir.
Kurulumu doğrulayın.
openssl version
Örnek
OpenSSL 3.2.2
Laboratuvar 1
RSA Anahtar Çifti Oluşturma
Önce özel anahtar oluşturuyoruz.
openssl genpkey \-algorithm RSA \-out private.pem \-pkeyopt rsa_keygen_bits:4096
Dosya oluşacaktır.
private.pem
Public Key oluşturuyoruz.
openssl rsa \-in private.pem \-pubout \-out public.pem
Dosyalar
private.pempublic.pem
oluşmuştur.
Anahtarları İnceleme
Private Key
openssl pkey \-in private.pem \-text \-noout
Public Key
openssl pkey \-pubin \-in public.pem \-text \-noout
Laboratuvar 2
Belge Oluşturma
Yeni belge hazırlayalım.
nano belge.txt
İçerik
Bu belge Nuri tarafından oluşturulmuştur.Tarih:28 Temmuz 2026Dijital imza laboratuvarı.
Kaydedin.
Dosyayı görüntüleyin.
cat belge.txt
Laboratuvar 3
Dijital İmza Oluşturma
Belgeyi private key ile imzalıyoruz.
openssl dgst \-sha256 \-sign private.pem \-out belge.sig \belge.txt
Oluşan dosya
belge.sig
aslında şifrelenmiş hash değeridir.
Dosyaları kontrol edin.
ls -l
Çıktı
belge.txtbelge.sigprivate.pempublic.pem
İmzanın Boyutunu İnceleme
hexdump -C belge.sig
veya
xxd belge.sig
İmza okunabilir değildir.
Laboratuvar 4
İmzayı Doğrulama
Belgeyi doğruluyoruz.
openssl dgst \-sha256 \-verify public.pem \-signature belge.sig \belge.txt
Başarılı ise
Verified OK
çıktısını görürüz.
Bu ne anlama gelir?
Belge değişmemiştir.
Doğru private key ile imzalanmıştır.
Public key doğrulamıştır.
Laboratuvar 5
Belgeyi Değiştirme
Şimdi belgeye yalnızca tek satır ekleyelim.
nano belge.txt
Ekleyin
Yeni satır eklendi.
Dosya artık farklıdır.
Bu belge Nuri tarafından oluşturulmuştur.Tarih:28 Temmuz 2026Dijital imza laboratuvarı.Yeni satır eklendi.
Tekrar Doğrulama
Aynı komutu çalıştırın.
openssl dgst \-sha256 \-verify public.pem \-signature belge.sig \belge.txt
Sonuç
Verification Failure
veya
Error verifying data
Sebebi
Belgenin hash değeri değişmiştir.
İmza eski hash'e aittir.
Dolayısıyla doğrulama başarısız olur.
Hash Değerlerini Karşılaştırma
Belge değiştirilmeden önce
openssl dgst -sha256 belge.txt
Örnek
SHA2-256(belge.txt)=4d1f...
Belge değiştirildikten sonra
openssl dgst -sha256 belge.txt
SHA2-256(belge.txt)=ab67...
Hash tamamen değişmiştir.
Dijital İmza Neden Hash Üzerinden Oluşturulur?
1 GB'lık dosya düşünelim.
Doğrudan RSA ile imzalamak:
Çok yavaş
Çok maliyetli
Bunun yerine
Dosya↓SHA-256↓32 Byte Hash↓RSA İmzalama
Bu nedenle tüm dijital imzalar hash üzerinden oluşturulur.
OpenSSL Komutlarının Açıklaması
Anahtar üretme
openssl genpkey
RSA anahtarı oluşturur.
Public Key üretme
openssl rsa -pubout
Private key'den public key çıkarır.
Hash oluşturma
openssl dgst
Digest hesaplar.
SHA-256
-sha256
Hash algoritmasını belirtir.
İmzalama
-sign private.pem
Private key kullanılır.
Doğrulama
-verify public.pem
Public key kullanılır.
Dijital İmzanın Kullanıldığı Yerler
Yazılım Güncellemeleri
Linux paketleri
Windows Update
Android APK
iOS
Git Commit Signing
Kodun gerçekten geliştirici tarafından gönderildiğini doğrular.
PDF Belgeleri
Sözleşmeler
Mahkeme kararları
Resmî belgeler
SSL/TLS Sertifikaları
Sunucuların kimliğini doğrular.
Blockchain
Kripto para transferleri
Wallet doğrulaması
E-Devlet Sistemleri
Resmî başvurular
Elektronik belgeler
Vergi işlemleri
Güvenlik Tavsiyeleri
✔ Private key hiçbir zaman paylaşılmamalıdır.
✔ Public key güvenle paylaşılabilir.
✔ Private key parola ile korunmalıdır.
✔ SHA-256 veya SHA-3 tercih edilmelidir.
✔ RSA için en az 3072 bit, tercihen 4096 bit anahtar kullanılmalıdır.
✔ Özel anahtarlar güvenli donanımlarda (HSM, TPM veya akıllı kart) saklanmalıdır.
✔ Düzenli anahtar rotasyonu uygulanmalıdır.
Gerçek Hayat Senaryosu
Bir yazılım şirketi müşterilerine bir güncelleme yayınlıyor.
Şirket;
Yazılımı oluşturur.
SHA-256 hash hesaplar.
Private Key ile imzalar.
Yazılımı ve imzayı yayınlar.
Kullanıcı;
Yazılımı indirir.
Public Key ile doğrular.
Sonuç:
✓ Yazılım orijinaldir.
✓ Değiştirilmemiştir.
✓ Gerçek üretici tarafından yayınlanmıştır.
Laboratuvar Özeti
Bu laboratuvarda aşağıdaki işlemler başarıyla gerçekleştirildi:
RSA 4096 bit anahtar çifti oluşturuldu.
Özel anahtardan açık anahtar üretildi.
Metin belgesi hazırlandı.
SHA-256 kullanılarak dijital imza oluşturuldu.
İmza açık anahtar ile doğrulandı.
Belge üzerinde değişiklik yapıldı.
Doğrulamanın başarısız olduğu gözlemlendi.
Dijital imzanın veri bütünlüğü ve kimlik doğrulama açısından önemi uygulamalı olarak öğrenildi.
Sonuç
Dijital imza, modern bilgi güvenliğinin temel yapı taşlarından biridir. Şifreleme ile birlikte kullanıldığında; hem verinin gizliliğini hem de kimliğini ve bütünlüğünü korur. OpenSSL gibi açık kaynaklı araçlar sayesinde dijital imza süreçleri kolayca uygulanabilir ve gerçek dünya senaryolarında güvenilir yazılım dağıtımı, elektronik belge yönetimi ve güvenli iletişim için güçlü bir altyapı sağlar. Bu laboratuvar, dijital imza oluşturma ve doğrulama sürecini adım adım deneyimleyerek, teorik bilgilerin pratikte nasıl uygulandığını göstermektedir. Sonuç olarak, dijital imza teknolojisini etkin kullanmak; kurumların ve bireylerin dijital ortamlardaki güvenini artıran en önemli kriptografik mekanizmalardan biridir.
Dijital dünyada bir belgenin "gerçekten o kişiden geldiğinden" ve "bize ulaşana kadar kimse tarafından değiştirilmediğinden" nasıl emin olabiliriz? İşte dijital imza (digital signature) tam olarak bu iki sorunu çözen matematiksel bir tekniktir.
Amacı, dijital iletişimde yapılabilecek tahrifatı (veri bütünlüğünün bozulması) ve kimlik sahteciliğini önlemektir. ABD de dahil olmak üzere birçok ülkede dijital imzalar, ıslak imzalı geleneksel belgelerle aynı hukuki statüye sahiptir. Öyle ki devlet kurumları bütçeleri, yasaları ve kritik önergeleri dijital imzalı elektronik versiyonlarla yayınlamaktadır.
Dijital İmza Nasıl Çalışır?
Dijital imza mimarisi temelde asimetrik şifreleme (iki farklı anahtarın kullanıldığı yapı) ve hash (özetleme) algoritmalarının birleşimidir. Süreç şu şekilde işler:
İmzalayan (Gönderici): Kendisine ait, kimseyle paylaşmadığı bir Private Key (Özel Anahtar) kullanarak belgeye ait benzersiz bir matematiksel imza üretir.
Doğrulayan (Alıcı): İmzalayanın herkesle paylaştığı Public Key (Açık Anahtar) yardımıyla, belgenin gerçekten o kişiden geldiğini ve yolda bozulmadığını kontrol eder.
Aşağıdaki laboratuvar çalışmasında, standart bir Linux terminali üzerinden OpenSSL kullanarak bu sürecin uçtan uca nasıl gerçekleştiğini simüle edeceğiz.
Laboratuvar Uygulaması: Adım Adım Dijital İmza
Bu laboratuvarda temel Linux komut satırı becerileri ve sistemde OpenSSL'in kurulu olması yeterlidir.
1.RSA Anahtar Çiftinin Oluşturulması:Özel ve Açık Anahtarlar.
Öncelikle, imzalama işleminde kullanacağımız 2048 bitlik güçlü bir RSA özel anahtarı (private key) üretiyoruz. Terminali açın ve şu komutu girin:
Bash
openssl genrsa -out ozel_anahtar.pem 2048
Özel anahtarımız oluştu. Şimdi bu anahtardan, doğrulamayı yapacak kişilere dağıtacağımız açık anahtarı (public key) türetmeliyiz:
Bash
openssl rsa -in ozel_anahtar.pem -pubout -out acik_anahtar.pem
Artık elimizde kimseyle paylaşmamamız gereken ozel_anahtar.pem ve herkesin görebileceği acik_anahtar.pem dosyaları var.
2.Örnek Belgenin Hazırlanması:İmzalanacak verinin oluşturulması.
İmzalayacağımız örnek bir metin belgesi oluşturalım. Bu, gizli bir anlaşma veya değiştirilmemesi gereken bir sistem konfigürasyonu olabilir.
Bash
echo "Bu belge çok önemli ve gizli bir anlaşma metnidir." > belge.txt
cat belge.txt komutu ile belgenin içeriğini görüntüleyerek doğru oluştuğundan emin olabilirsiniz.
3.Belgenin İmzalanması:Hash ve şifreleme işlemi.
Belgeyi imzalamak için SHA-256 özetleme algoritmasını ve kendi özel anahtarımızı kullanacağız. Bu işlem, belgenin dijital parmak izini alır ve özel anahtarla şifreleyerek imza.bin adında bir imza dosyası oluşturur.
Bash
openssl dgst -sha256 -sign ozel_anahtar.pem -out imza.bin belge.txt
Şu an belgemiz (belge.txt) ve bu belgeye ait dijital imzamız (imza.bin) doğrulanmaya hazır. İletişim sırasında karşı tarafa hem belgeyi hem de imza dosyasını göndeririz.
4.İmzanın Doğrulanması (Gerçeklik Testi):Veri bütünlüğünün kanıtlanması.
Karşı tarafın (veya denetçinin) elinde bizim acik_anahtar.pem dosyamız, belge.txt ve imza.bin var. Sistemin bütünlüğünü doğrulamak için şu komut çalıştırılır:
Bash
openssl dgst -sha256 -verify acik_anahtar.pem -signature imza.bin belge.txt
Eğer belge yolda hiç değişmemişse ve gerçekten bizim özel anahtarımızla imzalanmışsa, terminalde şu onay mesajı görüntülenir:
Verified OK
5.İhlal Simülasyonu:Belgenin değiştirildiğini tespit etme.
Peki ya araya giren kötü niyetli bir kişi (Man-in-the-Middle) belgeyi değiştirirse ne olur? Bunu test edelim. Belgenin sonuna sahte bir metin ekliyoruz:
Bash
echo "Bu madde sonradan hacker tarafından eklenmiştir." >> belge.txt
Belge artık orijinal halinde değil. Alıcı, aynı doğrulama komutunu tekrar çalıştırdığında:
Bash
openssl dgst -sha256 -verify acik_anahtar.pem -signature imza.bin belge.txt
Terminal bu kez bütünlüğün bozulduğunu anlar ve şu uyarıyı verir:
Verification Failure
Bu sayede belgenin güvenilirliği reddedilir ve tahrifat engellenmiş olur.
Öğrenme Çıktısı
Bu senaryo sayesinde, sadece teorik bir kavram olan dijital imzanın arka planda nasıl çalıştığını gözlemlemiş oldunuz. Dijital imzanın geçerli olabilmesi için orijinal belgenin tek bir baytının bile değişmemesi gerektiği, Verification Failure mesajı ile uygulamalı olarak kanıtlanmıştır.
Yorumlar