14 Nisan 2019 Pazar

ASP.Net Web API TFA Uygulaması



Merhaba,

Google Authenticator tarafından oluşturulan TOTP kodları kullanarak ASP.NET  Web Api si ile istek başına TFA kullanımından kısaca bahsedeceğim.

ASP.NET Web API normalde bir faktöred dayalı kimlik doğrulama ile çalışılır. HTTP kimlik doğrulama üstbilgisi temel düzeninde gönderilen bir şifrenin bilgi faktörüdür. 

Birkaç önemli API için çağrılar, ASP.NET Web API, güvenliği iki faktörlü güvenliğe yükseltir ve TOTP kodunu ek olarak talep eder. 

Transfers Controller sınıfındaki HTTP POST işleyen eylem yöntemi, TFA kullanarak güvenceye almaya çalışacağımız şeydir. Eylem yöntemlerini seçmeli olarak güvenceye almamız gerekiyor.  TFA'yı uygulamak için Yetkilendirme filtresini alt sınıfa seçeriz. Bu filtre, TOTP kodunun istemci uygulaması tarafından özel bir HTTP isteği başlığında adının gönderilmesini bekler.  Tüm API çağrıları için parolanın bilgi faktörü gerekir. Dolayısıyla, ilgili kimlik doğrulama bir mesaj işleyicide mantık uygulanacak.

Aşağıda, istek başına TFA sabitini uygulamak için gereken adımlar vardır.

Transfers Controller sınıfının HTTP POST eylem yöntemi:



public class BasicAuthenticationHandler : DelegatingHandler
{

 private const string SCHEME = "Basic";
 protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
 var headers = request.Headers;
  if (headers.Authorization != null && SCHEME.Equals(headers.Authorization.Scheme))
  {
    string credentials = Encoding.UTF8.GetString(Convert.FromBase64String(                                                                                                                  headers.Authorization.Parameter));
    string[] parts = credentials.Split(':');
    string userId = parts[0].Trim();
    string password = parts[1].Trim();
     // TODO - Kullanıcı id ve şifrenin burada saklandığının doğrulanması.

if (true)
{
   var claims = new List<Claim>
{
  new Claim(ClaimTypes.Name, userId)
};


var principal = new ClaimsPrincipal(new[] {new ClaimsIdentity(claims, SCHEME) });

Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
   HttpContext.Current.User = principal;
}
}

 var response = await base.SendAsync(request, cancellationToken);
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
  response.Headers.WwwAuthenticate.Add(new AuthenticationHeaderValue(SCHEME));
}
  return response;
}
}





Mesaj işleyicileri listesine eklemek; 
App_Start klasörü altındaki WebApiConfig.cs,  config.MessageHandlers.Add

(new BasicAuthenticationHandler ());



  • HttpRequestMessage sınıfına bir uzantı yöntemi ekleyeceğiz,
  • Helpers klasöründe RequestHelper adlı yeni bir statik sınıf oluşturacağız.
  • Sınıfı oluşturmadan önce klasörü oluşturacağız,
  • TOTP kodu X-TOTP'de mevcutsa, yöntem onu alır.
  • Sonra statik bir yöntem GetPastCurrentFutureOtp çağırır Son 30 saniyeye karşılık gelen Totp sınıfında bloklanan üç TOTP kodunu döndürülür , şuanki  TOTP ve bir sonraki 30 saniyelik bloğa karşılık gelen ikinci TOTP bloklarına uyanlar alınır.

Örnek aşağıdaki gibi olacaktır.

Bu kod çalıştırıldığında saatin 08:35:07 AM olduğunu kabul ettiğimizde bize aşağıdaki gibi 3 TOTP kodu dönecektir.

  1. TOTP zaman aralığındaki 08:34:30 AM–08:34:59 AM (Geçmiş).
  2. TOTP zaman aralığındaki 08:35:00 AM–08:35:29 AM (Şuanki).
  3. TOTP zaman aralığındaki 08:35:30 AM–08:35:59 AM (Gelecek)  


RequestHelper Sınıfını eklemek;

public static class RequestHelper
{
 public static bool HasValidTotp(this HttpRequestMessage request, string key)
{
 if (request.Headers.Contains("X-TOTP"))
{
   string totp = request.Headers.GetValues("X-TOTP").First();
   // Geçmiş , şimdiki ve gelecekteki TOTP kontrolü
 
  if (Totp.GetPastCurrentFutureOtp(key).Any(p => p.Equals(totp)))
   return true;
}
   return false;
}
}
  


Gelen TOTP gelen 3 şifreden biri ile eşleşiyorsa kodun doğruluğu kabul edilir.  Buradaki 3 OTP den birinin olmasının nedeni ise Sunucudaki saatin, mobil telefondaki saatin, kodun çalıştığı yerdeki saatin Google Authenticator tarafından oluşturulmasıdır.


