96
c d (mod
m)
онда
a + c b + d (mod
m)
ac bd (mod
m).
Мысалы, 13 5 (mod 8) және 11 3 (mod 8) болғандықтан, онда 13+11 5+3 0 (mod
m),
және де 13 11 5 3 7 (mod
m).
3-ші қасиет. Егер
a b (mod
m)
онда
a
k
b
k
(mod
m),
k N.
Мысалы, 25 4 (mod 7) болғандықтан, онда 5
2
2
2
(mod 7).
4-ші қасиет. Егер
ac bc (mod
m)
және
c m-мен өзара жай болса,
онда
a b (mod
m).
Мысалы, 1200 45 (mod 7) белгілі, ал 1200 = 15 80 және 45 = 15 3, онда
80 3 (mod 7).
5-ші қасиет. Егер
ac bc (mod
mc)
онда
a b (mod
m).
Мысалы, егер 44 4 (mod 4(10)) онда 11 1 (mod 10).
10.5 Ферманың кіші теоремасы
RSA жүйесі бойынша шифрлау алгоритмның негізінде XVII ғасырдың басында
француз математигі Пьер Ферма (Pierre Fermat) тұжырымдаған теорема жатыр. Оны
«
Ферманың кіші теоремасы» деп жиі атайды, және танымал «Ферманың ұлы теоремасы»
мен шатастырмау керек. Оны да ол дәлелдемей тұжырымдаған болатын, ал дәлелденген
тек 1993-94 жылдары. Леонард Эйлер 1760 жылы Ферманың кіші теоремасын дәлелдеп,
оның Ферма-Эйлер теоремасы деп аталатын жалпылауын тапқан болатын. Дәл осы
теорема шифрлау/дешифрлау RSA алгоритмда пайдаланады.
Ферманың кіші теоремасы келесі түрде тұжырымдалады. Егер
р – жай сан, ал
m –
р-ға бөлінбейтің кез келген сан болса, онда
m
p-1
1 (mod
р),
яғни
m
p-1
саны
р-ға бөлінгенде қалдықта 1 береді.
Мысалы,
р=11,
m = 3 болсын. 3
10
mod 11 біргі тең болама тексерейік:
3
10
mod 11 = 3
2
(((3
2
)
2
)
2
) mod 11 = 9(4
2
) mod 11 = 144 mod 11 = 1
Эйлер тұжырымдаған және дәлелдеген жалпылау кез келген модуль үшін әділетті,
бірақ RSA жүйеде дербес жағдайы пайдаланылады – онда модуль тек екі түрлі жай
сандарының көбейтінідісі болып табылады. Сондықтан осы жағдайы үшін теореманың
тұжырымдамасын қарастырайық.
Ферма-Эйлер теоремасы (RSA жүйенің жағдайы үшін). Егер
p мен
q – екі түрлі
жай сандар, ал
m –
p мен
q-ға бөлінбейтің кез келген сан болса, онда
m
(p-1)(q-1)
1 (mod
рq).
Мысалы,
р = 11,
q = 5 (
pq = 55),
m = 3 болсын. 3
40
1 (mod 55) біргі тең болатының
тексерейік:
3
40
mod 55 = (3
5
)
4
mod 55 = 23
4
mod 55 = 279841 mod 55 = 1.
97
10.6 Ең үлкен ортақ бөлгіш
а мен
b — екі бүтін оң сандар болсын.
а мен
b сандардың ең үлкен ортақ бөлгіші -
бұл
а-ны да
b-ны да бөлетін ең үлкен
с саны:
с = ЕҮОБ(
a,
b).
Мысалы, ЕҮОБ(25,35) = 5.
Ең үлкен ортақ бөлгішті табу үшін келесі,
Евклид алгоритмы деп аталатын,
алгоритмды пайдалануға болады.
Алгоритм NOD(бүтін
a,
b,
c);
Басы
1.
a<>
b болғанша орындау керек:
1.1. Егер
a>
b онда
a:=
a-
b, әйтпесе
b:=
b-
a;
2.
c:=
a;
Соңы.
Алгоритм орындалғаннан кейін нәтижесі
с айнымалының ішінде болады.
Евклид алгоритмы көмегімен ЕҮОБ(18,9) есептеп көрейік:
a: 18 9
b: 9 9
c: 9 9
Мұнда әрбір баған алгоритмның кезекті итерациясы болып табылады. Процесс жүргізіледі
b a-ға тең болғанша. Сонда
с айнымалыға жауап жазылады, біздің жағдайда 9. Дәл осы
ЕҮОБ(18,9)-ң мәні.
10.7 Евклидтың жалпыланған алгоритмы
Көптеген криптографиялық жүйелер үшін Евклидтың жалпыланған алгоритмы
актуальды, онымен келесі теорема байланысады.
Теорема.
а мен
b — екі бүтін оң сандар болсын. Сонда
х пен
у бүтін (оң емес те
болу мүмкін)
сандар бар болады, олар үшін
ах +
by = ЕҮОБ(
a,
b).
Евклидтың жалпыланған алгоритмы ЕҮОБ(
а,
b)-ны және жоғары жазылған
теңдеуге сай келетін
х,
у іздеп табу үшін қызмет етеді. Үш жол енгізейік
U = (
u
1
,
u
2
,
u
3
),
V =
(
v
1
,
v
2
,
v
3
) және
T = (
t
1
,
t
2
,
t
3
).
Алгоритм келесі түрде жазылады (кіру параметрде шарт
a b орындалу керек).
Алгоритм ЕЖА(бүтін
a,
b);
Басы
1.
U = (
a,1,0),
V = (
b,0,1).
2.
v1 <> 0 болғанша орындау керек:
2.1.
q =
u1 div
v1;
2.2.
T =(
u1 mod
v1,
u2–
qv2,
u3–
qv3);
2.3.
U=
V,
V=
T.
3.
U=(ЕҮОБ(
a,
b),
x,
y)).
Соңы.
Алгоритм аяқталғаннан кейін нәтижесі
U жолында болады. Алгоритмдағы div операциясы
– бұл бүтін сандық бөлу операция.
Мысалы.
а = 18,
b = 9 болсын. Теңдеуге сай келетін
х және
у сандарды іздеп
табайық
18
х + 9
y = ЕҮОБ(18,9).
Алгоритмды қадам бойынша орындайық: