Hafta 4_Şifreleme2

Download Report

Transcript Hafta 4_Şifreleme2

Şifreleme
Base64
• Base64 şifrelemeden ziyade sayı sistemidir
• İkilik sayı sistemi base2, onluk sayı sistemi
base10, onaltılık sayı sistemi ise base16'dır.
• 64'lük sayı sisteminin en önemli özelliği 6bit ile
ifade edilebilmesidir. "111111" verisinin 10'luk
karşılığı 63 olacaktır.
• Yani 6 bit ile 64 adet farklı karakter
kodlayabiliriz.
• Base64'ün temel mantığı, 8 bitlik ifadeleri, 6
bitlik bloklar halinde ifade edip artan verileri
ise farklı bir karakter ile görüntülemeye
dayanır.
• Base64'ün harfsel gösterimi ise sırası ile A-Z, az ve 0-9'dur. Bunlardan ayrı olarak '+' ve '/‘
işaretleri kullanılır.
• Artık veriler ise '=' ile gösterilir.
• Tüm 8 bitlik veriler, 6 bitlik ifadelere dönüştürülüp
görülebilir karakterler seklinde ifade edilir.
• Bu özellik Base64'ü metin tabanlı iletişim
kurallarının gözde aktarım şekli haline getirir.
• Resim, müzik, çalıştırılabilir dosyaları tüm ASCII
karakterler yerine görülebilir karakterler seklinde
ifade edebiliriz.
• Base64 kodlama bu özelliği sayesinde E-posta
aktarımı gibi belli başlı iletişim kurallarında ikili
dosyaların kolayca aktarılmasını sağlar.
• Resim, müzik gibi ikilik verileri hiç bir dil
kodlamasına bağımlı kalmadan
veritabanlarına, XML dosyalarına kolayca
ekleyebilirsiniz.
• Base64 bir şifreleme algoritması değildir.
• Fakat metinlerinizi kolayca herkesin
okuyamayacağı bir biçime getirip, yine aynı
kolaylıkla eski haline getirebilirsiniz.
Base64 Kodlama
• Base64 kodlamada öncelikle yapılması
gereken şey; veriyi 3'er karakterlik bloklara
ayırmaktır.
• 3'er bayt uzunluğundaki veriler, 4 adet 6 bitlik
bloklar oluşturur. (3 x 8 = 4 x 6)
• Bu bloklar ise kolayca Base64 karakter
tablosuna göre ifade edilir.
Base64 Kodlama
Veri
DENEME
Onaltılık Veri
44, 45, 4E, 45, 4D, 45
İkilik Veri
01000100 01000101 01001110 01000101 01001101 01000101
6’lı bloklar
010001 000100 010101 001110 010001 010100 110101 000101
6’lı bloklar(10luk) 17 4 21 14 17 20 53 5
Base64Çevrim
REVORU1F
Base64 Kodlama (Artan Veri
Olduğunda)
İkilik Veri
00000001
Üç 8’li Bloğa Tamamlama
00000001 00000000 00000000
6’lı Bloklara Ayırma
000000 010000 000000 000000
Base64Çevrim
AQ==
Base64 Geri Kodlama
• Base64 kodlamada veriyi kodlarken 3'er li bloklara
bölüyorduk.
• 3 x 8 bit = 4 x 6 bit.
• Yani her 3 baytlık blok 4 baytlık yeni bir blok
olarak bize geri dönmektedir. Bir başka değişle
giren veri %33 oranında uzayıp çıkacaktır.
• Geri kodlama işleminde ise veri 4'erli guruplar
halinde alınır. Base64 karakter tablosuna göre geri
kodlanır.
• "=" karakteri bulunan 4'erli bir adet gurup
bulunabilir. Bu artan veriyi gösterir.
Base64 İfade
FA=
İkilik İfade
000101 000000 000000 000000
8’lı Bloklara Ayırma
00010100 00000000 00000000
Orijinal Veri
0x14 (Onaltılık 14 verisi)
C# Kodlama
• public static string Base64Encode(string normalMetin)
• {
•
var narmalMetinBytes =
System.Text.Encoding.UTF8.GetBytes(normalMetin);
•
return System.Convert.ToBase64String(narmalMetinBytes);
• }
• public static string Base64Decode(string base64DonusturulmusData)
• {
•
var base64EncodedBytes =
System.Convert.FromBase64String(base64DonusturulmusData);
•
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
• }
Blowfish
• Blowfish algoritması, en çok kullanılan güçlü
anahtar tabanlı şifrelemelerden biridir.
• Önemli belgelerinizi, yazışmalarınızı bu
algoritmayı kullanarak şifreleyebilirsiniz.
• Yeni bir sistem tasarlarken istemci - sunucu
arasındaki veri transferini bu algoritmayı
kullanarak kısmen güvenli hale getirebilirsiniz.
Blowfish, simetrik bir şifreleme sunar.
• Blowfish algoritmasında anahtar boyutu,
asgari 32 bit azami 448 arasında olmalıdır.
• Genelde ön tanımlı olarak 128 bit
uzunluğunda alınır.
• Şifrelemeye girecek blokların uzunlukları ise
64 bittir.
Algoritması
• Blowfish ‘te veriler 64 bitlik bloklar halinde
şifrelenir. Algoritma 2 kısımdan oluşur:
– anahtarın genişletilmesi ve şifreleme. Anahtar
genişletmede en fazla 468 bit uzunluğunda olan
anahtar çok sayıda alt anahtarlarla 4168 bite
genişletilir
• Veriler, basit bir fonksiyonun 16 kez
kullanılmasıyla şifrelenir. Her turda anahtara
bağımlı permutasyon ve veriye bağımlı yer
değiştirme işlemleri yürütülür.
• Blowfish ‘te 32 bitlik 18 adet alt anahtar
bulunmaktadır: P1, P2,..., P18
• 4 S kutusunun her birinde 256 kayıt vardır:
– S1,0, S1,1,..., S1,255
– S2,0, S2,1,..., S2,255
– S3,0, S3,1,..., S3,255
– S4,0, S4,1,..., S4,255
• Blowfish 16 turdan oluşur ve giriş verisi 64 bittir (x olsun). Buna göre
şifreleme işlemi
• şöyle yapılır:
•
x ‘i 32 bitlik 2 parçaya böl: xL, xR
For i = 1 to 16:
xL = xL ⊕ Pi
xR = F(xL) ⊕ xR
xL ve xR ‘yi takas et
xL ve xR ‘yi takas et (son takası geri al)
xR = xR ⊕ P17
xL = xL ⊕ P18
xL ve xR ‘yi geri birleştir
Avantajları
• Şu ana kadar bilinen bir Blowfish şifre kırıcı
mevcut değildir.
• Piyasada kullanılan en hızlı öbek
şifreleyicilerdendir.
• İçerdiği karmaşık anahtar çizelgesi şifrenin
kırılmasını zorlaştırmıştır.
• Herkesin kullanımına açıktır. Kullanmak için
lisans alma problemi yoktur.
Dezavantajları
• Çalışmak için 4 kilobyte RAM'den daha fazla
belleğe ihtiyaç duyarlar. Bu nedenle ilk akıllı
kartlar gibi en küçük gömülü sistemlerde
kullanılamazlar.
• 232'den fazla veri öbeğini şifrelemek,
Blowfish'in zayıflayıp doğum günü saldırılarıyla
bilgi sızdırılmasına sebep olabilir.
Başlıca kullanım alanları:
• E-posta gibi rutin uygulamalar
• Gömülü sistemler
DES (Data Encryption Standard)
• DES, Federal Information Process Standard (FIPS) olarak
geçen resmi standartlara girmiş bir algoritmadır.
• Anahtarın DES algoritmasında 8bayt uzunluğunda olma
zorunluluğu, gelişen işlemci teknolojisi ile bu şifreleme
algoritması ile şifrelenen verilerin 24 saatten kısa
sürede çözülmesine neden olmaktadır.
• Bu nedenle DES artık güncelliğini yitirmiş bir
algoritmadır. DES, simetrik bir şifreleme algoritmasıdır.
• Tek anahtar ile şifreleme ve geri şifreleme işlemleri
yapılabilmektedir.
• DES, algoritmasının günümüzde kullanılmaması üzerine
bu algoritmanın çeşitli türevleri geliştirilmiştir.
• Örneğin, 3DES (TripleDES) algoritmanın 3 defa iki farklı
anahtar ile şifrelenmesini sağlamaktadır.
• Bu manada kırılması oldukça güç bir algoritması ortaya
çıkar.
• Bir diğer DES türevi algoritma ise AES (Advanced
Encryption Standart)'dir.
• Bu algoritma günümüzde oldukça sık kullanılan gelişmiş
bir algoritmadır. 128, 192 veya 256 bitlik anahtar
boyutlarına 128 bitlik blok boyutlarına sahiptir.
RC4
• RC4 belirlenen anahtar ile veriyi şifreleyen
bir algoritmadır.
• Kullanımı herhangi bir lisans gerektirmemektedir.
• Değişken anahtar uzunluğuna sahiptir.
• Bilinen kötü anahtara sahip değildir.
• Şifreleme hızı oldukça yüksektir.
• Anahtar boyutu 40 ve 256 bit arasında olmalıdır.
RSA
• RSA, Ron Rivest, Adi Shamir, Len Adleman adlı üç
adet MIT'li akademisyenin bulduğu ortak
anahtarlı asimetrik bir algoritmadır.
• Bu algoritma, ilk ortak anahtarlı (public-key)
asimetrik şifreleme algoritmasıdır.
• RSA, bir asimetrik algoritma olarak iki anahtar
barındırır.
– Birisi herkes tarafından bilinen ortak anahtar (publickey) diğeri ise geri şifreleme işleminde kullanılacak
olan özel anahtardır (private-key).
• Bir RSA kullanıcısı iki büyük asal sayının çarpımını
üretir ve seçtiği diğer bir değerle birlikte ortak
anahtar olarak ilan eder.
• Seçilen asal çarpanları ise saklar.
• Ortak anahtarı kullanan biri herhangi bir mesajı
şifreleyebilir, ancak şu anki yöntemlerle eğer
ortak anahtar yeterince büyükse sadece asal
çarpanları bilen kişi bu mesajı çözebilir.
• RSA şifrelemeyi kırmanın çarpanlara ayırma
problemini kırmak kadar zor olup olmadığı hala
kesinleşmemiş bir problemdir.
Anahtar Üretimi
1.
İki adet birbirinden değişik asal sayı seçin, bunların adını da p ve q koyalım.
– Güvenlik amacıyla p ve q sayıları rastgele seçilmeli ve yakın uzunlukta olmalıdırlar. Bu sayılar
asallık testi kullanılarak etkin bir şekilde bulunabilir.
2.
n=p*q hesaplayın.
–
3.
4.
n özel ve ortak anahtarlar için mod değeri olarak kullanılacaktır.
Bu sayıların totientı olan
hesaplayın.
Bir tam sayı üretin ve adını da e koyun. Bu sayı,
koşuluna uygun
olmalı ve
ile en büyük ortak böleni 1 olmalıdır (başka bir deyişle ve kendi
aralarında asal olmalıdır).
– e ortak anahtar olarak açıklanır.
– Bit uzunluğu kısa olan ve küçük Hamming Ağırlığına sahip e değerleri (yaygın olarak 0x10001 =
65,537) daha verimli şifreleme sağlarlar. Fakat küçük e değerleri (örneğin 3) bazı durumlarda
güvenliği azaltabilir.
5.
olacak şekilde bir d'yi belirleyin.
–
–
•
d özel anahtar üssü olarak saklanır.
d değeri genellikle Genişletilmiş Öklid Algoritması kullanılarak hesaplanır.
Ortak anahtar mod değeri olan n’den ve ortak üs olan e’den oluşur. Özel anahtar
ise mod değeri olan n’den ve özel üs olan ve gizli kalması gereken d’den oluşur.
(p,q,p(n) değerleri de gizli kalmalıdır çünkü d’yi hesaplamada kullanılırlar.)
• Örnek olarak; Ayse ve Ali arasında özel bir eposta gönderilecektir.
• Ayşe, Aliye bir e-posta yazar. E-postayı
yazdıktan sonra RSA algoritması kullanarak
ikisi tarafından bilinen ortak anahtar ile
şifreler.
• Ali, e-postayı açmak için yalnız kendinin bildiği
özel anahtar ile geri şifreleme yapar. Mesaj
artık güvenli bir şekilde Alinin eline geçmiştir.
• Ortak Anahtarlı Asimetrik Şifrelemeler,
– Askeri güvenlik,
– e-ticaret siteleri,
– VPN (Virtual Private Network - Özel Sanal Ağlar)
• gibi yüksek güvenlik çözümleri isteyen siteler
tarafından kullanılır.
• Temelde RSA şifrelemesi iki asal sayının
çarpımına dayanır.
• Çok büyük basamaklı iki asal sayının
çarpımının hangi iki asal sayı olduğunu bulmak
oldukça zordur.
• RSA algoritmasının kullanım sahasına örnek
verecek olursak SSH (Secure Shell) programının
kullanıcı yetkilendirilmesini verebiliriz.
• SSH genelde unix sistemlerde kullanılan uzak
komut kabuğudur. Genelde uzaktaki makinelerin
komut istemine düşmek için SSH kullanılır.
• Telnetten en önemli farkı ise aradaki haberleşme
şifrelenerek gerçekleşir.