Criptografía - Principios Básicos (2024)

\n

{null==t||t.postMessage(`${c}${n}`,"null"===window.origin?"*":window.origin)}))}function v({once:t=!1,target:e=document}={}){const i=function(t=document){if(t[d])return t[d];let e=!0;const i=()=>{e=!1,delete t[d]};Object.defineProperty(t,d,{configurable:!0,value:i});let n=[],s=!1;(async()=>{try{n=await h()}finally{s=!0}})();const o=()=>{for(const e of n)e({target:t});s&&0===n.length||e&&window.requestAnimationFrame(o)};return o(),i}(e);return t?(i(),()=>{}):i}p=1,m=void 0;const b=Symbol(),w=(e=document)=>{if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");if(((e=document)=>{const i=window[a];i||customElements.define("marp-auto-scaling",s);for(const n of Object.keys(t)){const s=`marp-${n}`,a=t[n].proto();null!=r||(r=!!document.createElement("div",{is:"marp-auto-scaling"}).outerHTML.startsWith("

{t.outerHTML=t.outerHTML.replace(new RegExp(`^<${n}`,"i"),`<${s}`).replace(new RegExp(`${n}>$`,"i"),`${s}>`)})))}window[a]=!0})(e),e[b])return e[b];const i=v({target:e}),n=()=>{i(),delete e[b]},l=Object.assign(n,{cleanup:n,update:()=>w(e)});return Object.defineProperty(e,b,{configurable:!0,value:l}),l},y=document.currentScript;w(y?y.getRootNode():document)}();

Tradicionalmente hemos entendido la criptogafía como las técnicas para mantener un mensaje confidencial y que solo pueda leerlo la persona para la que está destinado.Pero hay mucho más detrás: ¿cómo nos aseguramos que realmente solo el receptor puede leer un mensaje? ¿Es posible demostrar matemáticamente que solo el receptor puede leerlo? ¿ Y cómo se asegura el receptor que el emisor es realmente quien dice ser?

Solo el primer punto trata de mantener un mensaje secreto. Además vamos a querer saber con quién estamos hablando, entre otros servicios.¡Si estamos hablando con un malo, da igual que el mensaje esté perfectamente cifrado!

¿Contra quién queremos proteger la información?- Una persona que quiere consumir un servicio sin pagar- Una persona que quiere invadir nuestra privacidad- Un competidor que quiere acceso a nuestros documentos secretos- Una grupo financiado por un estado nación

Fondo: https://pixabay.com/photos/binding-contract-contract-secure-948442/ Uso comercial libre

El objetivo más evidente de un sistema criptográfico es alcanzar confidencialidad: no queremos que nadie pueda leer nuestras comunicaciones aparte de la persona a la que están destinadasPero un sistema que solo ofrezca confidencialidad no es seguro casi nunca. Por ejemplo, si estamos hablando con un adversario en vez de nuestro banco, da igual que nadie más pueda leer nuestras comunicaciones. Tenemos que estar seguros de que al otro lado está realmente el banco: autenticidadEn ocasiones, un adversario puede modificar un mensaje a pesar de que no sepa qué es lo que hay en él. O puede que lo realmente importante para un banco es asegurar que uno de sus clientes ordenó una trasferencia desde sus cuentas y no hacia sus cuentas.Los objetivos de un sistema criptográfico son los servicios de seguridad que ofreceEl NIST es la agencia de estandarización de EEUU, y entre las cosas que estandariza también está la seguridad del gobierno de EEUU. Sus estándares son sencillos de leer e incluyen un glosario que viene muy bien para introducirse en la criptografía.

Nos centraremos en los servicios de confidencialidad, integridad y autenticación. Además, podemos conseguir no-repudio como consecuencia de juntar autenticidad e integridad.También veremos, aunque a más alto nivel, los servicios de acuerdo de claves, PRNG, partición de secretos... porque están relacionados con los primerosOtros servicios como la autorización, aunque sin duda son importantes para que un sistema sea seguro, quedan fuera de este curso por limitación de tiempo.

Aquí tenemos un ejemplo de un protocolo de comunicaciones donde el objetivo no es la confidencialidad.Estos son unos ladrones robando un coche, que se abre cuando la llave está cerca. La persona de la derecha está utilizando una antena enorme para "hacer relay" de la comunicaciones entre la llave (que se supone dentro de la casa, cerca de la pared) y el coche.Aquí el protocolo no tiene que proteger la confidencialidad del mensaje: todos sabemos que la llave envía "ABRETE". Fíjate que el protocolo tampoco está protegido con contraseñas, ni con una firma digital.Lo que se necesita en esta caso es detectar cuándo el atacante está accediendo a los mensajes y ampliando su radio de acción diseñado¿Se te ocurre alguna manera de proteger contra esta situación?