Infrastructure  klasöründe yeni bir Totp adında sınıf oluşturup, Listede sadece GetPastCurrentFutureOtp  fonksiyonu yer alsın.



public class Totp
{
public static IList<string> GetPastCurrentFutureOtp(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);
var otps = new List<string>();
otps.Add(GetHotp(base32EncodedSecret, counter - 1)); // Bir önceki  OTP
otps.Add(GetHotp(base32EncodedSecret, counter)); // Şuanki OTP
otps.Add(GetHotp(base32EncodedSecret, counter + 1)); // Bir sonraki OTP
return otps;
}
private static string GetHotp(string base32EncodedSecret, long counter)
{
byte[] message = BitConverter.GetBytes(counter).Reverse().ToArray(); 
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;
return hotp.ToString().PadLeft(6, '0'); 

}
}



Daha önceden kullanılan delegasyon işleyicisi şifrenin bilgi faktörüne dayanan doğrulanmış kimliğini oluşturur.

Kullanıcı adı alınması için IsAuthorized yöntemini override ederek, messagehandler  Thread.CurrentPrincipal üzerinden kullanalım.

Kullanıcı için örnekte hardcoded şifre girişi yapılmıştı. Bunun yerine otomatik üretiken şifre kullanılması daha uygun olur. 

HasValidTotp uzantısını kullanarak, gelen TOTP'yi doğrulayın ve geri dönün, Gelen TOTP geçerliyse geçerlidir. Aksi takdirde, false döndürün.

Burada false döndürmek, 401 yanıt statüsüne neden olur ( Yetkisiz.)
401 ile birlikte, TOTP’nin gerektirdiğini belirten bir sebep ifadesi gönderin.

HandleUnauthorizedRequest yönteminin geçersiz kılınması sağlamak.

Two Factor Attribute sınıfı Infrastructure klasörü altında yaratalım.



public class TwoFactorAttribute : AuthorizeAttribute
{

protected override bool IsAuthorized(HttpActionContext context)
{

  IIdentity identity = Thread.CurrentPrincipal.Identity;
  if (identity.IsAuthenticated && !String.IsNullOrWhiteSpace(identity.Name))
{

string key = "JBSWY3DPEHPK3PXP";
if (context.Request.HasValidTotp(key))
{
 return true;
}
}
 return false;
}

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{

actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
ReasonPhrase = "TOTP code required"
}; } }
  



TransfersController adı ile yeni bir  Web API denetleyicisi oluşturup, İşlem sonrasında Two Factor filtresini uygularız. 

İstek sonucunda geçerli bir TOTP içeren X-TOTP başlığı içerdiğinden emin olmamız lazım, Değilse 401 izinsiz durum kodu geri döndürürüz.

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.

25 Kasım 2012 Pazar

Parasal Aktarım Mekanizması

   Kısa vadeli faiz oranlarının para politikası aracı olarak kullanan Merkez Bankaları faiz kararları ekonomiyi temel alarak dört kanal aracılığıyla etkilemektedir.




1 Mayıs 2012 Salı

2000 Yılından Sonra Para ve Döviz Kuru Politikaları

   2001 yılında IMF ile stand-by anlaşması ile güçlü ekonomiye geçiş adı altında program uygulamaya geçilmiş. 
   Para Politkası; finansal piyasalara istikrar sağlayacak ana hedefi fiyat istikrarı olacak. Bu programdaki fark: para politikası dalgalı döviz kuru rejimi altında uygulanmasıdır. Parasal kontrolü sağlamak için NİV (Net iç Varlıklar) üst, NDV (Net Dış Varlıklar) alt sınır uygulanmıştır. IMF kredilerin iç borç ödemesinde kullanılması parasal taban oluşacak, artışı önlemek için döviz satışı yapılmıştır. 
   Döviz kuru sistemi; serbest döviz kuru sistemi olarak belirlenmiştir. Merkez Bankası döviz piyasasına sadece iki nedenden dolayı müdahale edecektir.
-IMF tarafından verilen kredinin Hazine tarafından kullanılması sonucunda piyasada oluşacak aşırı likiditeyi strelize etmek için,
-Döviz kurundan kısa dönemde oluşacak aşrı dalgalanmaları önlemek için.

