Açık Anahtarlı Kimlik Doğrulama

Eyl 06, 2013

Şifreleme ve şifre çözme işlemleri için farklı anahtarların kullanıldığı açık anahtarlı şifreleme, güvenli iletişim kanalları ve veri şifreleme işlemleri için kullanıldığı gibi kimlik doğrulama (authentication) işlemi için de kullanılmaktadır. Açık anahtar doğrulama "Oluşturulmuş açık anahtarı doğrulama yapılacak yere koyabilecek kişi, sadece hesabın sahibidir." mantığına dayanmaktadır. Anahtarlardan biri özel (private), diğeri ise açık (public) olarak tanımlanır. Açık anahtar yalnızca gizli anahtarın sahibi tarafından üretilir. Açık anahtarlar, şifreleme işleminde verileri sadece üretildikleri gizli anahtarların çözebileceği şekilde şifrelemek için kullanır. Kimlik doğrulama işleminde ise gizli anahtarın sahibinin diğer anlamda üreticisinin sayısal imzasının ya da kimliğinin doğruluğunu kontrol etmek için kullanılır.

SSH (Secure Shell - Güvenli Kabuk) protokolünde açık anahtar doğrulamada iki tür anahtar kullanılabilmektedir. DSA (Digital Signature Algorithm - Sayısal İmza Algoritması) ve RSA (Rivest Shamir Adleman - algoritmayı yaratan kişilerin soyadları) anahtarların kullanıldığı açık anahtarlı kimlik doğrulama yapısında iki adet anahtar kullanılır. DSA, RSA anahtarlara göre daha basit matematiksel işlemler kullandığından günümüzde RSA anahtarlar tercih edilmektedir. Bu nedenler açık anahtarlı kimlik doğrulamanın SSH bağlantılarında kullanılabilmesi için üretilen açık anahtarın SSH bağlantısının yapılacağı bilgisayarda olması gerekir. Özel anahtara ise bağlantı yapmak için kullanılacak istemci tarafından gereksinim duyulmaktadır. Açık anahtar SSH sunucusu üzerinde /etc/ssh/sshd_config dosyasında AuthorizedKeysFile  (Yetkilendirilmiş Anahtarlar Dosyası) etiketiyle belirtilen dosyaya -varsayılan olarak bu değer /home/kullanici_adi/.ssh/authorized_keys dosyasıdır- yazılır ya da başka dosyadan bu dosyaya dahil edilir. SSH bağlantısı kurulurken bağlantıda kullanılacak istemciye özel anahtar gösterilerek şifre gerektirmeyen ancak güvenli bir bağlantı sağlanır. Ek güvenlik önlemi olarak, anahtarlar üretilirken Parola (Pass Phrase) belirtilebilmektedir. Böylece açık anahtar kullanımına ek olarak ortak bir anahtarla da şifreleme yapılmış olur. Parola belirtilmesi durumunda doğrulama işlemi için anahtarlar üzerinden kontrole ek olarak kullanıcının parolayı girmesi beklenir. Parola doğrulama ve anahtar doğrulama işlemlerinden en az birinin başarısız olması durumunda kimlik doğrulama işlemi başarısız olur. SSH protokolünde açık anahtarlı kimlik doğrulama özet olarak şu şekilde çalışır:


Açık anahtarlı kimlik doğrulama, şifre denetimli kimlik doğrulama işlemine göre oldukça güvenlidir. Kimlik doğrulamasında şifre ve giriş (login) ortamı kullanmadığı için açık anahtarlı kimlik doğrulama işlemi Brute Force (Kaba Kuvvet) gibi saldırılara çok daha dayanıklıdır. Üstelik bu yöntem özel anahtarın iyi korunması şartıyla üst düzey güvenlik sunmaktadır. Güvenlik kazançlarının yanında açık anahtarlı kimlik doğrulama birçok kolaylık da sağlamaktadır. Sabit IP (Internet Protocol - İnternet Protokolü) adresine gerek duymaksızın istemci kontrolü yapılabilmektedir. Bu sayede SSH sunucusu ile iletişimin olduğu her ortamdan bağlantı kolaylıkla kurulur. Ayrıca Linux işletim sistemlerinin yanı sıra Secure Shell Client, PuTTY gibi birçok SSH istemci programları da anahtarlar üretilip, sunucuya gönderilip, bağlantı için kullanılabilmektedir.