İnkâr edilebilen şifreleme

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

İşleme şekli
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
#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
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

Bilgisayar bilimi
Kriptoloji
İnkârcılık