Para Politikası :
1-TÜFE oranını 2000 yılı sonuna kadar %35 düşürmek.
2-2002 yılı ortalarına kadar enflasyon hedeflemesi için önkoşulların sağlanması durumunda yılın ikinci yarısında enflasyon hedeflemesine geçilmesi.
3-Kısa vadeli faiz oranları enflasyon hedeflemesine geçilmesi. "Örtük enflasyon hedeflemesi"
4-Finansal piyasaların derinliğini arttırmak, etkin bir şekilde çalışmasını  sağlamak.
5-Merkez Bankası son kredi vermek mercii olacak geç likidite penceresi 16:00-16:30 saatleri arasında teminat karşısında bankaları sınırsız fonlayabilecektir.
6- IMF tarafından sağlanan ek finansmanların Hazine tarafından bütçe ihtiyaçlarında kullanılması ile ortaya çıkan likidite döviz satışları bankalara sağlanan finansmanın sonrasında likidite fazlasını ters repo ile sterilize edebilecektir.
   2002 yılında görülen örtük enflasyon hedeflemesi başarısı açıkça görülmüştür. TL depo işlemleri, açık piyasa işlemleri  İMKB Repo - Ters Repo işlemleri ile çekilmeye devam edilmektedir. 
Bankaların ihtiyaç duyacağı likidite ihtiyacı aşağıdaki yollar ile sağlanır:

1-Bankalar 10:00 - 16:00 saatleri arasında mevcut limitleri dahilinde Merkez Bankasına borç vermekte yada borç alabilmektedir.
2-Gün içi likidite limiti: Bankalar gün içerisinde oluşan likidite ihtiyaçlarını 09:00 - 15:00 saatleri arasında gün sonunda ödemek suretiyle Merkez Bankasında sağlayabilmektedir.
3-Geç likidite penceresi: Bankalar gün sonunda likidite ihtiyaçlarını Merkez Bankasına 16:00-16:30 saatleri arasında yeterli teminatı bulundurmak şartıyla sınırsız borçlanabilmektedirler.

   Merkez Bankası döviz kurunun serbest rejime geçmesi ile müdahale edememektedir. Sadece aşırı dalgalanmaları önlemek amacıyla müdahalede bulunabilmektedir.
   2002 yılında yüzde 35 olan enflasyon oranı 2004 yılında yüzde 9.3, 2005 yılında yüzde 7.9 düşmüştür.

   Merkez Bankası 2006 yılında açık enflasyon hedeflemesi rejimi uygulamasına geçmiştir. Para Politikası uygulaması TCMB insiyatifindedir. 2008,2009,2010 yılları içerisinde hedef %4 olarak açıklanmış, kısa vadeli faiz oranları temel politika aracı olarak kullanılmaya devam edilmiş.

Güçlü Ekonomiye Geçiş Programı - Maliye Politikası

   1980 yıllarda artan bütçe açıklarına neden olan yüksek miktarda iç ve dış borçlanma stoku, enflasyon, faiz oranlarının arttırılarak büyüme için olumsuz bir ortam yaratılmış. Mevcut kaynaklarını bütçe finansmanı için kullanılması sonucunda oluşan dışlanma etkisi özel yatırım harcamalarını önemli bir şekilde azaltmış. Kamu borçlarının çevrilmesi ilişkin olumsuz beklentiler reel faiz oranlarının yükselmesine borç-reel faiz oranı döngüsüne girilmesine neden olmuş.
   Kamu bankaları yoluyla yapılan transfer ödemeleri giderler arasında görünmemiş ve banka bilançolarında faiz işletilerek aktif olarak görünmüş.IMF - DB ile yapılan görüşmelerde görev zararı olarak tanımlanan bu giderler hesaba katılınca kamu borç stoku ve faiz ödemelerindeki artış ortaya çıkmış.
  Yüksek enflasyon , düşük büyüme tuzağında kurtulabilmek için kamu kesiminin borçlanma gereksinimini azaltacak yapısal reformların yapılması gerekmekteydi. Kamu kesiminin borçlarının azaltılması, hem enflasyon hemde reel faiz oranlarının düşmesine katkıda bulunacak. Reel faiz oranların düşmesi özel yatırım harcamalarını teşvik ederek ekonomik büyümeyi hızlandıracaktır.
   Bu amaçlara ulaşabilmek için uygulanacak programda;
1-Sıkı maliye politikası, faiz dışı bütçe fazlasının arttırlması, özelleştirmeye hız kazandırılması,
2-Enflasyon hedefi ile uyumlu gelirler politikasının uygulanması,
3-Ekonomik birimlere uzun dönemli bakış açısı kazandırılması,Para ve döviz kuru politikasının uygulanması,

Döviz kuru politikasına göre enflasyon ile uyumlu 1 ABD doları 0.77 Euro oluşan döviz sepeti değer 1 yılı kapsayacak şekilde günlük olarak açıklanmıştı. Bu uygulamanın amacı enflasyonist beklentiyi düşürmektir.
Para Politikası için parasal kontrolü sağlamak için Merkez Bankası bilançosundaki Net İç Varlıklar tavan Net Dış Varlıklara taban sınırı konumuştur.  Böylelikle para ve döviz kuru politikalarını Merkez Bankasının bilançosundan takip edilebilmekteydi. 
Net İç Varlıklar kalemi genel olarak merkez bankasının dış varlıkları haricinde piyasaya ne kadar para verdiğini ve piyasadan ne kadar para çektiğini göstermektedir. Döviz kuru politikasına göre Merkez Bankası belirlenen döviz kurundan döviz satın alabilecek Türk Lirası yaratma işlemi sadece döviz satması ile yapılabilecektir. 

