One Time Password genel olarak araştırdığımda fazla bilgi yoktu fakat Tek Kullanımlık şifre şuanda günümüzde sıkça kullanılmaktadır.Bununla birlikte şuanda herhangi bir bankada internet şubesine erişim sağlandıktan sonra yapılacak işlemler için Tek Kullanımlık şifre cep telefonumuza kısa mesaj yoluyla ulaştırılmaktadır. Bunun yanında cep telefonu şirketleride aynı uygulamayı önemli yerlerde kullanmaktadır. Bunun yanında tek kullanımlık şifre oluşturan şifrematikler bankalar tarafından müşterilerine verilmeye başlanmıştır bile.
Tek kullanımlık şifre ile ilk karşılaşmam Dan Brown’ ın İhanet Noktası kitabında dünyadaki tüm şifreleri kırabilen ve çok yüksek veri akışı olan bilgisayara; zamana göre şifresi değişen bir şifreleme metodu kullanılarak şifrelenmiş dosyanın, şifreyi çözmek için verilmesini konu alan bir romandı. Bu şifrenin kırılması gerçekten imkansızdı. Çünkü böyle bir şifre yoktu. Bunu yazan kişi sadece trojen yazıp, süper bilgisayara sokmuştu. Tabi bunu romanın sonuna kadar okuyup anlamanın heyecanı gerçekten Tek Kullanımlık Åifrenin önemini gösterdi.Bununla birlikte şuanda herhangi bir bankada internet şubesine erişim sağlandıktan sonra yapılacak işlemler için Tek Kullanımlık Şifre cep telefonumuza kısa mesaj yoluyla ulaştırılmaktadır. Bunun yanında cep telefonu şirketleride aynı uygulamayı önemli yerlerde kullanmaktadır. Bunun yanında tek kullanımlık şifre oluşturan şifrematikler bankalar tarafından müşterilerine verilmeye başlanmıştır bile. Neden tek kullanımlık şifre? Adındanda anlaşılacağı gibi kişinin şifreyi tek sefer kullanabilmesi daha sonrasında aynı şifrenin başkasının eline geçmesiyle yapabileceği bir şey olmamasını göstermektedir. Sonraki denemede bu şifre geçersiz olacaktır. Bu şifreler tek yönlü şifrelerdir.
Tek kullanımlık şifre 1995 yılında çıkmıştır. 13 yıllık bir geçmişinin olduğunu kim düşünebilirki. OTP; S/KEY (S/KEY; Bellcore’ nin markasıdır.) tarafından geliştirilmiştir. Ağa bağlı olan bilgisayar sistemlerinde başkalarını gizlice dinleyip onların kullanıcı adı, şifre gibi gerçek bilgilerini bir form ile saldırarak alınabilir. Daha sonra kullanılmak üzere bu bilgiler kaydedilir. Tek kullanımlık şifreler (OTP – One Time Password) tekrar saldırısı adıyla anılan bu şifreye dayalı saldırıları engellemek amacıyla
tasarlanmıştır. Doğru sistemler tek kullanımlık şifre oluşturarak dosyadaki gizliliği kaldırır.
S/KEY tek kullanımlık şifreli sistemlerin iki yüzü vardır. Alıcı tarafında, hemen hemen şifre oluşturulmuştur. Verici tarafında, sunucu tek kullanımlık şifreyi onaylamalı ve kullanıcının gizli birkaç sözcükten oluşan (phrase) şifresini değiştirmeye izin vermelidir.
S/KEY sistem alıcısı kullanıcı gizli şifresini bir çok karmaşık fonksiyondan geçirir ve tek kullanımlık şifreyi oluşturur. Her kullanım için uygulamalar teke düşürülür. Böylece tek seri şifre oluşturulur. Verici tek kullanımlık şifreyi karmaşık fonksiyonla geçen şifreyi doğrular ve sonuçları bir önceki şifreyle karşılaştırır. Bu teknik ilk olarak Leslie Lamport tarafından önerilmiştir.
Güvenli Karmaşık Fonksiyon (Secure Hash Function) :
Güvenli karmaşık fonksiyon yönlendirme rotasını kolaylıkla hesaplar fakkat yapılamaz ölçümleri ters düz eder. S/KEY sistemleri MD4 mesaj kavrama algoritması temeli ile Ronald Rivest tarafından tasarlanmıştır. S/KEY doğruluğu kanıtlanmış sistemler hazırlarken, MD5 mesaj kavrama piyasaya sunuldu. MD4 kullanılmaya devam etti. Büyük sayıda alıcı programlar dağıtılmıştı. Bazı siteler MD5 e benzer özelliklerde temel sistemler geliştirdi. Açıktıki vericiler ve sunucular aynı güvenli karmaşık fonksiyonu kullanmalıydılar.
S/KEY tek kullanımlık şifreleri 64 bit uzunluğa sahiptir. Bu güvenlik için yeterli uzunlukta ve önemli durumlarda elle girmek için yeterli kısalıktaydı.
S/KEY sistemleri son çıkan 64 bitlik çıktı verisi ile güvenli karmaşık fonksiyonlarda çoğu zaman güvenliği ön planda tutmuştur. MD4; istenilen bit kadar giriş yapılabilmeyi ve çıktı olarakta 128 bit çıktı verebilmeyi kabul etmiştir. S/KEY gübenli karmaşık fonksiyonunda MD4; 64 bitlik giriş alıp gene 64 bitlik çıkış verir.
MD4 Mesaj Kavrama Algoritması :
MD4_CTX md;
unsigned char result[16];
strcpy(buf, seed); /* seed must be in lower case */ (küçük harflerle yazılmalı)
strcat(buf, passwd);
MD4Init(&md);
MD4Update(&md, (unsigned char *)buf, strlen(buf));
MD4Final(result, &md);
/* Fold the 128 bit result to 64 bits */ (128 bitlik veri 64 bit e dönüşür.)
for (i = 0; i < 8; i++)
result[i] ^= result[i+8];
SHA Güvenli Karmaşık Algoritması :
SHA_INFO sha;
unsigned char result[16];
strcpy(buf, seed); /* seed must be in lower case */ (küçük harflerle yazılmalı)
strcat(buf, passwd);
sha_init(&sha);
sha_update(&sha, (unsigned char *)buf, strlen(buf));
sha_final(&sha); /* NOTE: no result buffer */
/* Fold the 160 bit result to 64 bits */ (160 bitlik veri 64 bit e dönüşür.)
sha.digest[0] ^= sha.digest[2];
sha.digest[1] ^= sha.digest[3];
sha.digest[0] ^= sha.digest[4];
/*
* copy the resulting 64 bits to the result buffer in little endian
* fashion (analogous to the way MD4Final() and MD5Final() do).
*/
for (i = 0, j = 0; j < 8; i++, j += 4)
{
result[j] = (unsigned char)(sha.digest[i] & 0xff);
result[j+1] = (unsigned char)((sha.digest[i] >> 8) & 0xff);
result[j+2] = (unsigned char)((sha.digest[i] >> 16) & 0xff);
result[j+3] = (unsigned char)((sha.digest[i] >> 24) & 0xff);
}
Tek kullanımlık Şifre Adımları :
Tek kullanımlık şifrenin oluşturulması.
Tek kullanımlık şifrenin doğrulanması.
Tek Kullanımlık Şifre Örnekleri :
Input:
Pass Phrase: Too_short
Seed: iamvalid
Count: 99
Hash: ANY
Output:
ERROR: Pass Phrase too short
Input:
Pass Phrase:
1234567890123456789012345678901234567890123456789012345678901234
Seed: iamvalid
Count: 99
Hash: ANY
Output:
WARNING: Pass Phrase longer than the recommended maximum length of 63
Input:
Pass Phrase: A_Valid_Pass_Phrase
Seed: Length_Okay
Count: 99
Hash: ANY
Output:
ERROR: Seed must be purely alphanumeric
Input:
Phrase: A_Valid_Pass_Phrase
Seed: LengthOfSeventeen
Count: 99
Hash: ANY
Output:
ERROR: Seed must be between 1 and 16 characters in length
Input:
Pass Phrase: A_Valid_Pass_Phrase
Seed: A Seed
Count: 99
Hash: ANY
Output:
ERROR: Seed must not contain any spaces
Input:
Pass Phrase: A_Valid_Pass_Phrase
Seed: AValidSeed
Count: 99
Hash: MD5
Output:
Hex: 85c43ee03857765b
Six Word(CORRECT): FOWL KID MASH DEAD DUAL OAF
Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL NUT
Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL O
Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL OAK
Kaynaklar :
http://tools.ietf.org/html/rfc2289
http://tools.ietf.org/html/rfc1760