Desarrollo Orientado a Objetos
Antes de empezar a programar con objetos, es necesario entender ciertos conceptos básicos.
Terminología
El paradigma de Programación Orientada a Objetos utiliza algunos términos básicos que se
explicarán a continuación.
Objeto. Es una entidad que tiene atributos o propiedades y que presenta un
comportamiento. Puede ser un objeto del mundo real, o una abstracción al mundo informático.
Ejemplo, un automóvil, una persona, un animal, etc.
Clase. Los humanos percibimos el mundo como un entorno compuesto de cosas, objetos,
les llamamos. Interactuamos con tantos, que lo natural es agruparlos de acuerdo a sus
características más relevantes o generales. En otras palabras, los clasificamos en clases.
Todos los objetos que pertenecen a una clase, contiene todos los elementos comunes a todos
los objeto y no particulariza en los elementos que distinguen a los objetos entre sí; ejemplo, la
clase automóvil, comprende todos los automóviles que circulan en este momento por las
calles. Incluiría elementos que asociamos a los automóviles, como llantas, puertas, asientos,
volante, etcétera, pero no particularizaría en cuestiones como color, número de registro o
características individuales a cada auto.
Propiedad. Una característica asociada a una clase. Ejemplo, todos los autos tienen un
color, o un registro aunque esta propiedad varíe entre objetos.
Método. Posible acción que los objetos de una clase pueden realizar. En términos
informáticos, un algoritmo que pueden ejecutar. Ejemplo: todos los autos pueden acelerar,
frenar, etc.
[editar]Características de la programación orientada a objetos
Encapsulamiento. Cuando conducimos un auto, no es necesario que nos enteremos de
como hace el motor para girar las ruedas del vehículo. Esos pormenores quedan ocultos al
usuario o encapsulados en la estructura del la clase auto. Cada objeto presenta una interfaz al
usuario de métodos y propiedades con las cuales se interactúa con él. Así se protege el objeto
y todos los miembros de su clase, de alteraciones directas a sus métodos y propiedades.
Polimorfismo. Una vez que aprendemos a conducir un auto, podemos manejar
prácticamente cualquier auto. Esto se debe a que la interfaz que presentan los objetos auto a
los usuarios, es más o menos la misma para cada auto. Todos tiene métodos para acelerar, y
si bien, posiblemente los pormenores de como acelera cada auto, sean sustancialmente
diferentes; el usuario hace referencia a un mismo método en todos los autos. En términos
informáticos, objetos de clases diferentes; incluso en la misma clase; pueden tener métodos
homónimos, que hagan cosas equivalentes aunque los detalles del como, sean diferentes.
Herencia. La clase auto es una clase muy general; se puede hacer un desglose más
pormenorizado, por ejemplo, si hacemos subclases de autos deportivos, utilitarios, compactos,
manuales, automáticos, de lujo, etc. Cada subclase toma de su clase base (o superclase, en la
jerga informática) las propiedades y métodos más generales y agrega las propias. Así, como
todos los autos, tienen color y registro, así que éstas estarían contenidas en la superclase
auto. Propiedades como Capacidad en toneladas, sistema estéreo o cantidad de velocidades,
estarían delegadas a las subclases más particulares.
Historia de la criptografía
Hacking y Seguridad - Criptografia
Escrito por SeSoX
Esta visión general de varios algoritmos criptográficos es una historia cronológica de la
criptografía, cuyos orígenes se remontan a la antigüedad y que con el tiempo ha sido objeto de
constante evolución. Tenga en cuenta que este cuadro no es completo.
El primer texto escrito data de hace más de 6000 años. El arte del cifrado ha existido desde hace
cerca de 3000 años.
c. 1900 AC En el antiguo Egipto se usaron símbolos que no eran los normales.
c. 1500 AC Los fenicios diseñaron un alfabeto.
c. 1000 AC Se usaron otros símbolos distintos a los normales en la antigua Mesopotamia.
c. 600 AC En Palestina se cifran textos usando un algoritmo simple de sustitución
monoalfabética Atbash.
c. 500 AC Los espartanos cifran mensajes utilizando Scytale.
c. 400 AC El Kamasutra describe un algoritmo de cifrado por sustitución monoalfabética.
c. 200 AC El historiador griego Polybius describe el cifrado de Polybius por primera vez.
c. 100-44 Julio César inventa un código para cifrar sus mensajes (el Código César). Éste es el
AC algoritmo de sustitución monoalfabética más conocido.
c.500- La "edad oscura de la criptografía" empieza en Europa: Durante este periodo la
1400DC criptografía es considerada como magia negra y se pierde gran parte del
conocimiento que se tenía hasta la época. Por otro lado, la criptografía florece en
Persia.
855 DC Aparece el primer libro sobre criptografía en Arabia. Entre otras cosas, Abu 'Abd
al-Raham al-Khahil ibn Ahmad ibn'Amr ibn Tammam al Farahidi al-Zadi al
Yahamadi (Abu-Yusuf Ya’qub ibn Ishaq al-Kindi, conocido como Al-Kindi)
describe orgulloso en su libro un mensaje griego descifrado que es deseado por el
emperador bizantino. Su criptoanálisis se ha basado en un análisis de frecuencia
ayudado con el conocimiento de una pequeña porción del comienzo del texto
original -- este mismo criptoanálisis es el que se empleará en la Segunda Guerra
Mundial contra Enigma.
1379 El papa Clemente VII ha escapado a Avignion y ha ordenado a su secretario,
Gabrieli di Lavinde (Parma), diseñar un nuevo código para cifrar sus mensajes. Este
código consiste en una combinación de sustituciones de letras individuales y
palabras codificadas. Gabrieli ha creado una lista de las palabras más comunes que
son sustituidas por combinaciones de dos letras y el resto de palabras que no están
en la lista son cifradas utilizando sustitución monoalfabética.
Debido a la sencillez de este código, será utilizado durante los próximos 450 años,
sobre todo en los círculos diplomáticos.
1412 En Arabia se escribe una enciclopedia con 14 tomos en donde se explican conceptos
de criptografía. En ella, además de las técnicas de sustitución y transposición, se
explica un método consistente enrepetidas sustituciones de cada carácter del texto
claro. Es la primera vez en la historia que habla de un método como éste.
Siglo XV En Italia se produce un boom de la criptografía debido un alto desarrollo de la vida
diplomática.
1466 Leon Battista Alberti, uno de las figuras líderes del Renacimiento Italiano, publica
su libro "Modus scribendi in ziferas", en donde habla por primera vez del disco de
Alberti, el primer sistema polialfabético que se conoce. Alberti es el secretario de
un cuerpo oficial perteneciente a la corte papal que se encarga únicamente de
labores relacionadas con la criptografía. Por todo esto, Alberti será conocido como
el "padre de la criptografía".
1518 Se imprime el primer libro sobre criptografía cuyo título es "Polygraphia libri sex",
escrito por el abad Johannes Trithemius en lengua alemana. En este libro también
se describen cifrados polialfabéticos con las nuevas tablas de sustitución
rectangulares.
1563 Giovanni Battista Porta publica "De Furtivis Literarum Notis", un libro en el que
describe distintos métodos de cifrado y criptoanálisis. En él se menciona el primer
cifrado por sustitución digráfica.
Finales del Francia toma la delantera en criptoanálisis.
[Link]
1577 El brillante criptoanalista flamenco Van Marnix cambia el rumbo de la historia
europea al descifrar una carta española en donde se explicaban los planes para
conquistar Inglaterra enviando tropas desde los Países Bajos.
1585 El diplomático francés Blaise de Vigenère publica su libro "Tractié de Chiffre" en
donde presenta el primer sistema polialfabético con autoclave, conocido como "Le
chiffre indéchiffrable" aunque más adelante se le cambiará el nombre por el de el
cifrado de Vigenère.
La idea de la autoclave perdurará en el tiempo y se aplicará en los algoritmos
futuros como el DES en los modos CBC y CFB.
1586 Se intenta llevar a cabo el complot Babington por el cual se asesinaría a la reina
Elisabeth I de Inglaterra y se colocaría en el trono a Mary Stuart, Reina de Escocia.
El "Servicio Secreto Británico" pone fin a esta trama y consigue los nombres de los
conspiradores, condenando a Mary Stuart.
Mary se comunicaba a través de cartas con sus conspiradores. Pero el mensajero,
que era un espía de Elisabeth realizaba copias exactas de cada carta y las enviaba a
Francis Walsingham, secretario del estado de Elisabeth, que a través de
Thomas Phelippes consiguió descifrarlas revelando el complot.
Pero la cosa no quedó ahí, Walsingham quería saber la identidad de los
conspiradores por lo que hizo que Phelippes añadiera una posdata a una carta, de
manera que en la respuesta a la carta, Mary incluyó el nombre de los implicados.
Siglo XVII Comienza la era de las cámaras negras. La mayoría de los gobiernos disponen de
departamentos en donde profesionales se encargan de romper los cifrados a los que
tienen acceso.
1623 Sir Francis Bacon describe un método de esteganografía: cada letra del texto claro
es reemplazada por un grupo de cinco letras formado por una combinación de las
letras 'A' y 'B' que se intercalan en un texto normal con una fuente diferente. Este
método es el precursor del que luego será conocido como codificación birania de 5
bits.
1628 Antoine Rissignol se convierte en el primer criptoanalista contratado a tiempo
completo tras descifrar un mensaje del enemigo gracias al cual se puso fin al sitio
que los hugonotes ejercían sobre Realmont. Desde entonces, el papel del
criptoanalista ha sido fundamental en toda organización militar.
1700 El zar de Rusia utiliza una gran tabla de códigos de 2000-3000 sílabas y palabras
para cifrar sus mensajes.
1795 Thomas Jefferson diseña el primer dispositivo de cifrado cilíndrico, conocido como
la "rueda de Jefferson". Sin embargo, no lo utilizará nunca, por lo que caerá en el
olvido o, más bien, no se llegará a hacer público.
1854 El matemático inglés Charles Babbage inventa un dispositivo de cifrado cilíndrico
similar al de Jefferson. Además, descubre un método de criptoanálisis para romper
el, hasta ahora conocido, "cifrado irrompible" que diseñó Vigenère. Es por ello que
a partir de este momento se conocerá como el cifrado de Vigenère, aunque en
realidad esto no se hará público hasta su muerte ya en el siglo XX.
Siglo XIX La criptología encuentra un lugar en la literatura: Arthur Conan Doyle, Julio Verne,
Edgar Allan Poe...
1854 El físico inglés Charles Wheatstone inventa un cifrado que utiliza una matríz de
5x5 como clave. Su amigo, Lord Lyon Playfair, barón de Saint Andrews lo hace
público en círculos militares y diplomáticos y, por ello, se conocerá como el cifrado
de Playfair.
1863 Friedrich Kasiski (1805-1881), un importante prusiano, desarrolla métodos
estadísticos de criptoanálisis que fueron capaces de romper el cifrado de Vigenère.
1883 Se publica "La Cryptographie militaire" de Auguste Kerckhoff von Nieuwendhoff.
Esto supondrá un hito en la criptografía telegráfica de la época. Contiene el
"principio de Kerckhoff", que exige basar la seguridad de un método de cifrado
únicamente en la privacidad de la clave y no en el algoritmo.
1891 El francés Etienne Bazeries inventa un dispositivo cilíndrico conocido como el
cilindro Bazeries que, en principio, es similar a la rueda de Jefferson. Se publicará
su diseño en el año 1901, después de que el Ejército francés lo rechace.
1917 El descifrado de los telegramas de Zimmermann por el Servicio Secreto Inglés
provocó la crítica entrada de los EEUU en la Primera Guerra Mundial
1917 El americano Gilbert S. Vernam, empleado de AT&T, desarrolla la cinta aleatoria
de un sólo uso, el único sistema criptográfico seguro.
1918 El criptoanalista francés, Lieutenant Georges Painvin rompe el cifrado ADFGVX,
que es el que usaba el ejército alemán desde un poco antes del fin de la Primera
Guerra Mundial. Este algoritmo consistía en un cifrado en dos pasos; primero se
realizaba una sustitución (cada letra era sustituida por un bi-grama a través de una
matriz que hacía de clave) y después, los bi-gramas se dividían en columnas que se
reorganizaban.
1918 Arthur Scherbius y Richard Ritter inventan la primera Enigma. Al mismo tiempo,
la máquina de rotores es inventada y patentada por Alexander Koch (Países Bajos) y
Arvid Damm (Suecia).
1920 William F. Friedman (1891-1969), tras ser galardonado como el padre de la
criptografía estadounidense, diseña (sin relación con Kasiski) métodos estadísticos
para criptoanalizar el cifrado de Vigenère.
1921 El californiano Edward Hebern construye la primera máquina de cifrado basada en
el principio de losrotores
1922 La rueda de Jefferson es redescubierta en los EEUU, cuyo cuerpo de marines la
rediseña y la utiliza durante la Segunda Guerra Mundial.
1923 La máquina de rotores Enigma, diseñada por el alemán Arthur Scherbius, se revela
en el International Post Congress. Además, Scherbius funda la compañía
"Chiffriermaschinen AG" para comercializar Enigma en todo el mundo.
1929 Lester S. Hill publica el artículo "Cryptography in an Algebraic Alphabet".
El cifrado de Hill aplica álgebra (multiplicación de matrices) para cifrar.
1940 Los espías alemanes utilizan micropuntos.
1940 Alan Turing rompe Enigma con la idea de la Bomba de Turing que concibió
basándose en el trabajo de Marian Rejewski.
1941 Se descifran los mensajes con los que se comunicaban los japoneses en donde se
hablaba del inminente ataque a Pearl Harbor. Esto es debido a la labor de un equipo
dirigido por William Frederick Friedman, que rompió la máquina japonesa Purple.
Muchos historiadores creen que el criptoanálisis acortó en una año la Segunda
Guerra Mundial.
1948/1949 Claude Shannon establece la bases matemáticas de la teoría de la información y
publica "Communication Theory of Secrecy Systems", en donde expone un
algoritmo de cifrado teóricamente irrompible que debe satisfacer los requisitos de la
cinta aleatoria de un sólo uso.
1973 David Elliott Bell y Len LaPadula desarrollan el modelo Bell-LaPadula que
formaliza las normas de acceso a la información clasificada, con la intención de
lograr la confidencialidad de los datos.
1973-1975 Ellis, Cocks y Williamson desarrollan un algoritmo de cifrado de clave pública para
el gobierno británico (GCHQ). Este descubrimiento no será conocido públicamente
hasta 1997.
Debido a esto, los métodos de cifrado asimétrico serán nuevamente reconstruidos de
forma independiente y, esta vez sí, públicamente por Diffie, Hellman, Rivest,
Shamir y Adleman, que serán considerados los descubridores de la criptografía de
clave pública.
1975 Diffie y Hellman describen que los procedimientos de clave pública son
teóricamente posibles, a pesar de que se ha intentado demostrar lo contrario.
1976 Whitfield Diffie y Martin Hellman publican "New Directions in Cryptography".
Que introduce un nuevo método de distribución de claves criptográficas, lo que era
hasta la fecha uno de los problemas fundamentales de la criptografía. Este
mecanismo será conocido como el protocolo Diffie-Hellmande intercambio de
claves.
1977 El algoritmo inventado por IBM en 1975, DES (Data Encryption Standard), es
elegido por el NIST (FIPS PUB-46) como el algoritmo de cifrado estándar de los
EEUU.
1977 El algoritmo RSA, llamado así por sus desarrolladores, Ronald Rivest, Adi Shamir
y Leonard Adleman, es publicado. RSA supone el primer procedimiento de clave
pública utilizado en la práctica y ocupa el puesto de ser la contribución criptológica
más innovadora del siglo XX.
1979 Los primeros cajeros automáticos (Automatic Teller Machines) utilizan DES para
cifrar los códigos PIN.
1982 El físico Richard Feynman diseña el modelo teórico de una computadora cuántica.
1984 Charles H. Bennett y Gilles Brassard describen la criptografía cuántica (BB84
protocol).
1985 Goldwasser, Micali y Racoff descubren el procedimiento de conocimiento cero.
1986 De forma independiente, Neal Koblitz y Victor Miller proponen usar curvas
elípticas como modelo de criptografía de clave pública.
1991 Xueija Lai y James Massey desarrollan el algoritmo IDEA en Suiza, que será
usado en el software criptográfico PGP.
1991 DSA es elegido por el NIST como algoritmo estándar de firma digital.
1991 PGP (Pretty Good Privacy) es diseñado por Phil Zimmermann como un software
gratuito y de código libre, con el fin de cifrar e intercambiar archivos con una gran
seguridad. Esta es la primera vez que el cifrado híbrido (combinación de
criptografía simétrica y asimétrica) es aplicada a un programa popular para usuarios
finales. El objetivo principal era el de cifrar los archivos adjuntos del correo
electrónico (que más tarde también fue cubierto por el estándar S/MIME).
1994 Peter Shor concibe un algoritmo para ordenadores cuánticos que permite la
factorización de enteros largos. Este es el primer problema interesante para el que
los ordenadores cuánticos han prometido una importante aceleración, y que, por lo
tanto, genera un gran interés en este tipo de ordenadores.
Agosto 1994 El protocolo de cifrado SSL 1.0 es publicado por Netscape Communications y es
soportado por todos los navegadores web. No obstante, el protocolo de transporte de
SSL (TLS) no se limita a la aplicación de HTTPS.
Octubre S/MIME, un mecanismo estándar para la seguridad del correo electrónico, es
1995 publicado como RFC 1847 y cuenta con el apoyo de todos los clientes de correo
electrónico. S/MIME (Secure/Multipurpose Internet Mail Extensions) describe una
manera consistente para enviar y recibir mensajes de correo electrónico seguros
(firmados y/o cifrados). Se basa en el estándar de Internet MIME. Sin embargo,
S/MIME no sólo se limita al correo.
S/MIME y SSL son los protocolos criptográficos que se utilizan con mayor
frecuencia en Internet.
17 de Julio El ingenio de la EFF conocido como Deep Crack, rompe una clave DES con un
de 1998 ataque de texto claro conocido en 56 horas (Los RSA Laboratories lanzan el desafío
DES II).
19 de Enero Deep Crack y [Link] rompen una clave DES con un ataque basado en texto
de 1999 claro conocido en 22 horas y 15 minutos (Los RSA Laboratories lanzan el desafío
DES III)
Octubre Tras la competición pública que ha durado 5 años, el algoritmo Rijndael es elegido
2000 por el NIST como el sucesor de DES y pasa de denominarse AES (Advanced
Encryption Standard).
Desde el Weil Pairing es utilizada para los nuevos esquemas de compromiso como IBE
2000 (Identity Based Encryption, que resultó ser más interesante desde un punto de vista
teórico que desde un punto de vista práctico).
Agosto 2004 En la conferencia Crypto 2004, los investigadores chinos muestran debilidades
estructurales en común de las funciones de hash (MD5, SHA), lo que las hace
vulnerables a ataques de colisión. Estas funciones de hash todavía se usan en casi
todos los protocolos criptográficos. Los investigadores chinos no publicaron todos
los detalles.
Mayo 2005 Jens Franke y otros factorizan un número RSA-200 de 663 bits de longitud.
Abril 2007 El protocolo WEP de codificación en LAN inalámbrica fue roto por tres
investigadores del TU Darmstadt. Asumiendo suficiente tráfico de datos en la red,
sólo se tarda unos dos minutos en obtener el 95% de todas las claves de codificación
utilizadas.
Agosto 2007 En la conferencia Crypto 2007 se mostró un algoritmo para romper el sistema
inmovilizador utilizado en millones de coches. Durante la presentación, Eli Biham,
Orr Dunkelman,entre otros, pudieron mostrar un ejemplo donde una
correspondiente llave de coche se copió en 48 horas con la potencia de computación
de 50 PCs.
Agosto David Hulton y Joshua Laykey rompieron el algoritmo de codificación A5, de
2007 marca registrada, usado por muchos operadores de GSM. Esto implica que en redes
móviles afectadas, incluso las más cortas llamadas de voz o los mensajes SMS
pueden descifrarse fácilmente por un PC normal, mostrando así que "seguridad por
oscuridad" no es un buen enfoque.
Diciembre Se descifró el algoritmo de autenticación de las tarjetas de chip Mifare, el cual se
2007 usa en miles de aplicaciones por un billon de tarjetas expedidas. Sin embargo, la
última generación (Mifare DESFire), que utiliza DES/3-DES, no se ve afectada.