Este es el modelo sobre el que trabajaremos: dos personas "Alice y Bob" comunicándose por un canal inseguro porque puede haber un adversario "Maloy" en medio.Alice y Bob no tienen otra forma de comunicación: no pueden confirmar una operación bancaria enviada por correo electrónico usando una clave enviada al teléfono, por ejemplo. En criptografía asumiremos que no existen estas vías alternativas de comunicación, aunque en la realidad sí existen y los utilizamos en la vida real para mejorar aún más la seguridad del sistema.Imagen: https://www.tutorialspoint.com/cryptography/images/cryptosystem.jpg

Kerckhoffs enunció sus principios en 1883.Los principios 1, 2 y 6 guiarán todo el desarrollo de la criptografía actual1. Confidencialidad computacional (capítulo 3)2. No basarse en seguridad por oscuridad3. Requisito de complejidad (capítulo 4)Pero atención: la criptografía actual- En cuanto a clave, tienen que ser específicamente aleatorias y por tanto no fácilmente memorizables.- Los resultados son binarios, y por tanto no son alfanuméricos en general. Aún así y aunque no sea estrictamente necesario, la criptografía tiene como "costumbre" guardar claves codificadas en Base64, es decir, usando solo caracteres imprimibles. El principio 4 se sigue cumpliento parcialmente, aunque no sea estrictamente necesaria.- El sistema completo suele necesitar de varias personas para operar, y en particular una "tercera parte de confianza"Kerckhoffs definió sus principios para un contexto en que una persona solitariapudiese utilizar el criptosistema fácilmente y escribir el resultado. Ahoratenemos la ayuda de ordenadores y esos principios no son ni necesarios, nirecomendables.Eso nos lleva a que: la seguridad a veces es cuestión de opinión. "Buenasprácticas". "Recomendaciones". Por ejemplo, el NIST solo emite recomendaciones.Pero son recomendaciones muy informadas.

Shanon es un gran matemático del siglo XX, que creó la teoría de la información. Le debemos la teoría detrás de la criptografía, los archivos comprimidos, la codificación digital...Su máxima se contrapone a la "seguridad por oscuridad". Es decir, la seguridad de un sistema secreto solo será segura mientras el sistema sea secreto. ¿Y si deja de serlo? ¿Y si pensamos que es seguro, pero no lo es?El paper enlazado es una estupenda introducción a los conceptos fundamentales de la criptografía y se recomienda mucho su lecturaLa seguridad por oscuridad es pensar que un sistema secreto es más seguro que un sistema conocido. En realidad, es muy difícil mantener un sistema en secreto. Además, la criptografía está llena de "trampas" y razonamientos no evidentes. Es muy difícil que unas pocas personas puedan diseñar un sistema realmente seguro y además mantenerlo en secreto. Eso es lo que se llama "seguridad por oscuridad", y fiar la seguridad a la oscuridad no es buena idea, como nos ha enseñado la experiencia.Un sistema no es inseguro por ser oscuro. Es simplemente oscuro. Basar tu seguridad en la oscuridad lo consideramos una mala idea porque los hackers pueden saber más que tú. No hay ningún error lógico en querer basar tu seguridad en la oscuridad. Simplemente, la experiencia nos dice que no es buena idea, y que los sistemas cuya seguridad se basa en la oscuridad caen antes.PERO que un sistema sea seguro de por sí, utilizando protocolos realmente seguros y buenas prácticas criptográficas, Y ADEMÁS lo ocultamos al mundo, es sin duda una buena idea que no perjudica. Tendrás a los adversarios entretenidos para intentar entender tu sistema, y cuando lo consigan verán que es un indescifrable AES-512.No bases tu seguridad en la oscuridad, pero añadir un poco de oscuridad siempre ayuda.

Si la clave es lo único que tiene que ser secreto, tenemos que protegerla a toda costa.En este curso no estudiaremos cómo proteger las claves, pero tened en cuenta que, al ser la pieza central de la seguridad de un sistema, es necesario que los usuarios de criptografía dispongan de algún modo de gestión segura de claves criptogrtáficasUna contraseña no es lo mismo que una clave criptográfica. Las contraseñas suelen ser mucho más inseguras que una clave (a veces no son aleatorias o están pensadas para que las pueda recordar un humano) A veces las contraseñas serán el primer paso para entrar en un sistema seguro, pero **no son buenas claves criptográficas**En muchas ocasiones un sistema se romperá no por que la criptopgrafía sea débil, sino porque incluye un paso de control con contraseña que es habitualmente la parte más débil de un protocolo.

