İnkar edilə bilən şifrləmə (deniable encryption) — Şifrlənmiş informasiya haqqında tam səlahiyyətli bir adamın ələ keçirilməsi vəziyyətində, qarşı tərəfi aldatmaq üçün istifadə olunan üsuldur.
İşləmə prinsipi
Bu üsulda ələ keçərilən adam, şifrləmə sisteminin hiyləli açarını söyləyir, qarşı tərəf açarı istifadə edərək sistemdəki açıq məlumata çatdığını zənn edir, ancaq əslində əldə etdiyi məlumat yanlışdır, çünki ona yanlış(hiyləli açar) verilib.
Yuxarıdakı bu vəziyyəti sadə bir nümunə ilə izah edək.
Məqsədimiz iki ədəd açar çıxarmaq və açarlardan birsini gerçək məlumatı açmaq üçün, digərini isə inkar etmək üçün istifadə edək.
Açıq mesaj: SabahMarsda
İnkar mesaj: SabahAyda
Açar: 2
İnkar Açarı: 3
Alqoritm ilk öncə açarla açıq mesajı, daha sonra inkar açarı ilə inkar mesajını şifrləyir. Daha sonra hər iki şifrlənmiş mətni cəmləyərək şifrli mesajı hasil edir. Şifrlənmiş mətn hər hansı bir yolla ələ keçirlərsə qarşı tərəfi aldatmaq üçün açıq mesajın açar ilə şifrlənmiş halını və inkar açarını verir. Qarşı tərəfdə şifrli mesajdan bu mesajı çıxaraq yanlış informasiyanı ələ keçirir.
C++ kodu
#include <iostream>
using namespace std;
void surushdur(char mesaj[], int achar){
int i=0;
while (mesaj[i]!='\0'){
mesaj[i]+=achar;
if (mesaj[i]>122)
mesaj[i]-=26;
i++;
}
}
void topla(char mesaj1[],char mesaj2[]){
int i = 0;
while(mesaj1[i]!='\0'){
int temp = mesaj1[i]+mesaj2[i];
while(temp>122)
temp-=26;
mesaj1[i]=temp;
i++;
}
}
int main()
{
char achiq[100] = "SabahMarsda";
char inkar[100] = "SabahAyda";
int achar = 2;
int inkarachar = 3;
surushdur(achiq, achar);
surushdur(inkar, inkarachar);
printf("Sifreli achiq: %s\n", achiq);
printf("Sifreli inkar: %s\n", inkar);
topla(achiq,inkar);
printf("toplanmis: %s\n",achiq);
}
nəticəsi
Sifreli achiq: UcdcjOctufc
Sifreli inkar: VdedkDbgd
toplanmis: wyaymywsqfc
Analizi
Kodun çıxışından da aydın olacağı üzrə şifrli mesaj olaraq toplanmış mesaj göndəriləcək. Bu mesajı alan qarşı tərəf mesajı açmaq üçün aşağıdakı düsturu istifadə edəcək:
açıq mesaj = toplanmış - şifrli inkar - açar
Bu düstur nəticəsində, "SabahMarsda" mesajı alınacaq.
Hər hansı bir şəkildə qarşı tərəfin aldadılması istəndiyində isə aşağıdakı düstur istifadə ediləcək:
inkar mesajı = toplanmış - şifrli açıq - inkar açarı
Bu düstur nəticəsində, "SabahAyda" mesajı tapılacaq və qarşı tərəf açarları girdikdən sonra tapdığı bu mesajı doğru sanacaq.