Merkez Bankasının Politika Araçları :
-Zorunlu karşıklı oranı , disponibilite oranı,
-Açık Piyasa işlemleri,
-Bankalararası piyasa işlemleri,
-Döviz Piyasası işlemleri.

Programının uygulanası ile enflasyon oranı beklenenin üzerinde gerçekleşmiş Türk Lirası aşırı değer kazanmış ithalat artarak ihracat azalmış ve cari işlemler açığı artmış.

Bankacılık Krizi - Maliye Politikası

   Finansal liberalizasyon sürecinde geçekleştirilen bankacılık sektörüne giriş ve rekabeti kolaylaştırıcı yasal ve kurumsal düzenlemelerin etkisiyle sektörde göze görülür bir gelişme olmuştur. Büyük ölçüde menkul değerler cüzdana yansıtılırken kredililer çok düşük düzeyde kalmıştır. Bu olumlu gelişmlere karşın üretim faaliyetlerinin desteklenmesi, uzun vadeli yatırımlara dönüştürülmesi açısında başarı elde edildiği söylemek zordur. Nedenler ise makroekonomik istikrarsızlık ve yanlış kamu politikalarından kaynaklanırken, bankacılık sektöründeki yapısal bozukluklar düzenleme ve denetim yetersizliğinden kaynaklanmıştır. Kamu kesimi borçlanma gereksinimi finansmanına yönelik politikaların etkisiyle kamuya kaynak aktarır hale gelmiş, yüksek faiz oranları arbitrajı teşvik etmiş bankalar yurt dışından borçlanarak kamu kesimine finansman sağlamış. Bankacılık sektörünün döviz açık pozisyonların artması ile sonuçlanmış. 
   Reel Sektörde bile faaliyet dışı karlar faaliyet karının çok gerisinde kalmış. Denetim yetersizliği saydamlık eksikliği, kaynak sağlamadan eksiklik bankacılık sistemini likidite , faiz, kur risklerine karşı kırılgan hale getirmiş. 1994 krizi ardından 1990 yılların sonundan yaşanan kriz ile büyük zarar görmüş. 

   2001 ortalarına doğru uygulama programına gidilmiş, temek hedefleri arasında kamu bankaların yeniden yapılandırılması Tasarruf Mevduat Sigorta Fonuna (TMSF) devredilmiş bankaların işlemlerini kısa sürede tamamlaması krizden olumsuz etkilenen bankaların sağlıklı yapıya kavuşturulması yer almış. Görev zararı ile bu zararlar tahakkuk etmiş faiz karşılığında DİBS verilerek zarar tasfiye edilmiş. 1990 yılların ikinci yarısında TMSF ye devredilen bankaların yirmiye yakın banka ile çalışma başlatılmış, bir kısmı birleştirilmiş bir kısmı yerli ve yabancı yatırımcılara satılmış.

1994 Krizinde Maliye Politikası

   Kamu ve özel sektörlerin davranışları ile açıklamak mümkündür. Kamu sektörü hükümetin uyguladığı maliye ve para politikaları ile özel sektör davranışı ise bekleyiş ve eylemleri ile değerlendirilmektedir.  Krizin maliye politikasına bakan kısmı kamu açıkları ve bunların finansmanı yöntemidir. Kamu açıklarının finansmanı iç borçlanma yolu seçilmiştir. Bu dönemde kamu harcamaları azalmadığı gibi arz-yönlü iktisat politikaları doğrultusunda vergi indirimlerine gidildiğinden kamu açıkları büyümüştür. Dış kaynak ile beslenen ekonomi faizlerin düşürülmesi ile kısa vadeli fonlar cazip olmaktan çıkmış ciddi bir finansal sıkıntıya girilmiştir. Türk Lirasının değerlenmesi ile ihracatın yeterli düzeyde yapılmaması döviz ihtiyacını arttırmış.
   Hükümet kısa vadeli borçları azaltarak Merkez Bankasından kısa vadeli avans ağırlık vermeye başlamış. Hükümetin kısa vadeli avansa başvurabileceği miktar bütçe ödeneklerinin %15 i sınırlıdır. 1993 yılında döviz rezervlerinin 30% ulaştı. Merkez Bankası parasal disiplin sağlayacak gücünü belirli ölçüde kaybetmiş oldu.

Krizden sonra parasal disiplin sağlamak üzere kısa vadeli avanslarla ilgili kısıtlayıcı düzenlemeye gidildi. Devler diğer finansman aracı olan iç borçlara yüksek oranda faiz vererek yeniden yönlendi.