- **Sin clave**: el emisor usa sólo el mensaje $m$ como argumento de la función criptográfica. Ejemplo: hash.- **Clave simétrica**: misma clave $k$ para cifrar y descifrar un mensaje $m$. Emisor y receptor deben tener la misma clave. Ejemplo: AES, ChaCha...- **Clave asimétrica**: claves diferentes para cifrar (pública) y descifrar (privada) un mensaje $m$. El emisor debe conoce la clave pública del receptor. Ejemplo: RSA

¿Recordáis la máxima de Shanon y los principios de Kerckhoffs? "El adversario conoce el sistema". Es decir: los único que debe ser secreto (a parte del mensaje, claro) es la clave de cifrado/descifrado. Se tiene que asumir que el adversario conoce las funciones e() y d()Aún no estaban preocupados de identificar con quién estaban hablando: "si conoce la clave, será un interlocutor legítimo".Nota: ¿Cifrar o encriptar? En este curso llamaremos a la ciencia "criptogafía" y al acto "cifrado". Encontrarás gente que utiliza "encriptar" como sinónimo de "cifrar". La RAE ha aceptado recientemente el verbo "encriptar", pero la polémica sobre si usar o no ese verbo sigue abierta en nuestro sector.

Estos no son exactamente sistemas de cifrado, pero nos sirven para explicar lo que es la fuerza bruta.¿Cómo abrirías la cerradura de la puerta? ¿Cómo puede un ladrón utilizar una tarjeta de crédito robada? ¿Qué estrategias se usan en cada caso para proteger el sistema?Images: free for commercial use:- https://pixabay.com/photos/money-cards-business-credit-card-256319/- https://pixabay.com/photos/lock-combination-security-safety-1929089/

Este es un ejemplo de cifrado clásico "tipo César aleatorio": cada letra del alfabeto se ha sustituido por otra letra del alfabeto. En este caso, el mapeo entre letras es la clave de cifrado, y en un alfabeto de 27 letras hay 27! posibles mapeos diferentes. Ese es un número enorme para descifrar por fuerza bruta INCLUSO para los PCs actuales. ¿Podemos descifrarlo por otros medios?No recuerdo qué cifré aquí, ni con que clave, pero no parece difícil descubrirlo.- Hay letras solas, que en castellano solo pueden ser a, y, o. También e, u, pero es muy improbable. Cualquier otra letra será aún más improbable. Por eso la criptografía clásica en realidad nunca ha usado espacios: da mucha información al adversario- Haciendo análisis de frecuencias, la h aparece muchas veces: es muy probable que sea a ó e- Los dígrafos hv gh (varias veces...) podrían ser es, el, me, le ó se**La información de contexto nos ayuda a descifrar (espacios, lenguaje...)**. Eso también pasa en una web actual: ¿qué es lo que tiene un mensaje cifrado a un banco inmediatamente después de visitar una tienda?

excepto la longitud... y el momento de enviarlo, ...y el número de mensajesImagen: https://upload.wikimedia.org/wikipedia/commons/0/06/USpatent1310719.fig1.png

Imagen: https://upload.wikimedia.org/wikipedia/commons/f/fc/Byzantine_Generals.png

Un sistema tan sencillo como este se utilizó en la realidad: los espías tenían "libros de claves" de un colo uso que tenían que llevar escondidos.

El teléfono rojo entre Washington y Moscú fue en realidad un teletipo que usaba cifrado de bloque de un solo usoLa clave $k$ se intercambiaba por valija diplomática en cinta perforada que se entregaba en ambos sentidos. Mientras no hacía falta, se guardaba protegida y se destruía después de ser usadaAdemás, el *one-time-pad* permitía trabajar de forma segura sin intercambiar ningún algoritmo secreto que diera ventaja técnica al enemigoPara poder usar un *one-time-pad*, la clave se prepara por adelantado para cuando haga falta enviar algún mensaje inmediatamente.Imagen: https://www.cryptomuseum.com/spy/r353/img/300148/191/full.jpg

