Copy Link
Add to Bookmark
Report

Netrunners 10

eZine's profile picture
Published in 
Netrunners
 · 26 Apr 2019

  

_______ __ __________
\ \ _____/ |\______ \__ __ ____ ____ ___________ ______
/ | \_/ __ \ __\ _/ | \/ \ / \_/ __ \_ __ / ___/
/ | \ ___/| | | | \ | / | \ | \ ___/| | \|___ \
\____|__ /\___ >__| |____|_ /____/|___| /___| /\___ >__| /____ >
\/ \/ \/ \/ \/ \/ \/(r)
4 0 4
--------------------------------------------------------------------------
FrOm Spp to tHe NeT

NumEro DiEcI

SpeCiAl ChrIsTmaS

DeDiCaTed To GiOrGiA
--------------------------------------------------------------------------
Sommario:
---------

Editoriale
---------- By Brigante

Metodo per la creazione
dei generatori di password
a permutazione con contatore
----------------------- By Master

Linux VS Windows
----------------------- By Azathoth


L'arte della crittografia
--------------------- By ADaM "Unno"

Il sistema GSM
-------------------- By Nick1

Le card, ma come sono
fatte?
--------------------- By RigoR MorteM

Idee per una backdoor
--------------------- By Devil

-=HTML SECTION=-

Come rendere un processo
invisibile
------------------------ By NikDH e GuestNet

Reversing Netbus 2.0b Pro
------------------------- By Quequero
===========================================================================================

Editoriale
----------
by Brigante
----------

Ciao ragazzi, eccoci finalmente pronti a sfogliare questo mitico numero 10 di Netrunners. Innanzitutto
lasciatemi dire che sono molto contento dal momento che il traguardo di 10 uscite di una e-zine non è
da tutti....spero che i nostri lettori aumentino sempre in modo esponenziale, e ne approfitto per sa-
lutare e ringraziare tutti i collaboratori interni ed esterni, che si adoperano per farci giungere
sempre nuovi ed interessantissimi articoli.
Cmq....come qualcuno mi faceva notare qualche sera fa in chat....sarebbe meglio mettere un disclaimer
detto fatto :-)))
DISCLAIMER
I redattori e collaboratori di Netrunners non si assumono alcuna responsabilità per le azioni od
omissioni che avverranno in seguito alla lettura degli articoli presenti nella rivista Netrunners.
Tutti gli argomenti di cui si parla negli articoli sono facilmente reperibili in rete, e non hanno
alcun fine di spingere il lettore ad infrangere le leggi.
Ricordo inoltre che, a norma dell'art. 21 della Cost. Italiana, "tutti hanno diritto di manifestare
liberamente il proprio pensiero con la parola, lo scritto ed ogni altro mezzo di diffusione. La sta-
mpa non può essere soggetta a limitazioni o censure".

Direi che come disclaimer possa andare no?? :-)))
Ok...salto la tradizionale presentazione degli articoli, dal momento che sono tanti e così interessanti
che ci vorrebbe un numero di Netrunners solo per l'indice.
Segnalo invece che questo numero si discosta da tutti gli altri, dal momento che sono presenti articoli
nel tradizionale formato txt ed in HTML . Ciò è dovuto al fatto che i nostri collaboratori spesso
scrivono direttamente in HTML....e quindi la conversione risulta complessa. Anzi, se qualcuno
mi sa dire come cacchio si converte da PDF a TXT, gliene sarei grato :-)))
L'altra sera ho ricevuto da Vecna (che saluto affettuosamente) una critica per come è formattata la ns
e-zine. Notoriamente io sono molto aperto alle critiche, solo però quando sanno essere costruttive. Mi
aspetto quindi una mano da Vecna per studiare la formattazione dei prox numeri (ti ho fregato eh?? :-)).
Passiamo alle notizie da SpiPPoLaNdIa: innanzitutto il caro Tira ha finito la conversione di tutti i
numeri di Netrunners in PDF...collegatevi al ns sito per scaricarli.
Inoltre, con nostro sommo piacere, sia RigoR che Nick1 sono ritornati a farsi vivi un pò più spesso.
Grazie ragazzi....sentivamo la nostra mancanza :-)))) (chissà quando si deciderà a ritornare Chrome
hihihihihi).
Annuncio anche, dopo diverse peripezie, la riapertura ufficiale del famoso FTP degli SPP, dove è
contenuto ogni ben di Dio, compresa una rarissima immagine ISO del SignalOS....il tool indispensabile
per l'hacker di successo (detto così sembra un profumo....cmq...il concetto è quello :-))).
Ed infine, con nostra somma gioia, annunciamo che la famiglia SPP si è accresciuta, con ben tre
nuove entrate. Innanzitutto 2 Spippolatori grandi e grossi, che tutti già conoscerete, ovvero ErGoline
e Nob0dy88, ai quali facciamo i migliori auguri e speriamo che si trovino bene con noi. E poi, evento
lietissimo, una piccola SpiPPolAtRiCe.....la piccola Giorgia che è venuta ad allietare la casa del
nostro caro fratellino Misha. Da tutti noi tantissimi auguri e.......aspettiamo i confetti :-))))
Sto scadendo nel logorroico, quindi, prima di farmi odiare, vi saluto e vi auguro un buonissimo
natale ed un felicissimo Millenium Bug ehehehehehehehe.
Ciauz :-)))))))

-SPP MeMbeR-
Brigante
-SPP MeMbeR-


===========================================================================================

-= Master *** =-
SPP MEMBER
Master@spippolatori.com
www.spippolatori.com


METODO GENERALE PER LA CREAZIONE DEI GENERATORI
DI PASSWORDS A PERMUTAZIONE CON CONTATORE.

Ovvero: la' dove sbaglia Umberto Eco.


Uno degli strumenti piu' utili in assoluto per la decifrazione dei messaggi cifrati,
per il cracking o il bruteforce di sitemi protetti da password e' il generatore di
dizionario.
I generatori di dizionario sono programmi che sulla base di alcune premesse iniziali
creano ex novo una lista di vocaboli composti da un insieme limitato di sequenze
atomiche di caratteri permutandole tra di loro secondo le varie occorrenze singolari.
Ad esempio considerando la lista

sp
o
s
t
ae

il dizionario creato sarebbe composto dalle parole "sosta","posta","soste", "poste".

L'utilita' di questi generatori e' varia a seconda delle esigenze. Questi infatti possono
essere usati per crare tutte le permutazioni di una parola con o senza ripetizioni,
per trovare liste di password, per trovare gli anagrammi completi di una parola oppure
[ nel caso piu' pratico di tutti ] per trovare tutte le possibili parole simili ad una
vocabolo conosciuto del quale pero' non si sia certi della giusta sintassi.

Nell'ultimo caso se si volesse costruire un dizionario per il bruteforce di un oggetto
protetto del quale si sapesse che la password e' formata da una parola tipo :
"sosta" o "posta" .. plurale o singolare con 'aggiunta in fondo di un numero di 2 cifre
seguito da una vocale.. si procederebbe impostando le premesse :

sp
o
s
t
ae
0123456789
0123456789
aioue

il generatore creerebbe una lista contenente le parole :

sosta00a, sosta00i, sosta00o, sosta00u, sosta00e, sosta01a ,sosta01i
sosta01o, sosta01u, sosta01e, sosta02a, sosta02i, sosta02o ,sosta02u
sosta02e ...
... poste99a, poste99i, poste99o, poste99u, poste99e


La difficolta' nella costruzione di questi generatori risiede in misura notevole
nella visione 'lineare' del problema quando invece occorrerebbe affrontarlo in
maniera piu' meccanica e/o logica a seconda dei casi.

Il tipico errore che viene perpetrato costantemente e' stato rappresentato benissimo
da Uberto Eco nel suo libro "Il pendolo di Focault".
Umberto Eco si pone il problema di trovare tutte le possibili permutazioni del nome
del Signore in ebraico: Iahveh .. o forse IHVH dato che in ebraico non si scrivono le
vocali.
Allo scopo butta giu' un programino veramente 'esemplare' di cio' che un buon programmatore
non dovrebbe mai fare .. riporta su carta il suo pensiero cercando di adattare un
sistema automatico alle proprie esigenze di comprensione la dove sarebbe meglio in 99
casi su 100 fare esattamente l'opposto.

Inizia col programma (in basic) per trovare le permutazioni di 4 caratteri

10 REM anagrammi
20 INPUT L$(1),L$(2),L$(3),L$(4)
30 PRINT
40 FOR I1=1 to 4
50 FOR I2=1 to 4
60 IF I2=I1 THEN 130
70 FOR I3=1 TO 4
80 IF I3=I1 THEN 120
90 IF I3=I2 THEN 120
100 LET I4=10-(I1+I2+I3)
110 LPRINT L$(I1),L$(I2),L$(I3),L$(I4)
120 NEXT I3
130 NEXT I2
140 NEXT I1
150 END

Glissando sulle qualita' tecniche del grande scrittore per mia sincera e profonda
devozione alla sua conoscenza in 'altre' discipline :)) ..
si vedono subito gli errori di concetto nella formulazione di un programma che possa
fornire un metodo generale per risolvere il problema:

Errore 1: bisogna sapere in precedenza il numero di caratteri della parola da permutare

Errore 2: per ogni parola di N caratteri sono necessari almeno N-1 cicli diversi e (n-2)!
controlli logici da riscrivere direttamente nel listato ogni qual volta si
presenti una parola piu' lunga del previsto.

Errore 3: e' necessario scrivere almeno N programmi diversi per N parole di lunghezza diversa.

Ma allora esiste un sistema per generalizare la cosa?

Ebbene si.

Il modello piu' frequentemente usato (almeno da me) e' quello semplice del modulo contatore
digitale.

Chiunque si sia avvicinato per la prima volta all'elttronica digitale sa come sia facile
autocostruirsi con pochissimo sforzo di progettazione un orologio recante la visura di
ore, minuti e secondi. Esistono infatti display dotati di counter interno che alla
ricezione di un impulso elettrico fanno aumentare la cifra da loro visualizzata di 1.
Superando il massimo impostato (9 o 2 o 5 a seconda dei casi) ritornano alla cifra
iniziale emettendo a loro volta un impulso di conferma.

Mettiamo di volere costruire ipoteticamente questo orologio.. prenderemmo 6 display con
contatore interno. Un display a massimo valore "9" e uno a massimo valore "5" per i secondi,
altri due display a max "9" max "5" per i minuti e due display uno a max "2" e l'altro
a max "3" per le ore.

max 2 max 3 max 5 max 9 max 5 max 9
+-------+ +-------+ +-------+ +-------+ +-------+ +-------+
| ----| | ----| | ----| | ----| | ----| | ----|
| / /| | / /| | / /| | / /| | / /| | / /|
| --- | | --- | | --- | | --- | | --- | | --- |
|/ / |_|/ / |___|/ / |_|/ / |___|/ / |_|/ / |__< impulso 1Hz
|---- | |---- | |---- | |---- | |---- | |---- |
+-------+ +-------+ +-------+ +-------+ +-------+ +-------+
1 2 3 4 5 6


Mettiamo che tutti i contatori siano a zero. Immettendo un impulso nel contatore
sei lo stesso scalerebbe a "1", cn un altro impulso scalerebbe a "2" e cosi' via
fino a "9" .. alla ricezione del decimo impulso il contatore si riporterebbe sullo
"0" emettendo un impulso per il contatore 5 che scalerebbe a sua volta a "1".

Mettiamo ora di avere i diplay nella posizione 18: 59: 59

Un impulso al contatore 6 farebbe andare quest'ultimo su "0" emettendo un imulso per
il contatore 5 che essendo a massimo 5 andrebbe pure lui a zero emettendo un impulso
per il contatore 4 che da 9 (max 9) andrebbe a zero emettendo a sua volta un impulso
per il contatore 3 (max 5) che essendo a 5 andrebbe a zero emettendo (ed e' l'ultimo!)
l'impulso per il contatore 2 che da 8 andrebbe a 9..
quindi un impulso dopo la situazione 18:59:59 .. si leggerebbe su i display 19:00:00.

Dove sono le affinita' col generatore di password ? ..sempice. Il motore meccanico che
muove i due sistemi dovra' essere esattamente lo stesso.

Facciamo il dovuto parallelo con la solita password conosciuta solo in parte.

Supponiamo ad esempio che la password da trovare sia una vocale seguita da un numero,
il tutto seguito dalla parola pippo seguito da tre vocali.

quindi una cosa tipo VNpippoVVV con V==una vocale a caso, N== un numero a caso.

la premessa da impostare risulterebbe

aeiou
0123456789
p
i
p
p
o
aeiou
aeiou
aeiou

un totale di 6250 permutazioni libere ( 5*10*1*1*1*1*1*5*5*5 ) e
(5+10+1+1+1+1+1+5+5+5) 35 caratteri diversi che richiederebbero col sistema di Eco
almeno 34 cicli FOR e una marea smisurata di condizioni logiche.


Usando invece semplicemente il sistema del contatore si considerano DISPLAY i caratteri
della prima colonna

a 0 p i p p o a a a

il massimo valore di ogni display sara' il numero di caratteri presenti sulla riga.

il primo display "a" avra' massimo 5 (-aeiou- sono 5 caratteri diversi), il secondo display
0 avra' massimo 10 (-0123456789- sono 10 caratteri diversi) e cosi' via..

si da impulso al diplay finale .. ovvero si prende in considerazione il carattere
successivo a quello considerato. Quando dovremo considerare il caratter succesivo al
quinto torneremo a considerare il primo ed aumentero di uno quello del display appena sopra.

Si presenta il problema di conoscere il 'totale' degli impulsi da fornire al sistema
per sonsiderare tutte le permutazioni .. ma questo e' semplice e lo abbiamo gia trovato:
sono appunto (per il caso considerato) 6250 impulsi.

Un esempio piu' semplice da considerare senza calcoli troppo complessi e' quello di

sp
o
s
t
ae

i display sono :

max ..2 ..1 ..1 ..1 ..2
+---+ +---+ +---+ +---+ +---+
| s |_| o |_| s |_| t |_| a |
+---+ +---+ +---+ +---+ +---+
1 2 3 4 5

al primo impulso fornito al diaply 5 avremmo

