104
Y
1
и
Y
2
сандардан және өз жабық кілттерінен абоненттердің әрбіреуі симметриялық
шифрлау сеансы үшін ортақ құпиялы кілт
Z құрастыра алады. Бірінші пайдаланушы мұны
былай істеу керек:
P
Y
Z
X
mod
)
(
1
2
Одан басқа мұны ешкім істей алмайды, өйткені
Х
1
саны құпиялы. Екінші
пайдаланушы өз жабық кілтін және өз абонентының ашық кілтін пайдаланып, дәл сол
санды
Z алу мүмкін:
P
Y
Z
X
mod
)
(
2
1
Егер ортақ құпиялы кілтті құрастыру протоколы дұрыс орындалса, абоненттердің
екеуінде де
Z мәндері бірдей шығу керек. Айта кетейік, қарсылас құпиялы сандарды
Х
1
және
Х
2
білмей
Z санды есептей алмайды.
Х
1
мен
Х
2
білмей қарсылас тек ашық түрде
берілетің
Р,
А,
Y
1
және
Y
2
пайдаланып
Z-ты есептеуге тырысу мүмкін. Ортақ кілтті
құрастыру қауіпсіздігі Диффи-Хеллман алгоритмда мұндай: жай санның модулі бойынша
экспонентаны есептеуге салыстырмалы оңай болса да, дискретты логарифмды есептеу өте
қиын. Үлкен жүздеген және мындаған биты бар жай сандар үшін бұл есеп шешілмейтін
деп саналады, себебі орасан зор есептеу ресурстарды жұмсайды.
Пайдаланушылар 1 және 2 деректерді шифрлау мен дешифрлау үшін
Z мәнің
құпиялы кілт ретінде пайдалану мүмкін. Осы жолмен кез келген қос абоненттер өздеріне
ғана белгілі құпиялы кілтті есептей алады.
11.5 Алгоритм бойынша есептеу мысалы
Интернет арқылы шифрланған хабарлармен алмасқысы келетін екі абонент, кезекті
сеанс үшін құпиялы кілтті құрастырғысы келді. Оларда келесі ортак параметрлер болсын:
Р = 11, А = 7.
Абоненттер құпиялы сан
Х таңдайды және оған сәйкес ашық сан
Y есептейді.
Таңдалған сандар:
Х
1
= 3, Х
2
= 9.
Есептейміз
Y
1
= 7
3
mod 11 = 2,
Y
2
= 7
9
mod 11 = 8.
Сосын пайдаланушылар ашық кілттерін
Y
1
мен
Y
2
айырбастайды. Осыдан кейін
пайдаланушылардын әрбіреуі ортақ құпиялы кілт есептей алады:
пайдаланушы 1: Z = 8
3
mod 11 = 6.
пайдаланушы 2: Z = 2
9
mod 11 = 6.
Енді оларда ортақ кілті 6 бар, ол байланыс арна арқылы жіберілмейді.
11.6 Диффи-Хеллман алгоритмның тәжірибелік пайдалануының сұрақтары
Диффи-Хеллман алгоритмы дұрыс істеу үшін, яғни протоколға қатысатын екі
пайдаланушы бірдей
Z сан алу үшін,
есептеуде пайдаланатын А санды дұрыс таңдау керек.
А санында келесі қасиеттер болу керек:
барлық
A mod
P,
A
2
mod
P,
A
3
mod
P,...,
A
P-1
mod
P
сияқты сандар әртүрлі болу керек және 1 ден (
Р-1)-ге дейін диапазонда бүтін оң
мәндерінен тұру керек. Тек осындай жағдайда түрлі бүтін сан
Y<
Р және
А мәні үшін бір
ғана
Х экспонентаны
табуға болады
Y =
A
Х
mod
P, мұнда 0
X (
P-1)
Еркін берілген
Р-да
А параметрді таңдау есебі қиын болу мүмкін, себебі ол
Р-1
санды жай көбейткіштерге жіктеуімен байланысты.
105
Тәжірибеде келесі жолды қолдануға болады. Жай
Р санды таңданғанда
Р = 2
q + l
теңдік орындалу керек, мұндағы
q – жай сан. Онда
А ретінде түрлі санды алуға болады, ол
үшін
1 <
A <
P-1
және A
q
mod
P-1
теңсіздіктер орын алу керек.
Келісімді
А мен
Р параметрлерді іріктеп алу үшін біраз уақыт қажет, бірақ бұл
байланыс жүйенің жұмысын тежелмейді. Бұл параметрлер толық пайдаланушылар тобына
ортақ болып табылады. Олар әдетте Диффи-Хеллман протоколын қолданалатын
пайдаланушылар тобын жасағанда бір рет таңдап алынады, және жұмыс барысында
өзгермейді. Ал жабық кілттер мәнің жиі өзгерте отырып, кездейсоқ тәріздес сандар
генераторы көмегімен таңдау керек.
Айта кетейік, бұл алгоритм барлық ассиметриялық алгоритмдер секілді, «man-in-
the-middle» («адам ортада») деп аталатын шабуылды шыдамайды. Егер қарсылас қолына
түскен хабардан басқа оларды ауыстырай алса, онда ол қатысушылардың ашық кілттерін
ұстап алып, өзінің қос ашық және жабық кілттерін жасап, және қатысушылардын
әрбіреуіне өзінің ашық кілтін жіберу мүмкін. Осыдан кейін әрбір қатысушы кілтті
есептейді, ол
кілт басқа қатысушымен емес, қарсыласпен ортақ болады.
11.7 Эль-Гамаль алгоритмы
Негізгі мәліметтер
1985 жылы Эль-Гамаль (T.ElGamal) ұсынған ассиметриялық алгоритм әмбебап. Ол
барлық үш негізгі есептерді шешуге пайдалану мүмкін: деректерді шифрлау үшін,
цифрлық қолды құрастыру үшін және ортақ кілтті келістіру үшін. Одан басқа, парольді
тексеру үшін, хабардың пара-парлығын дәлелдеу үшін алгоритмды түрлендіруге болады.
Бұл алгоритмның қауіпсіздігі, Диффи-Хеллман алгоритмындай, дискретты логарифмның
есептеу күрделігіне негізделген. Бұл алгоритм абоненттердің ортақ құпиялы кілтін
құрастыру үшін Диффи-Хеллман схемасын пайдаланады және сосын хабарды осы кілтке
көбейтіп ол шифрланады.
Шифрлау кезінде де, цифрлық қолды құрастыру кезінде де әрбір пайдаланушыға
қос кілттер жасау қажет. Ол үшін, Диффи-Хеллман схемасындай, кейбір үлкен жай сан
Р
және сан
А таңдап алынады (
А-ның әртүрлі дәрежелері
Р модулі бойынша әртүрлі сандар
болып табылады).
Р мен
А сандар ашық түрде беріліп, желінің барлық абоненттеріне
ортақ болу мүмкін.
Сосын топтың әрбір абоненты өзінің құпиялы санын
Х
i
, 1<
Х
i
<
Р-1 таңдайды, және
оған сәйкес ашық санды
Y
i
есептейді:
P
A
Y
i
X
i
mod
. Сонымен, әрбір пайдаланушы
жабық
Х
i
және ашық
Y
i
кілт жасай алады.
Жүйенің қажетті параметрлері кестеде келтірілген:
Ортақ параметрлер Ашық кілт Жабық кілт
Пайдаланушы 1
Р,
А
Y
1
Х
1
…
…
…
Пайдаланушы i
Y
i
Х
i
Шифрлау
Енді қай түрде деректер шифрлайтының қарастырып шығайық. Шифрлауға
арналған хабар, бір сан немесе
Р-дан кіші сандар жиынтығы түрінде берілу керек.
Пайдаланушы 1 пайдаланушы 2-ге
m хабарды бергісі келсін. Онда іс-әрекет тізбегі мұндай
болу керек: