D

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. CODIFICACION La codificación digital consiste en la traducción de los val

17 downloads 189 Views 149KB Size

Recommend Stories


D
Mendoza, 28 de octubre de 2009 Gobierno de la Provincia de Mendoza, Secretario de Medio Ambiente Dr. Guillermo Carmona S/D Gobierno de la Provincia

D
TEMA 20 EL CONVERSOR A/D Introducción Al Conversor Analógico/Digital Los microcontroladores PIC de la familia 16F78x, poseen un conversor A/D de 10

Story Transcript

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. CODIFICACION La codificación digital consiste en la traducción de los valores de tensión eléctrica analógicos que ya han sido cuantificados (ponderados) al sistema binario, mediante códigos preestablecidos. La señal analógica va a quedar transformada en un tren de impulsos digital (sucesión de ceros y unos). La codificación es, ante todo, la conversión de un sistema de datos a otro distinto. De ello se desprende que la información resultante es equivalente a la información de origen. Un modo sencillo de entender esto es verlo a través de los idiomas, en el ejemplo siguiente: man = hombre, podemos entender que hemos cambiado una información de un sistema (inglés) a otro sistema (español) y que esencialmente la información sigue siendo la misma. La razón de la codificación está justificada por las operaciones para las que se necesite realizar con posterioridad. En el ejemplo anterior para hacer entendible a una audiencia hispana un texto redactado en inglés. La codificación es el último de los procesos que tiene lugar durante la conversión analógica-digital.