s o s t e

al secondo impulso il display 5 ha raggiunto il massimo quindi torna ad "a"
fornendo un impulso al display 4 che pero' essendo max 1 resta dov'e' e fornisce
l'impulso al display 3 che per gli stessi motivi lo replica al display 4 che
lo replica al dispaly 5 che passa da "s" a "p" mostrando cosi'

p o s t a

un ulteriore ed ultimo impulso fornito al display 6 mostrera' la situazione finale

p o s t e

avremo cosi' ottenuto tutte le possibili permutazioni della passord impostata usando
praticamente un solo ciclo e nessuna condizione logica preimpostata.


Un programma tipo in C++ per verificare il sistema potrebbe essere il seguente:


--------------------------------------------- dic.c
#include <stdio.h>

main(int nf,char **file)
{
FILE *f;
long t=1,g,x,y,n,k=0;
char s[0xff],p[0x20][0xff];
long u[0xff],r[0xff];
if((f=fopen(file[1],"rb"))==NULL)exit(0);
#define c(a,b)\
for(a=0;a<b;a++)

while(!feof(f)){
fgets(s,0xff,f);
c(n,strlen(s))s[n]=s[n]==13||s[n]==10?0:s[n];
strcpy(p[k],s);
r[k]=1;
u[k++]=strlen(p[k]);}

c(y,k)t*=u[y];
c(x,t){
g=k-1;
c(y,k)putchar(p[y][r[y]-1]);
r[g]++;
while(r[g]>u[g]){
r[g]=1;
r[--g]++;}
putchar(10);}
fclose(f);
}
---------------------------------------------


DIC per quanto possa sembrare piccolo e semplice e' un completo ed organizzato
generatore di dizionari su premesse.

DIC accetta in input il nome di un file contenente la lsita dei caratteri da
provare.
Ad esempio la lista.txt potrebbe essere la solita

--------------------------------------------- lista.txt
ps
o
s
t
ae
---------------------------------------------

con DIC lista.txt > dizio.txt


otterremo un secondo file dizio.txt contenente :

---------------------------------------------
sosta
soste
posta
poste
---------------------------------------------


la cosa potrebbe essere usata per gli scopi piu' vari..
ad esempio per generare una lista di IP da provare.
Per generare tutti gli IP della classe C
194.185.55 dovremmo impostare un file lista.txt cosi':

--------------------------------------------- lista.txt
1
9
4
.
1
8
4
.
5
5
.
012
012345
0123456789
---------------------------------------------

con DIC lista.txt > dizio.txt


otterremo un secondo file dizio.txt contenente gli IP cercati

---------------------------------------------
194.184.55.000
194.184.55.001
194.184.55.002
194.184.55.003
194.184.55.004
194.184.55.005
194.184.55.006
194.184.55.007
194.184.55.008
...
194.184.55.254
194.184.55.255
194.184.55.256
194.184.55.257
194.184.55.258
194.184.55.259
---------------------------------------------


la procedura che simula il sistema del contatore digitale e' tutta qui

c(y,k)putchar(p[y][r[y]-1]);
r[g]++;
while(r[g]>u[g]){
r[g]=1;
r[--g]++;}

p[] rappresenta i caratteri del contatore.
r[] lo stato numerico del contatore stesso
g e' il contatore considerato.

per questo:

c(y,k)putchar(p[y][r[y]-1]);


visualizza tutti i caratteri p[] in posizione r[] per k contatori

r[g]++

incrementa il contatore finale di uno.

while(r[g]>u[g]){

nel caso lo stato numerico del contatore superi il suo massimo

r[g]=1

quest'ultimo viene rimesso allo stato iniziale

r[--g]++

e viene incrementato lo stato del contatore successivo.
Il while permette di ripetere la stessa verifica fatta in precedenza
sul nuovo contatore senza nulla aggiungere in termini di nuovi cicli
o di condizioni logiche.


La bellezza e la funzionalita' di questo sistema risiede principalmente nel fatto che
indipendentemente dalla lunghezza e dalle condizioni impostate i cicli necessari alla
formulazione delle permutazioni sono sempre gli stessi -uno solo- .. e allo stesso modo
il quantitativo di condizioni logiche di valutazione.

Nel caso si volesse invece provvedere ad un generatore di permutazioni senza ripetizioni
si avrebbe cmq la possibilita' di intervenire esternemanete al ciclo while di controllo
(quindi direttamente sulla fornitura dell'impulso) ottenendo ottimi risultati con
l'aggiunta di un paio di righe di programma.

Questo e' un esempio dello stesso programma per ottenere un serie non ripetuta di
permutazioni di una parola di una lunghezza qualsiasi (sempre con lo schema del
generatore di dizionari a premesse)

--------------------------------------------- per.c
#include <stdio.h>

main(int nf,char **file)
{
FILE *f;
long h,t=1,g,x,y,n,m,k=0;
char s[0xff],p[0x20][0xff];
long u[0xff],r[0xff];
if((f=fopen(file[1],"rb"))==NULL)exit(0);
#define c(a,b)\
for(a=0;a<b;a++)

while(!feof(f)){
fgets(s,0xff,f);
c(n,strlen(s))s[n]=s[n]==13||s[n]==10?0:s[n];
strcpy(p[k],s);
r[k]=1;
u[k++]=strlen(p[k]);}

c(y,k)t*=u[y];
c(x,t){
g=k-1;
h=0;c(n,k)c(m,k)if(r[n]==r[m]&&n!=m)h=1;
if(h==0){c(y,k)putchar(p[y][r[y]-1]);putchar(10);}
r[g]++;
while(r[g]>u[g]){
r[g]=1;
r[--g]++;}}
fclose(f);
}
---------------------------------------------



Il programma e' esattamente lo stesso di DIC.C con l'aggiunta del controllo
sulla valutazione di contatori ad identico stato.

h=0;c(n,k)c(m,k)if(r[n]==r[m]&&n!=m)h=1;
if(h==0){c(y,k)putchar(p[y][r[y]-1]);putchar(10);}

viene semplicemente messa una variabile di controllo a zero

h=0;

quindi:

c(n,k)c(m,k)if(r[n]==r[m]&&n!=m)h=1

nel caso lo stato dei contatori considerati sia uguale (ed ovviamente i
due contatori siano diversi) la variabile di controllo viene messa ad 1.

if(h==0){c(y,k)putchar(p[y][r[y]-1]);putchar(10);}

.. solo nel caso in cui non si stiano considerando contatori a stato simile
si stampa il risultato del dispaly.


Esempio: .. si vuole ottenere tutte le permutazioni senza ripetizioni di dizionario
della parola IHAVEH

si crea il file lista.txt

--------------------------------------------- lista.txt
IHAVEH
IHAVEH
IHAVEH
IHAVEH
IHAVEH
IHAVEH
----------------------------------------------

nel caso di DIC.C avremmo ottenuto con DIC lista.txt > dizio.txt

di 6^6 == 46656 permutazioni libere diverse


con PRE lista.txt > dizio.txt

si otterranno invece le (N-1)! == 6! == 720 permutazioni senza ripetizione.

Ancora una volta senza usare cicli in piu' del solito while ed implementando
un solo doppio ciclo generale per la valutazione delle condizioni logiche di
filtraggio .. con buona pace di Umberto Eco e del suo Abulafia. ;-)

La simulazione di modelli meccanici e di sistemi analogici e' una delle principali
risorse della programmazione ma come i problemi della ricerca operativa spesso e'
semplice da implementarsi quanto difficile da 'vedersi'.

Nel caso si riesca a penetrare con lo sguardo al di la' del normale incedere
lineare (unico strumento razionale a noi familiare) i risultati in termini di
velocita' e semplicita' non tarderanno a venire. ;-)



Come ultima cosa riporto un esempio di applicazione leggermente piu' complesso
concettualmente sebbene sempre di semplice stesura:

personalmente ho rilevato spesso l'esigenza di avere un generatore di dizionario
che non assembli soltanto caratteri singolari ma bensi' liste di sequenze di
caratteri tanto da poter definere delle premesse di questo tipo:

post
a o ergato i ino ato avo

oppure

ro ra ri re ru
ma mo me mi mu
no na


per avere dizionari in uscita come

----------
posta
posto
postergato
posti
postino
postato
postavo
----------

nel primo caso e

----------
romano
romana
romono
romona
romeno
romena
romino
...
...
...
rumeno
rumena
rumino
rumina
rumuno
rumuna
-----------

nel secondo.


Il programma che segue accetta in input un file di testo contenente le premesse che dovranno
pero' essere dichiarate nel seguente modo:
-> ogni premessa deve iniziare col simbolo "\:" e terminare con "\."

quindi sara' possibile dichiarare i due esempi precedenti con file input.txt tipo questi:

-------------------------------input1.txt
\: post \.
\: a o ergato i ino ato avo \.
------------------------------

oppure

------------------------------ input2.txt
\: ro ra ri re ru \.
\: ma mo me mi mu \.
\: no na \.
------------------------------


la sintassi per l'uso e' analoga ai programmi precedenti:

DIC4 input.txt > dizio.txt


il programma:


--------------------------------------------- DIC4.c
#include <stdio.h>

main(int nf,char **file)
{
FILE *f;
long t=1,g,x,y,n,k=0,w=0;
char s[0xff],p[0x20][0x20][0x20];
long u[0x20],r[0x20];
if((f=fopen(file[1],"rb"))==NULL)exit(0);
#define c(a,b)\
for(a=0;a<b;a++)

while(!feof(f)){
fscanf(f,"%s",s);
if(strstr(s,"\:"))k=0;
else if(strstr(s,"\.")){r[w]=1;u[w++]=k;}
else strcpy(p[w][k++],s);}

c(x,w){c(y,u[x])printf("%s ",p[x][y]);printf("\n");}

c(y,w)t*=u[y];
printf("\n%ld parole. \n\n",t);
c(x,t){
g=w-1;
c(y,w)printf("%s",p[y][r[y]-1]);
r[g]++;
while(r[g]>u[g]){
r[g]=1;
r[--g]++;}
putchar(10);}
fclose(f);
}
---------------------------------------------




- . -


-= Master *** =-
SPP MEMBER
Master@spippolatori.com
www.spippolatori.com




I vari programmi in C per chi li volesse gia compilati sono acclusi di seguito
in formato UUCODE.