- Al final de la segunda guerra mundial, EEUU descifró el *one-time-pad* usado por los diplomáticos alemanes porque utilizaban contraseñas no totalmente aleatorias y podían adivinarse.- 1944: EEUU descifró mensajes de la URSS a Australia... porque utilizaban el mismo *one-time-pad* que la URSS usaba con EEUU.- 1962 (ataque canal lateral): las máquinas usadas para cifrar eran eléctricas y emitían un campo magnético, que Japón podría haber aprovechado para captar qué cifraba la embajada de EEUU: [TEMPEST](https://www.governmentattic.org/18docs/Hist_US_COMSEC_Boak_NSA_1973u.pdf)

As an enthusiast with demonstrable knowledge in cryptography, I'll delve into the concepts used in the provided article, emphasizing the evidence of expertise:

  1. PostMessage Function in JavaScript: The article begins with a JavaScript snippet that uses the postMessage function. This function is commonly used for cross-origin communication between Window objects; however, the exact purpose of this snippet is not entirely clear without the broader context of the application.

  2. Custom Elements in JavaScript: There's a mention of custom elements defined using customElements.define. This is a feature in modern JavaScript for creating reusable components with encapsulated functionality. In the context of the article, it seems related to Marp Core's browser script.

  3. Cryptography and its Purposes: The article discusses traditional views of cryptography, emphasizing the need for more than just confidentiality. It touches on questions like mathematical proof of message secrecy and the assurance of the identity of communication participants.

  4. Security Services in Cryptography: It introduces various security services provided by cryptographic systems, including confidentiality, integrity, authentication, and non-repudiation. The focus is on the protection against different types of adversaries, such as those seeking unauthorized access or privacy invasion.

  5. NIST Standards and Cryptography: The National Institute of Standards and Technology (NIST) is mentioned as a standardization agency for the United States. It establishes standards for the government, including those related to cryptography. The specific focus is on confidentiality, integrity, and authentication.

  6. Communication Protocol Example: The article presents an example of a communication protocol that doesn't prioritize confidentiality. It illustrates a scenario where thieves are using a relay attack to open a car with keyless entry. The emphasis is on detecting and preventing such attacks rather than keeping the message secret.

  7. Security Principles by Kerckhoffs: The principles of Kerckhoffs, stated in 1883, are referenced. These principles guide modern cryptography, emphasizing aspects such as computational confidentiality, avoiding reliance on security through obscurity, and the requirement of complexity.

  8. Shannon's Maxim and Security by Obscurity: Claude Shannon's maxim is introduced, contrasting security by obscurity with the concept that the security of a system should not rely solely on its secrecy. The article advises against depending on the obscurity of a system for security.

  9. Key Management in Cryptography: The importance of key management is briefly mentioned. While not delving into details, it emphasizes the need for secure key management as keys play a central role in cryptographic security.

  10. Difference Between Passwords and Cryptographic Keys: A distinction is made between passwords and cryptographic keys, highlighting that passwords are generally less secure and can be a weak point in a cryptographic system.

  11. Types of Keys in Cryptography: The article briefly mentions three types of keys: no key (e.g., hash functions), symmetric key (same key for encryption and decryption), and asymmetric key (different keys for encryption and decryption).

  12. Classic Encryption Example - Caesar Cipher: An example of classic encryption, the "Cesar aleatorio" (random Caesar), is introduced. It involves substituting each letter in the alphabet with another letter, and the key is the mapping between letters.

  13. Cryptographic Systems in History: Historical cryptographic systems, such as the one-time pad used during World War II, are discussed. The security and vulnerabilities of these systems, including issues with non-random passwords, are mentioned.

  14. Vulnerabilities in One-Time Pad: Vulnerabilities in the one-time pad system are highlighted, including instances where the same key was reused, leading to security breaches.

  15. TEMEPEST Attack in Cryptography: A reference is made to the TEMPEST attack in 1962, involving capturing electromagnetic emissions from electrically powered cryptographic devices. This incident is an example of a side-channel attack.

In conclusion, the article covers a broad range of cryptographic concepts, from fundamental principles and historical examples to modern issues and challenges in ensuring secure communication. The information is presented in a way that invites readers to think critically about cryptographic systems and their potential vulnerabilities.

Criptografía - Principios Básicos (2024)
Top Articles
Latest Posts
Article information

Author: Rueben Jacobs

Last Updated:

Views: 5724

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Rueben Jacobs

Birthday: 1999-03-14

Address: 951 Caterina Walk, Schambergerside, CA 67667-0896

Phone: +6881806848632

Job: Internal Education Planner

Hobby: Candle making, Cabaret, Poi, Gambling, Rock climbing, Wood carving, Computer programming

Introduction: My name is Rueben Jacobs, I am a cooperative, beautiful, kind, comfortable, glamorous, open, magnificent person who loves writing and wants to share my knowledge and understanding with you.