5 Ağustos 2018 Pazar

One Time Password { O T P }


   Google Authenticator uygulaması tarafından kullanılan HOTP TOTP algoritamasını kullanaraka C# da basit kod yazacağız. Makalem bir kaç bölümden oluşacak. Konuyu detaylandırmaya çalışacağım.

Gizli 80 bit üretilen HOTP kodu 6 basamaklıdır.

1-HOTP fonksiyonu iki input bekler ve  gizli anahtar ve counter gerekir.

2-BitConvert kullanılarak counter a gelen baytla alınır. Windows baytları depolama için küçük endian anlaşması kullanır. İstediğimizi almamız için biz burada işi tersine çevirmemiz gerekiyor.

3-base32 encoded edilmiş gizli anahtar decode edilir. Bu işin çıktısı aşağıdaki gibir.



4-Her bir array byte için HMAC SHA-1 yaratılabilmesi için ikinci adımda belirtilen base32-decode gizli anahtarı kullanılır.

5-Truncate the hash için RFC 4226 dan örnek alınan mantık kullanılıyor. Truncate Hash modulü gücü 6 dan 10 yükselterek HOTP nin 1 milyon olmasını sağlar.

6- Son olarak öneki sıfırlanan kodun 6 basamaklı olduğunda emin olacağız ve dizge olarak geri dönüş yapacağız.


public static string GetHotp(string base32EncodedSecret, long counter)
{

byte[] message = BitConverter.GetBytes(counter).Reverse().ToArray(); // Assuming Intel machine (little endian)
byte[] secret = base32EncodedSecret.ToByteArray();

HMACSHA1 hmac = new HMACSHA1(secret, true);

byte[] hash = hmac.ComputeHash(message);

int offset = hash[hash.Length - 1] & 0xf;
int truncatedHash = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) | ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);

int hotp = truncatedHash % 1000000; // 6-digit code and hence 10 power 6, that is a million

return hotp.ToString().PadLeft(6, '0');

}

HOTP algoratiması üzerine TOTP algoritması uyguluyoruz. TOTP jenaratör kodu üretmek için  HOTP jenaratörü kodu kullanılıyor.

Sayaç parametresi kullanmıyoruz onun yerine mevcut tarih ve saatten yararlanacağız. 01 Ocak 1970 UTC gece yarısından sonra kullanılan zamana kadar geçen saniye sayısı 30'a bölünür ve en yakın tam sayıya yuvarlanır. Elde edilen sayıs HOTP mantığında girdi olarak kullanılır ve geri dönüş değeri TOTP olarak dönülür.


TOTP Generator 

public static string GetTotp(string base32EncodedSecret)

{
    DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
   
    long counter = (long)Math.Floor((DateTime.UtcNow - epochStart).TotalSeconds / 30);
   
    return GetHotp(base32EncodedSecret, counter);

}



Son olarak TOTP jeneratörünüzü kullanan konsol uygulamamız Ana yönetimin kodunu gösterir.

TOTP kodu her 3 saniyede yazdırılır.



Test Program 


static void Main(string[] args)
{

string secret = "JBSWY3DPEHPK3PXP";

while (true)
{

Console.WriteLine("{0} {1}", DateTime.Now, GetTotp(secret));

        Thread.Sleep(1000 * 3);

        }
}

TOTP uygulamasının çıktısını gösteren konsol uygulaması. Oluşturulan OTP kodu ekranda kalır. 30 saniye boyunca geçerlidir.  Her 30 saniyede yeni bir kod oluşur. Zamanı arttırarak kullanıcının bu OTP kodunu kullanmasını sağlayabiliriz. Sistem kendi içerisinde doğrulama yapıyorsa bunun zamanını  network erişim hızına bağlı olarak azaltabiliriz.


Bu noktada mantığımız Google Autheticator ile uyumludur.


Uygulamayı değişik amaçlarla kullanabilmek için IOS , BlackBerry, Android telefonlar ile Google Autheticator uygulamasını alarak kullanılabilir.

