Criptografía Asimétrica

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 26

Criptografía asimétrica

De Wikipedia, la enciclopedia libre


Saltar a navegación, búsqueda

La criptografía asimétrica es el método criptográfico que usa un par de claves para el


envío de mensajes. Las dos claves pertenecen a la misma persona a la que se ha enviado
el mensaje. Una clave es pública y se puede entregar a cualquier persona, la otra clave
es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella.
Además, los métodos criptográficos garantizan que esa pareja de claves sólo se puede
generar una vez, de modo que se puede asumir que no es posible que dos personas
hayan obtenido casualmente la misma pareja de claves.

Si el remitente usa la clave pública del destinatario para cifrar el mensaje, una vez
cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya que es el
único que la conoce. Por tanto se logra la confidencialidad del envío del mensaje, nadie
salvo el destinatario puede descifrarlo.

Si el propietario del par de claves usa su clave privada para cifrar el mensaje, cualquiera
puede descifrarlo utilizando su clave pública. En este caso se consigue por tanto la
identificación y autentificación del remitente, ya que se sabe que sólo pudo haber sido
él quien empleó su clave privada (salvo que alguien se la hubiese podido robar). Esta
idea es el fundamento de la firma electrónica.

Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se


inventaron con el fin de evitar por completo el problema del intercambio de claves de
los sistemas de cifrado simétricos. Con las claves públicas no es necesario que el
remitente y el destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se
requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia
de la clave pública del destinatario. Es más, esa misma clave pública puede ser usada
por cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo
n pares de claves por cada n personas que deseen comunicarse entre sí.

Contenido
[ocultar]

• 1 Bases
• 2 Descripción
• 3 Seguridad
• 4 Ventajas del cifrado asimétrico
• 5 Algoritmos
• 6 Protocolos
• 7 Referencias

• 8 Enlaces externos

[editar] Bases
Los sistemas de cifrado de clave pública se basan en funciones-trampa de un solo
sentido que aprovechan propiedades particulares, por ejemplo de los números primos.
Una función de un solo sentido es aquella cuya computación es fácil, mientras que su
inversión resulta extremadamente difícil. Por ejemplo, es fácil multiplicar dos números
primos juntos para obtener uno compuesto, pero es difícil factorizar uno compuesto en
sus componentes primos. Una función-trampa de un sentido es algo parecido, pero tiene
una "trampa". Esto quiere decir que si se conociera alguna pieza de la información, sería
fácil computar el inverso. Por ejemplo, si tenemos un número compuesto por dos
factores primos y conocemos uno de los factores, es fácil computar el segundo.

Dado un cifrado de clave pública basado en factorización de números primos, la clave


pública contiene un número compuesto de dos factores primos grandes, y el algoritmo
de cifrado usa ese compuesto para cifrar el mensaje. El algoritmo para descifrar el
mensaje requiere el conocimiento de los factores primos, para que el descifrado sea fácil
si poseemos la clave privada que contiene uno de los factores, pero extremadamente
difícil en caso contrario.

[editar] Descripción
Las dos principales ramas de la criptografía de clave pública son:

• Cifrado de clave pública— un mensaje cifrado con la clave pública de un destinatario


no puede ser descifrado por nadie, excepto un poseedor de la clave privada
correspondiente--presumiblemente, este será el propietario de esa clave y la persona
asociada con la clave pública utilizada. Se utiliza para confidencialidad.

• Firmas digitales— un mensaje firmado con la clave privada del remitente puede ser
verificado por cualquier persona que tenga acceso a la clave pública del remitente, lo
que demuestra que el remitente tenía acceso a la clave privada (y por lo tanto, es
probable que sea la persona asociada con la clave pública utilizada) y la parte del
mensaje que no se ha manipulado. Sobre la cuestión de la autenticidad.

Una analogía con el cifrado de clave pública es la de un buzón con una ranura de correo.
La ranura de correo está expuesta y accesible al público; su ubicación (la dirección de la
calle) es, en esencia, la clave pública. Alguién que conozca la dirección de la calle
puede ir a la puerta y colocar un mensaje escrito a través de la ranura; sin embargo, sólo
la persona que posee la clave puede abrir el buzón de correo y leer el mensaje.

Una analogía para firmas digitales es el sellado de un envolvente con un personal, sello
de cera. El mensaje puede ser abierto por cualquier persona, pero la presencia del sello
autentifica al remitente.

Un problema central para el uso de la criptografía de clave pública es de confianza


