Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
AlpT (@freaknet.org)
http://freaknet.org/alpt
May 6, 2009
Abstract
Questo testo e’ una rielaborazione personale degli appunti presi durante il corso di Teoria
dei Codici e Crittografia, tenuto dal Prof. Re Riccardo presso il dipartimento di Matematica,
Catania, A.A. 2008/2009.
Saro’ ben lieto di correggere ogni eventuale errore che mi comunicherai.
Buon lettura.
^_^
i
Copyright
2008
c Andrea Lo Pumo aka AlpT <alpt@freaknet.org>. All rights reserved.
This document is free; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-
POSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this document; if
not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
ii
Contents
1 Varie 1
2 Tempistica 1
3 * 5
iii
1 Varie
Definition 1.1. Con |[n]b | indichiamo il numero di cifre di n in base b
Proposition 1.2. Sia n ∈ N, allora
|[n]b | = blogb nc + 1
log g b , log g a
Il protocollo Diffie-Helmann non puo’ essere usato senza firma digitale, perche’ altrimenti C
puo’ fare dello spoofing:
A : g a −→ C
C : g c −→ A
B : g b −→ C
C : g c −→ B
chiave tra A, C: g ac , chiave tra B, C: g bc
2 Tempistica
Definition 2.1. Date due successioni {xn } , {yn } ⊆C, poniamo
def
xn = O(yn ) ⇔ ∃C ∈ R ∃N ∈ N : |xn | ≤ C|yn | ∀n > N
1
cresce meno rapidamente di quanto cresce g.
Usiamo la seguente convenzione:
def
a = b + O(yn ) ⇔ a − b = O(yn )
Proposition 2.2.
f (n)
1. lim = k ⇒ f (n) = O(g)
g(n)
n→∞
2. O(kg(n)) = O(g(n))
3. O(logb n) = O(log2 n)
4. f (x) ∈ R[x] ⇒ O(f (n)) = O(ndeg f )
Proof :
h1i Dim 3.
log2 n
logb n =
log2 b
e quindi con la 2. si ha la tesi.
Definition 2.3. Sia f un algoritmo. Indichiamo con Time(f (n)) il numero di operazione elemen-
tari che f impiega per calcolare f (n). Come operazioni elementari consideriamo quelle logiche
tra due bit.
Proposition 2.4. Siano a, b ∈ N
2
Si utilizza l’algoritmo euclideo per il MCD e si conta quanti passi si adoperano:
a = bq1 + r1
b = r1 q2 + r2
r1 = r2 q3 + r3
r2 = r3 q4 + r4
..
.
rj = rj+1 qj+2 + rj+2
..
.
rn−3 = rn−2 qn−1 + rn−1
rn−2 = rn−1 qn + rn
rn−1 = rn qn+1 + 0
d = rn
h4.1i rj+1 < 21 rj−1 , ovvero rj+2 e’ piu’ che dimezzato rispetto a rj−1
Case: rj ≤ 12 rj−1
1
rj−1 = rj qj+1 + rj+1 ⇒ rj+1 < rj ≤ rj−1
|{z} 2
resto della divisione
Case: rj > 21 rj−1
rj+1 e’ il resto della divisione rj−1 /rj . Ma rj e’ piu’ della meta’ di rj−1 , quindi il quoziente
e’ qj+1 = 1 e
1 1
rj−1 = rj qj+1 + rj+1 = rj + rj+1 ⇒ rj+1 = rj−1 − rj < rj−1 − rj−1 = rj−1
2 2
Passiamo quindi affermare che ogni due passi rj e’ piu’ che dimezzato, quindi il numero di
passi t e’ < log2 r1 ,
r1 < b ≤ a ⇒ t < blog2 ac + 1 = k
Ad ogni passo eseguiamo una divisione e una addizione:
Time(M CD(a, b)) = (Time(a + b) + Time(a/b))t < (Time(a + b) + Time(a/b))k = (O(k) + O(k 2 ))k ⇒
⇒ Time(M CD(a, b)) = O(k 3 )
h5i
L’algoritmo per Bezout consiste nel calcolare MCD(a, b) con Euclide facendo delle sostituzioni
ad ogni passo (vedi AlgebraI). Ad ogni sostituzione si effettua una moltiplicazione e una ad-
dizione, quindi
Time(Bezout) = Time(MCD(a, b)) + (Time(a + b) + Time(a/b))t = 2O(k 3 ) = O(k 3 )
1. Time(a + b) = O(log2 n)
2. Time(ab) = O(log22 n)
3. Time(a−1 ) = O(log32 n)
Proof :
h1i 1. e 2.
In Zn le rappresentazioni minime di a, b sono tali che |[a]2 |, |[b]2 | ≤ |[n]2 |. Quindi applicando
la [2.4,pg.2] si ha la tesi.
3
h2i
Per calcolare a−1 si deve usare l’algoritmo di euclide:
sia b = a−1
ab = 1 Zn ⇔ ab − λn = 1 ⇔ ba − λn = 1 ⇒ (b, λ) = Bezout(a, n)
Quindi per [2.4,pg.2] si ha la tesi.
Nota:
(b, n) = 1 ⇒ bϕ(n) = 1 Zn
= ϕ(n)q + m0 , m0 < ϕ(n)
m |{z}
divisione
0
⇒ bm = bm Zn
4
3 *
Index
*, 5
Tempistica, 1
Varie, 1