begin 644 prog.zip
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
M:9:G"J3%%!GKOQQ:"04+N496B)HI^#/<V=M`',9BL` U7*_.PFK,PDM;A/
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
F`"````#),@``4$52+D5815!+!08``````P`#`*````"O1P``````
`
end
sum -r/size 22132/18533
===========================================================================================

---------------------
LINUX VERSUS WINDOWS
---------------------

Forse questo sarebbe un valido argomento di discussione per una tavola rotonda, ma ci tengo a dire quattro parole rivolte soprattutto a chi non è un grande esperto e si sente ripetere da tutti "Installa Linux, winzoz non serve a niente". Cercherò d'essere imparziale verso entrambe le piattaforme, cercando di descriverne, a larghe linee, i principali svantaggi e vantaggi. Diciamo pure che il 90% (se non di più) degli utenti utilizza Windows (NT, 95, 98 ecc...) quindi, per uno smanettone è indispensabile conoscere il sistema operativo maggiormente diffuso. Il fatto che un po' mi dà fastidio, è che la maggior parte delle persone che sostiene che "Windows fa schifo", è costituita da inesperti che si lasciano trascinare dalle idee degli altri. Prima di affermare una cosa del genere almeno bisognerebbe saper programmare e conoscerne abbastanza bene il funzionamento. Io di musica non ne capisco un cappero, perciò posso solo dire che preferisco un autore ad un altro perché + motivo, ma non che l'altro sia meno o più bravo. Sono entrambi dei sistemi molto validi, ma completamente opposti. Ognuno ha i suoi vantaggi e svantaggi. La cosa migliore sarebbe quella di averli entrambi in due partizioni separate. A proposito di questo discorso, mi è venuta in mente un'altra questione che spesso m'irrita hehehe. La stragrande maggioranza degli utenti decide di installare Linux lo fa perché si è stufato di Windows. L'altra parte invece desidera conoscere nuove cose, poiché conosce già un altro sistema approfonditamente. Beh, ogni individuo appartenente alla prima categoria, subito dopo essere riuscito ad installare il nuovo amico, si ritrova nei guai perché non può usare la shell grafica dato che Linux non gli supporta la scheda e vari altri componenti hardware (ora comunque la situazione sta rapidamente cambiando!). Il bello è che Unix non è nato per essere un ambiente grafico, ma uno simile (solo per aspetto) al vecchio disk operating disk (il dos insomma). Ma allora perché installare un altro sistema? Per farlo assomigliare a quello che già si ha, aggiungendo nuovi e più complessi problemi? Chi usa la shell grafica vuole evidentemente la comodità e maggior semplicità. Per leggere il contenuto di un floppy bisogna scrivere un libro, è più facile perciò farci click sopra. Ma questa non è una caratteristica (la più importante) del prodotto della Microsoft (a dire la verità, a sua volta copiato dal mac)? Anche io ho usato per un pò Linux e mi sono subito imbattuto in una shell dove appariva addirittura anche il menù d'avvio (stesso discorso per kde). Quello che voglio dirvi insomma è di non fare le cose solo perché sono gli altri a dirlo, spesso, infatti, si dice "Windows, ma che ci fai? Installa Linux!" solo per far vedere che si è bravi. Per usare questa piattaforma occorre un'ottima conoscenza dei prottocolli, di C e una voglia di imparare e di tempo libero infinitamente grandi. Ultima considerazione antinewbiecredulone: non è vero che Linux possa fare delle cose su Internet che Win non sia in grado di supportare. E' una menzogna. Infatti tutto dipende dai vari protocolli (TCP, UDP, IP, SMTP...) e non dal sistema. Ad esempio molti credono di dover usare per forza Red Hat o fratelli per usare lo spoofing. Errato: provate a dare un'occhiata alla dll winsock.dll C'è il raw tcp, ovvero l'arte del forgiare i pacchetti a mano. Tutto si può fare, basta saper programmare. Ora che ho finito questa specie di introduzione, possiamo passare avanti.
Linux vs Windows: la stabilità. Qui c'è parecchia roba di cui parlare. C'è poco da commentare per quanto riguarda Linux, che è sicuramente più stabile sia di NT, che di 95/98. Unix non si blocca mai, neanche se lo pestate o se date una martellata all'hard disk :-) Window95/98 in questo campo hanno i loro problemi. Molte volte il sistema crasha o diventa instabile. Perché? Beh, perché la Ms ha deciso di sacrificare questo fattore a favore della semplicità d'uso. Sappiamo benissimo che questo sistema riconosce una vastissima gamma di componenti e li rileva automaticamente e inoltre supporta anche direct x e varie altre funzioni. Linux non fa nessuna di queste cose. Inutile ripetere quanto spesso risulti difficile installare del nuovo hardware o aggiornare il sistema operativo stesso. Win costa una bella cifra, mentre l'altro è gratuito, fattore cruciale. WinNt è un po' più stabile e ha, anche se in minor parte, gli stessi problemi di Linux. Staremo a vedere cosa succederà con il nuovissimo Windows 2000. Qui il vincitore è Linux (che batte 5-0 Win95/98, 1-0 WinNT), ma gli altri aspetti non sono assolutamente da sottovalutare. Dipende insomma dai propri gusti e dalle proprie esigenze. Ad esempio per quello che io faccio col pc preferisco il prodotto della casa di Redmond.
Il supporto: Linux in questo campo è pessimo. WinNT non molto migliore, Win95/98 superiore ad entrambi. Il discorso però è uguale a prima. Se non ci tenete a giocare con Half Life with Matrox G400 e non possedete un pc ultimo modello, anche Linux può andare, visto che non sarebbe un ambiente grafico. Stessa cosa: dipende dai propri gusti. (Win95/98- Linux = 5-0), (Linux-WinNt =
0-1).
Richiesta di risorse: nulla da dire. Linux gira su un 386, a Win95/98 occorre il quadruplo d'ogni cosa. WinNT un po' meglio di Win95, ma sicuramente peggiore dello sfidante diretto. E' un fattore determinate se siete in possesso di un pc vecchiotto, è irrilevante se avete un processore superiore ad un Pentium 200 "liscio".
La facilità: terreno ostico per Linux, che è vinto da Win 10 a 0. Ma questo non significa niente, perché noi desideriamo imparare un altro sistema (dato che l'altro, sto facendo un discorso teorico, lo conosciamo) e se è difficile meglio! Sarà più stimolante ;-) Altri aspetti non mi vengono in mente, ma il concetto base e che né uno né l'altro è migliore, perché dipende dalle proprie esigenze. Io consiglio di iniziare con Windows e di imparare a conoscerlo abbastanza approfonditamente. E' inutile imparare due cose in malo modo. Meglio salire i gradini uno per volta. Ci vuole molto tempo per capire Windows. Quanto? Beh, quando saprete creare un'applicazione con più thread, usare file mappati in memoria, semafori, mutex e usare le API della dll gdi, allora potrete passare a Linux. E poi non abbiamo nemmeno accennato ad altri sistemi, che forse sono anche loro molto validi (anzi, lo saranno sicuramente), semplicemente perché io non li ho mai usati. Sto parlando di Os2 (per gli anti-ms: lo sapevate che Os2 è frutto del lavoro di Microsoft ed IBM?), Mac (vabbè, questo è più di un sistema, ma siamo semplicistici), BeOs, Solaris... Insomma, Linux versus Windows è solo un capitolo, ciò che vi ho voluto dire è che dovete ragionare con la vostra testa (e perciò non fidarvi sempre degli altri) e di imparare le cose un po' per volta. Se conoscere vi piace, il tempo lo troverete.
Spero di non avervi fatto incavolare più del dovuto :-) Ciao e buona riflessione.

-=Azathoth=-

===========================================================================================
L'arte della crittografia di ADaM "Unno" unno@softhome.net


Sommario

Storia della crittografia
Algoritmi a chiave simmetrica (o segreta)
DES, Data Encrytion Standard
Violare il DES
IDEA, International Data Encryption Algorithm
Algoritmi a chiave pubblica o crittografia asimmetrica
Diffie-Hellmann
RSA
Fattorizzato RSA-129
Fattorizzato RSA-140
Fattorizzato RSA-155
TWINKLE la macchina per fattorizzare
Servizi di email criptate web-based
L I N K



Storia della crittografia

La crittografia come modifica volontaria del testo esisteva già al tempo
degli egiziani nel 1900 a.C. (tomba del faraone Knumotete II).
La parola crittografia ha origine greca e significa "nascosto". Un'altra
parola correlata è steganografia che significa scrittura nascosta. Un
esempio legato all'antichità è di scrivere messaggi segreti non
sull'argilla che ricopriva le tavolette, ma sulle stesse tavolette che
venivano poi ricoperte d'argilla e sembravano non usate.

Gli Spartani per crittare un messaggio segreto di tipo militare usavano
2500 anni fa una striscia di papiro avvolta a spirale attorno ad un bastone
(che costituirà la chiave di decodifica). Una volta scritto il messaggio in
verticale sul papiro questo veniva consegnato al destinatario che, con un
bastone dello stesso diametro poteva leggere il messaggio in chiaro. Questo
metodo è di trasposizione perchè il messagggio è in chiaro ma l'ordine
delle lettere è da scoprire.

Un altro metodo, questa volta di sostituzione, è stato inventato da Giulio
Cesare: la chiave è un numero n stabilito e si sostituisce ogni lettera del
messaggio con l'ennesima seguente.
Esempio: pippo con chiave 3 diventa snssr.
Questo metodo è facilmente attaccabile perchè basta confrontare la
frequenza delle lettere nella lingua italiana con la frequenza dei simboli
usati nel messaggio cifrato. Bisogna inoltre considerare che le chiavi
possibili sono solo 26, quindi al limite con un brute force si potrebbe
scovare la chiave. Data la bassa complessità [tanto bassa non è, numero di
combinazioni possibili: 26!=4*(10^26)] del metodo usato da Cesare è chiaro
che non fosse infallibile, ma dati i risultati militari è stato efficace!
Il metodo di Cesare ha ispirato un sistema usato ancora oggi, il ROT-13
dove la chiave è appunto 13, quindi A->N, B->O, etc.

Il metodo che usavano gli ebrei è detto ATBASH. La sostituzione avviene
utilizzando questa tabella dove le lettere della seconda riga sono scritte
in ordine decrescente:
a b c d e f g h i j k l m n o p q r s t u v w x y z
z y x w v u t s r q p o n m l k j i h g f e d c b a
Messaggio: Il Libro di Geremia
Testo Cifrato: Ro Oryil wr Tvivnrz

Lo storico greco Polibio inventò una tecnica di codifica legando le lettere
a una coppia di numeri che ne indicava la posizione in una tabella. La
coppia di numeri era comunicata nella notte attraverso delle torce. Ecco un
esempio di tabella:
1 2 3 4 5
1 a b c d e
2 f g h ij k
3 l m n o p
4 q r s t u
5 v w x y z
pippo diventa (3,5) (2,4) (3,5) (3,5) (3,4)
Se la disposizione delle lettere nella tabella non seguono l'ordine
alfabetico si capisce la di

  
fficoltà di trovare la chiave che in questo caso
è la tabella.

L'imperatore romano Augusto usava invece un altro interessante metodo di
sostituzione usando come chiave un'altra parola o frase. La chiave e il
testo avevano un corrispettivo numerico, il testo cifrato risultava una
sfilza di numeri ottenuti come somma fra testo e chiave. Esempio (testo:
spippolatori, chiave: decifralo):
a b c d e f g h i l m n o p q r s t u v z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
testo in chiaro s p i p p o l a t o r i
chiave d e c i f r a l o d e c
valore testo 17 14 9 14 14 13 10 1 18 13 16 9
valore chiave 4 5 3 9 6 16 1 10 13 4 5 3
valore cifrato 21 19 12 23 20 29 11 11 31 17 21 12
testo cifrato z u n b v h m m m s z n

Se la somma (valore cifrato) eccede 21 si ricomincia dalla a; ciò equivale
a fare una somma modulo 21.
La decifrazione è una semplice sottrazione.
La criptoanalisi di questo metodo non beneficia della frequenza delle
lettere della lingua usata. Questo metodo può essere attaccato con un brute
force utilizzando un dizionario di parole. Ovviamente ci si può difendere
non usando come chiave parole di senso compiuto, ma un insieme di lettere
generate in maniera casuale.

E, se ogni volta si cambia la chiave generandola casualmente, stiamo usando
un metodo chiamato One-Time Pad, che è difficile da superare senza
conoscere la chiave e generando in maniera "davvero" casuale la chiave (e
non è facile perchè si può ottenere solo osservando fenomeni casuali
naturali). Occorre notare che non bisogna usare questo metodo per due
diversi messaggi con la stessa chiave perchè la differenza tra testo
cifrato e testo in chiaro è uguale e, in unione a un bruteforce, aiuta di
parecchio la criptoanalisi di questo metodo. Infatti, trascurando il
discorso della somma modulo 21 per semplificare il discorso risulta che:
1) Cifrato1 = Testo1 + Chiave
2) Cifrato2 = Testo2 + Chiave
Sottraendo si ha:
Cifrato1 - Cifrato2 = Testo1 + Chiave - (Testo2 + Chiave) = Testo1 - Testo2

Altri metodi usatissimi per centinaia di anni prevedevano la sostituzione
delle singole parole con altre che costituivano la chiave. Spesso si
usavano più metodi insieme.
Siamo nel quindicesimo secolo quando nasce la crittografia moderna con Leon
Battista Alberti, artista rinascimentale poliedrico, amico di un
funzionario pontificio che gli chiese di inventare un metodo di
crittografia.
L'idea partì dall'osservazione che un criptoanalista può essere aiutato
dalle caratteristiche di una lingua come le frequenza delle lettere, le
sillabe impossibili o più frequenti, le sequenze di lettere caratteristiche
come le desinenze. Per rendere più difficile il lavoro del criptoanalista
altro non c'era da fare se non cambiare durante il procedimento l'alfabeto
da cui pescare la lettera cifrata: questo è il sistema polialfabetico.

Altro esempio di cifratura con il sistema del polialfabeto è quello
inventato da un tedesco contemporaneo dell'Alberti: Johannes Trithemius. Il
sistema fa uso di una tabella che si chiama tabula recta, formata da 26
righe (tante quante le lettere dell'alfabeto inglese) riportanti ognuna un
alfabeto scalato di una posizione rispetto a quello precedente. La tabella
si usa così: la prima lettera da cifrare rimane la stessa, la seconda si
cifra con il secondo alfabeto, la terza lettera userà il terzo alfabeto e
così via fino a ricominciare dal primo alfabeto dopo la ventiseiesima
lettera. Per rendere difficile il lavoro dei criptoanalisti si può usare un
alfabeto disordinato o, meglio ancora (è più facile da ricordare e
comunicare al destinatario del messaggio) una frase chiave.

L'uso della criptografia continua intensificandosi sempre di più e
migliorandosi con il tempo fino ad avere importanza tale da cambiare il
corso della storia durante le due guerre mondiali quando appaiono le prime
macchine elettriche per cifrare i messaggi ma, soprattutto, per la
criptoanalisi.
I tedeschi usarono per tutta la seconda guerra mondiale una macchia
chiamata Enigma che avrebbe dovuto cifrare i messaggi in maniera sicura.
Così non successe, perchè inglesi e polacchi unendo le loro forze furono in
grado di decifrare quasi tutti i messaggi intercettati.
L'Enigma era una macchina elettromeccanica con contatti, lampadine, rotori
e una tastiera. Ogni lettera veniva cifrata con un alfabeto diverso dando
luogo ad un numero sproposito di combinazioni che rendevano la decodifica
teoricamente impossibile per l'epoca. Ma ciò non fermò gli inglesi che
trassero grande beneficio dai messaggi decodificati.

Per anni la regola generale è stata di creare algoritmi semplici e di
impiegare chiave molto lunghe per rendere difficile la vita al
criptoanalista. Oggi l'orientamento è opposto data la potenza di calcolo di
cui si può disporre per fare un bruteforce, quindi si creano algoritmi
complicatissimi da decifrare in modo che anche se il nostro avversario
avesse parecchio materiale su cui condurre un'analisi, gli sarebbbe
pressocchè inutile.
Oggi la crittografia serve per il commercio elettronico, l'autenticazione,
la riservatezza delle informazioni, etc. Uno dei presupposti fondamentali è
che si suppone che il criptoanalista di turno conosca in generale il nostro
metodo di crittografia, questo perchè è davvero un disastro cambiare ogni
volta metodo di crittografia ogni qual volta si ha il sospetto che qualcuno
sia riuscito a infrangerlo. Da questo presupposto segue che i metodi si
basano sulle chiavi di codifica e decodifica.
Se la chiave è la stessa sia per la codifica che per la decodifica
ricadiamo nel caso delle crittografia classica: questi sono i metodi a
chiave simmetrica o segreta. Gli algoritmi a chiave asimmetrica o pubblica
(che risalgono agli anni '70) utilizzano coppie di chiavi complementari.
Una delle due chiavi è pubblica e conosciuta da tutti e serve per cifrare i
messaggi, mentre l'altra è segreta e riservata al destinatario dei messaggi
che la utilizzerà per decifrarli. Le chiavi vanno a coppie e quindi solo
una chiave può decifrare il messaggio generato utilizzando la chiave a lei
complementare. In questo modo possiamo trasmettere tranquillamente la
nostra chiave pubblica senza paura che venga intercettata.

Spesso ci si orienta per metodi ibridi simmetrici-asimmetrici (come succede
nel famoso PGP) perchè il solo metodo asimmetrico non è efficiente (è
lento!) per grandi moli di dati e, se dovessimo inviare lo stesso messaggio
a più persone, dovremmo cifrarlo ogni volta con la giusta chiave.
PGP (Pretty Good Privacy) è un pacchetto freeware (http://www.pgpi.com) che
realizza la crittografia a chiave pubblica; permette l'interscambio di
documenti elettronici realizzando segretezza, autenticità, integrità dei
dati su un canale insicuro. PGP è principalmente pensato per lo scambio di
documenti via Internet, ma può essere usato su un qualsiasi canale
insicuro; è indubbiamente un prodotto di qualità, e non c'è da dubitare
dell'integrità morale del suo autore (che potrebbe come sempre aver
lasciato delle trap-door), Philip Zimmerman. Egli infatti lo ha sviluppato
con il chiaro intento di permettere la privacy nell'interscambio di posta
elettronica su Internet, con un approccio fortemente critico verso la
politica di NSA e del Congresso Americano di progettare un monopolio dei
sistemi di crittografia; P. Zimmerman è stato sotto inchiesta per due anni
e mezzo, accusato di esportazione non autorizzata di materiale
crittografico, ed è recente la notizia che le autorità federali
statunitensi hanno deciso di non perseguirlo penalmente.


Algoritmi a chiave simmetrica (o segreta)


DES, Data Encrytion Standard

Standard federale ancora oggi ufficiale (nella versione triplo-des) per gli
USA, è nato nel 1977 per implementazioni per lo più hardware come
derivazione di Lucifer, un algoritmo di IBM nato nel '70, su insistenza del
National Bureau of Standard per difendere dati riservati ma non segreti
militari.
Il DES brevettato nel 1976 da IBM è royalty-free dal 1993.
Il DES è un codice cifrato a blocchi (si dice che un codice è cifrato a
blocchi quando si applica un codice cifrato a un bit, byte, parola o gruppi
di parole alla volta). Il blocco che si usa per crittografare è di 64 bits
(8 sottoblocchi da 8 bits). Dato che l'ultimo bit di ogni sottoblocco è di
controllo, i bit utili sono 56.
Per cifrare il testo si divide in blocchi da 64 bits che sono cifrati in
successione. Se un messaggio non riempie i 64 bits si può completare in
diversi modi: si possono aggiungere zeri, si possono aggiungere bit random
specificando nell'ultimo quanti se ne aggiungono, etc.
Il DES è molto usato in ambito commerciale perchè nonostante consti di
numerosi passaggi, questi sono tutti relativamenti semplici come XOR,
sostituzioni e permutazioni.
Occorre ricordare che il DES cambia solo la chiave; questo porta vantaggi
economici immediati, ma appena verrà scoperto il modo per forzarlo (senza
bruteforce) occorrerà cambiare radicalmente tutto. Un altro difetto
fondamentale è lo spazio limitato delle chiavi pari a 2^56. Per ovviare al
problema si tenta di allungare le chiavi o di applicare più volte il DES
(triplo-DES o TDES).
Il progetto originale dell' IMB per il DES prevedeva una chiave più lunga
dei 56 bits usati di default. Probabilmente il progetto originario fu
influenzato dall'NSA che impose all'IBM una chiave sicura, ma comunque alla
portata dei loro potenti mezzi.

Violare il DES

Nel gennaio 1998 la RSA Laboratories lanciò il "DES challenge II"
coordinato e risolto da distributed.net in 39 days.
Record presto battuto, nel 17 luglio 1998.
L'EFF, Electronic Frontier Foundation's, costruì una macchina (DES Cracker
machine) per distruggere il DES e ha scritto un libro (maggio 1998) dove è
spiegato nei minimi dettagli come si è proceduto
(http://www.eff.org/descracker).
La macchina del costo di 210.000 $ (80.000 per lo sviluppo e il rimanente
per i materiali impiegati, il software è stato scritto da volontari in 2
settimane) forza un DES-56 bits in meno di 3 giorni. Il progetto è stato
completato in 18 mesi.
Hanno così dimostrato ai loro "stolti" (così li definiscono nel libro)
governanti che il DES può essere forzato con una macchina dedicata. Qualche
giorno prima un funzionario del dipartimento di giustizia, Robert Litt, si
affannava a dire che non era possibile che l'FBI possesse macchine per
craccare il DES.
6 mesi dopo, 19/01/1999, Distributed.Net lavorando con un network mondiale
in Internet di 100.000 pc e con il DES Cracker della EFF, vinse l'RSA Data
Security's DES Challenge III con il tempo record di 22 ore e 15 minuti!

Dal novembre 1998 il DES non è più l'algoritmo standard federale; è
sostituito dal triplo-DES finchè il nuovo AES non sarà pronto.


IDEA, International Data Encryption Algorithm

Creato nel 1991 da Xuejja Lai e James L. Massey, è, come il DES, codice
cifrato a blocchi di 64 bits con chiave, però, di 128 bits. Anche IDEA usa
calcoli semplici basati su operazioni (addizioni e moltiplicazioni)
modulari, scambi e concatenamenti. Le sottochiavi usate nel procedimento
sono tutte diversi e a 16 bits.


Algoritmi a chiave pubblica o crittografia asimmetrica

Con questo tipo di crittogafia è stato risolto il problema della gestione
delle chiavi che non occorre più trasmettere al destinatario del messaggio
per la decodifica. Il concetto di crittografia simmetrica è stato
introdotto nel 1976 da Whitfield Diffie e Martin Hellman e si basa sul
concetto fondamentale che un messaggio codificato con una precisa chiave
pubblica può essere decodificato SOLO dalla corrispondente chiave privata
che è unica ed associata strettamente a quella pubblica; ciò si basa anche
su un dato matematico per cui, impiegando 1024 bits, per ottenere la
(unica) chiave segreta da quella pubblica occorrerebbe una potenza di
calcolo pari a una rete di milioni di computer al lavoro per 1000 anni!
Gli algoritmi a chiave pubblica, per la loro lentezza, sono usati spesso
per cifrare la chiave di sessione con cui verrà codificato il messaggio
usando la crittografia simmetrica.

Diffie-Hellmann

Nel 1976 due crittologi americani, Diffie ed Hellmann, pubblicarono un
fondamentale lavoro teorico nel quale, ipotizzando di poter disporre di un
cifrario "asimmetrico", dimostravano la fattibilità di sistemi
crittografici di nuovo tipo, adatti alla crittografia di massa mediante il
concetto delle "chiavi pubbliche".
Questo algoritmo è stato sotto brevetto fino al 29/4/97. Basa la sua
difficoltà di decodifica sui problemi logaritmici. E' considerato sicuro
con chiavi lunghe e generatori adatti.

RSA

Nato a due anni dal Diffie-Hellman (e brevettato il 29/9/1983 , scadenza
nel 2000 in USA, libero nel resto del mondo), questo algoritmo è ancora
oggi molto usato (dato in licensa a 350 compagnie, conta un numero di
motori di codifica installati pari a circa 300 milioni). L'acronimo
individua le iniziali degli inventori, i tre ricercatori del MIT Ron
Rivest, Adi Shamir e Leonard Adleman. La sua potenza si basa sull'estrema
difficoltà di ricreare la chiave segreta da quella pubblica basandosi su
funzioni unidirezioni e quindi invertibili ma tali che la funzione diretta
sia banale, ma quella inversa sia estremamente difficoltosa. Ecco un
esempio che dovrebbe chiarire e che è appunto l'idea su cui si basa l'RSA:
è facilissimo trovare il prodotto di due numeri molto grandi, ma dato il
prodotto sarà estremamente difficoltoso trovarne i 2 fattori primi.
Illustriamo i passaggi e l'esempio (che sarà fatto con numeri piccoli per
non complicare):

1) Prendiamo due numeri primi p(=3) e q(=11) molto grandi ed n(=33) sia il
loro prodotto.

2) Prendiamo e(=3) che deve essere: minore di n, dispari e primo con
(p-1)(q-1). [ (p-1)(q-1)=(3-1)(11-1)=2*10=20 ]

3) Calcolare d(=7) in modo che: d*e=1 MODULO (p-1)(q-1). Significa che d*e
diviso (divisione intera) (p-1)(q-1) dà come risultato 1. Infatti
d*e=3*7=21/20=1.

4) Cifriamo il testo con c=(t^e) MODULO p*q.
t, intero positivo, è il testo in chiaro. il risultato c è il testo
cifrato.

La chiave pubblica conterrà n ed e(esponente pubblico), quella privata n e
d(esponente privato).

Se t sono i numeri da 0 ad 8, li cifreremo elevandoli alla terza e facendo
il risultato modulo 33.

plain-text cipher-text
0 _____________ 0
1 _____________ 1
2 _____________ 8
3 _____________ 27
4 _____________ 31 4*4*4=64 MODULO 33 = 31
5 _____________ 26 5*5*5=125 MODULO 33 = 125-(33*3)=26
6 _____________ 18 6^3=216-(33*6)=18
7 _____________ 13 7^3=343-(33*10)=13
8 _____________ 17 8^3=512-(33*15)=17

La chiave per l'RSA è il modulo n. Più è grande la chiave, più sarà sicura
(ma lenta) la cifratura. Con 1024 bits si è abbastanza (molto?) sicuri.
Per craccare un RSA a 256 bits basta un potente home computer; andando a
384 bits servirebbe un'organizzazione universitaria o una grande azienda;
la crittografia a 512 bits può essere superata da agenzie statali. Solo
chiavi a 2048 bits possono ritenersi sicure per qualche anno a ogni livello
(e chissà...).

Se volessimo usare un sistema ibrido si potrebbero usare RSA e DES. Con il
DES produciamo una chiave casuale (che cifreremo con l'RSA) che servirà per
crittare il messaggio in maniera simmetrica. Spedisco poi il messaggio e la
chiave DES cifrata con la chiave pubblica RSA al suo proprietario che con
la sua chiave segreta decritterà prima la chiave che impiegherà per
decodificare il messaggio.
Questo si fa perchè DES è da due (a livello software) a 4/5 ordini (a
livello hardware) di grandezza più veloce dell'RSA.

Fattorizzato RSA-129

Nel marzo 1994, usando 1600 computer connessi a Internet, Atkins e altri
fattorizzarono un numero di 129 cifre (426 bits) in 8 mesi di lavoro.
Una studio del 1997 stimava in un milione di dollari il costo per forzare
un RSA con chiave a 512 bits.
Curiosità: il numero di numeri primi minori o uguali a n è asintotico a
n/ln n. Quindi il numero di numeri primi di lunghezza minore o uguale a 512
bits è di circa 10^150, cioè più grande del numero degli atomi
dell'universo conosciuto. Questo la dice lunga sull'enorme disponibilità di
chiavi diverse.

Fattorizzato RSA-140

Notizia del marzo 1999 apparsa sul mensile Crypto-Gram: è stato
fattorizzato un RSA-140. Un nuovo record è stato stabilito da Herman Riele
e il suo gruppo ad Amsterdam avendo fattorizzato un numero di 140 cifre
(456 bit). Questo numero è stato una delle sfide dell'RSA, era il prodotto
di due numeri primi molto grandi, proprio il tipo di numeri usati nel
criptosistema RSA.
La mole di lavoro è stata stimata in 2000 anni-mips (mips=milioni di
istruzioni al secondo, un anno-mips corrisponde alla potenza di calcolo di
una macchina che macina per un anno un milione di istruzioni al secondo. Un
DEC 11/780 è una macchina mips. Un Pentium II di fascia alta è una macchina
da 200 mips. Il supercomputer per simulare esplosioni nucleari installato
al Sandia National Laboratory è una macchina da 1.8 milioni di mips).
Per l'impresa è stato usato un algoritmo detto "a setaccio di numeri", lo
stesso usato per fattorizzare un RSA-130 impiegherebbe 1000 mips-anni, per
un RSA-150 1500 mips-anni. L'algoritmo non scala come ci si aspetterebbe,
ma le tecniche di fattorizzazione diventano sempre più efficienti e veloci
perchè i computer diventano sempre più veloci, le macchine possono lavorare
in rete, gli algoritmi migliorano continuamente di pari passo alle ricerche
di matematica.
E' stato già avviato un progetto per fattorizzare un RSA-155 (512 bit) che
sarà pronto per fine 1999.

Fattorizzato RSA-155

Sono stati un pò più veloci della fine d'anno promessa e così è il 22
agosto quando il solito Herman Riele annuncia l'impresa compiuta ad
Amsterdam su un numero da 155 cifre (512 bit) del tipo degli stessi usati
per l'RSA in quanto prodotto di due fattori primi da 78 cifre. 300 macchine
tra workstation SGI e PC Pentium hanno lavorato alacremente per sette mesi
durante la notte e i weekend. Usando il solito algoritmo a setaccio si sono
impiegati 8000 anni-mips in 3.7 mesi per la fase cosiddetta "di setaccio" e
224 ore-CPU e 3.2 Gigabytes di memoria per la seconda fase di riduzione
matriciale su un Cray C916.
Lo sforzo è stato 50 volte più facile che craccare il DES. Fattorizzare le
chiavi usate per il commercio elettronico è sempre più facile e lo sarà
ancor di più in futuro. Questa impresa deve mettere in allarme perchè la
maggior parte dei protocolli sicuri usati in Internet usano RSA a 512 bits.
Grosse e medie società come Compaq e Microsoft usano ancora per i loro
magazzini on-line l'RSA a 512 bit. Occorre inoltre riflettere sul fatto che
è probabile che qualche organizzazione in segreto già forzi abitualmente
comunicazioni private e/o segrete.


TWINKLE la macchina per fattorizzare

All'Eurocrypt '99, Adi Shamir (la S dell'acronimo RSA) presenta l'idea per
una macchina che potrebbe incrementare la velocità di fattorizzazione
attuale di 100-1000 volte. Chiamata TWINKLE (The Weizmann INstitute Key
Locating Engine), fattorizza chiavi di 512 bits.
La macchina opera essenziamente in due passi: il primo fa da setaccio e
attua una massiccia ricerca parallela di equazioni con una certa relazione.
Appena un certo numero di relazioni è trovato, c'è una massiccia operazione
matriciale per risolvere un'equazione lineare e produrre i fattori primi.
Shamir ha teorizzato l'uso di tecniche elettro-ottiche per la prima fase di
setaccio, idea peraltro non nuova perchè si rifà a quella di D.H. Lehmer
che pensò nel 1930 di usare tecniche meccanico-ottiche. La macchina sembra
non sia ancora stata costruita. E' da notare che questa nuova macchina non
risolve il problema di prestazione del secondo passaggio che riguarda
operazioni sulla matrici. La complessità del secondo passaggio esplode
nella fattorizzazione di numeri enormi: con un numero a 1024 bit, per
esempio, il secondo passaggio richiederebbe 10 terabytes di memoria (non di
memoria di immagazzinamento ma di vera memoria per il computer).
Questa macchina non introduce nessun concetto matematico innovativo, ma
semplicemente esegue operazioni già conosciute più velocemente.


Servizi di email criptate web-based

L'idea è semplice: così come si entra in Hotmail e si spediscono e ricevono
messaggi, allo stesso modo lo si può fare, utilizzando però email criptate
senza dover scaricare nessun software.
HushMail http://www.hushmail.com, basato su PGP e S/MIME-like, sfrutta
java. Il mittente entra in HushMail e, attraverso un'applet java, può
mandare un'email criptata. Anche il destinatario deve avere un account su
HushMail. Gli account possono essere anonimi. Gli algoritmi sono ElGamal a
1024 bit e Blowfish. La chiave privata personale è immagazzinata sul server
di HushMail e l'unica cosa che la protegge da accessi più o meno illegali
al server è una passphrase. L'altra debolezza è costituita dall'applet java
che non si può mai sapere se è quella corretta o un cavallo di Troia. Anche
certificando l'applet ci sarebbero dei problemi. L'ultimo problema è legato
alla collocazione fisica del server, che nonstante la compagnia che lo
gestisce sia di Antigua, è collocato in Canada, che notoriamente è molto
più suscettibile ad azioni legali.
Nonostante tutto HushMail sembra una ragionevole implementazione dell'idea.
Esistono altri servizi come http://www.ziplip.com, http://www.ynnmail.com,
http://www.zixmail.com che sono molto meno sicuri fornendo una protezione
davvero blanda e facilmente attaccabile.
Insomma, le email web-based criptate sono più sicure di una email non
criptata, ma meno sicure di una email criptata con PGP per molti motivi: i
server sono obiettivi di attacchi, le connessioni anche se SSL non sono
immuni da spoofing, etc.


L I N K

La Guida Introduttiva al Programma di Crittografia a Chiave Pubblica PGP,
di Giorgio Chinnici, chiara e completa.
http://www.ecn.org/crypto/crypto/guidapgp.htm

Cracking DES: Secrets of Encryption Research, Wiretap Politics, and Chip
Design
by the Electronic Frontier Foundation
http://www.eff.org/descracker/
http://cryptome.org/cracking-des.htm

RSA DES Challenge II
http://www.rsa.com/rsalabs/des2/

Cryptographic Algorithms
http://www.cs.hut.fi/ssh/crypto/algorithms.html

CRYPTO-GRAM
A free monthly newsletter providing summaries, analyses, insights, and
commentaries on computer security and cryptography.
CRYPTO-GRAM is written by Bruce Schneier. Schneier is founder and CTO of
Counterpane Internet Security Inc., the author of "Applied Cryptography"
(John Wiley & Sons, Inc., 1996) and an inventor of the Blowfish, Twofish,
and Yarrow algorithms. He served on the board of the International
Association for Cryptologic Research, EPIC, and VTW.
http://www.counterpane.com/crypto-gram.html

Crypto++ is a fine, free crypto source code library. You can find download
instructions on the Crypto++ home page at:
http://www.eskimo.com/~weidai/cryptlib.html

Crittografia e Sicurezza su Reti - UNISA
http://www.dia.unisa.it/ads.dir/index.htm

===========================================================================================

Il sistema GSM

Il sistema GSM e' stato attivato ufficialmente in Italia nel'ottobre 1992, gli apparati sono Ericsson, Siemens,
Italtel. (Omnitel usa Nokia)
Il GSM e' un sistema cellulare simile al TACS, ma mentre quest'ultimo e' analogico il sistema GSM e' "digitale";
alcuni dei vantaggi del GSM sono:
- possibilita' di effettuare e ricevere chiamate all'estero dove il sistema e' attivo.
- Segretezza delle informazioni (non e' possibili ascoltare le chiamate)
- Trasmissione dati
- Il numero abbonato e altri numeri per l'identificazione non risiedono nel telefono come nel tacs, bensi' in
una carta chiamata SIM (Subscriber Identity Module)
- migliore qualita' della conversazione (ricostruzione dati persi)
- capacita' di traffico molto piu' ampie di quelle tacs
- molti servizi aggiuntivi (non elencati per ora)

Gli svantaggi sono dovuti alla gestione del sistema che e' molto piu' complessa di quella tacs, problemi
d'interferenza dovuti alla ripetizione dei cluster (gruppi di frequenze che identificano una serie di celle),
poche frequenze disponibili, problemi ancora tra apparati di case costruttrici diverse, l'area di copertura
di una cella ridotta al massimo a 35 chilometri, ecc.

Struttura fisica del sistema mooolto riassunta e' la seguente:

MSC (Mobile Services Switching Centre)
|
+-------+-------+
| |
BSC BSC (Base Station Controller)
| |
+-------+-------+ +-------+
| | | | |
BTS BTS BTS BTS BTS (Base Transceiver Station)

Diverse radio basi (BTS) sono collegate ad un unico BSC che ha il compito di gestire handover, power control ed
altre funzioni; diversi BSC sono collegati ad un unico MSC che gestisce, tra le altre, il collegamento tra la
rete GSM e la rete pubblica.
MSC e' collegato a database che gestiscono le informazioni degli abbonati che 'entrano nell'area' (VLR Visitor
Location Register) o che si sono registrati nell'area (HLR Home.... che contiene inoltre informazioni relative
all'abbonamento)
Un telefono (MS) che si sposta in comunicazione tra un'area di copertura ed un'altra effettua un 'handover',
il livello dell'handover puo' essere tra due BTS dello stesso BSC o tra due con BSC diverse, o tra due MSC; in
quest'ultimo caso esistono ancora problemi (cadute).
A Livello logico una serie di radio basi vengono raggruppate sotto un'unica area chiamata LA (Location Area).
Ogni singola cella ha un nome univoco in tutto il sistema GSM esistente; la cella si identifica attaverso il CGI
(Cell Global Identity) che contiene l'identificativo della nazione, rete, LA e numero cella.
In ogni istante si conosce la posizione di ogni telefono presente sulla rete; il telefono in fase di accensione
e di spegnimento si registra nella rete (vedremo poi come).

alcuni fra i termini tecnici piu' ricorrenti:
- idle telefono acceso in 'ascolto'
- dedicated telefono in conversazione
- assignment occupazione del canale voce, inizio conversazione
- handover passaggio tra due BTS in fase di conversazione
- release rilascio di una conversazione
- location upd. in fase di accensione vengono inviate informazioni alla rete relative all'abbonamento.
- power control la BTS dice al MS con quale potenza deve accedere nella sua area di copertura, questo
limita il consumo delle batterie e crea minori interferenze
- SMS short msg sono messaggi che gli utenti si possono scambiare senza attivare la conversazione
- freq. hopping e' la possibilita' di 'saltare' da un canale all'altro all'interno di una singola cella

DATI TECNICI
Il sistema GSM e' un sistema cellulare, cioe' logicamente suddiviso in celle; di solito una cella e' composta
da tre gruppi antenne messi 120 gradi l'uno dall'altro (3 BTS), ogni antenna e' composta da 2 RX che sono le
piu' esterne per il diversity e una centrale TX (2 se esiste anche il tacs sullo stesso traliccio).
Una serie di celle che contengano tutte le frequenze disponibili formano un cluster; i cluster si ripetono,
per cui le frequenze vengono ripetute su tutto il territorio. Ogni singola BTS puo' trasmettere su piu'
frequenze (vedremo in seguito)
Ogni frequenza GSM ha una larghezza di banda di 200 KHz suddivisa logicamente in 8 parti, cioe' e' in grado
di gestire 8 conversazioni contemporaneamente. La larghezza di banda viene sfruttata per trasmettere delle
informazioni in pacchetti (frame), ogni frame contiene informazioni relative alle 8 call. La frame di base cioe'
quella piu' piccola si chiama burst, e' composta da 142 bit + 14.25 bit di inizio/fine per un totale di 156.25
bits. La durata di ogni singola frame e' di 0.577 ms. Esistono vari tipi di burst, di correzione, di
sincronizzazione, di accesso ecc; 51 burst formano frame di 235 msec che e' la configurazione standard;
frame dello stesso tipo vengono raggruppate per creare le informazioni che circolano in ogni singolo canale
logico del GSM.

51 burst formano una multiframe
26 multiframe formano una superframe
2048 superframe formano una hyperframe
890-915 MHz range usato da MS per Tx
935-960 MHz range usato da MS per Rx
numero di frequenze : 124
numero di call = 124*8

Ogni singolo burst o frame viene chiamato TDMA burst o frame, questo perche' contiene informazioni relative
alle 8 call suddivise per divisione di tempo (TDMA Time Division Multiple Access)
In ogni stato del telefono (idle, dedicated ecc), il MS sa che tipo di informazioni andare a prendere dalle
frames generali; queste informazioni relative ad un singolo stato del MS vengono raggruppate sottoforma di
canali GSM.

--Esistono canali di traffico (TCH)

--Esistono canali di controllo (BCCH Broadcast Control Channel)
SCH = Sync channel
BCCH = broadcast, informazioni generali sulla BTS

--Esistono canali di controllo comune (CCCH)
PCH = paging channel
RACH = random access channel, usato per richiedere accesso
AGCH = Access Grant..., usato per accedere all'SDDCH

--Esistono canali di controllo dedicati (DCCH)
SDCCH = Stand Alone Ded. Control Channel, usato durante una call setup
SACCH = Slow Associated ... (misure inviate dal telefono)
FACCH = Fast Associated ... usato per alte velocita'
La BTS invia al telefono il ritardo o l'anticipo con cui puo' accedere alle informazioni che circolano nelle
frame (TA Time Advance) Il TA va da 1 a 63 che corrisponde a circa 35 Km di distanza dalla BTS; ogni valore
indica i bit di ritardo con cui il MS deve accedere alla frame.
In centrale esiste un parametro collegato al TA che se modificato limita la dimensione della cella; e' il
valore massimo a cui TA puo' arrivare (TALIM) raggiunto il limite viene richiesto un handover incondizionato
al telefono.

Abbiamo visto che col range di frequenze 900 MHz disponibili otteniamo 124 frequenze utilizzate dal sistema;
ogni frequenza ha 8 TS per cui 124*8 chiamate effettuabili contemporaneamente (in realta' sono meno)
Ogni radio base, che chiamiamo BTS e' una cella, un sito e' invece composto da 2 o 3 BTS; per essere chiari:
quando si vedono in giro tralicci con 3 gruppi di 3 o 4 antenne direttive, quello e' un sito composto da 3
radio basi o BTS e la copertura e' pari a 3 celle. A volte si identifica col nome cella l'insieme delle 3 celle
formate da un sito.
Ogni BTS ha la possibilita' di gestire piu' di una frequenza chiamate portanti, TI ne ha almeno 2 per radio
base, in Grecia ne hanno anche 6 per radio base; se ampliamo il discorso a molti altri siti, si puo' capire
quale lavoro di pianificazione di copertura e di assegnamento di frequenze esista dietro il sistema cellulare
GSM. Se poi si riscontrano interferenze e, quindi, la variazione di alcune frequenze in uno o piu' siti, si
devono ripianificare tutte le frequenze dei cluster adiacenti.

ESEMPIO: ipotizziamo una BTS con 2 portanti
portante 1 : 8 timeslot (da 0 a 7) 0 1 2 3 4 5 6 7 detta portante BCCH
portante 2 : 8 timeslot (da 0 a 7) 0 1 2 3 4 5 6 7 detta 1 portante TCH
portante 3 : 8 timeslot (da 0 a 7) 0 1 2 3 4 5 6 7 detta 2 portante TCH

In teoria la BTS in questione puo' gestire 24 conversazioni contemporaneamente in realta' gestisce 22
conversazioni perche' il TS 0 della portante BCCH e' dedicato al canale di controllo BCCH, il TS 1 della
portante BCCH e' dedicato al canale SDCCH.

Vediamo i 5 canali piu' significativi del sistema GSM:

- BCCH Canale di controllo sempre presente in idle mode; porta informazioni relative alla cella servente
ed alle celle adiacenti: CGI (identificativo cella), TXPWR potenza che deve avere il telefono per accedere
alla cella, DTX se trasmissione discontinua attiva ed altre info minori.
- PCH Canale di paging, riporta tutti i telefoni che stanno ricevendo chiamate, se il telefono si accorge di
essere presente nella lista si attiva la progedura di paging.
- SDCCH Autentificazioni e registrazioni dei vari telefoni.
- TCH Canale di traffico che trasporta tra le altre le informazioni della conversazione cioe' le parole
crittografate.
- SACCH Canale per scambio messaggi, misure di campo, Time Advance ecc.

DESCRIZIONE CONCETTI GENERALI (Le varie procedure verranno descritte successivamente).

ROAMING (solo in idle mode)
Quando un telefono (MS) si sposta da una cella a cui e' connesso nell'area di copertura di un'altra cella, il
telefono stesso decide di cambiare la frequenza (senza per questo avvisare la radio base). Questo e' il ROAMING.
Il MS e' in continua misura delle celle adicenti che gli vengono inviate dalla BTS attraverso il canale BCCH.
La procedura viene anche detta RESELECTION CAMBIO LOCATION AREA
Il telefono monitorizza sempre durante lo stato di idle mode il canale BCCH, quando si accorge di essere
passato su celle che hanno un identificativo dell'area diverso da quello che lui aveva in precedenza viene
effettuata una procedura chiamata LOCATION UPDATING.

REGISTRAZIONE
Questa registrazione viene fatta per aggiornare i database connessi all'MSC di appartenenza, viene effettuata
una procedura di rilascio con la vecchia stazione (detta IMSI detach) e una registrazione presso la nuova
(IMSI attach). Esiste la possibilita' di imporre al telefono una procedura di registrazione periodica es. ogni
30 minuti; se non si ricevono informazioni dal MS durante questo periodo, l'MSC si impone una procedura di
detach.

PAGING
Il telefono monitorizza sempre in idle mode il canale di paging; se si accorge che e' in arrivo una chiamata
per lui parte la procedura di assegnamento del canale voce (chiamata). Il messaggio di paging non cambia
all'interno di una stessa area.

ASSEGNAMENTO
Quando inizo una telefonata sia fatta dal MS che ricevuta, si attiva una procedura di assegnamento del
canale voce detta ASSIGNEMENT

HANDOVER
Detto in parole povere e' la procedura di ROAMING effettuata in conversazione La conversazione passa su
un'altra portante di un'altra BTS; non e' detto che venga mantenuto lo stesso timeslot. Viene attivata la
procedura omonima.

INTRACELL HANDOVER
Dopo aver effettuato l'assegnamento del canale voce, e' possibile un nuovo assegnamento su un'altra
portante della stessa cella. Se la BTS ha solo una portante, viene cambiato timeslot.

FREQUENCY HOPPING
Durante una conversazione puo' accadere di fare un HANDOVER; se il sistema gestisce il freq. hopping,
l'handover puo' essere effettuato su un'altra portante della stessa BTS; il timeslot rimane lo stesso
anche dopo l'avvenuto handover. Attualmente il sistema non lo gestisce.

RELEASE
E' la chiusura della conversazione. Viene attivata la procedura omonima.

DISCONTINUOUS TRANSMISSION
E' la trasmissione discontinua; il MS in comunicazione puo' comporre delle frame complete di informazioni
sulla codifica della voce anche se tra gli utenti non vengono scambiate parole; questo occupa inutilmente
il canale voce. La trasmissione discontinua durante una 'pausa' nella conversazione permette al MS di
comporre delle frame di dimensioni ridotte.

*Nel sistema GSM gestito da TI e' attiva la trasmissione discontinua.

POWER CONTROL
la BTS dice al MS in conversazione con quale potenza deve accedere nella sua area di copertura, questo
limita il consumo delle batterie e crea minori interferenze. Questa informazione viene inviata ogni 480
millisec.

TRASMISSIONE DATI
La strasmissione dati e' a tutti gli effetti una conversazione tra due utenti, viene impiegato lo stesso canale
voce; la differenza e' che viene abilitata una 'porta' (SAPI) dedicata alla trasmissione dati diversa da quella
attivata per una conversazione normale.

Di seguito le principali procedure radio tra MS e BTS suddivise in stati; ogni stato e' composto da diversi
messaggi che non verranno spiegati.

**E' fondamentale, spiegare prima alcuni concetti:

Lo scambio di informazioni avviene su due livelli di messaggi; il primo chiamato LAYER 2 porta informazioni
piu' a basso livello, alcune delle quali inerenti la struttura della frame inviata o ricevuta.
Il secondo tipo di messaggio si chiama LAYER 3 e porta le informazioni sia dal MS alla BTS (detto UPLOAD),
sia dalla BTS al MS (detto DOWNLOAD)
Il LAYER 2, inoltre, puo' contenere al suo interno il messaggio di livello 3; sara' compito della BTS o MS
scompattare il messaggio per elaborare il LAYER 3.

LAYER 2 UP MS -> BTS (puo' contenere un LAYER 3 UP)
LAYER 2 DOWN BTS -> MS (puo' contenere un LAYER 3 DOWN)
LAYER 3 UP MS -> BTS
LAYER 3 DOWN BTS -> MS

Tutti i messaggi sono binari, noi riusciamo a leggerli in un formato stabilito dalle raccomandazioni GSM solo
perche' la BTS o MS li scompattano.
A livello radio non abbiamo accesso a tutte le informazioni (almeno... teoricamente...), quello che
stabilisce l'MSC o il BSC non lo possiamo vedere; possiamo solo sapere se le varie procedure sono state
accettate (in alcune procedure e' implicita la decisione del BSC o MSC, vedi handover completato o altro).

La stessa presenza o meno del LAYER 2 o 3 nella sequenza dei messaggi in una qualsiasi procedura indica se
si sta svolgendo correttamente oppure no.

Le raccomandazioni GSM dividono una procedura in tre fasi:
1. RR CONNECTION connessione radio stabilita (composta da vari messaggi a seconda del tipo di
procedura) RR sta per radio resource
2. MM CONNECTION connessione di livello 2 stabilita (cioe'se tra MS e BTS esiste realmente uno scambio
di informazioni) MM sta per mobility menagment
3. EVENTO passata la fase RR e MM viene identificata la procedura

A qualsiasi livello puo' esserci un failure.

IDLE (IL TELEFONO NON E' IN CONVERSAZIONE)
Questa non e' una procedura; e' uno stato del telefono. Il telefono analizza il canale di paging per vedere se
una chiamata e' in arrivo; contemporaneamente vengono inviate al telefono informazioni relative alle celle
adiacenti.

LOCATION UPDATING
Questa procedura viene attivata durante l'accensione del telefono oppure quando si passa da un'area di
copertura (Location Area) ad un'altra
1- il telefono e' nello stato di idle
2- UP viene richiesto un canale (channel request)
3- DOWN viene assegnato (non realmente ancora) un canale (immediate assignment)
4- UP viene attivata la procedura location updating (request) (stabilito IMSI)
5- connessione a livello 2
6- DOWN location updating accettata o reject
7- UP scollegamento richiesto (channel release)
8- il telefono e' nello stato di idle

ASSEGNAMENTO - INIZIO CONVERSAZIONE MS -> BTS
1- il telefono e' nello stato di idle
2- UP viene richiesto un canale (channel request)
3- DOWN viene assegnato (non realmente ancora) un canale (immediate assignment)
4- connessione a livello 2
5- viene stabilita l'identita' del telefono IMEI e algoritmo di codifica
6- se tutto e' andato bene in DOWN viene confermato il servizio (CM service)
7- viene emesso un record di informazioni (setup) che contiene anche il numero del telefono da chiamare
8- DOWN la radio base conferma l'assegnamento del canale voce
9- UP il telefono conferma assegnamento del canale voce
10- connessione a livello 2 per controllare connessione
11- sono in conversazione

ASSEGNAMENTO - INIZIO CONVERSAZIONE BTS -> MS
1- il telefono e' nello stato di idle
2- DOWN arriva un paging per il telefono
3- UP viene richiesto un canale (channel request)
4- DOWN viene assegnato (non realmente ancora) un canale (immediate assignment)
5- connessione a livello 2
6- viene stabilita l'identita' del telefono IMEI e algoritmo di codifica
7- se tutto e' andato bene in DOWN viene confermato il servizio (CM service)
8- viene emesso un record di informazioni (setup) che contiene anche il numero del telefono da chiamare
9- DOWN la radio base conferma l'assegnamento del canale voce
10- UP il telefono conferma assegnamento del canale voce
11- connessione a livello 2 per controllare connessione
12- il telefono squilla

DEDICATED (CONVERSAZIONE)
Questa non e' una procedura; e' uno stato del telefono.
Ogni 480 millisec. il telefono manda in UP le misure delle celle adiacenti, TA, TxPower, canale, bsic,
timeslot, livello, qualita' (Bit Error Rate) ecc.
la BTS invia sempre con la stessa tempistica informazioni relative al segnale ed alla cella ricevuta, CGI,
Power Control, Tipo di trasmissione ecc; in piu' la BTS invia il valore di due contatori chiamati rlink;
il primo indica sempre il valore massimo del contatore impostato in centrale; il secondo viene decrementato
di una unita' se in UP il messaggio non e' stato correttamente decodificato, mentre viene incrementato di
due unita' fino al valore massimo se il messaggio in UP viene codificato.
Il secondo contatore detto 'current rlink counter' se raggiunge il valore 0 fa cadere la conversazione.

HANDOVER
1- il telefono e' in conversazione (dedicated mode)
2- la BTS si accorge che uno dei criteri per handover (qualita' cattiva, segnale debole, distanza dalla BTS
che supera i limiti impostati in centrale ecc) si e' verificato, di conseguenza comanda al telefono di
effettuare handover (handover command DOWN)
3- UP il telefono converma la ricezione del comando
4- UP il telefono invia il messaggio di handover completato o fallito
5- Connessione a livello 2 con la nuova cella se handover completo oppure con la vecchia cella se handover
fallito. Se la connessione a livello 2 con la nuova cella fallisce, si tenta la connessione con la vecchia
cella; se la connessione con la vecchia cella fallisce, cade la conversazione
6- il telefono continua la conversazione sulla nuova cella oppure rimane sulla vecchia se l'handover e' fallito

RELEASE RICHIESTA DA MS (chiamante che chiude non Microsoft!)
1- il telefono e' in conversazione (dedicated mode)
2- UP messaggio di disconnect dal telefono
3- DOWN messaggio di release
4- UP il telefono invia release completata
5- DOWN viene inviato comando di channel release
6- UP il telefono conferma abbandono di canale (disconnect)
7- telefono nello stato di idle

RELEASE RICHIESTA DA BTS (chiamato che chiude)
1- il telefono e' in conversazione (dedicated mode)
2- DOWN messaggio di disconnect dalla BTS
3- UP messaggio di release
4- DOWN release completata dalla BTS
5- DOWN viene inviato comando di channel release
6- UP il telefono conferma abbandono di canale (disconnect)
7- telefono nello stato di idle

I ponti radio utilizzati per trasmettere fasci di canali telefonici per giunzione tra centrali interurbane
sono di due tipi:

- analogici: convogliano con modulazione SS-FM (single sideband a modulazione di frequenza) piu' fasci
di canali (normalmente l'untia' di misura e' il supergruppo pari a 60 canali telefonici) multiplati a
divisione di frequenza.
- digitali: convogliano con modulazione normalmente QAM (come i modem) fasci di canali telefonici
multiplati secondo la gererarchia plesiocrona (parola difficile che significa con sincronismo asservito ad
un orologio master) tipica della multiplazione PCM.

Bande di frequenza standardizzate CCIR e CCITT ed assegnate al Gestore pubblico in Italia:

Ponti Radio Analogici
1350 - 1650 MHz utilizzata da ponti radio di piccola capacita' (4 supergruppi) negli anni passati da ASST ora
confluita in TI. Utilizzata anche dalla RAI per iponti di trasfimento dei canali audio e musicali
tra le varie sedi regionali.
1700 - 2300 MHz dovrebbe essere ormai completamente smantellata, era usata per ponti di piccola capacita'
(1 supergruppo) da SIP e RAI.
3600 - 4200 MHz utilizzata dalla rete primaria nazionale con fasci radio ciascuno da 16 supergruppi.
5925 - 6450 MHz ponti radio a grandissima capacita' da 45 supergruppi utilizzato solo dalla ex-ASST ora TI.
6575 - 7125 MHz per tratte comuni a piu' direzioni normalmente sooporta fasci radio a 5 supergruppi.
7125 - 7445 MHz riservata negli anni passati a SIP per la rete secondaria.
7445 - 7750 MHz come sopra.
10700 - 11700 a disposizione ma non utilizzata.

Ponti Radio Digitali
gamma 7 GHz modulazione QAM con costellazione a 64 punti usato per fasci 140 Mbit/sec e piu' raramente
per fasci a 70 Mbit/sec
gamma 11 GHz modulazione QAM con costellazione a 16 punti usato anche questo per fasci a 140 Mbit/sec
gamma 13 GHz modulazione PSK a 4 fasi per fasci a 8 o 34 Mbit/sec
gamma 18 GHz modulazione PSK a 2 fasi per fasci a 2 o 8 Mbit/sec

I ponti radio normalmente devono poter avere visibilita' ottica e di conseguenza le tratte non possono
coprire grandi distanze. Mediamente vengono ripetuti ogni 50/60 Km e quindi una dorsale nazionale da
nord a sud comporta la costruzione di molte stazioni ripetitrici.
La saturazione delle gamme di frequenza, l'accresciuta richiesta di bande trasmissive ed in notevoli
progressi nel campo della fibra ottica ha reso i ponti radio piu' costosi e meno affidabili dei sistemi
in fibra che stanno progressivvamente sostituendo le dorsali primarie.
I canali su ponte radio presentano qualita' inferiore rispetto a canali in cavo o in fibra ottica.

Evoluzione dei sistemi mobili UMTS: (ke e'???)

UTMS: Universal Mobile Telecommunication System, portera' l'utente delle telecomunicazioni nella nuova
societa' dell'informazione. Portera' informazioni, disegni e grafici direttamente alla gente e
fornira' l'accesso alla prossima generaziona basata sui servizi d'informazione.
Muovera' le comunicazioni mobili e personali verso i sistemi di seconda generazione che gia' stanno
portando masse di mercato verso servizi a basso costo.

Prospettiva ideale
A medio/lungo termine UTMS dovrebbe unificare, integrandoli, i diversi sistemi esistenti con un'unica
interfaccia radio che consenta l'accesso a reti diverse, pubbliche o private, attraverso un unico terminale.
Prospettiva realistica Visione orientata al mercato. Continuita' con l'attuale tendenza che prevede lo
sviluppo di sistemi non necessariamente unificati a livello di interfaccia radio, ma ritagliati sulle
esigenze specifiche dei diversi livelli di utenza

Il sistema UMTS
ú Servizi voce e dati per utenti mobili in qualunque tipo di ambiente (indoor outdoor, urbano/rurale); con
le stesse potenzialita', in termini di servizio e penetrazione di mercato, offerte dai sistemi attuali.
ú Ampio spettro di servizi offerti con velocita' fino a 2Mb/s, anche in ambienti ad alta densita' di traffico.
ú Servizi a bit-rate variabile con alto grado di flessibilita'.
ú Estesa varieta' di terminali: dal personal communicator alle workstation mobili.
ú Ambiente multi-operatore e con copertura mista (macro, micro e pico celle) per garantire il servizio ad
utenti con caratteristiche di mobilita' e di traffico diverse.
ú Roaming nazionale, internazionale e globale.

Migrazione verso UMTS
___
|
MOBITEX|-------------+ pacchetto dati ------
___| +----------------------------->| |
| |
___ | |
| circuito globale a bassa densita' | |
TACS/GSM/DCS |------------------------------------------->| UMTS |
___| | |
+--------------->| |
___ | +->| |
| circuito globale ad alta | densita' | ------
CT2/DECT |---------------------------+ |
___| |
|
___ |
| distributivo |
ERMES |-----------------------------------------+
___|


Migrazione verso UMTS: Protocolli radio

GSM
ú canali di segnalazione associati a velocita' fissa.
ú capacita' del canale di traffico ridotta in modo non controllato a causa di segnalazione "fast".
ú nessuna possibilita' di connessioni "multiple bearer" o asimmetriche.
ú corrispondenza biunivoca tra chiamata e connessione.
ú gestione delle risorse radio a livello 3.

DECT
ú canali di segnalazione associati a velocita' fissa.
ú capacita' del canale di traffico ridotta in modo prefissato.
ú separazione tra controllo e dati d'utente.
ú separazione tra chiamata e connessione.
ú gestione delle risorse audio a livello 2.

UMTS
ú canali di seganalazione associati a velocita' variabile.
ú capacita' del canale di traffico non ridotta (o ridotta in modo controllato) a causa della segnalazione.
ú separazione tra controllo e dati d'utente.
ú separazione tra chiamata e connessione.
ú gestione delle risorse radio a livello 2.

Migrazione verso UMTS: Handover

GSM
ú Mobile assisted.
ú Backward handover.
ú Hard handover.
ú Handover tra entita' di rete per mantenere la continuita' della conversazione.

DECT
ú Mobile controlled.
ú Forward handover.
ú Seamless handover.
ú Handover tra livelli di protocollo per mantenere la continuita' della conversazione.

UMTS
ú Network managed:
ú Network evaluated.
ú Mobile evaluated.
ú Forward/backward handover.
ú Soft handover + microdiverity.
ú Seamless handover per mantenere la continuita' e migliorare la qualita' della conversazione.

Migrazione verso UMTS: Servizi dati

GSM
ú servizi dati solo simmetrici
ú velocita' fino a 9.6 kb/s
ú una sola connessione per ogni chiamata
ú chiamate multiple su connessioni indipendenti
ú variazione lenta della velocita'

DECT
ú servizi dati simmetrici e asimmetrici
ú velocita' fino a 384 kb/s (oltre 730 kb/s unidirezionali teorici)
ú connessioni multiple
ú chiamate multiple con connessioni condivise
ú variazione lenta della velocita'

UMTS
ú servizi simmetrici e asimmetrici
ú velocita' fino a 2Mb/s
ú connessioni multiple con connessioni condivise
ú variazione veloce della velocita'
Migrazione verso UMTS: Servizi dati a velocita' variabile

GSM
ú variazione solo da parte dell'utente (o del terminale)
ú variazione all'interno della singola connessione
ú variazione lenta
ú nessun impatto sulla disponibilita' delle risorse radio

DECT
ú variazione da parte del sistema e dell'utente
ú variazione all'interno della singola connessione con instaurazione/rilascio di bearers piu' modificata della
larghezza di banda
ú variazione lenta
ú impatto sulla disponibilita' delle risorse radio solo nel caso di instaurazione/rilascio dei bearers

UMTS
ú variazione da parte dell'utente e del sistema
ú variazione all'interno della singola connessione con instaurazione/rilascio di bearers piu' modificata della
larghezza di banda
ú variazione veloce (frame by frame)
ú impatto sulla disponibilita' delle risorse radio


Se qualcuno ha ulteriori curiosita' domandate pure... in mail!

Cya.

-=Nick1=-
-=SPPGroup=-

===================================================================================================

Le card , ma come sono fatte?

Tutti voi sapete cosa sono le card o,se non lo sapete,adesso lo imparate!
Le card sono tessere di plastica , di forma rettangolare , che al loro interno incorporano un chip in grado di dialogare con il mondo.Esistono molteplici tipi di card e molteplici metodologie di accesso ai dati in esse contenute , vediamo di spiegare brevemente come sono fatte e a cosa servono.

Gli Standard

Come ogni cosa che si rispetti anche le card hanno uno standard al quale adeguarsi.
In specifico , lo standard citato è il numero 7810 dei documenti creati dall' ISO (International Standard Group , www.iso.ch).Questo documento specifica la dimensione della tessera e tutti i valori di flessione,resistenza al calore ad agli urti per questo tipo di carta.Invece lo standard ISO 7811 spiega quali sono le aree che possono avere caratteri in rilievo e dove può essere messa la banda magnetica (se necessaria).Ma quello che ci interessa davvero è l'ISO7816 che ci spiega la dimensione dei contatti, la posizione dei contatti che altro non sono che i pin di un'integrato.

Le caratteristiche fisiche

Le dimensioni sono le seguenti:
lunghezza: 85 millimetri
larghezza: 54 millimetri
spessore: 0.8 millimetri
Sono realizzate in due materiali : ABS e PVC.
Le differenze fra un mateiale e l'altro sono semplici:
ABS :non può essere stampato ma è riciclabile
PVC :non può essere riciclato ma è stampabile
Inoltre la posizione del chip è determinata dalle applicazioni che si vogliono realizzare e viene identificata con ID-1 ID-2 ID-3 ed ID-000.Quelle più diffuse sono le ID-1 e le ID-0.Nella posizione ID-1 il chip è posizionato al centro mentre nell'ID-0 (detta anche ID-000) il chip è posizionato al centro , ma di una piccola tesserina plastica (detta anche SIM/SAM).Non è inconsueto trovare una tessera ID-1 che incorpora una ID-0 , vedete l'esempio delle schede GSM che a seconda del telefono possono essere usate in full-size oppure , staccandole, in formato ID-0.


Le differenze fra le varie card

Esistono come ho detto molti tipi di card, lcune basate su microprocessori che possono dialogare con l'esterno,ed è quello che interessa a noi!Infatti, se una persona disponesse di un programmatore di chipcard (dette anche smartcard) potrebbe farsi le proprie applicazioni basate su di essa ,ma non c'è bisogno che ve lo suggerisca io , vero?
Bene, adesso , a voi i tipi principali di card:
-contact smart card
-contactless smart card
-combi card

Le contact smart card sono le classiche card stile GSM che comunicano con le altre apparecchiature tramite contatto fisico, me contactless invece hanno incorporato un trasponder che comunica quindi via radio mentre le combi card eseguono entrambi i tipi di connessione.

Come possono venire lette e scritte le card?

Tutto dipende da come sono state create, infatti sono molteplici i metodi di lettura e di scrittura.
In linea di massima le card possono essere letta da:
-tutti
Questo tipo di card non ha password e poò essere letta da tutti, un esempio italiano è la card della quale sono dotati i malati di schemio in cura a Napoli che hanno una card con tutta la loro storia medica.
-solo dal possessore
Metodologia applicata massicciamente alle card GSM e richiede l'immissione del codice PIN (Personal Identification Number).Dopo un numero X (spesso 3) di tentativi infruttuosi la card si blocca e chiede un codice ulteriore di sblocco.
-solo da terze parti
Esempio classico è quello delle carte di credito a scalare.Quando la tessere è esaurita solo chi la ha emessa è in grado di ricaricarla (in teoria:_] )
E adesso viene il bello ovvero come può essere configurata una card:
-in sola lettura (non permette l'aggiornamento)
-in solo aggiornamento (non permette la lettura)
-in sola aggiunta (non permette la lettura nè l'aggiornamento , solo la riscrittura totale)
-inaccessibile (non ci si potrebbe fare nulla...)

Tutti questi diversi stati di lettura e scrittura sono ovviamente comandati dal micro che è integrato nella carta , che vedremo in specifico più avanti.

Le diverse metodologie di incapsulamento dei chip nelle card

Beh, non è che ci sia molto da scegliere, le metodologie sono solo due!
Sono conosciute con il nome di 'Wire Bonding' e di 'Tape Automatic Bonding'.
Qui di seguito vi schematizzo la metodologia del 'Wire Bonding':

contatti dorati
/ | \
/ | \
------| ______ ________ _______ | - lato con contatti
| |_* \ * |___| * / * _| |
| | \--- / \---/ | |
| |______________________| |
|__________________________________| nicchia ricavata dalla card

GLi asterischi sono la superficie adesiva alla quale aderiscono i contatti , il rettangolo al centro è il micro fissato anche lui con adesivo , le linee che partono dal micro e che si collegano ai contatti dorati sono i fili di connessione del micro con le piazzole.
La metodologia del 'Tape Automatic Bonding' invece prevede la seguente disposizione del chip:




(------) strato di plastica protettivo
_________ _________ contatti dorati
------------ * * -----------
| card | --------- | card |
------------ | | -----------
---------
chip

Come sopra , gli asterischi sono l'adesivo del chip.
Sostanzialmente le metodologie non sono molto differenti come funzionalità ,ma si tende a preferire la tecnica del Wire Bonding per il semplice fatto che il chip è molto più protetto dagli urti rispetto al Tape Automatic Bonding, dato che resta dietro ad uno dei contatti e non protetto solo da un pochino di plastica protettiva.

La posizione dei contatti elettrici

Come già detto i contatti elettrici sono 8 e sono in posizione standard.Qui di seguito vi riporto un paio di misure per le card che vengono usate per i telefoni GSM :

-------- alto
|
| 1 5
lato inserimento | 2 6
| 3 7
| 4 8
|
-------- basso

I contatti dal numero 1 al numero 4 rispetto al lato inserimento sono distanti 11 mm.Il contatto 1 rispetto al lato alto è alla distanza di 18.02 mm e tutte le piazzole sono di forma quadrata aventi 2 mm di lato.

La funzione dei contatti elettrici

Contatto 1:
VCC, consente di applicare tensione alla scheda, normalmente +5V con scostamento del 10% in + o in -.L'amperaggio massimo secondo lo standard Iso7816-2 è di 200mA ma le schede attuali consumano al massimo 15mA.
Contatto 2:
RST, reset del micro,il tipo di segnale cambia a seconda del chip .
Contatto 3:
CLK, qui viene applicato il segnale di clock di riferimento per la sincronizzazione.
Contatto 4:
Riservato ad applicazioni future.
Contatto 5:
GND, massa comune , sia elettrica che logica.
Contatto 6:
VPP, ormai inutile, ma viene conservato per la compatibilità con il passato, il quanto le prime sim usavano una memoria EEProm che necessitava di una seconda tensione (+12,+21 o +25) per operare correttamente.
Contatto 7:
I/O, contatto di input/output per le informazioni elaborate dal chip.
Contatto 8:
Riservato ad applicazioni future.

Il metodo di trasmissione dei dati fra la card ed il lettore

Come da regolamentazione ISO il metodo di trasmissione è sincrono in half-duplex a caratteri.Questo metodo è siglato dall'ISO come T0.Invece la metodologia asincrona in half duplex a blocchi prende il nome di T1.Tutte le card che usano metodi di trasferimento dati diverso hanno come sigla del metodo T14.Ciò vuol dire che le card T14 non sono compatibili con le direttive ISO7816, ovvero che sono card proprietarie (sviluppate da chi vende hardware particolare, in modo da dovervi sempre rivolgere ad un unico fornitore oppure per applicazioni specializzate tipo card ad uso medico).

Come si leggono?

Lo so che volevate solo questo!
Beh, di hardware in commercio ce n'è parecchio, ma il migliore è sempre quello autocostruito...
Quindi ,io vi passo i link , poi sta a voi dilettarvi!
Faq sulle smart card:
http://www.ioc.ee/atsc/faq.html
Dumb Mouse , lettore scrittore di smart card:
http://cuba.xs4all.nl/hip/dumbmouse.html
Smart Card Industry association Website:
http://www.scia.org/
PC Smart Cards:
http://www.cyberflex.austin.et.slb.com/cyberflex/pcsc/pcsc.html
Goran Vlaski : di tutto , di +!
http://vlaski.virtualave.net/
Tanto per iniziare...
Poi, se volete magari saperne di +, beh, di programmatori ne è piena la rete,ma per 'farsi le ossa' vanno bene anche quelli per il satellite...Magari su http://neworder.box.sk c'è qualcosa....
Ma io no vi ho detto nulla, ok?
Bene, per adesso ragionateci un po su ,magari in futuro vi spiego qualcosina di nuovo , ok?
Buon divertimento,
RigoR MorteM, SPP Webmaster , www.spippolatori.com , rigormortem@spippolatori.com

==================================================================================================

Idee per una backdoor
by
Devil
SPP Member

L'IDEA DI BASE
---------------

Piccola domanda: quale' il problema principale delle backdoors ?
Prima risposta: Il fatto che le porte su cui sono attive sono facilmente
identificabili. Giusto ! Ma a questo una soluzione ,seppure non definitiva
al 100% c'e' ( eheh sapete a cosa mi riferisco no ? ).
Seconda Risposta: L'eseguibile della backdoor e' visibile nella lista dei
tasks. Piu' che giusto, anzi direi che e' proprio questo il punto.
Ok, ok siamo d'accordo che esistono dei piccoli trucchi per nascondere
il processo agli occhi del task manager di win9X ma la cosa non e'vera
per WinNt, e comunque basta un piu' serio programma di analisi
di processi (il PVIEW ad esempio) per rivelare l' "ospite indesiderato"
in tutta la sua identita' di semplice programma Win32.
Cosa fare in questo caso ? La soluzione a cui si puo' pensare, in prima
battuta e': scrivere un kernel driver (KD). I KD, una volta installati,
girano al piu' alto livello di privilegio ,
non appaiono nella lista dei task ed hanno accesso completo a tutte le
risorse hardware della macchina. Ma (tutte le belle cose hanno un ma)
scrivere un KD non e' molto agevole, soprattutto non e' trasportabile
da WinNt a Win9X a causa delle profonde differenze "interne" tra i due
SO. E allora ? Chiudiamo il PC ed andiamo a pescare ? No, o meglio , si,
se questo vi aiuta a pensare ma poi si ritorna alla tastiera a fare
le prove. Prova qui, incarta li' una soluzione appare, seppure in forma
sbiadita ai nostri occhi: DLL. Ebbene si, DLL, praticamente il 98%
della infrastruttura dei sistemi Micro$oft. Pensate un po': socket api,
Win32 api, COM (ocx,vbx ecc..) , system api tutto realizzato con
librerie a link dinamico e tutte , rigorosamente , invisibili al task
manager. Vabbe' e allora ? Come costringo un programma a caricare una DLL
di cui non sospetta nemmeno l'esistenza ? Beh di sistemi ce ne sarebbero
basta dare un' occhiata ai libri ma si basano tutti, piu' o meno liberamente,
su un semplice algoritmo:

1) Lancio un eseguibile scritto da me (Eseguibile A)
2) questo eseguibile lancia l'eseguibile da forzare (Eseguibile B)
3) prima che l' eseguibile B cominci a girare l'eseguibile A "inietta" una
DLL nello spazio di indirizzamento di B. (trascuro come si fa tanto non e'
rilevante)

Questo metodo e' ottimo. Gia', e' ottimo se uno deve scrivere una DLL
per spiare le chiamate di sistema di un programma, oppure

  
se
deve scrivere un debugger, ma a noi non serve a un casso. Perche' ?
Supponiamo di aver scritto una backdoor, in forma di DLL, e di
volerla iniettare in un programma.
Primo inconveniente: dobbiamo scrivere un exe che inietti la DLL e
quest'ultimo, essendo un semplice EXE, sara' visibile nella lista dei task.
Secondo inconveniente (molto piu' grave del primo): finche' l'exe
"iniettante" e' in esecuzione la backdoor funziona che e' una
meraviglia. Appena lo chiudiamo, perche' non vogliamo essere
visibili al task manager, il sistema scarica anche la DLL iniettata
mandando a puttane la nostra backdoor ed anche il programma
ospitante. Ok, ritorniamo a pescare, pensiamo, ci lasciamo scappare dalle
2 alle 3000 trote ma, alla fine, la soluzione e' chiara e limpida:
Shell Extensions. Vi vedo perplessi. Ma come non sentite una musica
trionfale nelle orecchie ? Ho detto proprio Shell Extensions, quel
meccanismo un po' oscuro per cui si puo' modificare il comportamento
di explorer per fargli visualizzare un menu' di contesto
(tasto destro) "personalizzato". Ad esempio Winzip usa questa tecnica
in modo che se voi da Gestione Risorse andate su un file e premete
il tasto destro appaiono, oltre alle voci standard previste da Micro$oft,
anche delle voci in piu' tipo "Aggiungi all' archivio ZIP", o "Crea un
nuovo ZIP".
Se un comune mortale tenta di avvicinarsi alla documentazione MSDN
per capire meglio il meccanismo rimane annichilito dalla mole di argomenti
di cui (teoricamente) dovrebbe essere a conoscenza, primo fra tutti COM
(Component Object Model). A questo suono, che purtroppo nulla ha a che fare
con le seriali, molti programmatori provano un senso di disagio che
sfocia in violenza repressa e manie di persecuzione. Ma (i "ma" hanno a volte
anche risvolti positivi !) fondamentalmente una ShellExtension, depurata
da tutto il surplus dei termini che tanto piacciono ai commerciali, e'
una DLL. Esattamente, e' una DLL che esporta almeno 4 funzioni :

DllRegisterServer()
DllUnregisterServer()
DllGetClassObject(...)
DllCanUnloadNow()

Queste funzioni sono l'interfaccia standard che explorer si aspetta da una
Shell Ext.
Le prime due sono ovvie. Sono funzioni speciali che un eseguibile (tipo
regsvr32) deve chiamare per registrare la DLL come ShellExtension (vedremo
dopo come si realizza).
La terza funzione e' il punto di ingresso della Shell ovvero la
prima funzione che explorer chiama appena caricata in memoria.
Dovrebbe restituire un' interfaccia che poi explorer chiamera' per realizzare
l' estensione vera e propria, ma ovviamente puo' (e deve) essere utilizzata
per tutto un altro scopo: sara' il punto di ingresso della backdoor.
La quarta e' la piu' importante, almeno per noi, indovinate che fa ?
Esatto , viene periodicamente chiamata da explorer. Se restituisce
S_OK la Shell Ext viene prontamente scaricata dalla memoria.
Se restituisce S_FALSE no.
La sentite la musica adesso vero ?

COME SI REGISTRA UNA SHELL EXTENSION
------------------------------------
Una volta registrata la ShellExt entra "ufficialmente" a far parte
del circuito "pezzi aggiunti , di pubblica utilita'", nel senso
che viene chiamata diligentemente dal sistema tutte le volte
che ne ha bisogno. Ma prima di questo vediamo i passi
necessari per fare in modo che tutto cio' accada.
Innanzitutto bisogna generare un UUID per la nostra creatura.
La cosa si realizza facilmente con il UUIDGEN.EXE gentilmente offerto
da Micro$oft. Basta lanciarlo una volta ed il programma generera' un
numero apparentemente casuale, lunghino, e unico in tutto il mondo.
(confesso che la prima volta che lanciai questo programma ero scettico
sulla effettiva unicita' del numero. Poi negli anni ho constatato
che la cosa e' effettivamente vera... e nemmeno difficilissima da realizzare)
Questo ID e' il cuore del meccanismo ad interfacce di
COM. E' il numero (esatto quelle sfilze di numeri nei registry)
che identifica un componente OLE.
Una volta ottenuto,chiamiamolo LaNostraChiaveID,
bisogna aggiungere delle chiavi ai registry:

HKEY_CLASSES_ROOT\CLSID\LaNostrachiaveID
All' interno di questa chiave inseriamo il nome della shell (se vogliamo)
sottoforma di REG_SZ

HKEY_CLASSES_ROOT\CLSID\LaNostrachiaveID\InProcServer32
Allinterno 2 chiavi:
Default il percorso e il nome della DLL (REG_SZ)
ThreadingModel Apartment (REG_SZ)

HKEY_CLASSES_ROOT\*\shellex\ ContextMenuHandlers\LaNostrachiaveID
Questo permettera' al sistema di sapere che c'e' una shell extension
con id dato.

A questo punto la shell e' registrata cosa succede ?

Appena l'utente premera' il tasto destro su un file, magari per saperne le
proprieta', explorer analizzera' la chiave shellex per caricare
tutte le eventuali estensioni del menu' di contesto presenti,
tra cui anche la nostra.
La prima funzione invocata e' DllGetClassObject.
Teoricamente dovremmo restituire un' interfaccia che successivamente explorer
possa chiamare. Invece creiamo un thread con il codice della nostra backdoor
e restituiamo CLASS_E_CLASSNOTAVAILABLE.
Avuta questa risposta explorer tentera' di scaricarci dalla memoria ma prima
chiamera' DllCanUnloadNow, un po' come dire :"scusa posso cacciarti
via perche' non servi a nulla ?". Noi ritorneremo un S_FALSE ovvero
"non rompere i coglioni, non vedi che sono occupato ?".
La stessa risposta la daremo sempre, tutte le volte che explorer
chiamera' questa funzione e lo fara' ad intervalli regolari
(se non vado errato, salvo impostazioni speciali possibili,
ogni 10 minuti circa)
Quindi explorer non si liberera' piu' della DLL a meno che l'utente non faccia
uno shutdown o un logoff (un kill di explorer). Carino vero ?

VANTAGGI E SVANTAGGI
--------------------

Beh i vantaggi non sono pochi, alcuni li abbiamo gia' intuiti:

1) La backdoor non e' visibile come processo attivo perche' in realta'
il processo attivo e' explorer. Questo e' molto confortante per l'utente.
2) L'installazione e' semplicissima basta chiamare le funzioni stesse della
DLL.
3) Un eventuale personal firewall individuerebbe la porta TCP (o UDP) uscente
come richiesta da explorer. Una cosa non molto comune certo, ma comunque
piu' rassicurante che un eventuale eseguibile di cui l'utente non ha mai
sentito parlare. E poi si confonde spesso EXPORER con IEXPLORER (eheh)
4) Si nasconde piu' facilmente di un qualunque programma che si installi
nella chiave RunAsService perche' il nascondiglio ce lo fornisce
il registry con le sue diverse centinaia di ID.

Ci sono tuttavia alcuni punti deboli di cui bisogna essere consci:
1) La shell non e' attiva da subito ma solo se l'utente preme,
almeno una volta il tasto destro su un file
(cosa abbastanza comune in verita').
2) E' visibile con un programma che fa la lista delle DLL di un processo.
(quindi okkio a dargli un nome rassicurante)
3) Si chiude quando l'utente fa il logoff dal desktop. (questa cosa forse
con un po' di applicazione si puo' evitare..)
4) Sotto NT se l'amministratore e' un maniaco della sicurezza puo' prevenire
il caricamento di una shell extension diciamo cosi' "non trusted".
E' possibile infatti creare una chiave (EnforceShellExtensionSecurity) in
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
e settarla ad 1.
A quel punto il sistema carichera' solo le shell extensions presenti in
HKEY_LOCALMACHINE\Software\Microsoft\Windows\CurrentVersion\ShellExt\Approved
a cui solo l'amministratore ha accesso, ma ho uno spunto di riflessione
su cui vorrei concentrare la vostra attenzione.
Questa protezione fornita da Microsoft (che ha intuito il problema) mi
sembra francamente labile: Alzi la mano chi prima di installare
ha mai controllato le shell extensions (peraltro nascoste nel setup) di
un programma. Credo nessuno: se devo installare Office mi loggo
come amministratore e lancio Setup. E se poi office e' truccato
che ne so ? Spero nella forza degli AV. (male ,molto male :))
Forzare il sistema con questo livello di sicurezza significa
impazzire ogni volta dietro ai messaggi di errore (a volte
incomprensibili) dei programmi di setup perche' non sono riusciti
ad installare completamente il software, risultato netto:
questa feature e' disabilitata per default in tutti i sistemi NT
(beh si a meno che non avete lanciato qualche programmino di
settaggio automatico al security level C2)

IL PROGRAMMA DI ESEMPIO
-----------------------

Per mostrare la cosa ho scritto un programmello semplice che fa tutte le cose
che vi ho esposto. La DLL si chiama ShellDoor e puo' essere registrata e
deregistrata con regsvr32.exe .
Per registrare basta digitare da riga di comando: regsvr32 ShellDoor.
RegSvr32 chiamera' la funzione DllRegisterServer esportata e se questa
restituisce S_OK aprira' una finestra di avvenuta installazione.
Una volta registrata verifichiamo l'effettivo funzionamento.
Apriamo Gestione Risorse, andiamo su un file e premiamo tasto destro.
La ShellDoor entrera' in azione e si mettera' in ascolto
sulla porta 2205. Niente di pericoloso tranquilli. L'unico scopo e' quello
di stampare un messaggio di benvenuto. Per vederlo basta fare un
Telnet 127.0.0.1 2205. Prontamente vedrete la risposta e la disconnessione
un po' come il quote of the day..
Quando ci saremo stufati per toglierla bastera'
chiamare regsvr32 /u ShellDoor e fare il logoff dalla macchina
(Chiudi sessione e accedi come altro utente).
In questo modo, distruggendo l'istanza di explorer e togliendo le chiavi
di registrazione dal registry la shell sara' disattivata.
Creare una backdoor autoinstallante che utilizza questa tecnica e' un gioco
da ragazzi (soprattutto se si utilizza lo SI2 di Master) ma non vi fate
prendere troppo la mano ... non vorrei vedermi costretto a inviarvi
arance e limette nascoste ;-)

Mi pare piu' o meno tutto. Per dubbi, perplessita' parolacce e insulti
(non esagerate sono suscettibile :-)) il mio indirizzo lo
conoscete

Saluti

Devil
PS: non sono mai andato a pesca..


-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.0.2i

mQGhBDcLDXsRBADN3pfrTF1wyHr3i2mSb6jbmltz+v1peHH7QR2U4w1ol35LZrad
6eFJ8pDomYsB5EzOvuNvcBW85lYNuPt0sBzP7XM40nR+3KRFVRyx8iXWpwVySCxi
GNHE8KlyqOUjkKvTq5ONT5okLKxteg+UP1SWqXPDWE2gNX/mrQb9i+JINwCg/6fW
i7gfN/BQ3ZmB/AAH51l9AjED/j/1+LvDSM4+COza45032fDw4XJqirDez9L9WbVB
Tkakook/TVvZYgSP2Fjl0S3bGcPmxhoWDDUhkf5y1zDjORh5LlQJsy2oU0xty6Ts
8Phugs3i663sbqoiuDm4o3t3INcpGclJEcMdSzCV9vpodCM/O/dvuOx1BnPuzAO0
dApGA/jVq7eElzsFpwvXfjmBVi2+/3YAtTqXRc25qzMyFF69O8LNCBOSrdRYgp/V
AIrmTydf8lrZ+DvKKgvowW5ugBTPU4/8O50EFFu22F7qzmJg/zBVYVZJNKgZqn/x
Uv2lyK1EGx/q3e0+MPFeYLCOsexYhcVjtjx/ppyPctjQm9bHtBtEZXZpbCA8ZHNk
ZXZpbEBob3RtYWlsLmNvbT6JAEsEEBECAAsFAjcLDXsECwMCAQAKCRCXlhwyz7jI
PG0VAJ0fmRZifO2Yj9+vZn/C9bwGRMFnDwCg3EeqVBjMZ/mHbmTx1SNv4TA6+Gq5
Ag0ENwsNexAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9A
VfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biu
dE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J
280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwX
V0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG
0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIH/09TSmtAEjEn93/Kfe1WOhyh
NZ4mBkzLN9ipTvFXDtkWZF38VPG2I9JGrf/yIExPDziVSK61R4D2GRLBjF3oUmAM
5RNSL0WvWKhq3dDBHAqz72wT6pDWqnKkl/rx/ezoS8CsqowwMfrn6RovFw0sBzDa
WO5ij0OBDU+OSQ5WwsH7es4Ze29OFp6K1hM7ZFR42Y/ydsBBWuXllx3Al80FleHs
gATXYPiJnwj26PJ9X5OuJjCppM5KoLZE4kvYwG+Fjnmmu3KpDMYq4tZiI0MXlQU0
Z2GM7l/aKFKcaRBdBctSPOr/8Pgy2jbWHjVlavXZ1w3VtVsRPOopzTWM8OLpkaqJ
AEYEGBECAAYFAjcLDXsACgkQl5YcMs+4yDwQSACg6PVdTEbF/bDws6NoE4BqiaF9
aEYAoINORHKbMJeML94MxrK8SjDWpPg/
=9cnn
-----END PGP PUBLIC KEY BLOCK-----

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT