{"id":952,"date":"2026-05-17T16:25:16","date_gmt":"2026-05-17T16:25:16","guid":{"rendered":"https:\/\/hackcuba.net\/?p=952"},"modified":"2026-05-17T16:25:18","modified_gmt":"2026-05-17T16:25:18","slug":"el-legado-de-enigma-de-la-ingenieria-mecanica-al-cifrado-cuantico","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=952","title":{"rendered":"El Legado de Enigma: De la Ingenier\u00eda Mec\u00e1nica al Cifrado Cu\u00e1ntico"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">La historia de la criptograf\u00eda tiene un antes y un despu\u00e9s de la <strong>m\u00e1quina Enigma<\/strong>. Desarrollada originalmente por el ingeniero alem\u00e1n Arthur Scherbius a finales de la Primera Guerra Mundial para uso comercial, fue adoptada y perfeccionada por el ej\u00e9rcito alem\u00e1n, convirti\u00e9ndose en el pilar de sus comunicaciones durante la Segunda Guerra Mundial. Lo que parec\u00eda un sistema inexpugnable termin\u00f3 impulsando, gracias al ingenio de mentes como Alan Turing y Marian Rejewski, el nacimiento de la inform\u00e1tica moderna.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">La Ingenier\u00eda Detr\u00e1s del Laberinto Mec\u00e1nico<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A diferencia de los cifrados cl\u00e1sicos de l\u00e1piz y papel, Enigma automatiz\u00f3 el cifrado utilizando una combinaci\u00f3n de ingenier\u00eda el\u00e9ctrica y mec\u00e1nica de alta precisi\u00f3n. El n\u00facleo de la m\u00e1quina se compon\u00eda de tres elementos principales:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. El Teclado y el Clavijero (<em>Steckerbrett<\/em>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El viaje de una letra comenzaba al presionar una tecla. La corriente pasaba primero por el clavijero frontal, una matriz que permit\u00eda conectar pares de letras mediante cables (por ejemplo, conectar la &#8216;A&#8217; con la &#8216;Z&#8217;). Si la corriente entraba por &#8216;A&#8217;, sal\u00eda por &#8216;Z&#8217; antes de avanzar. Este componente, aparentemente simple, aumentaba exponencialmente las combinaciones posibles de la m\u00e1quina.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Los Rotores (<em>Walzen<\/em>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El coraz\u00f3n del cifrado. Eran discos con 26 contactos el\u00e9ctricos en cada lado, conectados internamente de forma ca\u00f3tica.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando la corriente sal\u00eda del clavijero, atravesaba tres (o cuatro) rotores colocados en serie.<\/li>\n\n\n\n<li>La verdadera genialidad \u2014y complejidad\u2014 radicaba en que <strong>los rotores giraban<\/strong>. Cada vez que se presionaba una tecla, el rotor derecho avanzaba una posici\u00f3n.<\/li>\n\n\n\n<li>Cuando el primer rotor completaba una vuelta (26 letras), una muesca mec\u00e1nica hac\u00eda avanzar una posici\u00f3n al segundo rotor, y as\u00ed sucesivamente. Esto creaba un cifrado polialfab\u00e9tico din\u00e1mico: si presionabas la &#8216;A&#8217; tres veces seguidas, el resultado cambiaba por completo en cada pulsaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. El Reflector (<em>Umkehrwalze<\/em>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Al salir del \u00faltimo rotor, la corriente llegaba al reflector, un disco fijo que emparejaba las letras de dos en dos y enviaba la se\u00f1al de vuelta a trav\u00e9s de los rotores por un camino completamente diferente.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>La gran ventaja:<\/strong> Esto permit\u00eda que la m\u00e1quina fuera rec\u00edproca. Si configurabas la m\u00e1quina exactamente igual que el emisor, al introducir el texto cifrado obten\u00edas el mensaje original. No hac\u00eda falta un modo \u00abdescifrar\u00bb.<\/li>\n\n\n\n<li><strong>El gran fallo:<\/strong> Debido a este dise\u00f1o, <strong>una letra jam\u00e1s pod\u00eda cifrarse como s\u00ed misma<\/strong>. Esta regla fija fue la grieta matem\u00e1tica que Alan Turing y su equipo en Bletchley Park aprovecharon para dise\u00f1ar las m\u00e1quinas <em>Bombe<\/em> y romper el c\u00f3digo.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">El Cifrado Hoy: De Rotores a Bits y Cu\u00e1ntos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El descifrado de Enigma aceler\u00f3 la transici\u00f3n de la criptograf\u00eda mec\u00e1nica a la matem\u00e1tica pura. Hoy en d\u00eda, las computadoras procesan informaci\u00f3n a velocidades impensables, lo que oblig\u00f3 a dise\u00f1ar algoritmos basados en la complejidad computacional.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La Criptograf\u00eda Sim\u00e9trica (AES)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El sucesor conceptual directo de sistemas como Enigma (donde emisor y receptor comparten la misma clave) es el <strong>AES (Advanced Encryption Standard)<\/strong>. En lugar de rotores, utiliza operaciones matem\u00e1ticas de sustituci\u00f3n, permutaci\u00f3n y transformaciones lineales sobre bloques de datos en m\u00faltiples rondas. Un ataque de fuerza bruta contra una clave AES de 256 bits requerir\u00eda m\u00e1s energ\u00eda que la existente en el universo ejecutable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La Criptograf\u00eda Asim\u00e9trica (RSA y Curvas El\u00edpticas)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El gran salto cu\u00e1ntico de la era de Internet fue eliminar la necesidad de compartir una clave secreta previamente. Algoritmos como <strong>RSA<\/strong> se basan en la asimetr\u00eda matem\u00e1tica: es muy f\u00e1cil multiplicar dos n\u00fameros primos grandes, pero extremadamente dif\u00edcil factorizar el resultado. Esto permite tener una <strong>clave p\u00fablica<\/strong> para cifrar y una <strong>clave privada<\/strong> para descifrar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El Futuro: Criptograf\u00eda Post-Cu\u00e1ntica (PQC)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con la llegada de la computaci\u00f3n cu\u00e1ntica, algoritmos como RSA quedar\u00e1n obsoletos debido al algoritmo de Shor, capaz de factorizar n\u00fameros en minutos. Hoy en d\u00eda, la industria se encuentra en plena migraci\u00f3n hacia la <strong>criptograf\u00eda basada en ret\u00edculos<\/strong> (Lattice-based cryptography), dise\u00f1ando problemas matem\u00e1ticos que ni siquiera las computadoras cu\u00e1nticas m\u00e1s potentes del futuro puedan resolver.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Simulador de la M\u00e1quina Enigma en Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para entender c\u00f3mo funcionaba mec\u00e1nicamente, podemos recrear su l\u00f3gica interna. El siguiente c\u00f3digo en Python simula una Enigma con tres rotores y el reflector hist\u00f3rico tipo B.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nclass Rotor:\n    def __init__(self, cableado, muesca):\n        self.cableado = cableado\n        self.muesca = ord(muesca) - ord(&#039;A&#039;)\n        self.posicion = 0\n\n    def set_posicion(self, letra):\n        self.posicion = ord(letra.upper()) - ord(&#039;A&#039;)\n\n    def avanzar(self):\n        self.posicion = (self.posicion + 1) % 26\n        return self.posicion == self.muesca\n\n    def cifrar_ida(self, indice):\n        entrada = (indice + self.posicion) % 26\n        letra_salida = self.cableado&#x5B;entrada]\n        salida = (ord(letra_salida) - ord(&#039;A&#039;) - self.posicion + 26) % 26\n        return salida\n\n    def cifrar_vuelta(self, indice):\n        entrada = (indice + self.posicion) % 26\n        letra_buscada = chr(ord(&#039;A&#039;) + entrada)\n        pos_cableado = self.cableado.index(letra_buscada)\n        salida = (pos_cableado - self.posicion + 26) % 26\n        return salida\n\n\nclass Reflector:\n    def __init__(self, cableado):\n        self.cableado = cableado\n\n    def reflejar(self, indice):\n        letra_salida = self.cableado&#x5B;indice]\n        return ord(letra_salida) - ord(&#039;A&#039;)\n\n\nclass MaquinaEnigma:\n    def __init__(self):\n        # Configuraciones hist\u00f3ricas de la Wehrmacht (Enigma I)\n        self.r_der = Rotor(&quot;BDFHJLCPRTXVZNYEIWGAKMUSQO&quot;, &#039;V&#039;)  # Rotor III\n        self.r_med = Rotor(&quot;AJDKSIRUXBLHWTMCQGZNPYFVOE&quot;, &#039;E&#039;)  # Rotor II\n        self.r_izq = Rotor(&quot;EKMFLGDQVZNTOWYHXUSPAIBRCJ&quot;, &#039;Q&#039;)  # Rotor I\n        self.reflector = Reflector(&quot;YRUHQSLDPXNGOKMIEBFZCWVJAT&quot;) # Reflector B\n\n    def configurar(self, pos_izq, pos_med, pos_der):\n        self.r_izq.set_posicion(pos_izq)\n        self.r_med.set_posicion(pos_med)\n        self.r_der.set_posicion(pos_der)\n\n    def procesar_letra(self, letra):\n        if not letra.isalpha():\n            return letra\n\n        letra = letra.upper()\n        indice = ord(letra) - ord(&#039;A&#039;)\n\n        # 1. Rotaci\u00f3n mec\u00e1nica (simulaci\u00f3n de doble paso)\n        avance_med = self.r_der.posicion == self.r_der.muesca or self.r_med.posicion == self.r_med.muesca\n        avance_izq = self.r_med.posicion == self.r_med.muesca\n\n        self.r_der.avanzar()\n        if avance_med:\n            self.r_med.avanzar()\n        if avance_izq:\n            self.r_izq.avanzar()\n\n        # 2. Camino de ida\n        indice = self.r_der.cifrar_ida(indice)\n        indice = self.r_med.cifrar_ida(indice)\n        indice = self.r_izq.cifrar_ida(indice)\n\n        # 3. Reflector\n        indice = self.reflector.reflejar(indice)\n\n        # 4. Camino de vuelta\n        indice = self.r_izq.cifrar_vuelta(indice)\n        indice = self.r_med.cifrar_vuelta(indice)\n        indice = self.r_der.cifrar_vuelta(indice)\n\n        return chr(ord(&#039;A&#039;) + indice)\n\n    def procesar_texto(self, texto):\n        resultado = &#x5B;]\n        for letra in texto:\n            if letra.isalpha():\n                resultado.append(self.procesar_letra(letra))\n        return &quot;&quot;.join(resultado)\n\n\n# --- Demostraci\u00f3n de Uso ---\nif __name__ == &quot;__main__&quot;:\n    # Instanciamos dos m\u00e1quinas (Emisor y Receptor)\n    enigma_emisor = MaquinaEnigma()\n    enigma_receptor = MaquinaEnigma()\n\n    # Clave secreta diaria: Posici\u00f3n inicial de los rotores (ej. &#039;T&#039;, &#039;U&#039;, &#039;R&#039;)\n    clave = (&#039;T&#039;, &#039;U&#039;, &#039;R&#039;)\n    \n    enigma_emisor.configurar(*clave)\n    enigma_receptor.configurar(*clave)\n\n    mensaje_original = &quot;CRIPTOGRAFIAAVANZADA&quot;\n    \n    # Cifrado\n    texto_cifrado = enigma_emisor.procesar_texto(mensaje_original)\n    \n    # Descifrado\n    texto_descifrado = enigma_receptor.procesar_texto(texto_cifrado)\n\n    print(&quot;--- SIMULADOR ENIGMA (PYTHON) ---&quot;)\n    print(f&quot;Original:  {mensaje_original}&quot;)\n    print(f&quot;Cifrado:   {texto_cifrado}&quot;)\n    print(f&quot;Descifrado:{texto_descifrado}&quot;)\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Instrucciones del script:<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>El script simula el movimiento de los rotores f\u00edsicos paso a paso.<\/li>\n\n\n\n<li>Al igual que la Enigma real, no existe una funci\u00f3n para \u00abdescifrar\u00bb; la misma funci\u00f3n <code>procesar_texto<\/code> realiza ambas tareas siempre y cuando las m\u00e1quinas compartan la misma configuraci\u00f3n inicial (<code>clave<\/code>).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n en el foro se puede encontrar otro c\u00f3digo que simula la maquina enigma pero en C++<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La historia de la criptograf\u00eda tiene un antes y un despu\u00e9s de la m\u00e1quina Enigma. Desarrollada originalmente por<\/p>\n","protected":false},"author":2,"featured_media":953,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,59],"tags":[5,88,209,268,269],"class_list":["post-952","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ciberseguridad","category-codigos","tag-ciberseguridad","tag-codigos","tag-criptografia","tag-maquina-enigma","tag-python"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=952"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/952\/revisions"}],"predecessor-version":[{"id":954,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/952\/revisions\/954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/953"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}