Crittografia e integrazione dei sistemi con PythonBabel
Informazioni bancarie, dati sensibili per le aziende, materiale multimediale personale: sistemi diversi si scambiano costantemente informazioni riservate via internet e la crittografia gioca un ruolo importante nella loro protezione.
Il TechAdvisor Babel Roberto Polli dedica il nuovo articolo del Centro Risorse alle particolari problematiche legate all'uso delle tecniche di crittografia nell'interazione tra sistemi che spesso parlano linguaggi differenti. Ricco di esempi pratici, l'articolo descrive il funzionamento della crittografia simmetrica e asimmetrica e presenta delle semplici istruzioni per lo sviluppo di un server FTP con server-side encryption utilizzando il linguaggio di programmazione Python.
Per saperne di più su questo argomento vi invitiamo a scaricare l'articolo completo. Potete inviarci le vostre domande utilizzando il form "Serve aiuto?" sul nostro Centro Risorse http://www.babel.it/it/centro-risorse.html
Parallel Sparse Matrix Vector Multiplication Using CSBDavid Santucci
This presentation (in italian) shows a parallel algorithm for matrix-vector multiplication using compressed sparse blocks, a very efficient way to perform huge matrix multiplications.
Crittografia e integrazione dei sistemi con PythonBabel
Informazioni bancarie, dati sensibili per le aziende, materiale multimediale personale: sistemi diversi si scambiano costantemente informazioni riservate via internet e la crittografia gioca un ruolo importante nella loro protezione.
Il TechAdvisor Babel Roberto Polli dedica il nuovo articolo del Centro Risorse alle particolari problematiche legate all'uso delle tecniche di crittografia nell'interazione tra sistemi che spesso parlano linguaggi differenti. Ricco di esempi pratici, l'articolo descrive il funzionamento della crittografia simmetrica e asimmetrica e presenta delle semplici istruzioni per lo sviluppo di un server FTP con server-side encryption utilizzando il linguaggio di programmazione Python.
Per saperne di più su questo argomento vi invitiamo a scaricare l'articolo completo. Potete inviarci le vostre domande utilizzando il form "Serve aiuto?" sul nostro Centro Risorse http://www.babel.it/it/centro-risorse.html
Parallel Sparse Matrix Vector Multiplication Using CSBDavid Santucci
This presentation (in italian) shows a parallel algorithm for matrix-vector multiplication using compressed sparse blocks, a very efficient way to perform huge matrix multiplications.
Slide presentate all'IPW2011, riguardanti le classi Crypt::FNA e Crypt::FNA::Async pubblicate su CPAN.
Oltre ai metodi per cifrare e decifrare files e scalari, sono descritte anche le novità intercorse da YAPC::EU::2010 ovvero:
1. attributo 'salted': sale crittografico in Crypt::FNA (e quindi su Crypt::FNA::Async)
2. metodo 'mac': implementazione di un algoritmo digest in FNA
3. classe: Crypt::FNA::Async per il calcolo parallelo mediante i threads.
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...Michele Maffucci
Corso di recupero per gli allievi di classe 1 ITIS Informatica - Progetto Biennio Integrato.
Argomento della lezione:
Sistemi di numerazione:
Sistema numerico decimale
Sistema numerico binario
Conversione decimale-binario
Sistema numerico ottale
Conversione decimale-ottale
Conversione binario-ottale
Conversione ottale-binario
Sistema numerico esadecimale
Conversione decimale-esadecimale
Conversione binario-esadecimale
Conversione esadecimale-binario
Tabella di conversione
Programma di recupero:
- sistemi di numerazione e cambiamenti di base;
- somme e sottrazioni in binario;
- struttura hardware e software del PC;
- foglio elettronico.
The problem of measuring “similarity” of objects arises in
many applications, and many domain-specific measures
have been developed.
complementary approach, applicable in any domain
with object-to-object relationships.
“two objects are similar if
they are related to similar objects.” This general similarity
measure, called SimRank, is based on a simple and intuitive
graph-theoretic model.
Bipartite SimRank nei Domini Omogenei
Bipartite SimRank in Homogeneous Domains
Minimax Variation
Contare gli interi, i razionali e i reali (e altre amenità)Cristian Consonni
Dopo aver definito l’operazione di “contare” e il concetto di cardinalità
di un insieme viene delineata una dimostrazione del fatto che la cardinalità di Q è uguale a quella di N. Allo stesso modo viene tratteggiata la
dimostrazione del fatto che la cardinalità di R è maggiore di quella del
numerabile.
Slide presentate all'IPW2011, riguardanti le classi Crypt::FNA e Crypt::FNA::Async pubblicate su CPAN.
Oltre ai metodi per cifrare e decifrare files e scalari, sono descritte anche le novità intercorse da YAPC::EU::2010 ovvero:
1. attributo 'salted': sale crittografico in Crypt::FNA (e quindi su Crypt::FNA::Async)
2. metodo 'mac': implementazione di un algoritmo digest in FNA
3. classe: Crypt::FNA::Async per il calcolo parallelo mediante i threads.
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...Michele Maffucci
Corso di recupero per gli allievi di classe 1 ITIS Informatica - Progetto Biennio Integrato.
Argomento della lezione:
Sistemi di numerazione:
Sistema numerico decimale
Sistema numerico binario
Conversione decimale-binario
Sistema numerico ottale
Conversione decimale-ottale
Conversione binario-ottale
Conversione ottale-binario
Sistema numerico esadecimale
Conversione decimale-esadecimale
Conversione binario-esadecimale
Conversione esadecimale-binario
Tabella di conversione
Programma di recupero:
- sistemi di numerazione e cambiamenti di base;
- somme e sottrazioni in binario;
- struttura hardware e software del PC;
- foglio elettronico.
The problem of measuring “similarity” of objects arises in
many applications, and many domain-specific measures
have been developed.
complementary approach, applicable in any domain
with object-to-object relationships.
“two objects are similar if
they are related to similar objects.” This general similarity
measure, called SimRank, is based on a simple and intuitive
graph-theoretic model.
Bipartite SimRank nei Domini Omogenei
Bipartite SimRank in Homogeneous Domains
Minimax Variation
Contare gli interi, i razionali e i reali (e altre amenità)Cristian Consonni
Dopo aver definito l’operazione di “contare” e il concetto di cardinalità
di un insieme viene delineata una dimostrazione del fatto che la cardinalità di Q è uguale a quella di N. Allo stesso modo viene tratteggiata la
dimostrazione del fatto che la cardinalità di R è maggiore di quella del
numerabile.
Content is an important part of the customer experience. This presentation shows how you can improve customer experience design by mapping content to customer journeys. It outlines the content elements you should consider and the steps to take to create and get sign-off on useful, usable content maps. Finally, we share some approaches to get quick wins and an exercise to start you on the way to successful content mapping.
Over the last decade Rica Belna has been working in Europe, Asia, US. Clients include offices, hotels, restaurants, retail, wellness, healthcare, institutions, and 600+ residential projects. I am including links to her website showing some of the art & interior installations. Rica offers her portfolio-based art, provides digital files of the designs. These art-pieces then get printed (maybe locally by your firm's preferred print-vendor or art-consulting firm), can be paper, canvas or other textiles, wall-paper, paper affixed onto boards/wood, film on glass, metal, etc. Learn more at: www.ricabelna.com or www.petratrimmel.weebly.com
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...businessup
Presentazione di Dario Spinelli, presidente del CdA di Spinelli SA e di Ticicom SA, tenutasi il 12 Ottobre 2015 durante l'evento "Organizzazione e strategia aziendali vincenti e anticrisi". L'evento è stato organizzato da Business Up, AITI, Supsi e Gruppo Spinelli
This was a group presentation for the course SI 622:Needs Assessment and Usability Testing, at the University of Michigan School of Information during the Winter of 2014. We conducted these interviews as part of our usability study for our client. We briefed the class on our client, methods, findings, recommendations, and takeaways from that portion of the project. .
We have been designing and manufacturing quality lampshades and lighting since 1978. View our catalog to browse some of our product selections to bring your business to life.
SERIOUS MASS is the ultimate weight gain formula.* With 1,250 calories per serving and 50 grams of protein for muscle recovery, this instantized powder makes a sizable post-workout and between meals shake.* SERIOUS MASS gives you the tools you need to pack on pounds and - when coupled with serious weight training - develop your physique to the fullest.*
SUPERBURN is driven by Micron RD, a micronized rapid delivery technology. High "jet-like" air pressures are used to gently reduce the average particle size of the SUPERBURN formula to less than 20 microns. This micronization process enhances the total reactive surface area, which in turn supports faster speeds of delivery and onset of results.
In un sistema elaboratore in multiprogrammazione ogni programma è inizialmente caricato nel sistema da un lettore di schede, riceve poi una o più iterazioni di CPU e operazioni su nastro o disco e alla fine esce dal sistema stampando i risultati. Ogni lavoro riceve un numero di iterazioni distribuito geometricamente con media 4 iterazioni prima di uscire dal sistema attraverso la stampante. Terminato un servizio di CPU, se non esce ha 0,875 probabilità di richiedere un servizio disco e 0,125 di richiedere nastro. Il servizio CPU è esponenziale di media 0,8 s; quello di disco uniforme tra 0,5 e 2,5 s, e quello di nastro ancora uniforme tra 2 e 16 s. La coda Q1 è a due livelli A e B con prelazione e priorità a favore di A. All'interno di ciascun livello il servizio è FIFO. Le code Q2 e Q3 siano invece servite SPTF. Il 20% dei lavori in arrivo dall'esterno siano diretti alla categoria A e i rimanenti a B. Nel corso delle iterazioni i lavori conservano la propria classificazione. Il sistema può ospitare soltanto un numero limitato di programmi (Q1 + Q2 + Q3 <= 20). Nell'ipotesi che il sistema funzioni al massimo della capacità (20) determinare media e varianza del numero di lavori espletati per unità di tempo, al 90% del livello di confidenza.
1. Codici di Reed-Solomon
Filippo Ragazzo
26 Novembre 2013
Sommario
Approfondimento per il corso di Reti di Calcolatori del Corso di
Laurea in Informatica, Ca' Foscari, A.A. 2013-2014.
1
3. 1 Generalità
Nel 1960 Irving Reed e Gus Solomon pubblicarono un articolo sul Journal of
the Society for Industrial and Applied Mathematics[3]. Tale articolo descri-
veva una nuova classe di codici a correzione d'errore che sono oggi conosciuti
come Codici di Reed-Solomon (R-S). Questi codici sono molto potenti e tro-
vano molte applicazioni, come nei sistemi di archiviazione di massa, nella
lettura di informazioni dai codici a barre e anche nelle trasmissioni spaziali.
I codici di Reed-Solomon sono codici ciclici non binari con simboli com-
posti di sequenze di m bit, ove m è un qualsiasi intero positivo maggiore o
uguale a 2. Codici R-S(n, k) su simboli di m bit esistono per ogni n e k tali
che
0 k n 2m + 2
ove k è il numero di simboli del dato da codicare e n è il numero totale
di simboli di codice nel blocco codicato.
La convenzione più utilizzata è R-S(n, k) con
(n, k) = (2m − 1, 2m − 1 − 2t)
ove t rappresenta il numero massimo di errori correggibili del codice e
n − k = 2t è il numero di bit di parità.
Esempio: Un codice R-S spesso utilizzato è R-S(255, 223) con simboli di
8 bit. Ogni parola di codice ha dimensione 255 byte, dei quali 223 byte sono
di dati e 32 byte sono di parità. Dunque
n = 255, k = 223, 2t = 32 ⇒ t = 16
In questo caso si possono correggere no a 16 simboli errati, nella fattispecie
no a 16 byte con errore in qualsiasi punto della parola di codice.
Parleremo di errore sul simbolo quando accade che anche un solo bit che
compone il simbolo risulta errato. Dunque un codice R-S può correggere, nel
caso peggiore, no a t bit errati (ogni simbolo errato presenta un solo bit di
errore) e, nel caso migliore, no a t·m bit errati (se i t simboli sono totalmen-
te errati). Appare chiaro, dunque, che i codici R-S risultano particolarmente
ecaci nel correggere errori a raca (o burst).
3
4. In fase di decodica vedremo che gli algoritmi utilizzati permettono la
correzione di un massimo di t simboli errati e la correzione di un massimo di
2t cancellazioni.
In fase di decodica si possono vericare tre casi:
Se il numero di errori e cancellazioni è minore o uguale a 2t la parola di
codice verrà corretta.
Se il numero di errori e cancellazioni è maggiore a 2t il decoder rileverà
la presenza di errori, oppure vi sarà un errore di decodica nel caso in cui la
sequenza di errori abbia trasformato la codeword trasmessa in una codeword
dierente, ma valida.
2 Campi di Galois
Per comprendere i principi di codica e decodica dei codici non binari, come
quelli di Reed-Solomon, è necessario conoscere la teoria dei campi niti di
Galois.
Un campo di Galois K è in eetti un insieme nito di elementi sul quale
sono denite le operazioni di somma e prodotto che godono delle seguenti
proprietà:
• Associatività:
(a + b) + c = a + (b + c), ∀a, b, c ∈ K
(a ∗ b) ∗ c = a ∗ (b ∗ c), ∀a, b, c ∈ K
• Commutatività:
a + b = b + a, ∀a, b ∈ K
a ∗ b = b ∗ a, ∀a, b ∈ K
• Esistenza dell'elemento neutro:
∃0 ∈ K, a + 0 = 0 + a = a, ∀a ∈ K
∃1 ∈ K, a ∗ 1 = 1 ∗ a = a, ∀a ∈ K
• Esistenza dell'opposto:
∀a ∈ K, ∃(−a) ∈ K | a + (−a) = 0
∀a ∈ K, ∃a−1
∈ K | a ∗ a−1
= 1
4
5. • Distributività del prodotto rispetto alla somma:
a ∗ (b + c) = a ∗ b + a ∗ c, ∀a, b, c ∈ K
Per ogni numero primo p, esiste un campo di Galois che denoteremo
GF(p), che contiene p elementi. È possibile estendere GF(p) ad un campo
di pm
elementi: tale campo verrà detto un campo di estensione di GF(p) e
denotato con GF(pm
), con m intero positivo. Notare che GF(pm
) contiene
gli elementi di GF(p) come sottoinsieme.
Nella costruzione di un codice R-S vengono tipicamente utilizzati simboli
del campo di estensione GF(pm
), con p = 2.
Oltre agli elementi 0 e 1, che esistono per denizione, il campo GF(2m
)
contiene un elemento α, detto elemento primitivo, tale che
∀e ∈ GF(pm
), ∃k ≥ 0 | e = αk
In questo modo è possibile denire un insieme innito di elementi a par-
tire da { 0, 1, α } moltiplicando progressivamente l'ultimo elemento per α. Si
otterrà
F = { 0, 1, α, α2
, . . . , αj
, . . . } = { 0, α0
, α1
, α2
, . . . , αj
, . . . }
Per costruire un insieme nito di cardinalità 2m
chiuso rispetto alla mol-
tiplicazione è necessario imporre la seguente condizione di chiusura:
α2m−1
+ 1 = 0
o, equivalentemente
α2m−1
= 1 = α0
In questo modo ogni elemento del campo risultante da una potenza di
α 2m−1
sarà equivalente ad un elemento pari ad una potenza di α 2m−1
.
Ad esempio:
α2m+n
= α2m−1
∗ αn+1
= αn+1
e dunque avremo
F = { 0, 1, α, α2
, . . . , α2m−2
, α2m−1
, α2m
, . . . } =
= { 0, α0
, α1
, α2
, . . . , α2m−2
, α0
, α1
, . . . } =
= { 0, α0
, α1
, α2
, . . . , α2m−2
}
5
6. Le operazioni aritmetiche su GF(2m
) sono denite come segue:
L'addizione è equivalente all'OR esclusivo (XOR) eettuato bit-a-bit sulle
due m-ple che rappresentano gli addendi.
La sottrazione, per come è denito lo XOR, risulta analoga.
Il prodotto risulta leggermente più complesso: si utilizza la cosiddetta
index form, per la quale il risultato è dato dalla somma degli elementi presi
in rappresentazione logaritmica.
Tali operazioni aritmetiche sono fondamentali poiché gli algoritmi di co-
dica e decodica si basano su queste operazioni compiute sui simboli rap-
presentanti le parole di codice, visti come elementi di un opportuno campo
di Galois.
3 Codica (generalità)
Come abbiamo detto, la forma più utilizzata per i codici R-S è R-S(2m −
1, 2m−1−2t) ove n−k = 2t rappresenta il numero di simboli di ridondanza
e t è la capacità di correzione del codice.
Il polinomio generatore di un codice R-S di questo tipo è della forma
g(x) = g0 + g1x + g2x2
+ . . . + g2t−1x2t−1
+ x2t
Il grado del polinomio generatore è uguale al numero di simboli di ridon-
danza e questo è vero per tutti i codici BHC, dei quali i codici R-S sono una
sottoclasse. Dato che 2t è il grado del polinomio, esso ammetterà esattamen-
te 2t potenze successive di α che sono radici del polinomio. Indicheremo tali
radici con
α, α2
, ..., α2t
Notare che non è vincolante la scelta della radice α di partenza; è possi-
bile partire da una qualsiasi potenza di α.
Esempio: Consideriamo R-S(7, 3). Possiamo ottenere il polinomio genera-
tore nei termini delle sue n − k = 4 radici come segue:
g(x) = (x − α)(x − α2
)(x − α3
)(x − α4
) =
= (x2
− (α + α2
)x + α3
)(x2
− (α3
+ α4
)x + α7
) =
= (x2
− α4
x + α3
)(x2
− α6
x + α0
) =
= x4
− (α4
+ α6
)x3
+ (α3
+ α10
+ α0
)x2
− (α4
+ α9
)x + α3
=
= x4
− α3
x3
+ α0
x2
− α1
x + α3
6
7. che riscritto in ordine crescente di grado delle x e cambiando segno ai
termini negativi, risulta:
g(x) = α3
+ α1
x + α0
x2
+ α3
x3
+ x4
4 Codica (esecuzione)
Sia (d1, d2, . . . , dk) la dataword da codicare, con ogni di composto da m
bit, rappresentabile dunque da un elemento del campo GF(2m
). A questi k
simboli ordinati possiamo associare un polinomio della forma
d(x) = d0 + d1x + d2x2 + ... + dk−1xk−1
Il passo successivo è quello di ottenere una codeword rappresentata da
un polinomio c(x) di grado n − 1 divisibile per il polinomio generatore g(x)
denito precedentemente. Un metodo semplice per ottenere questo sarebbe
denire c(x) come c(x) = d(x) · g(x). Tale metodo, però, porta ad un codice
non sistematico, ragion per cui si considera come codeword
c(x) = x2t
d(x) + p(x)
con
p(x) = x2t
d(x) mod g(x)
Operando in questo modo il polinomio c(x) presenta come coecienti
dei termini di grado 0, ..., 2t i simboli di ridondanza e come coecienti dei
termini di grado maggiore di 2t i simboli dell'informazione da trasmettere.
Inoltre c(x) risulta divisibile per il polinomio generatore g(x), dunque
nel caso di errori di trasmissione che modichino i simboli della codeword,
il decoder potrà valutare la validità della stessa andando ad eseguire una
divisione per g(x). La presenza di un resto non nullo indicherà la sicura
presenza di un errore.
5 Decodica
Assumiamo che in fase di trasmissione siano stati introdotti degli errori sul-
la codeword inviata. Rappresentiamo polinomialmente il pattern d'errore in
questo modo:
e(x) = r(x) − c(x)
ove r(x) è la codeword ricevuta. In generale e(x) sarà del tipo
e(x) = e0 + e1x + e2x2
+ ... + en−1xn−1
7
8. con gli ei appartenenti al campo GF(2m
).
A dierenza dei codici binari, per i quali risulta suciente la sola posizione
del bit errato per procedere alla correzione mediante negazione del bit stesso,
nei codici non binari come i codici R-S risulta necessario conoscere non solo
la posizione del bit errato, ma anche il suo valore originario. Tale necessità
si traduce nel dover avere una condizione aggiuntiva per poter correggere la
codeword.
6 Calcolo della sindrome
In primo luogo è necessario rilevare la presenza di errori. Per fare ciò intro-
durremo il concetto di sindrome di una codeword, intendendo un vettore che
risulta nullo solo se non sono stati introdotti errori di trasmissione.
La sindrome S è composta da n − k simboli, { Si }(i=1,...,n−k). Dunque, ad
esempio, per un codice R-S(7, 3) ci sono 4 simboli in ogni vettore sindrome.
I loro valori possono essere calcolati a partire dal polinomio risultante dalla
ricezione r(x).
Per come è stato strutturato il codice, il calcolo degli elementi della sin-
drome sarà facilitato, infatti ogni codeword valida deve essere proporzionale
al polinomio generatore g(x). Essendo, dunque, α, α2
, ..., α2t
le radici di g(x),
il polinomio rappresentante una codeword valida deve avere le stesse radici.
I simboli della sindrome S associata alla codeword ricevuta r(x) si calco-
leranno come
Si = r(αi
), ∀i = 1, 2, ..., 2t.
Essendo che
r(x) = c(x) + e(x)
e che
c(αi
) = 0, ∀i = 1, 2, . . . , 2t
di fatto la sindrome sarà data dal polinomio e(x) che rappresenta il pattern
di errori calcolato sulle radici del polinomio generatore g(x).
Se, ad esempio, viene ricevuta una codeword r(x) con k errori nelle
posizioni xj1
, xj2
, ..., xjk avremo
e(x) = ej1 xj1
+ ej2 xj2
+ ... + ejk
xjk
ove i = 1, ..., k indica il numero di sequenza dell'errore e j la posizione nella
codeword. Allora scriveremo
Si = r(αi
) = e(αi
) = ej1 bi
1 + ej2 bi
2 + ... + ejk
bi
k, ∀i = 1, 2, ..., 2t
8
9. ove bl = ajl , l = 1, ..., k.
Non essendo note le posizioni dei simboli con errore, la forma vista non
può essere utilizzata per il calcolo della sindrome, la quale sarà determinata
a partire da r(x) e gli Si ottenuti verranno utilizzati come termini noti nel
sistema descritto sopra che avrà, come detto, 2t relazioni. Risulta ora evidente
il limite di correzione di t errori, in quanto il sistema sarà compatibile solo se
k non eccede t, caso in cui il sistema è di 2t incognite. Con ogni probabilità
il sistema ottenuto sarà non lineare, dunque devono essere utilizzate tecniche
più ranate delle usuali tecniche di risoluzione di sistemi lineari.
7 Implementazione
Per permettere un'implementazione più agevole sono utilizzati diversi algo-
ritmi per risolvere questo problema. In generale, si seguono due passi:
• Costruire un polinomio di locazione degli errori
Può essere fatto utilizzando l'algoritmo di Berlekamp-Massey o iteran-
do l'algoritmo di Euclide. Quest'ultimo viene utilizzato spesso per la sua
facilità di implementazione, sebbene l'algoritmo di Berlekamp-Massey
risulti più ecace. Ha complessità (O(n2
)), si basa sulla rappresenta-
zione polinomiale delle sequenze di byte e fornisce come risultato un
polinomio (Λ) le cui radici sono le posizioni degli errori.
Quindi si vanno a trovare le radici del polinomio costruito utilizzando
l'algoritmo della Chien search, algoritmo veloce di ricerca (O(n − k))
delle radici di polinomi su campi niti.
• Trovare i valori di errore
Note le posizioni degli errori, si possono ricavare i valori degli stessi
risolvendo il sistema di 2t equazioni dato dalle relazioni tra gli elementi
della sindrome e il polinomio e(x) calcolato nelle radici di g(x).
Nella pratica, si utilizza l'algoritmo di Forney che permette, al termi-
ne dell'algoritmo di Berlekamp-Massey, di ottenere, oltre al polinomio
Λ, anche un polinomio specico (Ω) che, valutato per le radici di Λ,
restituisce i valori degli errori. La complessità è di (O(n − k)).
9
10. Riferimenti bibliograci
[1] L. Giuzzi: Codici correttori: Un'introduzione. Springer-Verlag Italia,
Milano 2006.
[2] G.M. Piacentini Cattaneo: Algebra. Un approccio algoritmico. Decibel-
Zanichelli, 1996.
[3] I.S. Reed and G. Solomon: Polynomial Codes Over Certain Finite Fields.
SIAM Journal of Applied Math., vol. 8, 1960, pp. 300-304.
[4] B. Sklar: Reed-Solomon Codes.
[5] Wen Xu: Implementation and Performance Evaluation of Reed-Solomon
Codes. Cornell University, 2001.
10