Yada Uygulamanın server - client modülü  yazarak karşılıklı gelen OTP nin doğru olup olmadığını kontrol ederek geçerli ve geçersiz OTP nin ayrımına giderek uygulamalar yazabiliriz.





22 Temmuz 2018 Pazar

Şifreli E-Posta


    



 İnternet üzerinden e-posta gönderildiği için veri paketleriniz yakalanacak ve okunacaktır. Gizli bilgi içeren maillerinizi şifreleyebilirsiniz.

E-mailleri şifreleme için çoklu protoller vardır. Bunların içerisinde iki önemli olandan bahsetmek istersek;

• Secure Multipurpose Internet Mail Extension (S/MIME)
• Pretty Good Privacy (PGP)

Secure Multipurpose Internet Mail Extension  S/MIME güvenli sürümüdür. E-posta mesajlarının içerisine nesneleri gömer.

Kullanılan en yaygın ve desteklenen standart güvenli e-posta iletişimi PKCS #7  kullanır.

S/MIME ile bilrlikte gelir, popüler web tarayıcıları ve diğer mesajlaşma ürünü satıcıları tarafından da onaylanmıştır.

Asimetrik + Simetrik şifreleme yapan, oldukça iyi gizlilik yapabilen ücretsiz e-posta şifreleme sistemidir.  (PGP)


E-mail gönderildiğinde, döküman açık anahtar ile ve bir session key şifrelenir.

Session key oluşturmak için kullanılan tek kullanımlık rastgele bir sayıdır, Session key ortak anahtar ile şifrelenir ve şifre metni ile gönderilir.

Mesaj alındığında özel anahtar session key çıkarabilmek için kullanılır. Session key ve private key daha sonra şifre metnin şifresini çözmek için kullanılır.



12 Mayıs 2018 Cumartesi

Şifreleme Algoritmaları - 3





HASH Algoritma


* Simetrik ve asimetrik algoritmadan farklı olan bu algoritma karma işlevi ile tek yönlü şifreleme algoritmasını ifade eder.

* Bu demek oluyor ki bir şeyden sonra bu yöntemle şifrelenmiş ve şifresi çözülemez. Örneğin karma işlevli algoritma diskte saklanan parolayı ve digital imzayı şifrelemek için kullanılır.

* Herhangi bir zamanda bir şifre girilir girilen şifre ile aynı karma algoritma hesabı yapılır.

* Karşılaştırıldığında diskte saklanan parolanınkarma değeridir.

* İki karşılaştırma varsa kullanıcı iki parola yazmış olmalıdır.

* Bu özellik bir hacker ın yapabileceği şifrelerin okunabilir biçimde saklanmasını önler.

11 Şubat 2018 Pazar

Şifreleme Algoritmaları - 2



Asimetrik Şifreleme:

    Açık Anahtar şifrelemesi olarak bilinen asimetrik şifreleme iki ilgili anahtarı matematiksel olarak kullanılarak şifreleme işlemi yapılır.

Bir şifreleme anahtarı datayı şifrelemek için kullanılırken bir diğeri şifreyi çözmek için kullanılır.

Simetrik algoritmadan farklı olarak Gönderen ve Alıcıda bulunan bir yada birden fazla gizli anahtar değişimiden bu yöntem ile
güvenli başlangıç gerektirmez.

Genel anahtarlar birine yada birden fazla kişiye gönderilebilir veya digital sertifika kullanılabilir.

Secure Sockets Layer (SSL)/Transport Layer Security (TLS) ve
Pretty Good Privacy (PGP) tümü asimetrik anahtarlar kullanılır.

Popüler asimetrik şifreleme protokolleri  Diffie-Hellman ve RSA.

Örnek; 
İş ortağınızın size veri göndermesini isterseniz, Asimetrik şifrelemeye başlamk için iş ortağınıza açık anahtar gönderirsiniz.

