Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Ú
Úvod do kryptografie
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Úvod do kryptografie
Commits
fbecdf75
Commit
fbecdf75
authored
2 months ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Teorie čísel: Spell check
parent
165ebb09
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
07-teorie-cisel/teorie-cisel.tex
+15
-15
15 additions, 15 deletions
07-teorie-cisel/teorie-cisel.tex
with
15 additions
and
15 deletions
07-teorie-cisel/teorie-cisel.tex
+
15
−
15
View file @
fbecdf75
...
@@ -282,7 +282,7 @@ Pro každé $n>1$ a $x\perp p$ platí $x^{\varphi(n)}\equiv 1\pmod n$.
...
@@ -282,7 +282,7 @@ Pro každé $n>1$ a $x\perp p$ platí $x^{\varphi(n)}\equiv 1\pmod n$.
\proof
\proof
Uvažme množinu
$
H
=
\{
x
^
0
, x
^
1
, x
^
2
,
\ldots\}
$
(násobíme modulo~
$
n
$
).
Uvažme množinu
$
H
=
\{
x
^
0
, x
^
1
, x
^
2
,
\ldots\}
$
(násobíme modulo~
$
n
$
).
Jelikož~
$
x
$
je invertibilní prvek a ty jsou uzavřené na násobení,
Jelikož~
$
x
$
je invertibilní prvek a ty jsou uzavřené na násobení,
je~
$
H
$
podmnož
í
nou~
$
\Zsn
$
. Dokážeme, že je dokonce podgrupou.
je~
$
H
$
podmnož
i
nou~
$
\Zsn
$
. Dokážeme, že je dokonce podgrupou.
Jelikož
$
x
^
i
$
mohou nabývat jen konečně mnoha hodnot, musí se nějaká
Jelikož
$
x
^
i
$
mohou nabývat jen konečně mnoha hodnot, musí se nějaká
hodnota zopakovat. Uvažme první takové opakování, tedy nejmenší~
$
j
$
hodnota zopakovat. Uvažme první takové opakování, tedy nejmenší~
$
j
$
...
@@ -305,7 +305,7 @@ Tím pádem je $\varphi(n) = jk$ pro nějaké~$k$, takže můžeme psát
...
@@ -305,7 +305,7 @@ Tím pádem je $\varphi(n) = jk$ pro nějaké~$k$, takže můžeme psát
$
x
^{
\varphi
(
n
)
}
\equiv
x
^{
jk
}
\equiv
(
x
^
j
)
^
k
\equiv
1
^
k
\equiv
1
$
.
$
x
^{
\varphi
(
n
)
}
\equiv
x
^{
jk
}
\equiv
(
x
^
j
)
^
k
\equiv
1
^
k
\equiv
1
$
.
\qed
\qed
\subsection
{
Č
i
nská věta o~zbytcích
}
\subsection
{
Č
í
nská věta o~zbytcích
}
Nyní se zamysleme nad tím, jak najít číslo~
$
x
$
, které dává modulo~
$
N
_
1
$
Nyní se zamysleme nad tím, jak najít číslo~
$
x
$
, které dává modulo~
$
N
_
1
$
zadaný zbytek~
$
a
_
1
$
a modulo~
$
N
_
2
$
zbytek~
$
a
_
2
$
. Řešíme tedy soustavu kongruencí:
zadaný zbytek~
$
a
_
1
$
a modulo~
$
N
_
2
$
zbytek~
$
a
_
2
$
. Řešíme tedy soustavu kongruencí:
...
@@ -363,7 +363,7 @@ $N=N_1\cdot\ldots\cdot N_k$ a $a_i\in\Z_{N_i}$ pro $i=1,\ldots,k$.
...
@@ -363,7 +363,7 @@ $N=N_1\cdot\ldots\cdot N_k$ a $a_i\in\Z_{N_i}$ pro $i=1,\ldots,k$.
Pak existuje právě jedno
$
x
\in\Z
_
N
$
takové, že
$
x
\bmod
N
_
i
=
a
_
i
$
pro všechna~
$
i
$
.
Pak existuje právě jedno
$
x
\in\Z
_
N
$
takové, že
$
x
\bmod
N
_
i
=
a
_
i
$
pro všechna~
$
i
$
.
}
}
\theoremn
{
Algebraick
a
formulace CRT
}{
\theoremn
{
Algebraick
á
formulace CRT
}{
Nechť
$
N
_
1
,
\ldots
,N
_
k
$
jsou navzájem nesoudělná kladná čísla a
Nechť
$
N
_
1
,
\ldots
,N
_
k
$
jsou navzájem nesoudělná kladná čísla a
$
N
=
N
_
1
\cdot\ldots\cdot
N
_
k
$
.
$
N
=
N
_
1
\cdot\ldots\cdot
N
_
k
$
.
Pak funkce
$
f:
\Z
_
N
\rightarrow
Z
_{
N
_
1
}
\times
\ldots
\times
\Z
_{
N
_
k
}$
Pak funkce
$
f:
\Z
_
N
\rightarrow
Z
_{
N
_
1
}
\times
\ldots
\times
\Z
_{
N
_
k
}$
...
@@ -372,7 +372,7 @@ je izomorfismus okruhů $Z_N$ a $Z_{N_1} \times \ldots \times \Z_{N_k}$.
...
@@ -372,7 +372,7 @@ je izomorfismus okruhů $Z_N$ a $Z_{N_1} \times \ldots \times \Z_{N_k}$.
}
}
\proof
\proof
Pro
$
k
=
1
$
jsou obě věty triviální, pro
$
k
=
2
$
jsme je už dok
a
zali.
Pro
$
k
=
1
$
jsou obě věty triviální, pro
$
k
=
2
$
jsme je už dok
á
zali.
Dále pokračujeme indukcí podle~
$
k
$
, přičemž případ pro
$
k
=
2
$
použijeme
Dále pokračujeme indukcí podle~
$
k
$
, přičemž případ pro
$
k
=
2
$
použijeme
jako indukční krok.
jako indukční krok.
\qed
\qed
...
@@ -429,14 +429,14 @@ a~tím pádem stejný počet čísel~$x$.
...
@@ -429,14 +429,14 @@ a~tím pádem stejný počet čísel~$x$.
\endlist
\endlist
Z~tohoto lemmatu plyne, že kdykoliv umíme číslo~
$
n
$
faktorizovat (rozložit na součin
Z~tohoto lemmatu plyne, že kdykoliv umíme číslo~
$
n
$
faktorizovat (rozložit na součin
mocnin různých prvočísel), umíme efektivně spoč
i
tat
$
\varphi
(
n
)
$
. Žádný efektivní způsob,
mocnin různých prvočísel), umíme efektivně spoč
í
tat
$
\varphi
(
n
)
$
. Žádný efektivní způsob,
který nepotřebuje faktorizaci, není znám.
který nepotřebuje faktorizaci, není znám.
\section
{
Faktorizace versus prvočíselnost
}
\section
{
Faktorizace versus prvočíselnost
}
Mezi základní algoritmické problémy teorie čísel patří
\em
{
faktorizace
}
celých čísel
Mezi základní algoritmické problémy teorie čísel patří
\em
{
faktorizace
}
celých čísel
(rozklad na součin prvočísel) a testování, zda dané číslo je prvočíslem. Jakkoliv podobně
(rozklad na součin prvočísel) a testování, zda dané číslo je prvočíslem. Jakkoliv podobně
tyto problémy vypadají, jejich obtí
z
nost je zásadně různ
a
.
tyto problémy vypadají, jejich obtí
ž
nost je zásadně různ
á
.
Faktorizace:
Faktorizace:
...
@@ -520,12 +520,12 @@ Je-li $n$ složené číslo, které není Carmichaelovo, Fermatův test ho usvě
...
@@ -520,12 +520,12 @@ Je-li $n$ složené číslo, které není Carmichaelovo, Fermatův test ho usvě
\proof
\proof
Spusťme algoritmus s~daným~
$
n
$
. Pokud narazíme na Euklidova svědka, rovnou odpovíme správně.
Spusťme algoritmus s~daným~
$
n
$
. Pokud narazíme na Euklidova svědka, rovnou odpovíme správně.
Stačí tedy lemma dok
a
zat pro
$
a
$
rovnoměrně náhodně vybrané z~
$
\Zsn
$
.
Stačí tedy lemma dok
á
zat pro
$
a
$
rovnoměrně náhodně vybrané z~
$
\Zsn
$
.
Uvažme podmnožinu
$
H
\subseteq\Zsn
$
čísel, která nejsou Fermatovými svědky. Tedy:
Uvažme podmnožinu
$
H
\subseteq\Zsn
$
čísel, která nejsou Fermatovými svědky. Tedy:
$$
$$
H
=
\{
a
\in\Zsn
\mid
a
^{
n
-
1
}
\bmod
n
=
1
\}
.
H
=
\{
a
\in\Zsn
\mid
a
^{
n
-
1
}
\bmod
n
=
1
\}
.
$$
$$
Dokážeme, že
$
H
$
je podgr
o
upu~
$
\Zsn
$
. Jistě platí
$
1
\in
H
$
. Pokud
$
a,b
\in
H
$
,
Dokážeme, že
$
H
$
je podgrupu~
$
\Zsn
$
. Jistě platí
$
1
\in
H
$
. Pokud
$
a,b
\in
H
$
,
máme
$
(
ab
)
^{
n
-
1
}
\equiv
a
^{
n
-
1
}
b
^{
n
-
1
}
\equiv
1
\cdot
1
\equiv
1
$
, takže
$
ab
\in
H
$
.
máme
$
(
ab
)
^{
n
-
1
}
\equiv
a
^{
n
-
1
}
b
^{
n
-
1
}
\equiv
1
\cdot
1
\equiv
1
$
, takže
$
ab
\in
H
$
.
Podobně ověříme, že pro
$
a
\in
H
$
je
$
a
\inv\in
H
$
.
Podobně ověříme, že pro
$
a
\in
H
$
je
$
a
\inv\in
H
$
.
...
@@ -615,7 +615,7 @@ Izomorfismus v~jednom směru je funkce $e: x \mapsto g^x \bmod p$, v~druhém sm
...
@@ -615,7 +615,7 @@ Izomorfismus v~jednom směru je funkce $e: x \mapsto g^x \bmod p$, v~druhém sm
její inverze, které se říká
\em
{
diskrétní logaritmus.
}
její inverze, které se říká
\em
{
diskrétní logaritmus.
}
Zatímco mocniny modulo~
$
p
$
dokážeme počítat efektivně (v~čase
$
\O
(
b
^
3
)
$
),
Zatímco mocniny modulo~
$
p
$
dokážeme počítat efektivně (v~čase
$
\O
(
b
^
3
)
$
),
diskrétní logaritmus nikoliv. Podobně jako u~faktorizace neznáme žádný polynomiální
diskrétní logaritmus nikoliv. Podobně jako u~faktorizace neznáme žádný polynomiální
algorimus, ale známe zajímavé subexponenciální algoritmy a polynomiální kvantový algoritmus.
algori
t
mus, ale známe zajímavé subexponenciální algoritmy a polynomiální kvantový algoritmus.
Často potřebujeme nějaký generátor najít. K~tomu se hodí otestovat, zda dané číslo~
$
g
$
je generátorem.
Často potřebujeme nějaký generátor najít. K~tomu se hodí otestovat, zda dané číslo~
$
g
$
je generátorem.
...
@@ -697,7 +697,7 @@ počet odmocnin. 0~má jen jednu (součinem nenulových prvků není nikdy~0).
...
@@ -697,7 +697,7 @@ počet odmocnin. 0~má jen jednu (součinem nenulových prvků není nikdy~0).
Odmocniny prvku~
$
a
$
jsou kořeny kvadratického polynomu
$
x
^
2
-
a
$
a ty mohou
Odmocniny prvku~
$
a
$
jsou kořeny kvadratického polynomu
$
x
^
2
-
a
$
a ty mohou
v~libovolném tělese existovat nejvýš~2. To v~kombinaci s~předchozím odstavcem dává,
v~libovolném tělese existovat nejvýš~2. To v~kombinaci s~předchozím odstavcem dává,
že každ
y
nenulový prvek má 0 nebo 2 odmocniny.
že každ
ý
nenulový prvek má 0 nebo 2 odmocniny.
Každý nenulový prvek~
$
\Zp
$
leží v~
$
\Zsp
$
, takže ho můžeme napsat jako mocninu nějakého
Každý nenulový prvek~
$
\Zp
$
leží v~
$
\Zsp
$
, takže ho můžeme napsat jako mocninu nějakého
generátoru~
$
g
$
. Polovinu~
$
\Zsp
$
tvoří sudé mocniny
$
g
^{
2
k
}$
a ty jistě mají druhou
generátoru~
$
g
$
. Polovinu~
$
\Zsp
$
tvoří sudé mocniny
$
g
^{
2
k
}$
a ty jistě mají druhou
...
@@ -718,7 +718,7 @@ dvě: 1 a~$-1$. Ovšem 1 to být nemůže, protože by se mocniny generátoru za
...
@@ -718,7 +718,7 @@ dvě: 1 a~$-1$. Ovšem 1 to být nemůže, protože by se mocniny generátoru za
opakovat dřív, než by vygenerovaly celou~
$
\Zsp
$
.
opakovat dřív, než by vygenerovaly celou~
$
\Zsp
$
.
\qed
\qed
Jelikož diskrétní logaritmy je těžké poč
i
tat, bude se hodit efektivnější test
Jelikož diskrétní logaritmy je těžké poč
í
tat, bude se hodit efektivnější test
na kvadratické zbytky:
na kvadratické zbytky:
\theoremn
{
Eulerovo kriterium
}{
\theoremn
{
Eulerovo kriterium
}{
...
@@ -786,7 +786,7 @@ vyjde nulové, pak najdeme dvě různá~$x$.
...
@@ -786,7 +786,7 @@ vyjde nulové, pak najdeme dvě různá~$x$.
Toto lze zobecnit pro libovolné složené~
$
n
$
a převést tak odmocňování modulo~
$
n
$
Toto lze zobecnit pro libovolné složené~
$
n
$
a převést tak odmocňování modulo~
$
n
$
na odmocňování modulo prvočíselné faktory~
$
n
$
, pokud umíme
$
n
$
~faktorizovat.
na odmocňování modulo prvočíselné faktory~
$
n
$
, pokud umíme
$
n
$
~faktorizovat.
Žádný efektivní způsob poč
i
tání diskrétních odmocnin bez faktorizace~
$
n
$
není znám.
Žádný efektivní způsob poč
í
tání diskrétních odmocnin bez faktorizace~
$
n
$
není znám.
(Možnost, že
$
n
$
může mít násobné faktory, s~dovolením nebudeme zkoumat.)
(Možnost, že
$
n
$
může mít násobné faktory, s~dovolením nebudeme zkoumat.)
\sectionstar
{
Rozbor Rabinova-Millerova testu
}
\sectionstar
{
Rozbor Rabinova-Millerova testu
}
...
@@ -837,7 +837,7 @@ takže řád musí být sudé číslo. Pro liché~$m$ tedy nemůže platit $a^m\
...
@@ -837,7 +837,7 @@ takže řád musí být sudé číslo. Pro liché~$m$ tedy nemůže platit $a^m\
ani
$
a
^
m
\equiv
_
n
\nobreak
1
$
.
ani
$
a
^
m
\equiv
_
n
\nobreak
1
$
.
\qed
\qed
Nyní se přesuneme ke~kroku~
\itemref
{
rmmone
}
. Z~přechozího lemmatu víme, že pro některé volby čísla~
$
a
$
v~algoritmu
Nyní se přesuneme ke~kroku~
\itemref
{
rmmone
}
. Z~pře
d
chozího lemmatu víme, že pro některé volby čísla~
$
a
$
v~algoritmu
je
$
b
_
0
\not\equiv
1
$
. Můžeme proto zvolit~
$
i
$
(
$
0
\le
i<t
$
) takové, že
$
b
_{
i
+
1
}
\equiv
a
^{
2
^{
i
+
1
}
m
}
\equiv
1
$
je
$
b
_
0
\not\equiv
1
$
. Můžeme proto zvolit~
$
i
$
(
$
0
\le
i<t
$
) takové, že
$
b
_{
i
+
1
}
\equiv
a
^{
2
^{
i
+
1
}
m
}
\equiv
1
$
pro všechna možná~
$
a
\in\Z
_
n
$
, ale
$
b
_
i
\equiv
a
^{
2
^
im
}
\not\equiv
1
$
pro alespoň jedno takové~
$
a
$
. Jakmile dokážeme,
pro všechna možná~
$
a
\in\Z
_
n
$
, ale
$
b
_
i
\equiv
a
^{
2
^
im
}
\not\equiv
1
$
pro alespoň jedno takové~
$
a
$
. Jakmile dokážeme,
že
$
b
_
i
\not\equiv\pm
1
$
pro alespoň polovinu z~možných~
$
a
$
, máme vyhráno.
že
$
b
_
i
\not\equiv\pm
1
$
pro alespoň polovinu z~možných~
$
a
$
, máme vyhráno.
...
@@ -848,7 +848,7 @@ existuje alespoň $\vert\Z^*_n\vert/2$ čísel $a\in\Z^*_n$ takových, že $a^{2
...
@@ -848,7 +848,7 @@ existuje alespoň $\vert\Z^*_n\vert/2$ čísel $a\in\Z^*_n$ takových, že $a^{2
}
}
\proof
\proof
Ještě jednou stejný trik s~podgr
o
upou. Tentokrát zvolíme
$
G
=
\{
x
\in\Z
^
*
_
n
\mid
a
^{
2
^
im
}
\equiv
\pm
1
\}
$
,
Ještě jednou stejný trik s~podgrupou. Tentokrát zvolíme
$
G
=
\{
x
\in\Z
^
*
_
n
\mid
a
^{
2
^
im
}
\equiv
\pm
1
\}
$
,
což je evidentně podgrupa~
$
\Z
^
*
_
n
$
, a~opět chceme dokázat, že alespoň jeden prvek leží mimo ni.
což je evidentně podgrupa~
$
\Z
^
*
_
n
$
, a~opět chceme dokázat, že alespoň jeden prvek leží mimo ni.
Z~volby~
$
i
$
víme, že existuje~
$
c
$
, pro něž
$
c
^{
2
^
im
}
\not\equiv
1
$
. Pokud
$
c
^{
2
^
im
}
\not\equiv
-
1
$
, máme vyhráno,
Z~volby~
$
i
$
víme, že existuje~
$
c
$
, pro něž
$
c
^{
2
^
im
}
\not\equiv
1
$
. Pokud
$
c
^{
2
^
im
}
\not\equiv
-
1
$
, máme vyhráno,
...
@@ -863,7 +863,7 @@ a $d^{2^im} \equiv_{n/p^e} 1$. Proto $d^{2^im}$ nemůže být modulo~$n$ ani~1,
...
@@ -863,7 +863,7 @@ a $d^{2^im} \equiv_{n/p^e} 1$. Proto $d^{2^im}$ nemůže být modulo~$n$ ani~1,
\sectionstar
{
Ještě jeden test prvočíselnosti
}
\sectionstar
{
Ještě jeden test prvočíselnosti
}
Nakonec předvedeme ještě jeden algoritmus pro pravděpodobnostní testování prvočísel,
Nakonec předvedeme ještě jeden algoritmus pro pravděpodobnostní testování prvočísel,
jehož korektost je snadné dokázat. Daní za jednoduchost důkazu ovšem bude to, že
jehož korekt
n
ost je snadné dokázat. Daní za jednoduchost důkazu ovšem bude to, že
náš test může udělat chybu na~obě strany: jak prohlásit složené číslo za~prvočíslo,
náš test může udělat chybu na~obě strany: jak prohlásit složené číslo za~prvočíslo,
tak prvočíslo za~složené. Bude fungovat následovně:
tak prvočíslo za~složené. Bude fungovat následovně:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment