SSL (Secure Socket Layer) Nedir

advertisement
055122007 İsmail KIRBAŞ
SSL (Secure Socket Layer) Nedir?
Bildiğimiz gibi Internet herkese açık bir ortamdır. Teknolojinin ilerlemesi ile beraber artık
internet gündelik hayatımızın vazgeçilmez bir parçası haline gelmiştir. Internetin bu denli
yaygınlaşması beraberinde güvenlik sorunlarını da getirmiştir.
Açık metin HTTP trafiği
internet
BB
Mehmet Peksaf
Batmaz
Bank
Internet
Şubesi
Ali Pekfesat
Mehmet Peksaf
Müşteri No : 6980871
Şifre : aliveli4950
internet
Müşteri No : 6980871
Şifre : aliveli4950
Müşteri No :
6980871
Şifre :
aliveli4950
Ali Pekfesat
SSL Nedir? < 1 >
Batmaz
Bank
Internet
Şubesi
055122007 İsmail KIRBAŞ
SSH
Tekniği
Tatu Ylönen tarafından geliştirilen SSH (Secure shell, Güvenli kabuk) bir bilgisayara uzaktan
girmenizi ve orada komutlar çalıştırmanızı sağlayan oldukça basit yapılı bir uygulama. SSH
güçlü bir asıllama ve güvenli iletişim gereklerini karşılayarak telnet vb. İletişim kurallarının
yerini alıyor. Biri ticari olan iki ayrı isimle piyasada bulunuyor. SSH iletişim kuralının
çalışması aşağıdaki şekille özetlenebilir:
İstemci
Sunucu
Asıllama İsteği
Konak Anahtarı + Sunucu Anahtarı
Konak(Sunucu(Oturum Anahtarı))
Oturum(TAMAM)
Açık Konak Anahtarı : 1024 bit RSA
Açık sunucu Anahtarı : 768 bit RSA
Oturum Anahtarı : 256 bit rastgele sayı (Blowfish, DES, 3DES)
İstemcinin gönderdiği asıllama isteğine sunucu açık konak anahtarını ve açık sunucu
anahtarını göndererek yanıt verir. Konak anahtar çifti konağa özeldir ve sunucunun kurulması
sırasında oluşturulur. Bu anahtar daha sonra değiştirilmez. Sunucu anahtar çifti fazladan
güvenlik için eklenmiştir. Genelde saatte bir değişecek şekilde ayarlanır. Konak aldığı bu
anahtarlarla yarattığı bir simetrik oturum anahtarını iki kere şifreleyerek sunucuya gönderir.
Ayrıca, yaratılan oturum anahtarına şifrelenmeden önce fazladan güvenlik için rastgele sayılar
da eklenir. Daha sonra, sunucu oturum anahtarıyla şifrelenmiş bir onay iletisi gönderir. Bu
güvenli oturumun ilk iletisidir. Bundan sonraki iletiler oturum anahtarıyla şifrelenmiş olarak
iletilecektir.
İstemcinin sunucuyu geçerli sayması için iletişim kuralında herhangi bir tanımlama yoktur.
Sunucunun asıllanmasının önceden istemciye yerleştirilmiş bir konak anahtarı - konak adresi
listesi ile yapıldığı varsayılır. Listede kayıtlı olmayan bir konak anahtarı ile karşılaşıldığında
istemci tarafındaki yazılım kullanıcıyı uyaracaktır. Kullanıcının onayı olursa, istemci yazılım
bu yeni konak anahtarıni kaydeder. Sunucu anahtarı hiçbir zaman istemci tarafında
kaydedilmez.
SSL Nedir? < 2 >
055122007 İsmail KIRBAŞ
Sunucu tarafından kullanıcı asıllaması gerekirse bu iki farklı yolla yapılabilir: Eğer parola ile
asıllama yapılacaksa bu parola zaten şifrelenmiş olan hattan gönderilir. Eğer RSA asıllaması
yapılacaksa sunucu yarattığı rastgele bir sayıyı kullanıcının açık anahtarı ile şifreleyerek
gönderir. İstemci tarafında yazılımın kullanıcının gizli anahtarını kullanabilmesi için bir
parola sorulur. Bu parolanın onaylanmasıyla yazılım kullanıcının gizli anahtarı ile metni
çözerek yaratılan rastgele sayıyı bulur. Yanıt olarak sunucuya rastgele sayının özü ve
bağlantıyla ilgili bazı ek bililer gönderilir.
SSH iletişim kuralı bir kayıt iletişim kuralı ve onun üzerine kurlu bir tokalaşma iletişim
kuralından oluşmuştur. SSH iletişim kuralı ile kullanılabilecek sıkıştırma ve şifreleme
algoritmaları ile asıllama sırasında desteklenen şemalar aşağıdaki tablolarda gösterilmiştir.
Sıkıştırma algoritmaları
yok
sıkıştırma yok Zorunlu
zlib
GNU ZLIB
seçimli
Asıllama algoritmaları
yok
asıllama yok
seçimli
hmac-md5 HMAC-MD5
seçimli
hmac-sha
HMAC-SHA
seçimli
8 bayt MD5 + veri
md5-8
seçimli
+ anahtar
8 bayt SHA + veri
sha-8
seçimli
+ anahtar
SHA + veri +
sha
zorunlu
anahtar
Şifreleme algoritmaları
yok
şifreleme yok seçimli
3des-cbc
3-DES
zorunlu
idea-cbc
IDEA
seçimli
arcfour
ARCFOUR seçimli
blowfish-cbc Blowfish
seçimli
Anahtar değişimi algoritması
doubleçifte şifreli
encrypting- anahtar
zorunlu
sha
değişimi
Asıllama Yöntemleri
password
securid
skey
opie
publickey
hostbased
kerberos4
kerberos5
kerberos-afs
Netscape Corporation tarafından geliştirilen SSL (Secure sockets layer) iletişim kuralı da
SSH’a benzer katmanlara sahiptir. SSH’dan temel farkı, anahtarların elle yönetimi yerine izin
belgesi (sertifika) tabanlı kamusal anahtar altyapısını (PKI) kullanabilmesidir. Birçok işletim
sisteminde yazılım ile ulaşım katmanı iletişim kurallarının haberleşmesini sağlayan BSD
Sockets gibi arayüzler bulunur. SSL, güvenlik düzeneklerini bu arayüzlere taşıyarak tüm
TCP/IP iletişimini güvenli kılmak fikri üzerine kuruludur. SSL iletişim kuralının nereye
yerleştiği aşağıdaki şekilden görülebilir
SSL Nedir? < 3 >
055122007 İsmail KIRBAŞ
İstemci
Sunucu
Uygulama
Uygulama
SSL Tokalaşma
SSL Tokalaşma
SSL
SSL Kayıt
SSL Kayıt
TCP / IP
TCP / IP
İletişim kuralları yığınında yerleştiği yerden ötürü SSL kullanan yazılımlar ile kullanmayan
yazılımların kapı numaraları çakışmaktadır. Bunun çözümü üç şekilde olabilir: SSL
destekleyen her bir uygulama iletişim kuralı için yeni bir kapı numarası atanır, alışıldık kapı
numaraları kullanılarak güvenlik seçenekleri uygulama iletişim kuralına bırakılır ya da TCP
paketlerine SSL kullanılıp kullanılmadığını belirten bir alan eklenir. Şu an için görünen ilk
seçeneğin kullanıldığı.
Şekilde görüldüğü gibi SSL iki ayrı katmana ayrılır: SSL kayıt katmanı ve SSL tokalaşma
katmanı. SSL kayıt katmanı üstündeki iletişim kurallarından aldığı verinin parçalanması,
asıllanması ve şifrelenmesi ile ilgilenir. Bu katmanın üzerinde SSL’in diğer katmanları çalışır.
Bunların en önemlisi tokalaşma iletişim kuralıdır.
SSL tokalaşma iletişim kuralının ereği sunucu ile istemci arasında bir bağ oluşturmak,
şifreleme, sıkıştırma kurallarını belirlemek, gerekirse tarafları asıllamak, oturum için gerekli
anahtarları oluşturmaktır.
-----------------------------------İşte verinin güvenliksiz bir ortam olan internette bir yerden bir yere taşınması sorununa bir
çözüm olması için SSL ortaya atılmıştır. SSL’i ilk ortaya atan Netscape firmasıdır. Daha
sonra IETF tarafından bir güvenlik standardı olarak kabul edilmiş ve Netscape’ten
devralınmıştır. SSL, güvenli olmayan bir ortamda verinin göndericiden alıcıdan güvenli bir
şekilde iletimini sağlamak amacı ile hem herkese açık bir anahtar şifrelemesini hem de özel
anahtar şifrelemesini aynı anda kullanabilen bir yapıda tasarlanmıştır. Veriyi sunan Web
Server, Sertifika otoritesi tarafından imzalanmış özel ve herkese açık bir anahtara sahiptir. Bu
anahtar değerleri verinin alıcı tarafından sunucudan güvenli bir şekilde alınmasını sağlar.
SSL teknolojisi, veri iletimi esnasında Hashing metodunu kullanır. Hashing metodolojisi ile ,
sunucu , veriden tek bir hash değeri yollar. İstemciye veri ile beraber bu hash değerini de
yollar. İstemci bu data paketini aldığında, aynı hash fonksiyonunu kullanarak , gelen bu
paketten yeni bir hash değeri üretir. Burada altının çizilmesi gereken nokta, veri İstemcisinin
ürettiği anahtar değerinin , sunucunun kullanmış olduğu aynı hash fonksiyonu ile üretilmiş
olmasıdır. İstemci ile sunucu, aralarında bağlantı sağlarken, aynı hash fonksiyonu kullanmak
SSL Nedir? < 4 >
055122007 İsmail KIRBAŞ
için anlaşırlar. İstemcinin üretmiş olduğu bu yeni hash değeri, sunucunun yolladığı hash
değeri ile aynı olmak zorundadır. Eğer aynı değilse veri değişmiştir. Aynı değilse verinin
değişmediğinden sunucu emin olmuş olur.
SSL, web sunucusunda tanımlanmış olan digital imzaları kullanır.
Böylece web sunucusunun yayınlamış olduğu digital imza sayesinde, browserdan web
sunucusuna erişen İstemci, gerçekten alışverişte bulunacağı firma ile bir bağlantının
kurulduğundan emin olur. Bir sunucu sertifikası, sunucuda tanımlanmış olan bir dijital imza
ile bellidir. Ve sunucunun gerçek kimlik bilgilerini içerir. Sertifika otoritesi, bahsi geçen
sertifikayı sunucu firmaya verirken, öncesinde o da bir kimlik denetiminde bulunur. Güvenilir
bir firma olduğuna kanaat getirdiğinde, sunucu firmaya sertifika verir. Sertifika Otoritesinin
vermiş olduğu bu sertifika, sunucu firmanın güvenilir ve onaylanmış bir firma olduğunu
belgeler. Sertifika otoritesi, Verisign gibi firmalardır. Ve bu sertifika otoriteleri, internette
alışveriş hizmeti sağlamak isteyen firmalara dağıtabilecekleri sertifikaları, bir onay
aşamasından sonra verir.
Sunucuya İstemciden bir SSL isteği geldiğinde, İstemcinin web browserı, sunucu ile irtibata
geçer. Ve sunucu, İstemciye Sertifika Otoritesi tarafından kendisine verilmiş olan sertifikayı
yollar. İşte kısaca diyebiliriz ki, sertifika, bir dijital imzadan ibarettir. İstemci, sunucunun
yollamış olduğu bu sertifikayı aldığında, bu sertifikadan sunucunun firma kimlik bilgilerini ve
herekese açık anahtar bilgisini okuyabilir. İstemci, sertifika otoritesinin herkese açık anahtarı
ile sayısal imzayı çözer ve otoritenin ürettiği hash değerini bulur. Daha sonra sertifika içinden
kendisi de bir hash değeri üretir. Bu iki hash değerinin aynı olması gerekmektedir. Eğer aynı
ise, web sunucusu, Sertifika Otoritesi tarafından onaylanmıştır ve İstemcinin gerçekten
iletişime geçmek istediği bir firma demektir.
Böylelikle sunucu ve İstemci arasında bir SSL “güvenli” bir bağlantı kurulumu gerçeklenmiş
olur ve bu bağlantı esnasında giden gelen paketler şifrelendiği için üçüncü kişiler, sunucu ile
İstemci arasında gidip gelen veri paketlerini okuyamaz. Eğer üçüncü şahıslar, veri okumaya
başlayabilirse, bundan anında hem sunucunun hem de İstemcinin haberi olur ve bağlantı
hemen kesilir. SSL ile, yukarıda da görebildiğimiz gibi hem sunucu İstemciye kendini tanıtır
hem de İstemci sunucuya kendini tanıtır. Böylelikle iki taraflı bir güven ilişkisi kurulmuştur.
O halde İstemci ile sunucu arasında iki taraflı bir el sıkışması yapılır. (HandShake). Bu el
sıkışma anlaşması, İstemci sunucuya ilk ulaştığı anda yapılır. El sıkışma aşamaları şöyle
cereyan eder:
* İstemci, sunucuya ilk ulaştığında el sıkışma başlar ve her iki taraf, güvenlik amacı ile
kullanılacak olan şifreleme fonksiyonu üzerinde anlaşır.
* İstemci, sunucunun kimliğini denetler.
* İstemci, sunucudan almış olduğu dijital imzadan bir anahtar oluşturur ve bunu sunucuya
yollar.
* Sunucu bu anahtarı alınca, kontrol eder.
* Eğer istenirse, sunucu da tarayıcıdan bir kimlik denetimi isteyebilir. Bu da demek ki, çift
taraflı bir güven anlaşması desteklenmektedir.
SSL Nedir? < 5 >
055122007 İsmail KIRBAŞ
Bu el sıkışma aşamaları başarılı bir biçimde gerçeklenirse, sunucu ve İstemci arasında bir veri
iletişim kanalı açılmıştır ve veri iletişimi başlar.
Konuya daha açıklık getirmek istersek, şunları da burada yeri geldiğinde söylemekte fayda
var:
-
-
El sıkışma başladığında, İstemci sunucudan kimlik bilgilerini ister. Bunun üzerine
sunucu, İstemciye sertifikasını yollar.
İstemci aldığı bu bilgiler eşiğinde simetrik bir anahtar oluşturur. Daha sonra
sunucunun herkese açık anahtarı ile, bu bulduğu anahtarı şifreler. Ve bu değeri
sunucuya yollar.
Kendi özel anahtarını kullanarak, sunucu, İstemcinin yolladığı bu şifrelenmiş anahtarı
çözer.
Bu aşamalar sonucu İstemci ve sunucunun birbirine yollamış olduğu anahtarlar eğer aynı ise,
El sıkışma başarılı bir biçimde kurulmuş demektir ve veri alışverişi başlar.
Bu el sıkışma protokolü ve verinin şifrelenerek İstemci ve sunucu arasında yollanması
işlemleri, OSI referans modelinin Application ve Presentation seviyelerinde gerçeklenir.
(Application seviyesinde, İstemci ve tarayıcı World Wide Web üzerinden oturum açıp veri
alişverişinde bulunurlarken, şifreleme işlemleri Presentation seviyesinde yapılır.)
Burada değinilmesi gereken bir diğer nokta ise, yapılan şifreleme tekniğidir.
3 farklı şifreleme tekniği kullanılır.
a. Hash Tekniği ile Şifreleme: Veri trafiği esnasında, verinin değişmediğinin ve
bütünlüğünün korunduğunu anlamak için kullanılır.
SSL Nedir? < 6 >
055122007 İsmail KIRBAŞ
b. Anahtar Değişim Tekniği ile Şifreleme: İstemci ve sunucunun, el sıkışma sonrasında ,
veriyi şifrelemek amacı ile kullandıkları simetrik anahtarı nasıl birbirine ulaştıracağını
belirlemek için kullanılır.
c. Simetrik Veri Şifreleme: Veri şifrelenmesinde kullanılacak olan RC2 gibi bir veri
şifreleme tekniğidir.
SSL desteği veren web sunucunun barındırdığı web adresleri “https” ile başlar.
O SSL tekniği ile güvenliği sağlanmış olan bir web sunucuya bir istemci bağlanıp veri
alışverişini başlatmak istediğinde şu adımlar gerçeklenir:
Öncelikle Web sunucu, bir Sertifika Otoritesinin kendisine tahsis etmiş olduğu sertifikayı
yüklemiş olması gerekmektedir. Böylelikle, Sertifika Otoritesi, sunucuyu onayladığını,
istemcilere garanti etmiş olur.
İstemci, sunucuya bağlandığında aralarında bir el sıkışma protokolü kurumu başlatılır. Bu
bağlamda, İstemci ve sunucu hangi şifreleme tekniğini kullanacakları konusunda anlaşırlar.
Sunucu, istemciye, kendisine Sertifika Otoritesi tarafından verilmiş olan sertifikayı yollar.
İstemci, sunucunun kendine yollamış olduğu sertifikayı kullanarak sunucunun kimlik
denetimini yapar.
İstemci, bu kimlik denetiminden sonra, eğer geçerli bir sertifika aldı ise; bu sertifika
bilgisinden, simetrik şifreleme anahtarını yaratır ve bunu sunucuya yollar. Bu şifreleme
anahtarı, sunucu ve İstemci arasındaki verinin şifrelenmesi için kullanılacaktır.
Sunucu, İstemciye veri yollarken, bu şifre anahtarı ile veriyi şifreler, veri için bir hash değeri
üretir. Şifrelenmiş veri ve hash değeri istemciye yollanır.
İstemci veriyi alır, bir hash değeri üretir. Veriyi ve hash değerini simetrik anahtar ile şifreler,
sunucuya yollar.
Sunucu aldığı bu şifrelenmiş veriyi ve hash değerini çözer. Veri için yeni bir hash değeri
üretir. İki hash değerini karşılaştırır. Aynı ise, iletişime devam edilir.
Bu adımlar, İstemci ve sunucu arasındaki veri trafiği boyunca devam eder.
SSL teknolojisi, 40 bit, 56 bit ve 128 bit veriyi destekler. Ama daha güvenli olması için tercih
edilen 128 bitlik veri alışverişidir.
SSL Nedir? < 7 >
055122007 İsmail KIRBAŞ
Bir SSL Sertifikasının görünümü:
Bir Netscape istemcisi ile, güvenli bölgenin detayları alınıyor.
LKD SSL sunucusunun sertifikası....
This Certificate belongs to: This Certificate was issued by:
www.linux.org.tr
LKD Root Certificate Authority
[email protected]
[email protected]
Bilgi Guvenligi Grubu
Bilgi Guvenligi Grubu
Linux Kullanicilari Dernegi
Linux Kullanicilari Dernegi (LKD)
Ankara, TR, TR
Ankara, TR
Serial Number: 01
This Certificate is valid from Tue Sep 12, 2000 to Wed Sep 12, 2001
Certificate Fingerprint:
BF:F1:06:75:DE:56:F4:77:82:C1:FD:34:A5:40:2B:62
SSL Nedir? < 8 >
055122007 İsmail KIRBAŞ
Kaynaklar:
1. http://wp.netscape.com/eng/ssl3/draft302.txt
2. Rolf Oppliger, Internet and Intranet Security, Artech House, 1998, pp. 215–247
3. Berk Demir, Linux Kullanıcıları Derneği
4. http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci343029,00.html
5. Dr.İ.SOĞUKPINAR G.Y.T.E. Bil.Müh.Böl. Veri ve Ağ Güvenliği Ders Notları
SSL Nedir? < 9 >
055122007 İsmail KIRBAŞ
Örnek Soru 1: SSL sistemi hangi şifreleme sistemlerini kullanmaktadır?
Cevap1:
a. Hash Tekniği ile Şifreleme: Veri trafiği esnasında, verinin değişmediğinin ve
bütünlüğünün korunduğunu anlamak için kullanılır.
b. Anahtar Değişim Tekniği ile Şifreleme: İstemci ve sunucunun, el sıkışma sonrasında
, veriyi şifrelemek amacı ile kullandıkları simetrik anahtarı nasıl birbirine ulaştıracağını
belirlemek için kullanılır.
c. Simetrik Veri Şifreleme: Veri şifrelenmesinde kullanılacak olan RC2 gibi bir veri
şifreleme tekniğidir
.
Örnek Soru 2: SSL sisteminin avantaj ve dezavantajları nelerdir?
Cevap 2
Avantajları:
- Ucuz ve kurulumu kolaydır.
- Mevcut donanım yapısıyla entegre çalışabilir.
- Anahtar büyüklüğü arttırılarak güvenlik seviyesi arttırılabilir.
- Küresel anlamda yaygın olarak kullanılmaktadır.
Dezavanjları:
- Yerini kendisinden daha güvenli bir sistem olan IPSec sistemine bırakmaktadır.
- Trafik çözümlemesine ya da sel (flooding) saldırılarına karşı savunması yoktur.
- SSL ve TLS’nin uygulama iletişim kurallarının yapılarını değiştirmediğini ve bu
sebeple ancak geçici bir çözüm olarak ele alınması gerektiğini savunanlar da vardır.
SSL Nedir? < 10 >
Download