Procesos de la conversión A/D. La codificación que se realiza mediante el sistema binario está basada en el álgebra de Boole. ENCRIPTACION (Cifrado, codificación). La encriptación es el proceso para volver ilegible la información que se considera importante. La información una vez encriptada sólo puede leerse aplicándole una clave. Se trata de una medida de seguridad que es usada para almacenar o transferir información delicada que no debería ser accesible a terceros. Pueden ser contraseñas, números. de tarjetas de crédito, conversaciones privadas, etc. Para encriptar información se utilizan complejas fórmulas matemáticas y para desencriptar, se debe usar una clave como parámetro para esas fórmulas. El texto plano que está encriptado o cifrado se llama criptograma. Normas de codificación Definen la forma en la que se codifica un carácter dado en un símbolo en otro sistema de representación. Ejemplos de esto son el código Morse, la norma ASCII o la UTF-8, entre otros. ASCII Por estar íntimamente ligado al octeto (y por consiguiente a los enteros que van del 0 al 127, el problema que presenta es que no puede codificar más que 128 símbolos diferentes (128 es el número total de diferentes configuraciones que se pueden conseguir con 7 dígitos binarios o digitales (0000000, 0000001,..., 1111111), usando el octavo dígito de cada octeto (bit o dígito de paridad) para detectar algún error de transmisión). Un cupo de 128 es suficiente para incluir mayúsculas y minúsculas del abecedario inglés, además de cifras, puntuación, y algunos "caracteres de control" (por ejemplo, uno que instruye a una impresora que pase a la hoja siguiente), pero el ASCII no incluye ni los caracteres acentuados ni el comienzo de interrogación que se usa en castellano, ni tantos otros símbolos (matemáticos, letras griegas,...) que son necesarios en muchos contextos. La conexion que se otorga del contexto ASCII es referente al lenguaje de máquina. ASCII Extendido

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. Debido a las limitaciones del ASCII se definieron varios códigos de caracteres de 8 bits, entre ellos el ASCII extendido. Sin embargo, el problema de estos códigos de 8 bits es que cada uno de ellos se define para un conjunto de lenguas con escrituras semejantes y por tanto no dan una solución unificada a la codificación de todas las lenguas del mundo. Es decir, no son suficientes 8 bits para codificar todos los alfabetos y escrituras del mundo. Unicode Como solución a estos problemas, desde 1991 se ha acordado internacionalmente utilizar la norma Unicode, que es una gran tabla, que en la actualidad asigna un código a cada uno de los más de cincuenta mil símbolos, los cuales abarcan todos los alfabetos europeos, ideogramas chinos, japoneses, coreanos, muchas otras formas de escritura, y más de un millar de símbolos especiales. Mapas de caracteres A menudo los sistemas operativos, en especial windows, utilizan mapas de caracteres o páginas de código donde mezclan o incluyen varias normas. Se debe tener en cuenta que dependiendo del idioma, la fuente o incluso el sistema operativo o el fabricante las páginas de código pueden cambiar entre ordenadores, es decir que los códigos ALT+NUMERO pueden variar de un ordenador a otro excepto para el código ASCII. Si su sistema operativo es Windows 2000, XP o Vista y desea saber cuál es la página de códigos activa en su equipo siga estos pasos: 1. Vaya a la línea de comandos (CMD), ya sea por ejecutar (Windows+R) o por todos los programas >accesorios -> símbolo del sistema. 2. Escriba la siguiente instrucción CHCP. 3. Pulse intro. Los caracteres ASCII en otros sistemas operativos: 1. En Linux y Ubuntu: en el procesador de texto respectivo digite Ctrl + Shift + U + código ASCII en Hexadecimal (el indicador de mayúsculas debe estar apagado). En general Linux y Ubuntu tienen la página de códigos Unicode UTF-8. 2. Si desea ver una tabla interactiva coloque el siguiente enlace en su explorador de internet. http://electroapplets.webcindario.com/Asciies.html Normas de Transmisión Las normas de transmisión tienen como objetivo definir la forma en que los caracteres codificados (utilizando las normas de codificación) son transmitidos en el canal de comunicaciones (por ejemplo Internet) Actualmente, en Internet los mensajes se transmiten en paquetes que siempre constan de un número entero de octetos, y la detección de error ya no se hace con el octavo dígito de cada octeto, sino con octetos especiales que automáticamente se agregan a cada paquete. Las normas de transmisión se limitan a especificar una correspondencia, reversible, entre códigos (que representan caracteres), y secuencias de octetos (que han de ser transmitidos en calidad de datos). Tablas tipográficas Pero, finalmente, para cartearse electrónicamente en chino simplificado (por ejemplo) falta un detalle importante: La tabla que el Consorcio Unicode pública para ser leída por humanos, contiene una representación gráfica o descripción, de cada carácter incluido hasta ese momento; pero, los sistemas de visualización de documentos, para poder funcionar, requieren tablas de tipografía, que asocian un glifo (dibujo) a cada carácter que abarcan, y sucede que hay muchísimas tablas de tipografía, con nombres como Arial o Times, que dibujan una misma letra a base de matrices diferentes y en diferentes estilos ("A" o "A"); sin embargo, la gran mayoría de las fuentes tipográficas contienen sólo un pequeño subconjunto de todos los caracteres Unicode.

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. LOS CARACTERES Y EL CODIGO ASCII Cuando hablamos de información y mensajes de datos en diseño electrónico necesariamente tenemos que hablar de caracteres y también de su representación especial (codificación) porque sabemos que la información se envía y recibe a través de medios digitales. Dado que en el mundo existen muchos idiomas es natural que existan miles de caracteres, por lo tanto existirán muchas tablas de códigos para representar dichos caracteres que es lo que confunde a los usuarios de dichas tablas, por ejemplo, la confusión existente entre la codificación ASCII y los códigos ALT de teclado para usuarios de aplicaciones Microsoft. Fundamentos En electrónica, gran parte del manejo de la información (datos) se lleva a cabo empleando medios digitales, lo cual implica que existen estándares y normas para codificar la información de tal forma que la máquina pueda interpretar dicha información y mostrársela de la manera adecuada a un usuario humano o a otra máquina. Los componentes más importantes de un mensaje son los caracteres que reunidos todos forman lo que llamamos un alfabeto. Dado que cada carácter empleará un medio digital entonces a cada carácter se le asigna un valor en el sistema numérico elegido y esto es lo que se conoce como codificación. Por ejemplo, a alguien se le ocurrió enumerar cada uno de las letras del alfabeto inglés del 1 al 26, esta persona posee un hardware y un firmware especial y quiere transmitir la palabra “hello” de un dispositivo electrónico a otro, entonces lo hace empleando su codificación así: 85121215, dígito a dígito. A esto se le denomina codificación. En general cualquier codificación es independiente del medio de transmisión que puede ser alámbrico, inalámbrico o incluso satelital. Nota: Es importante no confundir los términos codificación y encriptación. Puesto que el tema de la codificación no es nuevo existen diferentes estándares para la codificación de caracteres y por supuesto cuando se habla de comunicación, almacenamiento y análisis de información en ingeniería electrónica es necesario conocer los sistemas numéricos y el sistema de codificación de los datos. Los sistemas básicos en los que se codifican los caracteres son: el Sistema Decimal, el Sistema Binario, el Sistema Hexadecimal y el Sistema BCD. En diseño electrónico, cuando transmitimos información es muy probable que en nuestro receptor, por ejemplo el HyperTerminal de Windows, obtengamos caracteres de los cuales desconocemos su interpretación en hexadecimal o en binario, la respectiva conversión podría aclararnos cual es el mensaje correcto que hemos recibido. Es muy común que los caracteres enviados estén codificados en ASCII. El código ASCII o US-ASCII fue creado en 1963 para transferir información entre equipos eléctricos y entre equipos electrónicos basados en los caracteres comunes del alfabeto Norteamericano. Inicialmente tenía únicamente algunos signos de puntuación, los dígitos arábigos y las letras en mayúscula, luego en 1967 se agregó la lista de caracteres en minúscula del alfabeto norteamericano. Actualmente, el código ASCII está compuesto por 128 códigos, de los cuales los 32 (0 a 31) primeros y el 127 se les conoce como caracteres de control o caracteres no imprimibles cuando el dato se envía (salida de datos), pero cuando estos códigos de control se visualizan en pantalla pueden verse caracteres especiales para los mismos valores. Como información adicional los caracteres de control se utilizaban para controlar las impresoras y otros periféricos a través de los puertos paralelo y serial de un ordenador. En la herramienta online de este artículo se muestran todos los caracteres ASCII y sus respectivos valores numéricos para distintos sistemas numéricos. En diseño electrónico es muy común utilizar el código ASCII para comunicar dos dispositivos sin importar si se está efectuando un control (maestro-esclavo) o si se está transmitiendo información (maestro-maestro). El código ASCII se utiliza porque cada carácter tiene dos nibbles lo que facilita su manipulación y empaquetamiento cuando se transmiten varios bytes. Aunque todos los caracteres del código ASCII se representen con 7 bits, se utilizan los 8 bits, simplemente el MSB es siempre 0. Muchas personas podrían pensar que si se utilizara el último bit (MSB) del byte de los códigos ASCII podrían ampliar el número de caracteres a 256 (2^8) con lo que podrían incluir otros símbolos, lo que se conoce como el código ASCII Extendido. Esto fue lo que pensaron muchas personas al encontrar el código ASCII tan limitado (solo para el idioma inglés) para sus idiomas, pero con la mala suerte que esta idea la tenían las corporaciones fabricantes las cuales construyeron sus propios códigos ASCII Extendidos que luego se denominaron páginas de código.

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. Dado que la codificación de caracteres también se utiliza para la comunicación entre un teclado y un ordenador así como la visualización en pantalla de lo digitado desde el teclado por parte del usuario común, entonces todos los teclados de un sistema de cómputo tienen sus propios caracteres, los cuales dependerán de la casa fabricante y del idioma. Por ejemplo, para ver el diseño o disposición de los caracteres en los teclados de Microsoft para diferentes idiomas haz clic aquí. No obstante, no todos los caracteres aparecen en las teclas. A veces necesitamos incluir en nuestros escritos caracteres especiales ya sea por rigurosidad del mismo escrito o para darle un mejor aspecto. Es posible también que dependiendo de la fuente utilizada puedan incluirse algunos caracteres y otros no, por ejemplo las fuentes Arial y Symbol no poseen exactamente los mismos caracteres. En este momento es cuando surgen las dudas para el usuario común. Los caracteres en un teclado y los códigos de caracteres en los ordenadores o sistema de cómputo comerciales se rigen por las páginas de código dispuestas en el sistema computacional. Todas las páginas de código poseen los 128 primeros caracteres pertenecientes al código ASCII pero los superiores a 128 se basan en el ASCII Extendido propio de la casa fabricante y del idioma. Como existen muchas Páginas de código para los caracteres esto es lo que causa la confusión para el usuario común. Sin embargo debo anotar que esta también es una razón para que los diseñadores electrónicos usen solo el código ASCII para transmitir información ya que este es independiente del fabricante o del idioma por que todas las páginas de código lo incluyen sin importar el sistema operativo. A medida que la codificación de caracteres se ha ido universalizando también se ha buscado un estándar común de códigos para caracteres que incluya todos los caracteres de todos los idiomas así como caracteres especiales en una única tabla, es así como podemos, por ejemplo, pulsar ALT+NUMERO en Word, donde NUMERO puede ser incluso un valor decimal superior a 256 y así obtener algún carácter. Entonces, ya no solo las Páginas de Código están presentes sino que también lo hacen los estándares Unicode, en sus diferentes versiones, dentro de las cuales las más utilizada es UTF-8. Todo esto confunde mucho más al usuario común. Tratando de aclarar las cosas, en la figura 1, podemos observar la lógica de una tabla de caracteres completa para Microsoft DOS teniendo en cuenta la página de códigos PC850 (Página de códigos multilingüe, incluidos todos los caracteres de la mayoría de los idiomas europeos, norteamericanos y sudamericanos) y el estándar UTF-8. FIRMA DIGITAL RSA En criptografía, RSA es un sistema criptográfico de clave pública desarrollado en 1977. En la actualidad, RSA es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente. La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de 10200, y se prevé que su tamaño aumente con el aumento de la capacidad de cálculo de los ordenadores. Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada. Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. La computación cuántica podría proveer de una solución a este problema de factorización. Algoritmo RSA El algoritmo consta de tres pasos: generación de claves, cifrado y descifrado. Idea del algoritmo Supongamos que Bob quiere enviar a Alicia un mensaje secreto que solo ella pueda leer. Alicia envía a Bob una caja con una cerradura abierta, de la que solo Alicia tiene la llave. Bob recibe la caja, escribe el mensaje, lo pone en la caja y la cierra con su cerradura (ahora Bob no puede leer el mensaje). Bob envía la caja a Alicia y ella la abre con su llave. En este ejemplo, la caja con la cerradura es la «clave pública» de Alicia, y la llave de la cerradura es su «clave privada».

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. Técnicamente, Bob envía a Alicia un «mensaje llano» M en forma de un número m menor que otro número n, mediante un protocolo reversible conocido como padding scheme («patrón de relleno»). A continuación genera el «mensaje cifrado» c mediante la siguiente operación: , donde e es la clave pública de Alicia. Ahora Alicia descifra el mensaje en clave c mediante la operación inversa dada por , donde d es la clave privada que solo Alicia conoce.

Generación de claves

Cada usuario elige dos números primos distintos p y q. Por motivos de seguridad, estos números deben escogerse de forma aleatoria y deben tener una longitud en bits parecida. Se pueden hallar primos fácilmente mediante test de primalidad. 2. Se calcula n = pq. o n se usa como el módulo para ambas claves, pública y privada. o

3. Se calcula

, donde

es la función φ de Euler.

, que sea coprimo con . 4. Se escoge un entero positivo e menor que o e se da a conocer como el exponente de la clave pública. o Si se escoge un e con una suma encadenada corta, el cifrado será más efectivo. Un exponente e muy pequeño (p. ej. e = 3) podría suponer un riesgo para la seguridad. 5. Se determina un d (mediante aritmética modular) que satisfaga la congruencia . o o o

Expresado de otra manera, de − 1 divide a Esto suele calcularse mediante el algoritmo de Euclides extendido. d se guarda como el exponente de la clave privada.

.

La clave pública es (n,e), esto es, el módulo y el exponente de cifrado. La clave privada es (n,d), esto es, el módulo y el exponente de descifrado, que debe mantenerse en secreto. Nota:  

PKCS#1 v2.0 y PKCS#1 v2.1 se especifican mediante la función de Carmichael λ(n) = mcm(p − 1,q − 1) en vez de la función φ de Euler, donde mcm es el mínimo común múltiplo. Para una mayor eficiencia los siguientes valores se calculan de antemano y se almacenan como parte de la clave privada: o p y q: los primos para la generación de las claves, y

o o

,

.

Cifrado Alicia comunica su clave pública (n,e) a Bob y guarda la clave privada en secreto. Ahora Bob desea enviar un mensaje M a Alicia. Primero, Bob convierte M en un número entero m menor que n mediante un protocolo reversible acordado de antemano. Luego calcula el texto cifrado c mediante la operación . Esto puede hacerse rápido mediante el método de exponenciación binaria. Ahora Bob transmite c a Alicia. Descifrado

CARRERA: INGENIERIA DE SISTEMAS. TEORIA DE SISTEMAS. PROF. DOUGLAS GONZALEZ. Alicia puede recuperar m a partir de c usando su exponente d de la clave privada mediante el siguiente cálculo: . Ahora que tiene m en su poder, puede recuperar el mensaje original M invirtiendo el padding scheme. El procedimiento anterior funciona porque . Esto es así porque, como hemos elegido d y e de forma que

, se cumple

. La última congruencia se sigue directamente del teorema de Euler cuando m es coprimo con n. Puede demostrarse que las ecuaciones se cumplen para todo m usando congruencias y el teorema chino del resto. Esto muestra que se obtiene el mensaje original: . Ejemplo Aquí tenemos un ejemplo de cifrado/descifrado con RSA. Los parámetros usados aquí son pequeños y orientativos con respecto a los que maneja el algoritmo, pero podemos usar también OpenSSL para generar y examinar una par de claves reales. p=611º nº primo Privado q=532º nº primo Privado n=pq=3233 producto p*q e=17 exponente Público d=2753 exponentePrivado La clave pública (e, n). La clave privada es d. La función de cifrado es: encrypt(m) = me(mod n) = m17(mod 3233) Donde m es el texto sin cifrar. La función de descifrado es: decrypt(c) = cd(mod n) = c2753(mod 3233) Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos: encrypt(123) = 12317(mod 3233) = 855 Para descifrar el valor del texto cifrado, nosotros calculamos: decrypt(855) = 8552753(mod 3233) = 123 Ambos de estos cálculos pueden ser eficientemente usados por el algoritmo de multiplicación cuadrática para exponenciación modular. Cuestionario. LA CODIFICACIÓN. 1. ¿En que radica la seguridad del algoritmo RSA? 2. ¿Qué es encriptación? 3. Explique el proceso de conversión A/D. 4. ¿Qué es codificación? 5. ¿En qué consiste la codificación digital? 6. ¿Cómo se encripta la información? 7. ¿De cuántos caracteres consta el código ascci? 8. ¿Cómo puede leerse una información encriptada? 9. ¿En que consta el Algoritmo RSA? 10. ¿Qué es el código Unicode? 11. ¿Cómo se realiza la detección de error en la transmisión actualmente? 12. Diferencia entre codificación y encriptación. 13. ¿Qué en un nibble? 14. ¿En qué consiste la firma digital RSA? 15. Programa para calcular un número primo. 16. En la generación de claves cual es el algoritmo que suele emplearse y en que consiste?

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.