(idealmente prueba) que una clave pública es correcta, pertenece a la persona o entidad
que afirmó (es decir, es «auténtico») y no ha sido manipulado o reemplazados por un
tercero malintencionado. El enfoque habitual a este problema consiste en utilizar una
infraestructura de clave pública (PKI), en la que una o más terceras partes, conocidas
como entidades emisoras de certificados , certifican la propiedad de los pares de claves.
Otro enfoque, utilizado por PGP , es la " web de confianza ", método para asegurar la
autenticidad de pares de clave

[editar] Seguridad
Como con los sistemas de cifrado simétricos buenos, con un buen sistema de cifrado de
clave pública toda la seguridad descansa en la clave y no en el algoritmo. Por lo tanto, el
tamaño de la clave es una medida de la seguridad del sistema, pero no se puede
comparar el tamaño de la clave del cifrado simétrico con el del cifrado de clave pública
para medir la seguridad. En un ataque de fuerza bruta sobre un cifrado simétrico con
una clave del tamaño de 80 bits, el atacante debe probar hasta 280-1 claves para
encontrar la clave correcta. En un ataque de fuerza bruta sobre un cifrado de clave
pública con una clave del tamaño de 512 bits, el atacante debe factorizar un número
compuesto codificado en 512 bits (hasta 155 dígitos decimales). La cantidad de trabajo
para el atacante será diferente dependiendo del cifrado que esté atacando. Mientras 128
bits son suficientes para cifrados simétricos, dada la tecnología de factorización de hoy
en día, se recomienda el uso de claves públicas de 1024 bits para la mayoría de los
casos.

[editar] Ventajas del cifrado asimétrico


La mayor ventaja de la criptografía asimétrica es que se puede cifrar con una clave y
descifrar con la otra, pero este sistema tiene bastantes desventajas:

• Para una misma longitud de clave y mensaje se necesita mayor tiempo de


proceso.
• Las claves deben ser de mayor tamaño que las simétricas.
• El mensaje cifrado ocupa más espacio que el original.

El sistema de criptografía de curva elíptica representa una alternativa menos costosa


para este tipo de problemas.

Herramientas como PGP, SSH o la capa de seguridad SSL para la jerarquía de


protocolos TCP/IP utilizan un híbrido formado por la criptografía asimétrica para
intercambiar claves de criptografía simétrica, y la criptografía simétrica para la
transmisión de la información.

[editar] Algoritmos
Algunos algoritmos de técnicas de clave asimétrica son:

• Diffie-Hellman
• RSA
• DSA
• ElGamal
• Criptografía de curva elíptica

Otros algoritmos de clave asimétrica pero inseguros:


• Merkle-Hellman, algoritmos "Knapsack".

[editar] Protocolos
Algunos protocolos que usan los algoritmos antes citados son:

