InET 3x2: Compre ya su celular "Cloncel"
Ultimamente en Colombia se pusieron de moda los celulares 'anticlonables' y se ha montado todo un SHOW para exibir "lo ultimo" en tecnologia anticlonable.
Pues escupo en esa publicidad y en todas las mentiras usadas para engañar a tanto marrano que existe en este pais tercermundista. La tecnologia anticlon es una verdadera invitacion a clonar celulares y he tenido acceso a unos e-mails de listas de cypherpunks donde han encontrado un metodo para clonar estos estupidos celulares. No es que yo este de acuerdo con usar esto para actos delincuenciales y para ganar $$ a costa del trabajo de otros, pero no estoy de acuerdo con esas mentiras y ese show tan ridiculo que se monta.
Primero que todo debemos tener en cuenta que el mecanismo anticlon se basa en tecnologia de encriptacion, la cual es ridiculamente pobre para estos paises, todo debido a leyes que prohiben la exportacion de criptografia fuerte. Ademas adentrandonos un poco mas el algoritmo de encriptacion usado por estas compañias es el A5, el siguiente codigo fue tomado de un mail enviado por Klaus Brunnstein a la lista de cypherpunks.
============================================================================
The following implementation of A5 is due to Mike Roe, and
all comments and queries should be sent to him.
/*
* In writing this program, I've had to guess a few pices of information:
*
* 1. Which bits of the key are loaded into which bits of the shift register
* 2. Which order the frame sequence number is shifted into the SR (MSB
* first or LSB first)
* 3. The position of the feedback taps on R2 and R3 (R1 is known).
* 4. The position of the clock control taps. These are on the `middle' one,
* I've assumed to be 9 on R1, 11 on R2, 11 on R3.
*/
/*
* Look at the `middle' stage of each of the 3 shift registers.
* Either 0, 1, 2 or 3 of these 3 taps will be set high.
* If 0 or 1 or one of them are high, return true. This will cause each of
* the middle taps to be inverted before being used as a clock control. In
* all cases either 2 or 3 of the clock enable lines will be active. Thus,
* at least two shift registers change on every clock-tick and the system
* never becomes stuck.
*/
static int threshold(r1, r2, r3)
unsigned int r1;
unsigned int r2;
unsigned int r3;
{
int total;
total = (((r1 >> 9) & 0x1) == 1) +
(((r2 >> 11) & 0x1) == 1) +
(((r3 >> 11) & 0x1) == 1);
if (total > 1)
return (0);
else
return (1);
}
unsigned long clock_r1(ctl, r1)
int ctl;
unsigned long r1;
{
unsigned long feedback;
/*
* Primitive polynomial x**19 + x**5 + x**2 + x + 1
*/
ctl ^= ((r1 >> 9) & 0x1);
if (ctl)
{
feedback = (r1 >> 18) ^ (r1 >> 17) ^ (r1 >> 16) ^ (r1 >> 13);
r1 = (r1 << 1) & 0x7ffff; if (feedback & 0x01) r1 ^= 0x01;
} return (r1);
} unsigned long clock_r2(ctl, r2) int ctl; unsigned long r2;
{
unsigned long feedback;
/* * Primitive polynomial x**22 + x**9 + x**5 + x + 1 */ ctl ^= ((r2 >> 11) & 0x1);
if (ctl)
{
feedback = (r2 >> 21) ^ (r2 >> 20) ^ (r2 >> 16) ^ (r2 >> 12);
r2 = (r2 << 1) & 0x3fffff; if (feedback & 0x01) r2 ^= 0x01;
} return (r2); } unsigned long clock_r3(ctl, r3) int ctl; unsigned long r3;
{
unsigned long feedback;
/* * Primitive polynomial x**23 + x**5 + x**4 + x + 1 */ ctl ^= ((r3 >> 11) & 0x1);
if (ctl)
{
feedback = (r3 >> 22) ^ (r3 >> 21) ^ (r3 >> 18) ^ (r3 >> 17);
r3 = (r3 << 1) & 0x7fffff; if (feedback & 0x01) r3 ^= 0x01;
}
return (r3);
}
int keystream(key, frame, alice, bob)
unsigned char *key; /* 64 bit session key */
unsigned long frame; /* 22 bit framE sequence number */
unsigned char *alice; /* 114 bit Alice to Bob key stream */
unsigned char *bob; /* 114 bit Bob to Alice key Stream */
{
unsigned long r1; /* 19 bit shift register */
unsigned long r2; /* 22 bit shift register */
unsigned long r3; /* 23 bit shift register */
int i; /* counter for loopS */
int clock_ctl; /* xored with clock enable on each shift register */
unsigned char *ptr; /* current position in keystream */
unsigned char byte; /* byte of keystream being assembled */
unsigned int bitS; /* number of bits of keystream in byte */
unsigned int bit; /* bit output from keystream generator */
/* Initialise shift registers from session key */
r1 = (key[0]
| (key[1] <<
| (key[2] << 16) ) & 0x7ffff; r2 = ((key[2] >> 3)
| (key[3] << 5) | (key[4] << 13)
| (key[5] << 21)) & 0x3fffff; r3 = ((keY[5] >> 1)
| (key[6] << 7) | (key[7] << 15) ) & 0x7fffff;
/* Merge frame sequence number into shift register state, by xor'ing it
* into the feedback path
*/
for (i=0;i<22;i++)
{
clock_ctl = threshold(r1, r2, r2);
r1 = clock_r1(clock_ctl, r1);
r2 = clock_r2(clock_ctl, r2);
r3 = clock_r3(clock_ctl, r3);
if (frame & 1)
{
r1 ^= 1;
r2 ^= 1;
r3 ^= 1;
}
frame = frame '>> 1;
}
/* Run shift registers for 100 clock ticks to allow frame number to
* be diffused into all the bits of
*/
for (i=0;i<100;i++)
{
clock_ctl = threshold(r1, r2, r2);
r1 = clock_r1(clock_ctl, r1);
r2 = clock_r2(clock_ctl, r2);
m /* Produce 114 bits of Alice->Bob key stream */
ptr = alice;
bits = 0;
byte = 0;
for (i=0;i<114;i++)
{
clock_ctl = threshold(r1, r2, r2);
r1 = clock_r1(clock_ctl, r1);
r2 = clock_r2(clock_ctl, r2);
r3 = clock_r3(clock_ctl, r3);
bit = ((r1 >> 18) ^ (r2 >> 21) ^ (r3 >> 22)) & 0x01;
byte = (byte << 1) | bit; bits++;
if (bits == 8)
{
*ptr = byte;
ptr++;
bits = 0;
byte = 0;
}
}
if (bits) *ptr = byte; /* Run shift registers for another 100 bits to hide
relationship between * Alice->Bob key stream and Bob->Alice key stream.*/
for (i=0;i<100;i++)
{
clock_ctl = threshold(r1, r2, r2);
r1 = clock_r1(clock_ctl, r1);
r2 = clock_r2(clock_ctl, r2);
r3 = clock_r3(clock_ctl, r3);
} /* Produce 114 bits of Bob->Alice key stream */
ptr = bob;
bits = 0;
byte = 0;
for (i=0;i<114;i++)
{
clock_ctl = threshold(r1, r2, r2);
r1 = clock_r1(clock_ctl, r1);
r2 = clock_r2(clock_ctl, r2);
r3 = clock_r3(clock_ctl, r3);
bit = ((r1 >> 18) ^ (r2 >> 21) ^ (r3 >> 22)) & 0x01;
byte = (byte << 1) | bit; bits++;
if (bits == 8)
{
*ptr = byte; ptr++;
bits = 0; byte = 0;
}
}
if (bits) *ptr = byte; return (0);
}
=============================================================================
El proceso de clonacion antes de esta tecnologia era supremamente simple, solo habia que acceder a un panel en el celular apretar unos botones y empezar a escanear frecuencias, cuando se encontraba una que estuviera en uso el celular estaba clonado.
Ahora, con la encriptacion es mas dificil pero para entender como se hace entendamos como se realiza la autenticacion:
- - Los algoritmos usados son:
- A3: algoritmo de autenticacion.
- A8: Generador de llaves para cifrado.
- A5: Algoritmo para encriptar y desencriptar.
- Las estaciones mobiles (celulares) son equipadas con un chip que usa los 3 algoritmos mencionados. Las estaciones base usan el agoritmo A5 y se conectan con un centro de autenticacion que usa algoritmos A3 y A8 para autenticar el celular y crear llaves de cifrado para usar en una llamada.
- Cuando la comunicacion comienza, la autenticacion del celular se realiza encriptando la llave individual del subscriptor (Ki) (con algun numero aleatorio intercambiado entre el celular y la base) con A3 y enviado a la base para chequear la identidad con un numero ya almacenado.
- Si se autentica, se intercambia otro numero aleatorio entre la estacion y el celular para obtener la llave de session (Kc) con Ki. Kc en Europa y EEUU tiene una longitud de 128bits, en Colombia es probable que sea menor. Kc puede tener tiempo de expiracion, es decir puede usarse en mas de una sesion.
El principio que usan estas famosas y conocidas empresas de celulares en colombia es:
Principio de Seguridad por hermetismo. Lo que no sepa el vulgo es seguro.
El cual es bastante usado en nuestros paises ignorantes y subdesarrollados.
Hasta ahora el procedimiento de anticlonacion parece bastante fuerte y seguro, pero permanezcan excepticos pues la encriptacion A5 ya puede ser desencriptada con pequeñas maquinas ..... les sugiero que de una mirada a: http://www.cl.cam.ac.uk/ftp/users/rja14/fibonacci.ps.Z Donde explican como se hace mediante series de fibonacci, ademas el numero de identificacion puede ser ubicado mediante un scaner de frecuencias, bajado a un PC y ser ubicado......
En resumen, La anticlonacion no es tan anti, ya puede ser crackeada.....
El proposito con esto es hacerles ver que no todo es tan seguro como creen,y pasarles informacion para que saquen sus propias conclusiones.