İnkâr edilebilen şifreleme

Vikipedi, özgür ansiklopedi
(İnkar edilebilen şifreleme sayfasından yönlendirildi)

İnkâr edilebilen şifreleme (İngilizceDeniable encryption), kriptografi ve steganografide kullanıcılarına şifrelenmiş bir bilginin varlığını inandırıcı şekilde inkâr edebilme[1] imkânını sunan, karşı tarafı aldatmak için kullanılan usuldur.

İşleme şekli[değiştir | kaynağı değiştir]

Bu usulde ele geçirilen kişi, şifreleme sisteminin hileli anahtarını söyler, karşı taraf anahtarı kullanarak sistemdeki açık bilgiye ulaştığını sanır, ancak aslında elde ettiği bilgi yanlıştır, zira ona yanlış (hileli anahtar) verilmiştir.

Bu durum kolay bir örnek ile açıklanabilir.

Amacımız iki anahtar çıkarmak ve anahtarlardan birisini gerçek bilgiyi açmak için, diğerini ise inkâr etmek için kullanacağız.

Açık ileti: SabahMarsta

İnkâr iletisi: SabahAyda

Anahtar: 2

İnkâr anahtarı: 3

Algoritma ilk evvel anahtarla açık iletiyi, daha sonra inkâr iletisini şifreler. Daha sonra iki şifrelenmiş metni birleştirerek şifreli iletiyi ortaya çıkarır. Şifrelenmiş metin herhangi bir yolla ele geçirilirse karşı tarafı aldatmak için açık iletinin anahtar ile şifrelenmiş halini ve inkâr anahtarını verir. Karşı taraf da şifreli iletiden bu iletiyi çıkararak yanlış bilgiyi ele geçirir.

C++ kodu[değiştir | kaynağı değiştir]

#include <iostream>

using namespace std;
void surushdur(char ileti[], int anahtar){
    int i=0;
    while (mesaj[i]!='\0'){
    ileti[i]+=anahtar;
    if (ileti[i]>122)
    ileti[i]-=26;
    i++;
    }
    }
   
void topla(char ileti1[],char ileti2[]){
    int i = 0;
    while(ileti1[i]!='\0'){
        int temp = ileti1[i]+ileti2[i];
        while(temp>122)
        temp-=26;
        ileti1[i]=temp;
        i++;
    }
}
int main()
{
    char acik[100] = "SabahMarsta";
    char inkâr[100] = "SabahAyda";
    int anahtar = 2;
    int inkâranahtar = 3;
    surushdur(acik, anahtar);
    surushdur(inkar, inkâranahtar);
    printf("Sifreli acik: %s\n", acik);
    printf("Sifreli inkâr: %s\n", inkâr);
    topla(acik,inkar);
    printf("toplanmis: %s\n",acik);
}

sonucu

Sifreli acik: UcdcjOctufc
Sifreli inkâr: VdedkDbgd
toplanmis: wyaymywsqfc

Analizi[değiştir | kaynağı değiştir]

Kodun çıkışından da anlaşılacağı üzere şifreli ileti olarak toplanmış ileti gönderilecek. Bu iletiyi alan karşı taraf iletiyi açmak için aşağıdaki kaideyi kullanacak:

açık ileti = toplanmış - şifreli inkâr - anahtar

Bu kaide sonucunda, "SabahMarsta" iletisi alınacak.

Herhangi bir şekilde karşı tarafın aldatılması istendiğinde ise aşağıdaki kaide kullanılacak:

inkâr iletisi = toplanmış - şifreli açık - inkâr anahtarı

Bu kaide sonucunda, "SabahAyda" iletisi bulunacak ve karşı taraf anahtarları girdikten sonra bulduğu bu iletiyi doğru sanacak.

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Bkz.A. Czeskis, D. J. St. Hilaire, K. Koscher, S. D. Gribble, T. Kohno & B. Schneier. "Defeating Encrypted and Deniable File Systems: TrueCrypt v5.1a and the Case of the Tattling OS and Applications". 27 Haziran 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Temmuz 2013. .