• DSS ("Digital Signature Standard") con el algoritmo DSA ("Digital Signature


Algorithm")
• PGP
• GPG, una implementación de OpenPGP
• SSH
• SSL, ahora un estándar del IETF
• TLS

http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica

Algoritmos de cifrado
Cifrado asimétrico
La criptografía asimétrica es el método criptográfico que usa un par de claves para el
envío de mensajes. Las dos claves pertenecen a la misma persona a la que se ha enviado
el mensaje. Una clave es pública y se puede entregar a cualquier persona, la otra clave
es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella.
Además, los métodos criptográficos garantizan que esa pareja de claves sólo se puede
generar una vez, de modo que se puede asumir que no es posible que dos personas
hayan obtenido casualmente la misma pareja de claves.

Si el remitente usa la clave pública del destinatario para cifrar el mensaje, una vez
cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya que es el
único que la conoce. Por tanto se logra la confidencialidad del envío del mensaje, nadie
salvo el destinatario puede descifrarlo.

Si el propietario del par de claves usa su clave privada para cifrar el mensaje, cualquiera
puede descifrarlo utilizando su clave pública. En este caso se consigue por tanto la
identificación y autentificación del remitente, ya que se sabe que sólo pudo haber sido él
quien empleó su clave privada (salvo que alguien se la hubiese podido robar). Esta idea
es el fundamento de la firma electrónica.

Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se inventaron


con el fin de evitar por completo el problema del intercambio de claves de los sistemas
de cifrado simétricos. Con las claves públicas no es necesario que el remitente y el
destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se requiere es que,
antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave
pública del destinatario. Es más, esa misma clave pública puede ser usada por
cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo n
pares de claves por cada n personas que deseen comunicarse entre sí.

Seguridad

Como con los sistemas de cifrado simétricos buenos, con un buen sistema de cifrado de
clave pública toda la seguridad descansa en la clave y no en el algoritmo. Por lo tanto, el
tamaño de la clave es una medida de la seguridad del sistema, pero no se puede
comparar el tamaño de la clave del cifrado simétrico con el del cifrado de clave pública
para medir la seguridad. En un ataque de fuerza bruta sobre un cifrado simétrico con
una clave del tamaño de 80 bits, el atacante debe probar hasta 280-1 claves para
encontrar la clave correcta. En un ataque de fuerza bruta sobre un cifrado de clave
pública con una clave del tamaño de 512 bits, el atacante debe factorizar un número
compuesto codificado en 512 bits (hasta 155 dígitos decimales). La cantidad de trabajo
para el atacante será diferente dependiendo del cifrado que esté atacando. Mientras 128
bits son suficientes para cifrados simétricos, dada la tecnología de factorización de hoy
en día, se recomienda el uso de claves públicas de 1024 bits para la mayoría de los
casos.

Algoritmos asimétricos

RSA

RSA es un sistema criptográfico de clave pública desarrollado en 1977 por ingenieros


estadounidenses. 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.

La seguridad del criptosistema RSA está basado en dos problemas matemáticos: el


problema de factorizar números grandes y el problema RSA. El descifrado completo de
un texto cifrado con RSA es computacionalmente intratable, no se ha encontrado un
algoritmo eficiente todavía para ambos problemas. Proveyendo la seguridad contra el
descifrado parcial podría requerir la adición de una seguridad padding scheme.

El problema del RSA se define como la tarea de tomar raíces eth módulo a componer n:
recuperando un valor m tal que me=c ≡mod n, donde (e, n) es una clave pública RSA y
c es el texto cifrado con RSA. Actualmente la aproximación para solventar el problema
del RSA es el factor del módulo n. Con la capacidad para recuperar factores primos, un
atacante puede computar el exponente secreto d desde una clave pública (e, n), entonces
descifra c usando el procedimiento standard. Para conseguir esto, un atacante factoriza n
en p y q, y computa (p-1)(q-1) con lo que le permite determinar d y e. No se ha
encontrado ningún método en tiempo polinómico para la factorización de enteros
largos. Ver factorización de enteros para la discusión de este problema.

La factorización de números grandes por lo general proponen métodos teniendo 663 bits
de longitud usando métodos distribuidos avanzados. Las claves RSA son normalmente
entre 1024-2048 bits de longitud. Algunos expertos creen que las claves de 1024 bits
podrían comenzar a ser débiles en poco tiempo; con claves de 4096 bits podrían ser
rotas en un futuro. Por lo tanto, si n es suficientemente grande el algoritmo RSA es
seguro. Si n tiene 256 bits o menos, puede ser factorizado en pocas horas con un
computador personal, usando software libre. Si n tiene 512 bits o menos, puede ser
factorizado por varios cientos de computadoras como en 1999. Un dispositivo hardware
teórico llamado TWIRL descrito por Shamir y Tromer en el 2003 cuestionó a la
seguridad de claves de 1024 bits. Es actualmente recomendado que n sea como mínimo
de 2048 bits de longitud.

En 1993, Peter Shor publicó su algoritmo, mostrando que una computadora cuántica
podría en principio mejorar la factorización en tiempo polinomial, mostrando RSA
como un algoritmo obsoleto. Sin embargo, las computadoras cuánticas no se esperan
que acaben su desarrollo hasta dentro de muchos años.

Cifrado simétrico
DES

Data Encryption Standard (DES) es un algoritmo de cifrado, es decir, un método para


cifrar información, escogido como FIPS en los Estados Unidos en 1976, y cuyo uso se
ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido al
principio, con algunos elementos de diseño clasificados, una longitud de clave
relativamente corta.

Hoy en día, DES se considera inseguro para muchas aplicaciones. Esto se debe
principalmente a que el tamaño de clave de 56 bits es corto; las claves de DES se han
roto en menos de 24 horas. Existen también resultados analíticos que demuestran
debilidades teóricas en su cifrado, aunque son inviables en la práctica. Se cree que el
algoritmo es seguro en la práctica en su variante de Triple DES, aunque existan ataques
teóricos.

Desde hace algunos años, el algoritmo ha sido sustituido por el nuevo AES (Advanced
Encryption Standard).
Triple DES

AES

MD5

SHA1

Blowfish

Archivos Distribuidos
Un Sistema de Archivos Distribuido, es un administrador de recursos,
y que es parte de un Sistema Operativo distribuido, puede ser
compartido por todas las computadoras autónomas dentro del
sistema.

El poder administrar sistemas de archivos remotos proporciona una


ventaja muy grande a los Sistemas Operativos ampliando su
capacidad de administración de recursos. Se tienen varios objetivos
en un sistemas de este tipo:
Diversidad de aplicaciones.

Semántica del sistema de archivos (fase, simple, comprensible, pocos


comandos).
Cumple con requerimientos de diferentes usuarios.
Nomenclatura consistente (el mismo nombre en cada sitio).
Transparencia de localización (mover un archivo sin cambiar su
nombre y procesos involucrados).

Acceso transparente (acceso remoto igual a acceso local).


Consistencia de datos (garantizar integridad).

Consistencia de autentificación (reconocer identidad y derechos de


usuarios y procesos).

Protección de información (protección contra accesos no autorizados).

Mobilidad de usuarios (acceso desde cualquier parte).


Rendimiento (mismo rendimiento que en sistemas convencionales).

Disponibilidad (baja aceptación de fallas).

Recuperación (Recuperación de procesos y servicios).

Escalabilidad (disponibilidad para crecer).

Adaptación a diferentes medios de almacenamiento (disponibilidad


para adaptarse a diferentes sistemas de almacenamiento en software
y hardware).

Servicios de un Sistema de Archivos

Los sistemas de archivos son considerados como uno de los


componentes mas importantes de cualquier Sistema Distribuido.
Debe tener conocimiento de cada uno de los sitios disponibles de
información, de manera que los servicios sean transparentes para
cualquier usuario.

En Sistemas Distribuidos se utilizan dos tipos de servicios:


Servicio de Archivos.- Es una especificación sobre el tipo de servicios
de archivos que el sistema ofrece a los clientes, establece todas
aquellas directivas sobre donde encontrar un archivo.
Servicio de Directorios.- Es un proceso que se ejecuta en alguna
máquina y ayuda a implantar el servicio de archivos de manera que
podamos establecer ligas entre uno o más grupos de archivos
(directorios). Un sistema puede tener uno o varios servidores de
archivos que son transparentes para los clientes ya que no debe de
conocer su posición.

Diseño de un Sistema de Archivos


Los sistemas de archivos distribuidos están compuestos de dos
elementos importantes, como lo son el servicio de archivos y el de
directorios (mencionados con anterioridad). Decíamos que el primero
se encarga de las operaciones, en los archivos individuales, como la
escritura, lectura y adición, mientras que el segundo se encarga de
crear y administrar directorios, además de añadir y eliminar archivos
en los directorios.

Interface De Un Servicio De Archivos


La Interface de un Servicio de Archivos proporciona toda la
información necesaria sobre cada archivo individual como pueden ser
sus atributos.
La función más importante de un servicio de archivos corresponde a
su mantenimiento, ya que este servicio se encarga de todas las
operaciones disponibles de lectura y escritura como pueden ser
create, read, write, delete.

Los usuarios de archivos se pueden dividir en dos tipos:

Modelo de Carga y Descarga.- Éste sólo proporciona dos


operaciones principales que son la lectura y escritura del archivo. La
operación consiste en transferir todo un archivo hacia el cliente y
todos los movimientos de operación sobre el archivo, lo realiza el
cliente, cuando ha dejado de utilizar el archivo, éste se es regresado
hacia el servidor en forma completa. ( con todos los cambios
realizados actualmente).

Modelo de acceso remoto.- Este tipo de servicios proporciona un


gran número de operaciones para abrir y cerrar archivos leer y
escribir partes de archivos, moverse a través de un archivo, así como
examinar y modificar los atributos de uno o varios archivos.
Publicado por Sistemas Distribuidos en 19:30 0 comentarios

http://sistemas-distribuidos-unerg.blogspot.com/2008_10_01_archive.html

CAPÍTULO VI
Aplicaciones
distribuidas en
ambientes GUI
SISTEMAS DE ARCHIVOS DISTRIBUIDOS.

El servidor de archivos es uno de los servidores más


importantes en un sistema distribuido. Soporta el
procesamiento realizado por diversas computadoras,
facilitando la compartición de archivos y base de datos y
provee una base para la construcción de otros tipos de
servidores requeridos por los usuarios tales como
servidores de impresión o servidores de nombres.

Los servidores de archivos proveen también servicios


como:

Respaldo automático y recuperación. El respaldo


se realiza como una medida preventiva de las fallas de los
medios de almacenamiento y errores de usuarios. Los
procedimientos de recuperación requieren de una atención
especial la cual no se le puede confiar al usuario.

Movilidad del usuario. El servicio de archivos hace


posible el uso de diferentes computadoras en diferentes
tiempos.

Transferencia de archivos explícito. Provee los


servicios más básicos; el cliente debe invocar a una utilería
de transferencia de archivos, para transferir archivos
remotos antes y después de usarlos. En algunos casos
utilizan mecanismos de control de acceso y autentificación
para protección. Se utilizan protocolos de transferencia de
archivos basados en conexión como: FTP. La unidad de
acceso es: archivo y el cliente debe conocer la ubicación del
archivo.

Sistema de archivos distribuidos. En éste método


la localización es transparente para el cliente, quien hace
referencia al archivo por su nombre solamente. El sistema
localiza al servidor que aloja al archivo en cuestión, sus
operaciones están orientadas a la seguridad, los accesos a
los archivos se sincronizan. Por razones de rendimiento
algunos datos e información de directorios se alojan en
memoria intermedia (caché), y por razones de confiabilidad
algunos archivos pueden ser replicados.

Aspectos de la implementación de servidores de archivos

El rendimiento de un sistema distribuido depende de la


eficiencia del servidor de archivos, cuya implementación
juega un papel muy importante.

La técnica más eficiente para construir servidores de


archivos es dividirlo en varias partes, cada una de las
cuales es implementada de manera separada como un
proceso medio (comparten datos globales, pero tienen
contadores de programas y pila separado). El problema
aquí es determinar las fronteras de las partes. Se discute
más adelante.

Servicios básicos que provee el sistema de archivos

Para poder manejar y controlar los archivos, se


requieren de métodos que se apliquen a nivel del sistema.
En particular se deben aplicar las siguientes funciones:
servicios de bloque (disco), servicios de archivos y servicios
de directorio.

Arquitectura de un sistema de archivos centralizado

En un sistema operativo centralizado, los servicios de


bloque (disco), servicios de archivo y servicio de directorio
lo realizan los siguientes módulos:
Figura 6.1. Sistemas de archivos distribuidos.

Módulo de dispositivo. Ejecuta I/O de disco y bufereo.


Módulo de Bloque. Ejecuta acceso y asignación de
bloques de disco.
Módulo de archivo. Su tarea es la de ver los
identificadores de archivos (ID´s).
Módulo de acceso a archivo. El cual lee y escribe datos
de archivo o atributos.
Módulo de control de acceso. Verifica que las
operaciones solicitadas sean adecuadas.
Módulo de directorio. Provee lo necesario para mapear
nombres de archivos y referencias a archivos, esto
es, ID de archivos.

Arquitectura de un sistema de archivos distribuidos

Un sistema de archivos distribuidos debe proveer, en


general, los mismos servicios que un sistema de archivos
centralizado, esto es, servicios de bloques, servicios de
archivos y servicios de disco. Sin embargo, por razones de
rendimiento, confiabilidad y distribución, hay algunos
elementos adicionales a considerar: replicación y
actualización de múltiples copias, transacciones y control
de acciones atómicas, nombramiento de objetos
distribuidos, y la localización y colocación de archivos en el
sistema de archivos distribuidos.
Ahora el problema es la manera en que todos estos
elementos deben verse en el sistema distribuido, diferentes
investigadores (Braban, Schlenk, Brown, Lench, Levine,
Mullender, Tanenbaum, Fridrich, Older, Sandberg, Giffor y
Satyanarayan) han desarrollado modelos de arquitecturas,
en los que sobresalen los siguientes elementos comunes.

Figura 6.2. Modelo de arquitectura de sistemas de


archivos distribuidos.

Módulo de dispositivo. Ejecuta I/O de disco y bufereo.


Módulo de Bloque. Ejecuta acceso y asignación de
bloques de disco.
Módulo de caché. Su tarea es la de respaldar los
resultados de operaciones de disco y remotas.
Módulo de archivo. Su tarea es la de ver los
identificadores de archivos (ID´s).
Módulo de acceso a archivo. El cual lee y escribe datos
de archivo o atributos.
Módulo de acceso a atributos. Lee y escribe atributos
de archivo.
Módulo de operaciones de transacciones. Provee los
mecanismos para agrupar las operaciones en una
transacción y ejecutarlos de manera atómica.
Módulo de recuperación. Provee mecanismos de
recuperación en presencia de fallas.
Módulo de control de concurrencia. Provee los
mecanismo para mantener la consistencia de
objetos y que cada acción atómica se lleve a cabo
en un tiempo finito.
Módulo de consistencia de datos y actualización de
múltiples copias. Provee mecanismos para la
compartición de archivos y para la actualización de
múltiples copias.
Módulo de directorio. Provee lo necesario para mapear
nombres de archivos y referencias a archivos, esto
es, ID de archivos.
Módulo de control de acceso. Verifica que las
operaciones solicitadas sean adecuadas.
Módulo de colocación. Selecciona al servidor para que
aloje a un nuevo archivo.
Módulo de localización. Localiza al servidor donde se
encuentra alojado el archivo.
Módulo de relocalización. Provee de métodos para
relocalizar archivos.

Servicios de disco

El servicio de disco provee una vista lógica del sistema


de alojamiento. Al servicio de disco le concierne la lectura y
escritura de bloques de disco sin importar como se
encuentran organizados, también es responsable del
mantenimiento de bloques de frecuente uso en un buffer de
memoria.

Alojamiento de archivos

Un archivo puede ser considerado como una secuencia


de datos sin estructura. Para éste caso de estudio, un
archivo es modelado como una secuencia de datos
modificables de algún tamaño. Cuando un archivo se crea,
se le debe asignar espacio. Éste espacio se recupera
cuando un archivo se borra o se trunca. El tamaño del
archivo se modifica cuando se ejecutan operaciones sobre
él. De ésta manera, se requiere de una asignación dinámica
del alojamiento.
Además de los datos, los archivos tienen otros
atributos que lo describen. Cada atributo tiene un nombre,
un tipo y un valor. Algunos atributos se inicializan cuando el
archivo se crea y no cambian. Otros pueden ser
modificados por el usuario. Un tercer grupo de atributos es
manejado por el servidor.
Algunos atributos de los archivos son:
Nombre del archivo.
Operaciones permitidas.
Control de acceso a datos.
Fecha y hora de creación.
Fecha y hora de última modificación.
Llave de encriptado.

Los archivos se alojan en bloques direccionables de


tamaño fijo, típicamente de dos a ocho kbytes. Esto explica
la existencia de un módulo de manejo de bloques, el cuál es
responsable de la asignación, lectura y escritura de
bloques.
El uso de servicios de bloque ofrece algunas ventajas
en la implementación de archivos compartidos.
Servicios de archivos con especificaciones diferentes
pueden coexistir y compartir el mismo dispositivo de
alojamiento.
Se pueden utilizar una gran variedad de disco y otros
medios de almacenamiento.
La implementación del servicio de archivo puede ser
separado de las optimizaciones específicas de disco u otro
hardware.
Con la técnica basada en bloque, un archivo se puede
almacenar en un conjunto de bloques no contiguos. Esto
implica la necesidad de grabar una secuencia de
apuntadores a bloques por cada archivo. Esta secuencia de
apuntadores se almacena en estructuras de datos llamadas
índices de archivos, mismos que deben organizarse de tal
manera que permita el acceso a archivo secuencial y
directo.
Los servicios de bloque que generalmente se
implementan son: asignación, liberación, lectura y escritura
de bloques, cada uno de ellos está protegido, lo que
significa que si un bloque es asignado a un usuario, otro
usuario no lo puede acceder sin permiso.

Funciones del servicio de disco

Allocate_block( ). Asigna un nuevo bloque y devuelve un


apuntador.
Free_block( ). Libera un bloque.
Get_block( ). Lee un bloque dado una dirección del disco,
lo aloja en un buffer libre de la caché pasa
una copia al proceso de usuario. Si un
bloque se encuentra en la caché el acceso a
disco no se realiza.
Put_block( ). Los datos alojados en la caché se copian en
un bloque dado de disco.
Flush_block( ).Se remueve un bloque de la caché.

Sistema de caché

El rendimiento de cualquier sistema que soporte


memoria externa se ve afectado por operaciones de acceso
a disco y operaciones remotas, las cuales consumen mucho
tiempo; es necesario buscar la manera de disminuir tal
efecto. Se desarrolla entonces un sistema de software que
disminuya el costo de acceso a archivos el cual almacene
en memoria local los bloques de más reciente uso y re-
usarlos siempre que contengan información válida. Al
sistema anterior se le llama sistema de caché.

La caché es un área de memoria principal que se


encuentra organizada como un arreglo de bloques, el
tamaño de un bloque en caché es el mismo que el tamaño
de un bloque en disco. Cada bloque de caché tiene
asociado un apuntador. Éste apuntador se verifica en cada
operación de lectura. Si un apuntador de caché está
presente, se lee el bloque de caché. En otro caso, el caché
se carga con el contenido del bloque del disco y el
apuntador asociado se actualiza. Con esto, las lecturas
subsecuentes que requieren el mismo bloque, lo toman de
la caché.

El buffer de caché puede mantenerse en la memoria


del servidor de archivos o en la memoria de la computadora
cliente. Cuando la caché es demasiado grande, es difícil
mantener la confiabilidad en caso de fallas del servidor de
archivos. Otro problema es el de mantenimiento de
consistencia entre bloques alojados en más de una
localidad. Se dice que la caché es consistente si contiene
una copia exacta de datos. Al problema de mantener una
copia de caché local actualizado cuando se realizan
cambios en localidades remotas se le llama “consistencia
de caché”.

Servicios de archivo
El servicio de archivos provee al cliente el concepto de
archivo, el cual es una secuencia lineal de elementos de
datos (registros). Los elementos de datos pueden ser
definidos por el usuario o por el sistema. Las posibles
operaciones son lectura y escritura de registros, iniciando
desde algún lugar particular del archivo. No le concierne al
usuario donde y/o como se almacenan los datos en el
archivo y si existen relaciones entre los archivos.
El servicio de archivos distribuidos permite al usuario
acceder archivos sin que tenga que copiarlos a una
estación de trabajo local. Más aún, si se utiliza una estación
de trabajo sin disco, el servicio de archivos provee
almacenamiento de datos permanente.

Archivos mutables e inmutables


En el servidor de archivos se alojan dos tipos de
archivos: Se dice que un archivo es mutable, si hay sólo una
secuencia de almacenamiento la cual se altera en cada
operación de actualización (Ejemplo: XDFS, CFS).
Un archivo inmutable, es uno que no puede ser
modificado una vez que ha sido creado, sólo se puede
borrar. La segunda propiedad importante de los archivos
inmutables es que su nombre no puede ser reutilizado. Esto
implica que el nombre de un archivo inmutable indica el
contenido fijo de el archivo, no el archivo como un
contenedor para información variable. Los archivos
inmutables pueden ser fácilmente compartidos, además de
que es relativamente fácil la implementación de un sistema
de archivos distribuidos.
Los archivos inmutables crean dos problemas
importantes: El uso del espacio de disco se incrementa, de
igual forma la asignación de disco. Cedar File System (CFS).

Operaciones sobre datos del servicio de archivos

Un archivo contiene datos, y tiene atributos. Esto


implica que hay dos conjuntos de operaciones, uno que
tiene que ver con los datos y otro con los atributos. Las
operaciones disponibles para el usuario son aquellas que le
permitirán manipular el contenido de los archivos.
Lista de operaciones sobre datos. Crear, abrir, copiar,
leer, escribir, cerrar, borrar.

Operaciones sobre atributos del servicio de archivos

El servicio de archivos mantiene un conjunto de


atributos para cada archivo, tales como fecha de creación,
tipo, fecha de último acceso, fecha de última modificación,
lista de acceso, etc. Éstos atributos se alojan y recuperan
como una secuencia de bytes.
Lista de operaciones sobre atributos: Leer_atributos y
escribir_atributos.

Propiedades operacionales del sistema de archivos


Hay dos propiedades importantes sobre las
operaciones que se realizan sobre los archivos abiertos, los
cuales son importantes en la construcción de sistemas
distribuidos: la idempotencia y servidor sin estado.

Idempotencia. Se dice que una operación es


idempotente si su efecto cuando se ejecuta más de una vez
es la misma que si se ejecutara una sola vez.

Servidor sin estado. Los servidores no mantienen la


información de los clientes, es decir, cuando un cliente
envía una solicitud a un servidor, éste la lleva a cabo, envía
la respuesta y elimina de sus tablas internas toda la
información relativa a dicha solicitud. Ejemplo de
información de estado es el apuntador de lectura-escritura,
cuando un servidor con estado falla esta información se
pierde y ya no existe cuando el servidor se recupera, esto
provoca problemas con las solicitudes subsecuentes del
cliente.

En resumen un servidor sin estado satisface la


recuperación a caídas del servidor ya que la información de
estado es mantenida por el cliente. Si el cliente falla no es
necesaria ninguna recuperación, ni por parte del servidor ni
por el cliente.

Por otro lado, si se mantiene el estado por el servidor,


la recuperación es difícil, ya que tanto el cliente como el
servidor deben detectar de manera confiable la falla: el
cliente debe detectar la falla del servidor para recuperar el
estado del servidor y el servidor debe detectar la falla del
cliente para eliminar cualquier estado correspondiente a
ese cliente.

Nombramiento/servicio de directorio

Conceptos:

Servicio de nombres: le permite al usuario poner


nombres a los objetos, es decir, le brinda las facilidades de
asignar secuencias de caracteres a los objetos.

Transparencia de localización: el sistema que


proporcione transparencia de localización, brinda la
facilidad a los usuarios de localizar sus objetos con solo
proporcionar el nombre del mismo.

Nombre: es una cadena de símbolos (bits o


caracteres) que identifican un objeto. Los nombres se
mapean en direcciones.

Nombres

El sistema debe proporcionar facilidades para el


manejo de nombres de usuario y el mapeo correspondiente
a nombres del sistema los cuales son más manejables a
nivel de máquina. Esto permite que las referencias a
archivos se den en secuencias de texto. Es muy importante
la separación lógica entre las políticas de almacenamiento y
las reglas de mapeo para tener bien claro lo que representa
el nombre.

Recordando que los nombres del sistema deben ser


únicos en un sistema distribuido. Los nombres de usuario
deben ser uniformes tal que el nombre de un archivo no
cambie de una máquina a otra. Sin embargo, a cada
usuario se le debe permitir nombrar sus archivos
personales sin que tenga conocimiento de los nombres
utilizados por otros usuarios. Esto puede conducir a que
nombres de usuario diferentes se pueden asignar al mismo
archivo o nombres de usuario iguales se puedan asignar a
archivos diferentes. El servicio de nombres debe ser
desarrollado de tal manera que habilite estos
requerimientos contradictorios y que sean cumplidos. La
respuesta es un espacio de nombres de árbol jerárquico.

Generalmente los archivos son de quién los crea. El


sistema de archivos debe proveer un servicio de protección
para frenar accesos no autorizados a los archivos. Sin
embargo muchos archivos son compartidos. Esto implica
que el sistema de protección debe permitir la compartición
a diferentes niveles de usuarios (por ejemplo: propios,
grupos, otros).
En un sistema distribuido puede haber más de un
servidor de archivos. Sin embargo, un cliente no necesita
saberlo. Los servidores se encuentran geográficamente
distribuidos, los archivos pueden estar alojados en
cualesquiera de ellos. Esto nos lleva a que los servidores de
archivos colaboran para proveer un servicio de archivos
integrado transparente a la localización, distribución y
replicado de archivos.

Servicio de directorio

Al servicio de directorio le concierne el nombramiento


y protección de archivos. Éste servicio típicamente provee
objetos llamados directorios, que mapea nombres de
archivos ASCII en identificadores de archivos (UFIDs)
usados por el servicio de archivos. Un directorio es en su
mayor parte un archivo y un conjunto de funciones el cual
lo distinguen de un archivo de datos ordinario, permitiendo
que éste archivo sea visto como un archivo de registros de
tamaño fijo, cada registro corresponde a una entrada en el
directorio. El servicio de directorio es un cliente del servicio
de archivos, sus mapeos son almacenados por el servicio
de archivos. Así cada directorio tiene su UFID. El servicio de
directorio protege a los archivos, utilizando una lista de
acceso para cada archivo y asegura que un UFID no sea
asignado a un cliente erróneo. El servicio de directorio se
encuentra separado del servicio de archivos una variedad
de servicios de directorios pueden ser desarrolladas y
utilizadas por el servicio de archivos simple.

La división de responsabilidades entre el servicio de


archivos y el servicio de directorio es en base al uso de
UFID para acceder al contenido de los archivos. Así, cuando
un archivo se crea por un cliente solicitante, el servicio de
archivo le asigna un nuevo UFID. Entonces, éste cliente
puede solicitar al servicio de directorio que grave el UFID y
el nombre (de usuario) en texto. Como resultado, el cliente
puede solicitar acceso al archivo proporcionando el nombre
de usuario al servicio de directorio.

Comúnmente se utiliza un espacio de nombre en árbol


jerárquico en los sistemas centralizados. (Ejemplo: UNIX).
Esto garantiza nombres únicos y una resolución de nombres
eficiente.

http://www.itistmo.edu.mx/Pag%20Informatica/APUNTES_archivos/page0007.htm

También podría gustarte