miércoles, 2 de junio de 2010
NOTICIA: Un ingeniero alemán descifra el algoritmo que protege las llamadas del móvil
El 'hacker' publica los códigos que salvaguardan el estandar GSM para denunciar la "vulnerabilidad del sistema"
Era raro que todavía no hubiese sucedido. El ingeniero informático alemán Karsten Nohl ha descifrado el algoritmo utilizado para cifrar las comunicaciones del estándar GSM (Sistema Global para las Comunicaciones Móviles). El anuncio fue realizado por Nohl ante 600 personas en la conferencia Chaos Communication Congress, la reunión más importante de los hackers europeos celebrada en Berlín, para demostrar que "la seguridad de GSM es insuficiente". Su objetivo: "que las operadoras adopten mayores medidas de seguridad en telefonía móvil", según recoge The New York Times.
Nohl ha publicado el código en Internet para denunciar y alertar de la vulnerabilidad del sistema y la pérdida de eficacia del algoritmo que protege las comunicaciones GSM, desarrollado en 1988 y que todavía se utiliza para proteger la privacidad del 80% de las llamadas de móviles en el mundo.
La Asociación GSM considera el crackeo ilegal, resta importancia al anuncio y acusa al ingeniero de "exagerar la amenaza de seguridad". Según la portavoz de la asociación, Claire Cranton "es teóricamente posible, pero prácticamente improbable".
Nohl no es un desconocido. Doctor en ingeniería informática por la Universidad de Virginia (Estados Unidos), es experto en criptografía. En agosto, en una reunión dehackers en Amsterdam, retó a sus compañeros a que le ayudaran a crackear el algoritmo de GSM "con fines académicos". En total 24 personas, algunos miembros del Chaos Computer Club, han trabajado para romper un código que emplean unos 3.500 millones de los 4.300 millones de teléfonos móviles del mundo. Técnicamente conocido como A5/1, se trata de un código binario, que ha conseguido desde su implantación en 1988 mantener en la intimidad las conversaciones de la gente con su móvil.
Controlar la situación
El director de seguridad de la asociación GSM, James Moran, no considera que la publicación del código vaya a provocar problemas "mañana, ni la semana o el mesque que viene", aunque también asegura que "monitorizan la situación", según recoge Financial Times.
Muchos expertos discrepan. "Hace un año habría necesitado equipos que cuestan millones y a gente experta para interceptar llamadas. Hoy basta con un equipo de red de 1.500 dólares y gente experta" para hacer lo mismo, ha asegurado SimonBransfield-Garth, consejero delegado de la firma de encriptación móvil CellCrypt.
Moran asegura también que, si detectan problemas, como ya ocurrió en 2004, obligarían a todos los operadores de telefonía móvil que operan en la red GSM a actualizar sus sistemas de seguridad para utilizar algoritmos de encriptación más potentes. En 2004 ya ocurrió algo similar con el código A5/2. Entonces, los telefónicas de América Latina, Asia y Africa tuvieron que actualizar sus redes. Un coste muy elevado ya que implica sustituir las estaciones por completo. En ese caso tardaron 18 meses en completar la actualización.
Ejemplo de programacion en C++
Ejemplo de Algoritmo
Que es la Algoritmacion?
ALGORITMOS
Un algoritmo es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. de acuerdo a esto, definimos una serie de pasos para la elaboracion
Pasos | Etapa | Descripción |
1 | Análisis del problema | Conducen al diseño detallado por medio un código escrito en forma de un algoritmo |
2 | Diseño de algoritmo | |
3 | Codificación | Se implementa el algoritmo en un código escrito en un lenguaje de programación. Refleja las ideas desarrolladas en las etapas de análisis y diseño |
4 | Compilación y ejecución | Traduce el programa |
5 | Verificación | Busca errores en las etapas anteriores y los elimina. |
6 | Depuración | |
7 | Documentación | Son comentarios, etiquetas de texto, que facilitan la comprensión del programa |
Concepto |
|
Algoritmo: es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos. | Preciso: implica el orden de realización de cada uno de los pasos |
Definido: si se sigue dos veces, se obtiene el mismo resultado. | |
Finito: Tiene un numero determinado de pasos, implica que tiene un fin, |
Método | Descripción | Ejemplos |
Algorítmico | Utiliza un algoritmo y puede ser implementado en una |
|
Heurística: | Se apoya en el resultado obtenido en un análisis de alternativas de experiencias anteriores similares. De las mismas, a se deducen una serie de reglas empíricas o heurísticas que de ser seguidas, conducen a laselección de la mejor alternativa en todas o la mayoría de las veces. |
|
|
| Ejemplos |
Los algoritmos se pueden expresar por: | Formulas | |
Diagramas de flujo Norte-Sur,Top-Down |
| |
Pseudo código | inicio leer a,b,c calcular escribir perímetro fin |
- Quick Basic es un lenguaje de programación estructurado y el algoritmo se representara en seudo código y/o diagrama de flujo.
Requiere la clara definición del problema donde se indique que va hacer el programa y cual ve a ser el resultado.
Los requisitos que definen el análisis son :
Para ver el gráfico seleccione la opción "
La ecuación de segundo grado se define algebraicamente como :
La solución general viene dada por la expresión algebraica : (Algoritmo)
|
|
| periférico |
1 | Análisis del problema |
|
|
2 | Def. del problema | Hallar raíces ecua. 2do grdo |
|
3 | Especif. de entrada | coeficientes a, b, c | |
4 | Especif. de salida | X1, X2 |
Entrada: por teclado
coef | Descripción | Codificación en QBasic |
a | team. cuadrático | INPUT "Coef a =";A |
b | term. lineal | INPUT "Coef b =";B |
c | term. independiente | INPUT "Coef c =";C |
Calculo | Expresión algebraica | Codificación en QBasic |
| X1=((-B+SQR(B^2-4*A*C)) | |
X2=((-B-SQR(B^2-4*A*C)) |
Proceso:
Salida: Visualización de :Datos de entrada: A,B,C
Datos procesados: Raices: X1, X2
Variable | Significado | Codificación en QBasic |
A,B,C | Coef | PRINT"A=";A; "B=";"C=";C |
X1 | primera raíz | PRINT"X1=";x1 |
X2 | primera raíz | PRINT"X2=";X2 |
- Análisis de proceso implica que hace el programa.
- Diseño implica como se hace o realiza la tarea (problema) solicitado
En el diseño:
- El todo es la sumatoria de las partes.
- Divide el todo en varias partes.
En la resolución de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador.
Esta característica define lo que se entiende como diseño descendente( Top-Down / Norte-Sur ) o diseño modular.
El proceso de ruptura del problema en cada etapa se
- Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida.
- Un programa bien diseñado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (módulos de nivel mas bajo), que a su vez pueden llamar otros sub programas.
Los programas que se estructuran de esta forma, se dicen que tienen diseño modular y el método de romper el programa en modos pequeños se llamaprogramación modular.
Los módulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre si.
Este proceso implica la ejecución de los siguientes pasos:
1 | programar un modulo |
2 | comprobar un modulo |
3 | depurar el modulo |
4 | combinar el modulo con módulos anteriores |
este proceso convierte el resultado del análisis del problema en un diseño modular con refinamientos sucesivos que permiten una traducción a un lenguaje que se denomina diseño del algoritmo.
El algoritmo se puede representar por medio de dos formas :
Pseudo código
Diagrama de flujo:
Pseudo código: es el lenguaje de especificación de algoritmos y tiene una estructura: Las instrucciones se escriben en
Para la resolución de una ecuación de segundo grado se escribiría
inicio
Introducir coeficientes a, b y c
Calcular raíz 1 y raíz 2
Imprimir raíz 1 y raíz 2
Fin
Diagramas de flujo (flows charts): Es la representación grafica del algoritmo; según la ANSI consta de una simbologia , que tiene los siguientes significados:
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Símbolos del Diagrama de flujo
Codificación :
Programación:
Windows/Dos/
Quick Basic =
Programa: definición:
Un programa tiene la forma
Para ver el gráfico seleccione la opción "Descargar"
En el editor de Quick Basic se escribiría codificado el seudo código
que tendría la forma:
REM Programa para calcular las soluciones
REM de una ecuacion de segundo grado
PRINT "Escriba los valores de A, B y C"
C$="Calculos"
INPUT " A,B,C", A, B, C
R = (B ^ 2 - 4 * A * C) ^ .5
LET X1 = (-B + R) / (2 * A)
LET X2 = (-B + R) / (2 * A)
PRINT " A="; A, " B="; B, "C="; C
PRINT "X1="; X1, "X2="; X2
END
En el Menú
|
|
|
| Ejecutar |
|
|
En la pantalla veríamos:
Mandato (command): es una orden aislada de
Ejemplo:
Mandato | Descripción |
RUN | Ordena la ejecución de un programa. |
LIST | Escribe En la pantalla el listado del programa |
SAVE. | Guarda, graba el programa como un archivo de |
Instrucción: es una orden contenida en un programa.
Ejemplo:
Instrucción | Descripción |
Escribe en pantalla. | |
INPUT | Introduce (entra datos) |
Edición de un programa: un programa esta formado por líneas secuenciales que se ejecutan en forma descendente (Up Down)
Para dar por terminada una línea se pulsa la tecla Enter (Return) en cualquier parte de la misma. Para cambiar una línea basta volver a teclearla.
- Se puede corregir una línea (borrar, rescribir ) en pantalla o bien con el mandato EDIT.
- Se pueden incluir varias instrucciones en una misma línea, separándolos por dos puntos.
- Una línea de pantalla (cuarenta u ochenta posiciones) es diferente de una línea de programa (doscientos cincuenta y seis posiciones).
Modo Directo:
Modo Programa
Run
Ventana activa
Ventana inmediata
mandato | Descripción |
CLS | borra la pantalla |
Recomendaciones:
- Todo programa debe estar documentado con comentarios; la primera línea debe contener el
titulo del programa. Los comentarios deben de ir precedidos de la palabra clave REM o de un apostrofo ( ‘ ) - Si una línea ya tiene otras instrucciones, el comentario debe ir al
final de la línea. - Los comentarios solo aparecen en el listado del programa y no aparecen escritos en la pantalla durante la ejecución.
Constantes:
QBasic, trabaja con dos tipos de datos:
Datos | Tipos |
numéricos: | Enteros (INT) Enteros largos (LNG) de simple precisión (SGL) de doble precisión (DBL) |
alfanuméricos | hileras o cadenas (STR) fila de caracteres en ASCII ( en parte del teclado ) |
- Las constantes alfanuméricas pueden ser enteras o fraccionarias, se representan en forma decimal; se puede emitir el cero a la izquierda del punto decimal. Ejemplo
3452 | -12.67 | .23 | +12345 |
Estos son ejemplos de valores numéricos de punto fijo; se puede emplear una notación de punto flotante.
Mantisa | exponente |
1,23456E+15 |
|
123456.0000000000 |
|
1.234567890789456D–10 | 0.000000000123456789012456 |
- El numero máximo de cifras significativas con que se trabaja es:
6 para la precisión simple (SNG)
16 para la precisión doble (DLB)
- En las constantes de punto fijo hay que añadir el carácter #
- Las constantes alfanuméricas son hileras de caracteres; se escriben entre comillas, Ej. "Hola " ; " A47EC
Variables vectores y matrices:
- Una variable es una
zona de memoria que almacena un dato
X | R A M |
|
DIA $ |
| |
| ||
-23.5 |
| |
lunes |
| |
80 |
|
- Una variable se identifica mediante un nombre. El nombre de una variable numérica debe empezar por una letra y puede ir sucedido de otras letras y / o otros dígitos (X, A, B1, peso, T341)
- Una variable alfanumérica debe terminar con el carácter $ (x$, a23$, dias$,)
- Están terminantemente prohibidas los nombres de variables que contengan palabras claves de Basic (PRUN, LIST, NIF$,)
- Las variables de precisión doble y enteros se identifican añadiendo el carácter # o el carácter % , también se pueden declarar como
DEFDBL A
Los comentarios que se incluyan deben ser significativos
Documentación interna:
- Va incluida dentro del código del programa fuente, por medio de comentarios que ayudan a la comprensión del código.
- Todas las sentencias comienzan con la sentencia REM o su equivalente el carácter apostrofe ( ‘).
El programa en si no los necesita y los ignora. Hace que los programas sean comprensibles.