İş ortağınızı datayı gönderilen anahtar ile  şifreleyecek ve size şifreli olarak gönderecektir.

Mesajdaki şifreyi çözmek için özel anahtarınızı kullanacaksınız.

Genel anahtar başkasının eline düşerse o kişi hala mesajın şifresini çözemez. Şifrelenmiş bir mesajın şifresinin çözülebilmesi için
özel anahtara ihtiyacını vardır.


4 Şubat 2018 Pazar

Şifreleme Algoritmaları-1



Şifreleme Algoritmaları-1


Şifreleme algoritmaları 3 sınıfa ayrılır.
1-Symmetric,
2-Asymmetric ve
3-Hash Function


Verileri Korumak için Şifre Kullanımı:

Şifreleme, verileri başka bir tarafından okunamayan bir biçime dönüştürme işlemidir.
Bir kullanıcı dosyayı şifrelendiğinde şifreli dosya diskte saklanır.
Şifre çözme işlemi ise şifreli formattan orginal formata dönüştürme işlemidir.


Simetrik Şifrelemeye bakış;

Simetrik şifreleme, verileri şifrelemek ve şifre çözmek için tek bir anahtar kullanır.

Bu nedenle aynı zamanda gizli anahtar, tek anahtarlı, paylaşımlı anahtar ve özel anahtar şifrelemesi olarak da bilinir.

Simetrik anahtar algoritmasını kullanmak için gizli anahtar değişiminin gönderen ve alıcı arasından değiştirilmesi gerekir.

Simetrik anahtar şifreleyicileri, blok şifrelere ve akış şifrelemelerine ayrılabilir.

Bir blok şifre bir blok düz metin ve bir anahtar alır ve daha sonra aynı boyutta bir şifre metni bloğu çıkarır.

İki popüler blok şifreleyici  DES (Data Encryption Standard ) ve  AES (dvanced
Encryption Standard ) bu şifreleyiciler ABD hükümeti tarafından şifreleme standartı olarak belirlenmiştir.

1976 yılında ABD Ulusal Standartlar Bürosu veri şifreleme standartı FIPS (Federal Information Processing Standard ) 

56 bitlik simetrik anahtar algoritması kullanımına dayanır.


Brute force ataklarda DES, nispeten küçük bir 56 bitlik anahtar boyutuna dayandığından,  yeni bir blok şifreleme algoritması geliştirmek yerine, Triple DES (3DES) 3 lü bağımsız anahtar yaratılmış.

3DES  DES şifrelemeye göre daha popüler geniş bir kullanım alanına sahiptir. ATM güvenliğinde, uzaktan erişim şifrelenmesinde ve e-mail güvenliğinin
şifrelenmesinde kullanılır.

DES ve 3DES  popüler olmasına rağmen yeni nesil şifreleme yöntemi gelişmiş  AES 2001 yılında duyurulmuş ve popülaritesi artmaya başlamıştır.

Bu standart 3 lü bloklar halinde şifreleme üzerine kurulmuş, (AES-128, AES-192,  AES-256) 128, 192, and 256 bits anahtar boyutuna sahip, 128 bit blok üzerindedir.

AES şifreleri kapsamlı olarak analiz edildi,  Wi-Fi Protected ile dünya çapında kullanılmaktadır. (Access 2 (WPA2) wireless encryption.)


Akış şifreleri, blok şifrelere karşıt olarak, uzun metrajlı bir materyal akışı sağlar, bit eşlem ya da karakterle oluşan karakteri düz metinle birleştirir.

RC4, hem Güvenli Yuva Katmanı (SSL) hem de Kablolu Eşdeğerde kullanılan, yaygın olarak kullanılan bir akış şifresidir (WEP)

RC4 basit ve hızıyla bilinmesine rağmen, anahtar akışı yok edilmez, rastgele olmayan veya ilgili anahtarlar kullanılır veya tek bir anahtar akışı iki kez kullanılır.