Por LlamameX
Dada la estrepitosa (y previsible) caida de Fractal1, os presento a Koch (o Fractal2). Un algoritmo que espero sea bastante más terrible que el anterior y que creo mucho más elegante...
Cifrado Koch (fractal)
En la primera versión del cifrado fractal (Fractal1) se intentó centrar su fortaleza en la variabilidad de las diferentes Ki, que se obtendrían recursivamente (aunque la implementación fue lineal). Sin ellas quedaría en una simple codificación por sustitución y atacable por análisis estadístico. El caracter recursivo de su generación, sin embargo, exigía que la misma fuera una función caótica, es decir, que pequeñas variaciones de las condiciones iniciales (la K1) implicaran fuertes variaciones del resultado final.
Este objetivo, sin embargo, quedaba lejos de alcanzarse con Fractal1. La generación a partir de las Bi creaba un doble cifrado que acababa aislando la K0 y convergía independizando el resultado de la clave inicial, con lo que el único parámetro relevante era la longitud de la misma. Dicho parámetro era fácilmente obtenible por análisis de las frecuencias.
Para resolver esta situación podría mejorarse la generación de las claves mediante el uso de funciones caóticas pero entonces se estaría trasladando la fortaleza del cifrado a dicha función en lugar de a la recursividad, que era el propósito inicial del proyecto.
Para conseguir un cifrado seguro que no dependa de un algoritmo fuerte de generación de claves se opta por sustituir la función recursiva. Por simplicidad y eficacia de cálculo se elige una función sencilla, la que genera la fractal conocida como la curva de Koch (o copo de nieve de Sierpinsky). La función recursiva sería:
trazar(N) {
girar (0); trazar(N-1);
girar (alfa); trazar (N-1);
girar (-2*alfa); trazar (N-1);
girar (alfa); trazar (N-1);
}
A efectos de codificación la función de giro se implementa como rotación de la Ki siendo esta rotación la única modificación de dicha clave. Así, un giro de n grados positivos se implementa como el desplazamiento de n posiciones a la izquierda. Se establece también la longitud de clave como la unidad mínima de trazado. De esta manera descenderemos por la recursión hasta dicha unidad mínima que se trazará (codificará) con la clave girada (rotada) correspondiente a esa posición de la curva.
En este punto queda claro que debe dotarse al criptosistema de alguna fortaleza añadida, puesto que de codificarse simplemente así bastaría con "desdoblar" la curva para obtener un cifrado de sustitución simple y atacable estadísticamente.
Para obtener fortaleza incluimos los siguientes mecanismos:
- Profundidad variable: A partir de una profundidad mínima (p) en la curva que pueda contener toda el texto plano de longitud LT (es decir LT<=LC*4^P) prefijamos a que profundidad se trabajará. Para ello sumamos a P el índice de la última letra de la clave, es decir un valor entre 0 y 37.
- Posición inicial variable: En lugar de empezar a codificar por el primer tramo posible, se empieza a codificar a partir de una posición arbitraria. En este caso se ha usado la suma de los índices de todos los valores de la clave multiplicado por LC. Podemos asumir un factor de incremento de la dificultad de hasta 38*LC^2 derivado de este concepto.
- Ángulo variable: En lugar de girar un ángulo alfa fijo usamos el índice del primer carácter de la clave como ángulo. Esto nos ofrece un factor 38 añadido a la dificultad de ataque
Con estos tres mecanismos obtenemos un número de posibilidades de codificación derivada de la recursividad igual a 38^3*LC^2, que con una LC de 20 dígitos equivale a 2*107 posibilidades, cada una de ellas a analizar estadísticamente. Obviamente no son en absoluto cifras inabordables para un ataque de fuerza bruta, aunque ofrece la seguridad suficiente para ilustrar el concepto.
Si se desea pueden añadirse nuevos mecanismos que dificulten el ataque, como incluir un ángulo beta en el primer giro, un número arbitrario de giros en el trazado o hacer depender los parámetros de los sistemas anteriores de magnitudes con un rango de valores superior. Otras curvas fractales pueden ofrecer también un mayor número de parámetros con los que multiplicar la complejidad del ataque.
Aunque no es parte del objetivo del proyecto, en la implementación se ha mantenido una posible evolución de las Ki tal y como se utilizó en Fractal1. Como mejora al concepto se permite también su generación con una función caótica. Puede constatarse que usar simplemente dicha evolución adolece de las mismas carencias que ya aparecían en el cifrado anterior.
En definitiva en esta prueba de concepto se muestra un cifrado que maximiza la entropía con variaciones máximas de un 0.4% entre las frecuencias de aparición de los caráctares. Todo ello sin emplear técnicas homofónicas, aleatoriedad ni generar inflación en el texto final. En contrapartida requiere cierta potencia de cálculo para textos grandes imposibilitando tanto el cifrado como el descifrado manual.
Texto cifrado con Koch (Ki no evolutiva, p variable, alfa variable e inicio variable):
....:....1....:....2....:....3....:....4 Ñ6H90E0NUQULWÑ4L561ÑKLT75DÑI5A9HT2H5HIHY ÑLWÑ8Ñ5T9AT5_I5EWG3EGEGV56F4Q78QB8FEGHYZ PYSVP2FW6AP5ARAPOAF0FD1GX20HI08G6BB2M2O6 BMGDVX20VD5I8232RM2MFC5B9TBY3LUB9GFN1OD5 LBFBLXB2Z3QQB19TFJL17N5B9G1Z8NP8DNGY8PZK ÑR274KND1KNT8N8PN8Z2_4A58284KN47ABFXBANA Q7YJ0YJ1OANYJ46XDMAWCACPI29IZXÑCI0NAG_W5 ZBABW50EH4WY5WH2WKX_5MH5NHWTWRWRHCERÑ1ZP V4VGLP4TXNG3C9Y4V9G7SV4_RUCPV4VP74_VO4SR GXSK3AI3_OLMK3XYFW_V3YÑRU3IO3UFVWO_F08FY ÑUF3XYUH2MVCTUL2PVXD79DÑ959D5KQ1ÑEPOKQ1I QRWYQTQ6BU8HZFSPZFTÑRPNV5TV5UZUPSZPNHJZL TRZSUV4PSN57NYPSA0YPIKQOYÑUA8EUTMA769YDI YKQOYD0MA2EQU0ATUA2HLXIPÑ0BHLXP590T859C6 TKDCMC9FXHKCT30L89TCP53WHJE0_K_GDWMKPK_2 4MVQ_O7I0SÑSBVKS1VJR59PR7PY088ODN6HUIKOJ XIZK2OMZ7H0U9080N6IULMOX8KM6OIOHJT5_G989 8B4ÑLWÑ241IWL_4Q8F4QDI8QVGEWG0Z3QGE7D3_P 67R3FSFIYSZJ15JXYFPN3D3POAFPJ34FWIF2J3SN G6MD6M9230D0UD1GDHX08L1EL135N31N1H91H9GB 9GB1ZK2D4ÑBZK3G8X2G8FGBKNKN46D8AK1DNDNTF V8ZKGQWC3J_B3JRO27A7FYBUHJA7V3NCO03COAJH 7MA7AMAXPA7ZNS16ÑI2SA_D6LC6TUIPITSIONY96 ZXIX6LC6VZD6PT6_1H81HÑEZ5WM5QAYKX_V5KVRG Z9SO8ZRGJJRKRURARV4WYÑWUFXYF6U3_MUVO3QWA 3ÑYS0ÑRUVU8FIMU3PATFMCFV9ÑD59VT5XÑ2ÑH2_D Ñ2TDNO1W6ÑWB4QEBLPBHEQ1R_1PZVSX7NCN37SZP TRFOJPZORN37SNE0Z8Ñ3SHQRPZORZKRS962U96A0 UAÑAMJ0L0LIGYWL90LC1L9C3P0ÑLXMK9FLDW9WQ2 P4_ZK__DIM_ELMSW8_ZK_W2P0897_8WENWX1WSER P1P63RUJ6MSÑSBVOLB0RFR91R4P863YPIFV7VA7V MRJ7IOLMOX2ZQOOIC6N9UAO0N75I6OI5LUIO8DN8 0NJH6N91ÑWHÑH6LYJTBATI5AIBT89EVZ4EZH4K37 47NF8GQ6NGHJ2Y3SHYVYSI7POAFP43D5A3SHJ2HF WY3SF7P357D5AP30V4I5D08X1QMR2H682R5CMFWU 91WQW9QBLC1ND5L1ED18FG8PN81VYY4BZK5D4AZK 3GP8NI2N8GT1ARK4ÑKSZKSR3FX7NA5757Y3JY13C 1OJYJLTX6PCWWT2XIRN2IC2OX_XM5CVQQJK3M5Z1 H_CWC10H5WK_MN5KQW5T1_YWZER1_HE_VNUYRUPL 4CS9GRSOEOZRV4RTXNJJR4NVEZX4ZGYZGWSVA3QW A3KM3FXY8R3Z3WUÑ0K3IIABM3O3AORUÑFRU8FWYQ RÑ2PVC2WCDTD59ÑDV9V1XQ1LKP1GE1OESSWÑWSQB VWBFSZÑJPQSZGNV5E0PSNV3NTNRFJZMR_FRBPQP5 N3PSN3ÑEOMYÑOYF0GCMSSM4AMA0EAÑOLOEC0YPOG YMA2MA469YMXEÑXBPF9XI98ZCRC9TC5XLXÑBXKPC EHXET1C6L87STCQEW8LJ800_GDQ8_24_8Q_PQ9R0 RFV7VSBK6J6RP1RYJRK6ÑO6UONJ0HO25OK8IZL2O MH6U8690J0UI8OJ848MOM6KJ9_5TE56Ñ5T4LJHWH K1ÑLYT_BHTCJ9__95ÑKLWÑQ7K51CQMQBNFQH4C5Z EVGEIZXZIE4Q78Q68F64E5GWHQKXEVGP034S3P5A _GJVZUFIYSIJ356MÑCMO2DM2T3X0HIT0IUY9N5LB D1D5LEW19UBZZW519D95O5OLÑ1BLGH93U9PLQWT4 BARK34KZÑ2JV868ZVT8FYY5Y2OAJYJS3Q1DU7VFX U7ZÑ1XI9XIHÑSX6PT6BDJC6BDIC2_INSI2CAZCWI T6BD6FT0ZEH8EZE_EHBM5BK5UYB5MSG3VDGZRXVE RWPUGR4FRCGUFUVU40FUXYJOU3AK3AI3IUX0FXYF ORURAK3FUIOKC3DTNDR7TDUTOXQDÑ2_C2RÑKL7XÑ DSRXD0E9UCFC2CH2MVCSÑ8BVWEVWB4KQ1TB_HLKQ 1U84861Q4WEBEQB1MU_1HB_5E0PSN73ZPNORPORZ PTZQJ99USMAU2AM9IF0YÑOYDIMYM597ST9CQTCFÑ TXAÑKLÑVXWL8QTVT3C58EÑFHXQHBQÑK_K_KZ9K_1 K7WH8J8WHJGKET9V6R79R6987V0SV0SM7JKIKU2Z OTIKUIU0CUIKHUJ6COK2Y2OTIJUIUIO9DU0CUFHT XL41ÑLYÑ5H_ÑGT0J9T9_T13QWK3ZEKXEJNRJ8FQ4 QRN2PJW4S42F3S0347DP0H_6SIYSW5J6JSG5BH7F PBH7PGA3DTM9DFDV0R1M111MFOM5CIVM39024FMX M2M3CB5CMKMQH9LTX31W9Q1L3NFKL45L8LHZZW9H U9F3295ND1L81N4GIGT8ZG8ZKTB8RKDÑK_R2R7A2 FXHUQ6ADOJROC_B3J0Y6MIXITP6HCA6XIC61ÑINS IUCXDT6XIP6MXCI1636ZN9A_N5UYB5V_AHE0WRH8 E_H_AKGLGVWUPV42GXVEZVOGV72WKO3VAJPAUVUX F60OFX0OFWKF_MU3JMJA8R0OFXYFSY6DNQL2QCÑH 2BTU2T7DÑ2W9D_G1ETEMU_1RWBO6BTQ44W6RMJZH JMTRCJN9ÑVNE0PE7NORZRGERPQNM3VNCNÑ5NPOZI GYKQOYDOYDM4C6AE4MAP6FS0YDON0G0YU2AM7M9M S6AEÑXIKHI9R9FQLCQTCV5TMMÑBLXKÑI9KMC5CT3 08TC1LCHJEDK8W_DLE72KMW42KZ_0B7VEFKFV0SV ZJ1UJ88J1R768696UIKFK067IYMZ7MOLMI90U0CU IK7AI5UZ2O48MOK5JHBTD5AÑ7BÑLYÑWHÑ12TYÑBA TDJ6_Ñ75ÑL56HK17YTK8CG8Q4ICDI8EKXE3KGVQJ G7Q8F4QIC4Q9Z5ZEJKEGX5KFP67PO3P9H722FS3J P3S353O2B0RCDMNGI0LDFMDV02DE94_LC_3_L4H1 X3H19Y3H981N4575OLG_Q4LBU9XBZB9A4Z_ARF8N 8RTNYZG8682T86AZÑKÑDE4AR8GZ1NBN8WYGRYCYE 2OA3JRAXA7YAMJX7VOCJ47EJRYC3BJA7W1F7MA70 X_2XI2CAXYC6NCMAICPBTHÑWRWH8E_HCHCYVQMBW 5FV4RZRGZ7G491PUKN4VNKRLR7GYZGOSY2ZO4ZGL L4AN4NVUFOY7U8UF6YXOKVORO3O_VTDWXDSRXD1T ODÑ2CJ2ÑHUÑB5QSBIGBEOTHEPBIKQ1_I_51Y8EBA B0OW1GEQ1L_PRBRPSNV5N37SNF0ZONSPZSHQR9Y6 9U0AXMPY0GYMAÑIYÑOYDFKCKKKC02CBHLXCFRBÑL Ñ9CT90LML3C2PVXÑFO9E9EH8_M42_Z48_KBEJ_08 DGKWH47_24_09WZWV8JW0GDPGUE7R4P63R4631KF VKLMRSIFBR59PRLJYYJ6JSVTV0S_7IVLMOLI5OXM KKODN0IUF6H6UL5672LMHJJTBAT89TIB8BHEK9IK 15ZEJKQRNGQ6FEBHNGXGVQ45G4EJ8Q5BQ8CQ9852 J2YSUFS2JIPF79D79363PIJS2FIPYS157PHGSOSM 343V0TX2024FUDB0RCDMÑÑ2O2HD03MF41XV0ACBM ÑCDM0R8QH1H19792ZLD_OLC_NLE_B8NPGQNTGZ8D RE4ÑJRKZKDBJMJ6AX7Y17QB3DYJ3E75SY7DF7B1A ZXU7CB32YAJYJR0DPT6WDPBIMI2SAÑIXNSRN26XT LT6MZLYIO96ZXYXI9XIDYBV4_5CVYXWH01Y1_WR5 W5TQV57S5TQM5WH18HZ1_Y5BURAP4BXNURGYZ7GV 7XV9XA3CA3RP3AK3SÑ37YÑF6_1UQ2DIMC_DÑ2QXT 52BTEDX5DOÑJOVQDTIVTDND9U52ZTUT1LKP1TEIT K1QB9S8TQSB48PZ336ZJMORHVSNUVN0ÑVUPMYOGY DQ_0LYTUA0626AE46Y0QGKQOYGIYM5MTYMA69TUF ÑLXFPÑQHLX6587STC1LC3MEP8WJMES8W24_54PWK _MKN8R7IJSV0SVU9PL3RL3Z3RKF07JVA7JV83ZKJ 7RP6J1R90UJH0IUHK0LI6OTIKUIOP6CJ6UAKCJOF XUKI5O325O_ZT9_TIÑ9CDBÑ2H4HÑJHKHÑBG89AT_ BHT815ÑLMLJ615Ñ6N_5EC47NGQ13Z7ZIGHGXEBH7 P7_POH932SIJS5WSIPFMKMO650CMD603D1HD1MDV 0O6D6DM6RM562GMJ1D10TD03E1G5L45LFO91WQW9 GLB97L5B_LFD9E9KBUGW92WGB19SZNK4ÑBA4KLO8 68098BVQBZNKN46DÑKSZZ8H2GT1GZ8XB3J3G7AN7 YE7BUYA7JQABFOAXY92ION2CYT6VZD6HCAIWH9AY 4W_HECV_W5VBNBW5UA1H_13A5RHCYVHMF535_KBB V9YZOG9SGRN4VPUQUNLAGZOS9GESOÑCZ4FRCGR4K NVNOFE_YFOUV3UK3QWA3AUVORUFUFS_8R0FXA3PO UOT3DOR2TD1TU2W9DVÑMUVQÑT2_C29S8Ñ8Ñ198EB Y1EGAUIKQ1K8V0PU70VSNSRZASENSHZRLÑZO7TPU 7N3PHYSHOJZGRHPMZU0AQ64A2MYEQ0LP0YLQOQLC T3C659XPCHFXFHXFÑPM7KZ_VK89K_98NWHMDLGWE K9KLK2_57Q5KJ8SGKWIMEWSV7431VJ1RMPAV978A S70FVLMOXIOZ8M9IUHK096UCC6AHKHÑ1XLPHÑWBT FJ9T_9HTDTWW1Ñ214Ñ51GDG9H5T0J9T26KEVZ4EG VK_4C8GQ4BFNJKIPG3GXEVGE647I6E747Q7JS5WS UPG2YS67P6S9D38AFS9SIJS5WYSI7P5A6S9AFPRI 3IX1XTXKMGCDMA2B2M676F23BZ9HQ9FBÑ29_LB9O LC_FGY8YGZVP3GAKSZKND_4A4TDYKW1NDKVTKIKN 8ÑK_ZSZNXAY7VXUNAN03AJE7JA7_BIDWC6NTP6MI 92CI12I5Ñ_XW5NB5CQLC_5_1HÑEZR5WH4_ABV5M_ N_5B9Ñ1GWXWH18HRLDXVWGPVP4EZO4SYSGXS9M_F CM3AK3IOF23OR0Ñ301ÑÑADÑ2RLIL2C5DT0TZ97DT 1LQÑ2HLT2TVO6TE279ÑDWXDRK_IBTZ1_QTQTQ6BE WYOS8Q1KTPE1V_Z168BEWBZQBW6ÑJHQMSOJZFSNT 700VS875URHÑNSZJMNCN5P3N9ÑVNSVNAGPOLE0FS A0PM4A2M0AMWUFSC9LXVX9KDL9CQTCL2M59WN8SG KWSENWK9ZK29WM4_PMJ8DLEWEKLE_5Q7W4P4_5QI FVJSVJ78SV59PR8J183RY6U9OI8KIODNO62J5MOX 26O7BAKBP9HT7BX1ÑLWÑH2HP1ATI9AH5GBATWH5Ñ 4LWHJT1C8GQ8CHF8QRZ4EJZ4E1GQ47FP03FG3PH_ SZ5W4YSZJUP8BCDCMÑ2MO21MVD0I23DHXGR056RD 6MKMIV0I2YIGMDTL5EL1EÑ9N1O2H9PLUJ9UW9AF5 N91LE533LWUH19GH913NK2RS46ZNK1YK1NTKDVZ8 6K4NBRNKÑRKC2GYKNT8DVQWYCN7CJ1OEJ3MMUY7M UY7YFZ_2AÑCI12I2PIGMC6LTX6D_CWZEA05Z10WB W5G_CH_M51_CWZEHR1Y8_L_MNQ5T_VX4X4EVOGZ9 GZJ4ANVCGBURASGYZRYZG1ZWUNUP4AN45Ñ8GFSYÑ 0F60OFFKBIAUAU3IAOF2UV3U8F3XM3_MKXAK_FA7 W9DWXDSRXDMLQ2ILUDWLTBVWBEWYOS1VER1_PE1H _DK0N9ÑVN57NSVZRWQRHONRPRNV3NSVT0VE7ZSPN ZLTRZFJ0AY4W2U0U0AMQFAGAMPL0SM4A2MAY4V69 F0EAIGYW0YÑX9U8L_LQLC9CDPB9FEHXJPTC685ET 3XLCEÑXOPÑFMÑLX84L7Q_QZ_9QJJEDGWGW0M8Y59 VP6JRMPRAFJV0SN7JVJ8J7M5P8QU26UKJOCOT69D IOK2ZOX2O48MU0CUNKA0HDUKLÑ2L451YH5T9ATL5 HEÑAS5ZXEGVEIZ33E8CH8Q78QR4S2JFUPIFISJD3 PRS_SRAPRPJW42F3SUFSS_8ADR35SA_0JT4MD0TX 206DF25CGR056U1H19BFHX2B21OL5ELDN1DV8N8Y GINUNF84ÑB4NK_4AR8D2NTFV84KTÑKS4NK2REDÑJ BU7FQ7GFNX3COJ_B3J6YZJA7DUBFQAY723JABZSY C7ETX6UCWYIDPBÑIZX1XIC20XPC6DP6BIWDNZ6ÑS IXICNCIAQWX_W535UY1HFWH0EH1RW4QPVG_JN4KP 94_SO4FVOGRW3TWVO3CAUV380F83FS0O3_FMK3UA 3AK_06YÑ3DUÑ08FZ2CYDNDCQLJDXA052VTV29I_Q 1R_TEGGEVQEBWE8BVWTNJZKMJUJÑSMN4ÑTY7SN07 TRPZXSZLTRZFPN4PC70ZPNUOYAG_DOMOMY46AU0S MPMAUFXÑBXEÑM9BBTCQT1CQT9PXÑJ8SGWUWHGJ_9 K294_24_5GS_8DWL8BHGM4_QÑ5ZWMK7VGFIHLSVS JKPRÑJR13RP6JVGFJR8ASVA7R91VLJRM3L9A0NJ6 8ODNUG8MOTIO62J5MLOLO9DUIDNUX26O7MXMQ5IC 5HTFJ9TÑAIL4JHXITH41YQHF4JEGQMQHQV5WGXEI 6GX6AP7FG7PHOGPVYSK5JSJW6S36AP7_P34DPUSF S7F3MPW8FCRMA2B2MF1D3D10HI01IBD1FN1NL5EL FQLTB9GH9FWÑ58ZÑJZKSRN8Z2BQNYKTVZKZS4EZÑ 4NKNGI2KNT8FG3NANYE2OJ0YAJAH1AY7ZFXXJAÑ_ 6X92CI126LTX6DDZZ6CA0OA1HÑEYEH_5TQAQ5K_5 LWR50WHW91R5A_M_5VBDHM_WVGRCRG_VX_GCRV42 4NVP47SRGV7Z5VWV4AN4JR4CPVWUFXYC06C3Y8CM IMU3O3IO31_YÑÑUFXYFWMKXM1AU3IOUDOTVO2VTÑ DWC2IÑJÑ_Ñ2_CB48T8EBWSQ61ENKPE1HUON7N4PS NVWVTENUSPZLTRZRHNBLGBN8709ÑRZFJPZGRHPSZ U0AU4S9UA2IMYMQSF0LAG60A_AU2AQ64PLIDYGIY MOY65QXL3C1TT8XEÑX_ÑS_HXFXCS3C9515C2ÑFL9 AÑXIHLMQ7W47_KZ_C_ÑE9JEJGWR89VJR7VM3RYPV 0FVKRAKN7BVM5IOMXOYU6YDUKNU0POJDI2OK5U37 2IZICOIJ6UQU8DA24LYKTHÑ2L4097I5C9AI9TLWÑ 241IWLXHTD9GBT7J5A8ZEVVKMZEGVE_ECEGH8FEN QJKEWG3QXGE48Q8C6NCHFNQ15JSWFIPJS1H7DS3P 7F5H5LD10TD201D9CR6DMACBMÑ219Y3H9HZB9LÑC _B92E5L5E9FZLX2WBUBQ9B9BL5OLCN9QGY8P2INY 8PZKS8E8BZ28RQ7DF7NUPNAYJ03AJC3AB0NCAC6W IBINZLXIXI9ÑCI2CACBTZPIBDPXDCIGXIRN2IOÑN H_M5D_CVHAWR_1HWH9581V4VG4NVN4NUVGZ7GEOS W7ZJO313UF3DO_3UFZU6RUFX3UALOT3WKO3R07VU FXYFW_UUQL2QVC_ÑT209W2TD1TVXETC2RLJ2UCRJ 959Z2TDWXDE_G_Q1OKI1GKB0OWBSWEO4ÑEPBE1HU ONK15QEBSQ91VQBRHZÑTSFLTNR0NTPS7N9ÑV0A0G YKQOYQGYW9E76ATUA7UKLHF9LXS9I9PT9CQTCP53 9MKPCKX0HD099CRC56T8L818KWKEWLJ8KNKPK8Q_ K_97K87_7IV7VFGVCIRTRP1RJ6YONEJDNULOHEUZ UIOL2ZLMO0NUKN6U6NJOQ8IOM6K8MXIT89TAÑN5H THLÑQHITHÑTY5H4R47NQ8RQ7K1G35GWKX5ZP67P5 DSNGA3WFUP34F3SIJPO3PR3DS_3PJ34JSL25ZYSD 6BH0B02M25IUD20HI01IDD68GBCMA2B20IT0GD2X 0Z45LFOL2_Ñ21NGHW9BQHTBU91NN1B1N1L2C9KB1 2B9QW1928E84ÑBRNKSV8D2NP8GYN84Y1N7Z03J7E BM1YU7VAXA7NSXI2CZNX1_ILLC6YILYMCSIGIA_X B6CIFTWNDJDCWTPH10HNWR5E_HXBKBFV_L_W5ECZ R_SGÑCZGNJ4QUGKNUP438RY8RUVUFWMKXAK_AT3O IFOY1_8X0FXY3QWA3UF3KM3ÑXDVR6052T72HLT2_ CTCLTBVWBEOEBQ6XBTPBKI_Q1_QE7SNT74V5APMN SHZTHSZNHOVSEZXPTZ75ZKJMZPTZÑTR4SMAU4AQE M2KQAOLYFIFOGS6AS9MÑY0ATAIYD0L_0MYJT85CL 1CUX3LBX9SSÑECHX9C7STCS3LCQTBÑR9SCHFXÑL9 KP402WPQ28EWP_K_L8J8WK4R4J6JR6PLFÑSIVAFJ VGAIZ26OLMOXIO7DA76UQUH08UJU5OUZ675888OD NUE0N0HHWÑ51I4LÑLWTI9C5T9HIBHÑK15Ñ1MTJTH _9HTHBAT_BHE26KEL6K3ZXQN5G8DIE47N4EIZXE1 G45KR8GQBNFQRNGSHMPHF3SIJSO3P9D3_E3PG1D5 M201I3M1CM2MFGB0R8MGHQ92ZBDBMWL491N9_L45 E9FWDHZ2L8W9XLJLE5L490_8X2G81YNBNLZAZK4Ñ K4SK_YVBPGQN8FG8SZK4Ñ86EZK3F7B1AZXU7X132 YAJ1OEJBE7FQGUW1F7AN73CNOJYA7J4ZD6NTMT6D PY_ÑI2SIZÑSAXAXQ5AQM5K_5C1Y0E8E35WHAN4JR KQRURVG84Z9_OVRGZVWXAGR_R4BPO8VRGYZG48EI AJAKVOTIOUFOYFZ_YFW08WDQUDCJ_L2C7D5TDEXY XEXIOBE1QKÑP_16OWRQEBÑWU6KGKABEQ1P_O1T1W 6V8BU86PTFQSPZORZQ7U7SN37SNX0QJIMYÑOÑAE0 T60AMA2M0ATCOÑKÑFMÑLXKTQT9C95M8TCOHD9LXE ÑXDÑY58L8C159C2ELGSGKWH8J8_KLK89QMQ7_N8W KESW_DK8MWKLZQ_PQ_WBEFIN79RFBV59PR79Q6VJ 1VKF0FJVAFJV59PRP78JKJ1U0NU8DNJ68J2OI8Z4 8MOP89G5TJATHB_BÑKTHÑJ1YÑLWQ_4H8FE4RQ_GM QIZEJKEVGQ9I8CH8QIRH3GE
Un favor.
DEDDS22 Marzo 2011 - 10:12am
A ver si un alma caritativa me puede poner un texto cifrado con las mismas características que el original del reto. Es porque se me ha quedado el análisis un poco a medias y una vez conocida la solución ya está viciado. Ocurre lo mismo si el texto y la clave los pongo yo, y por eso es preferible que sean ambos desconocidos desde el principio.
Muchas gracias por adelantado.
Un saludo.
Ahí tienes
LlamameX22 Marzo 2011 - 11:48am
Muchísimas gracias
DEDDS22 Marzo 2011 - 12:35pm
:)
SEÑOR_CEANO
AgustínB22 Marzo 2011 - 8:57am
No es exactamente la clave, tengo que encontrar la pequeña variación, pero no me olvido de terminarlo completamente.
Me falta poner la V y la B, pero ahora no tengo tiempo. A ver si esta tarde al regresar del trabajo.
Un saludo
Agustín
SEÑOR_CEANO, si que era la clave de Fractal 2
AgustínB24 Marzo 2011 - 10:22pm
Me contesto yo mismo.
Parece que igual me dejé sin marcar alguna de las opciones y no me lo descifró correctamente.
He pasado unos días con bastante trabajo y poco tiempo para mirar esto.
Ahora me pongo un poco más y sigo pensando que sí que era la clave la pruebo y funciona. Todo descifrado correctamente.
No sé lo que me pasó el otro día pero los primeros 11 caracteres si que salían correctamente pero después ya se trastocaba todo.
Igual también fue por tocal algo al depurar con firebug el javascript pero bueno ya está todo finalizado.
El ataque
AgustínB20 Marzo 2011 - 10:58pm
Bueno, antes de nada decir que este aspirante a agente de la TIA, que no llega ni a botones Sacarino, y sí más bien a operario de la empresa de Pepe Gotera y Otilio; no ha hecho otra cosa que aprovecharse del trabajo de mi tocayo y de DEDDS que corroboraban que la clave era de 11 caracteres.
Es por eso que si admin quiere repartir los puntos, por mí puede hacerlo.
La verdad es que estaba leyendo el reto pero no me decidí a participar hasta que se dijo lo de los puntos. Además se perdió conectividad con la página de ejemplo y yo la había descargado pero no la había usado. Es que como había dicho, estaba intentando pensar por donde hincarle el diente a ACYNOS, y todavía no tengo ni idea.
Bueno, entonces ya viendo que casi se confirmaba que la clave era de 11 caracteres; yo me puse a jugar a cifrar el texto de ejemplo con distintas claves y descifrarlo variando ligeramente la clave después de haber cifrado.
Estas pruebas las hice sin marcar ninguna de las opciones ni Profundidad variable, ni Ángulo variable, ni tampoco Inicio variable.
Con esto, pude observar que los números al final de la clave parecen perjudiciales ya que si se descifraba con MALETA456 o MALETA789 o incluso 123MALETA producían un descifrado que contenía parte del texto original.
Como las opciones marcadas lo que hacían era desplazar los alfabetos, presupuse que probar con algunas palabras podría generar parte del texto.
Dicho y hecho, ahí me pongo manos a la obra en plan chapucero total.
Después de evaluar algunas otras herramientas de pruebas de páginas web que conozco, me decido por utilizar iMacros.
Con esta herramienta, automatizo la pruebas en local de la página web para probar distintas claves. Se podría haber hecho directamente con javascript, pero por no matarme me pareció más sencilla esta opción.
¿De dónde saco las claves?, pues otra vez aprovechándome de un enlace de mi tocayo que proporcionó un lemario para poder atacar ACYNOS.
Lo paso a una base de datos, y me creo unas consultas para obtener palabras primero de 8 letras (porque presupuse que igual había tres nº). Al fallar con la primera suposición me decido a seguí con 7, luego 11 (tampoco), sigo con 9 y finalmente con 10.
A todos ellos les añadí caracteres para completar los 11, desde _123 a ninguno (la palabras de 11 caracteres). A las de diez le puse sólo _
Por si os interesa, en el lemario hay
Para agilizar las pruebas, descifraba sólo los 44 primeros caracteres del texto cifrado proporcionado.
En cada bucle, recogía el texto descifrado para el análisis posterior.
El primer bloque de 8 caracteres, me lo pateé completo para ver si había algo a simple vista. Para los siguientes ya me centré en buscar los trigramas más comunes del castellano.
QUE - Muy difícil que apareciera en los primeros 44 caracteres.
EN_
ES_
ENT
y finalmente el que dio sus frutos
EST
Cifrando con estas nueve claves
DESENFOQUE_
DESPARRAMO_
DINAMITAZO_
SAGAZMENTE_
SEDENTARIO_
SINAMAYERA_
SOBREFUNDA_
SUPERVIVIR_
VIÑAMARINO_
Se obtenías además de EST, ciertas palabras identificables a simple vista.
Poniendo todas las líneas una a una del texto descifrado, empecé a componer trozos de texto hasta encontrar los que he comentado.
Y aquí está el ataque chapucero!!!
Lo dicho, que si admin me quiere rebajar y/o repartir los puntos por mí no hay ningún problema.
Ningún ataque es chapucero
LlamameX22 Marzo 2011 - 10:37am
si produce resultados. Es sencillamente efectivo.
Bueno, ya que hemos llegado hasta aquí os cuento las cosas que le veía a Koch implementado como lo hice. Como dije algunas facilidades las conocía y las dejé adrede para que el reto fuera asequible, ameno y didáctico.
En primer lugar estaba claro que codificar por segmentos y encima de longitud fija era una debilidad, puesto que permitía diversos ataques. Esto ya lo demostro fractal1. Si se descubría fácilmente Koch quedaba muy expuesto. En cualquier caso esa longitud iba a ser corta ya que si no quedaba muy evidente la frecuencia de deterinados carácteres en los segmentos.
La codificación por sustitución simple también era una fragilidad asumida. Ahí radicaba la fuerza del concepto. Si a pesar de usar una codificación trivial la "fractalización" conseguía añadir complejidada suficiente demostrábamos la potencia del sistema. En la misma línea tenemos la generación del alfabeto por compresión de la clave, que deja muchos carácteres adyacentes y es poco sensible a las repeticiones de letras en la misma (AAAAB genera el mismo alfabeto que ABBBB).
Dentro de lo no previsto (aunque previsible) que detecté posteriormente (vosotros también aunque no lo habeis usado directamente), fue que los ángulos de los segmentos 1 y 4 eran, por definición, exactamente los mismos. Eso hace que la codificación sea la misma en ellos. Aunque la profundidad de la recursividad y el punto de inicio no sean conocidos, es de esperar encontrar este patrón muy repetido a lo largo del texto, aumentando la longitud del texto atacable.
Como dije no esperaba que cayera tan pronto la longitud de clave. Esperaba que tuvierais que usar algo de fuerza con ella, ya que era ahí donde confiaba que Koch fuera más resistente. Sin embargo tenía los pies de barro.
Ya podeis intuir como puede fortalecerse el algoritmo si se le quiere dar un uso más serio. Algunas ya las apuntaba en la presentación y otras ya las podeis suponer por lo comentado antes:
Ahora estoy liado con Acynos y con otras ideas locas de las que algún día tendreis noticias, pero posiblemente habrá un Koch Reloaded en un futuro. Si de mientras alguien se anima ahí teneis el código para enredar.
Gracias
Agustín22 Marzo 2011 - 2:23pm
Gracias por tu amable referencia a ACYNOS
¿Chapucero?
DEDDS21 Marzo 2011 - 1:41pm
Si a lo que has hecho le llamas ataque chapucero, no quiero ni pensar el apelativo que le pondrías al mio ;)
Un saludo.
De chapucero, nada.
Agustín21 Marzo 2011 - 12:28am
Es un ataque como debe ser, con imaginación, combinando todos los conocimientos disponibles, y con algo de fuerza bruta, y con mucha tenacidad e ingenio. Me alegro de haber contribuido, junto con DEDDS, por lo menos a establecer el número de letras de la clave.
Lo que más me gusta de estos Sudokus, como les llaman algunos, es que reina el espíritu de equipo, que cada uno presenta lo que descubre, y no se lo guarda para sí mismo, y que cuando alguien logra el triunfo, todos nos sentimos felices, incluso el desafiante. No he viajado mucho por la Red, pero esto sólo lo he visto en Kriptópolis. Enhorabuena a todos.
Koch -> Game Over
AgustínB20 Marzo 2011 - 8:58pm
Todavía tengo que encontrar la clave pero con los fragmentos ya he podido deducir el texto.
Enigma 72
Hardegen y el resto de capitanes pasaban el día en alta mar a altura de periscopio mirando como los barcos de guerra americanos navegaban a toda máquina durante sus “patrullas muy agresivas”. Al caer la noche, subían a la superfície, se acercaban a la costa y sembraban el caos. Muchas veces no hacía falta ni disparar torpedos, sino que hundían los barcos solitarios con el cañón de cubierta.
etc.
La clave ha sido deducir una frase más concluyente
EL_APARATO_DE_PROPAGANDA_ _ _LA_ _INTERNACIONAL_ _DE_MANHATTAN_SACADA_SUPUESTAMENTE_DESDE_EL_SUBMARINO_CAPTUque ya me hizo suponer que se trataba de la máquina enigma. Luego una búsqueda en google y voilà, el texto original.
Sigo un poco hastga localizar la clave real.
Enhorabuena
usrdxt20 Marzo 2011 - 11:13pm
tengo que volver a releer todo el reto, pero eres un hacha, mis felicitaciones.
¡Muy bien!
DEDDS20 Marzo 2011 - 10:20pm
Un trabajo estupendo. Mi mas sincera enhorabuena.
Un saludo.
¡Bravo!
Agustín20 Marzo 2011 - 9:54pm
Bravo, tocayo. Y yo que ya estaba a punto de entender el algoritmo, mecahis.
¡¡Enhorabuena!!
LlamameX20 Marzo 2011 - 9:41pm
El texto os era cercano ¿no?
Ahora que teneis el texto, la clave la encontrareis rápidamente (aunque es lo de menos). Incluso os dareis cuenta de que me equivoqué al colgarlo, puesto que andaba con pruebas sobre como afectaba la variación de una letra y la clave tiene una cambiada respecto a la que tenía que haber sido.
Me espero a que ilustres el ataque para daros el resto de datos de por donde esperaba yo que le hincárais el diente. Por lo que íbais posteando os veia muy bien orientados y ya tenía claro que era cuestión de poco tiempo. Fieras, que sois unas fieras.
Lo que me chocó especialmente fue lo del índice de coincidencia y que cayera tan estrepitosamente con él. Eso no me lo esperaba e imagino que os abrió la puerta a un ataque más elaborado que seguro nos detallarás.
Sin duda te has ganado los puntos.
Desgranando Koch
AgustínB20 Marzo 2011 - 5:46pm
No se como váis Agustín o DEDDS pero yo ya empiezo a obtener frutos.
Creo que empiezo a tener partes del texto, pero todavía no he encontrado la clave correcta.
He lanzado un ataque por fuerza bruta y diferentes claves proporcionan descifrados similares variando alguna letra.
Saludos y seguiremos informando
Espero
Agustín20 Marzo 2011 - 7:13pm
Espero ansioso tus resultados. Yo no he obtenido nada, aparte de que he estado liado con asuntos personales.
He obtenido alguno de los alfabetos
AgustínB20 Marzo 2011 - 7:33pm
Creo que he cazado alguna de las repeticiones de un alfabeto.
Con nueve palabras que he utilizado para descifrar consigo porciones de texto legibles pero todavía no concluyentes.
Cosas como estas, aunque algunas son deducciones he igual hay algún error
EL_RESTO_DE_
_PASABAN_EL_DIA_
_CARROS_DE_GUERRA_
_NAVEGABA
_MAQUINA
PATRULLAS_
_VECES_NO_HACIA_FALTA
_LE_HABIA_MORDIDO_Y_AL_ACERCARSE_SE_
_PASARON_HASTA_LAS_NUEVE_TRANSMITIENDO_LA_
De momento no da para encontrar el texto original con el buscador :-(
Pero bueno, sigo recomponiendo.
Una idea.
DEDDS18 Marzo 2011 - 8:59am
El autor del reto nos dice que para obtener este texto cifrado se ha usado una Ki no evolutiva. Eso significa que una vez calculado el primer alfabeto por "compresión" de la clave, los restantes se obtienen por rotación de una cantidad variable tanto a derechas como a izquierdas. Pero esto supone que como máximo vamos a tener 38 alfabetos diferentes. Dado que con una clave de longitud 11 obtenemos más de ochocientos fragmentos de texto, está claro que hay fragmentos que codifican con el mismo alfabeto. Para un análisis de frecuencias, 11 caracteres son pocos, pero si pudiéramos localizar varios fragmentos codificados con el mismo alfabeto, aún cuando no fueran correlativos, podrían servirnos para realizar un análisis de frecuencias más o menos válido.
En esta dirección es hacia donde estoy encaminando mis pesquisas, a ver que sale.
Un saludo.
Buena idea
Agustín18 Marzo 2011 - 12:38pm
Te aseguro que estaba pensando en lo mismo, pero como no acabo de pillar el algoritmo, no avanzo. ¿Los giros son siempre iguales?
No es tan sencillo
AgustínB19 Marzo 2011 - 10:21am
Al principio iba a escribir
Me temo que estáis equivocados, hay muchos más alfabetos.
Pero al repasar, pues sí ha dicho
Luego al no usar Ki evolutiva lo hace más sencillo ya que "sólo" le aplica rotaciones al alfabeto y es cierto que serán 38. Pero lo que no se sabe es el orden de dichos alfabetos y si se repiten o no, ni cuantas veces.
Haciendo una prueba sencilla con la web proporcionada podéis marcar los tres check-box (Profundidad variable, Ángulo variable y Inicio variable) y probar a cifrar un texto. Al ser de ángulo variable (en el código es la variable alfa) significa que el giro no es de 17 posiciones sino que será de x posiciones, siendo x la posición de la primera letra de la clave dentro del alfabeto base de 38 caracteres.
Y luego resulta que hace
Ki=girar(Ki,0);
Ki=girar(Ki,alfa);
Ki=girar(Ki,360-2*alfa);
Ki=girar(Ki,alfa);
El texto del Quijote del ejemplo con la clave MALETA123 produce los siguientes alfabetos/rotaciones
LC: 9
TC: 59
alfa: 12
inicio: 1206
pmax: 32
Ki=girar(Ki,0);
Ki=girar(Ki,12);
Ki=girar(Ki,360-2*12); = Ki=girar(Ki,336); = Ki=girar(Ki,336%38); = Ki=girar(Ki,32);
Ki=girar(Ki,12);
Como véis, el segundo y el quinto alfabeto se han repetido pero para conocer que esos alfabetos se tienen que repetir, habría que saber la primera letra de la clave y hacer los cálculos pertinentes.
Bueno, y ya se huele el sigiente. Marcar evolutivo y a jugar!!!!
El evolutivo no es el siguiente
LlamameX19 Marzo 2011 - 6:26pm
Eso lo descarto. Se aleja de la filosofía. La gracia es buscar la complejidad en lo fractal. Si quisiera hacerlo más terrible podría haber usado, por ejemplo, ACYNOS ;) para los cifrados de cada segmento. O al revés, aplicar variaciones fractales al alfabeto generado de ACYNOS.
Lo siguiente podría ser algo mas horrible que todo eso. Le he estado dando vueltas a un algoritmo fractal basado en el cubo de rubik a partir del interesante trabajo de principante (es su nick) aquí, donde cada elemento del cubo sería a su vez un nuevo cubo. Estoy buscando la representación adecuada de la información y de los efectos de los movimientos de los cubos en sus subcubos, pero esa ya será otra historia.
Gracias, y disculpa
Agustín21 Marzo 2011 - 12:44pm
No te había agradecido el pequeño homenaje que haces a mi pobre ACYNOS en este post. Mi despiste y mi incuria son los culpables.
Un saludo
Claro que no es tan sencillo
DEDDS19 Marzo 2011 - 2:34pm
Si lo fuera posiblemente ya habría caido. Pero seguro que si nos estrujamos un poco las meninges, damos con la forma correcta de sacudirle al texto cifrado.
Un saludo.
En ello estamos
AgustínB19 Marzo 2011 - 4:26pm
Pues eso, que en ello estamos (por la boca muere el pez, he abandonado temporalmente ACYNOS porque esta versión parece más asequible)
No quiero adelantar nada porque igual resulta que se queda en otra chorrada como la que comenté el otro día.
Mirror de Fractal 2
AgustínB17 Marzo 2011 - 10:45pm
Bueno, como os prometí he creado rápidamente aquí una réplica de la web de LlamameX.
Está creada en estos servidores http://www.000webhost.com/ y ya ni me he parado en la seguridad ya que se puede navegar y ver todo el contenido.
Al zip original le he añadido el fichero koch.txt que contiene el texto a descifrar.
Y ahora paso a mirar las pruebas de ayer que me parece que algo está mal.
Saludos
Muchas gracias
DEDDS18 Marzo 2011 - 8:35am
Como ya dije, a mi también se me pasó bajarme los ficheros.
Un saludo.
Gracias tb
LlamameX18 Marzo 2011 - 1:08am
Estoy buscando otro alojamiemto ya que esta gente ni contesta y en otro lado en que me he registrado sigo esperando el mail de confirmación. Joer esto de lo gratuito es de lo más informal.
Gracias por publicarlo.
Moltes thanks
Agustín18 Marzo 2011 - 12:00am
Pues eso.
No es muy científico
AgustínB17 Marzo 2011 - 1:00am
Pero si la clave es de 11 caracteres; se me ha ocurrido probar, una a una, todas las combinaciones de letras del alfabeto repetidas once veces.
Con esto si se observan el texto descifrado los únicos caracteres que producen cambios (observaba los 12 primeros del texto descifrado) con respecto al texto cifrado son EIOQRUV6790
Se me ha ocurrido formar la "palabra" QUIEROV6790, pero no ha funcionado el descifrado.
Buena idea
Agustín17 Marzo 2011 - 1:23am
¿Y por qué no te parece científico? A mí me parece muy buena idea. ¿Has probado otra combinación? Por ejemplo, los consabidos números en lugar de letras como "QUIER0V679O", o cualquier otra cosa. En todo caso, si tu pista es correcta, estaríamos ante un problema de 11! = 39916800
combinaciones. Eso debería estar chupao.
Tampoco es la clave
AgustínB17 Marzo 2011 - 8:58am
Tengo que repasar porque he visto que igual me he despistado con la F que también produjo cambio.
De todas maneras, no quiero jugar con ventaja y si a la tarde, después de regresar del trabajo no lo ha hecho el autos; publicaré el zip y la web en otro Hosting gratuito para que todos podamos probar.
Saludos y salgo pitando para el trabajo ;-)
Chorrada
AgustínB17 Marzo 2011 - 11:46pm
Nada, que ya decía que no era nada científico.
He aplicado la misma idea al ejemplo cpn clave MALETA123 cifrando
EN_UN_LUGAR_DE_LA_MANCHA_DE_CUYO_NOMBRE_NO_QUIERO_ACORDARME que da como resultado
THXQHXFQ2N82PQ2YN2HAIEBAYT13PA16346_9JAUDGUIÑRÑ5ZEIKZ5A9KDL Y probando con AAAAAAAAA
THXQHXFQ27 RM0AMI7MG0HDA0XS_M9TKOMNOJBMDXGJXLQEARM157MRCAMFN
La A está dos veces en la clave y tampoco cambia nada en los 9 primeros caracteres. El que cambia es el de la posición 10 (LC+1)
Luego no sirve de nada.
¡Coincidencia!
DEDDS16 Marzo 2011 - 4:28pm
Ya he averiguado como calcular el famoso "índice de coincidencia" del texto cifrado. Lo cierto es que es más o menos fácil de hacer. Para comprobar si los resultados que se obtienen son válidos, se me ha ocurrido probarlo primero con el texto cifrado de fractal1, ya que tenemos la ventaja de conocer la longitud de la clave. Los cálculos los he realizado para longitudes de clave entre 6 y 60 caracteres, aunque aquí solo pongo los que se necesitan para ver la variación.
El primer valor es el índice de coincidencia del texto completo y los valores siguientes son los que se obtienen tomando las longitudes de clave expresadas en la columna de la izquierda.
--------------------
0.040038
25 -> 0.060262
26 -> 0.056959
27 -> 0.057289
28 -> 0.057044
29 -> 0.072484
30 -> 0.057564
31 -> 0.056661
32 -> 0.057575
33 -> 0.058322
--------------------
Se puede ver como el valor es significativamente mayor para una longitud de clave de 29, que sabemos que es la correcta.
Los mismos cálculos realizados para el texto de Koch dan como resultado:
--------------------
0.026305
06 -> 0.039104
07 -> 0.042508
08 -> 0.042664
09 -> 0.045301
10 -> 0.044374
11 -> 0.058626
12 -> 0.044647
13 -> 0.043770
14 -> 0.043354
15 -> 0.043643
16 -> 0.042442
--------------------
que nos da una longitud de clave de 11 caracteres.
Como coincide con el cálculo de la longitud que ya había hecho Agustín, yo creo que podemos estar razonablemente seguros de que es la longitud de la clave correcta.
¡Hale Agustín! Pienso que ya podemos trabajar con esta hipótesis para intentar descifrarlo.
Un saludo.
Me alegra
Agustín16 Marzo 2011 - 5:59pm
Me alegro mucho de que coincidamos en la longitud de la clave. Ahora sí que empiezo a fiarme de que mida 11 caracteres. A partir de ahí veo tres líneas de ataque:
1. Estudio de frecuencias de caracteres en los fragmentos de 11 signos
2. Buscar alguna debilidad en el algoritmo, algo que el propio autor ha reconocido que existe
3. Ataque de fuerza bruta sobre la clave
El primer método lo veo inviable: Con fragmentos tan cortos las estadísticas son irrelevantes.
El segundo debería ser lo más elegante, que requerirá sin duda de vuestras habilidades matemáticas, pero no puedo decir gran cosa, porque creo que aún no he entendido bien cómo funciona el algoritmo. Por eso quería hacer unas pruebecillas en la página fantasma.
Sobre el tercero no tengo ni experiencia ni herramientas. La combinatoria dice que tenemos 38^11 claves posibles, o sea unas 2*10^17 Pero estoy seguro de que esos crackeadores de contraseñas con diccionario serían la solución. Este cifrado es vulnerable, como ya dije antes, pues las claves largas lo debilitan.
En cambio, con ACYNOS, cuanto mayor sea la clave, mejor. No es por nada, je je.
==== Edición ===
Por cierto, podrías explicar en qué consiste el método ese de las coincidencias. Me gustaría ver en qué se diferencia de mi método de las frecuencias relativas de las letras más frecuentes.
================
Claro que si
DEDDS16 Marzo 2011 - 9:10pm
Aunque yo creo que es mejor que hagas una búsqueda en google y te leas alguno de los pdf que lo definen, porque viene la formulación matemática (en unos documentos muy sencillita y en otros un poco más a lo bruto) y luego su aplicación a la criptografía.
La diferencia más notable respecto de tu método es que utiliza no solamente el caracter con más frecuencia, sino todos los caracteres que aparecen en cada fragmento de una longitud dada.
En cuanto a la forma de atacarlo, estoy de acuerdo contigo en que son fragmentos muy cortos para hacerlos por frecuencias, asi que nos tendremos que sacar de la manga otro método.
Un saludo.
¿Descortesía?
Agustín17 Marzo 2011 - 12:04am
Ya me sonó extraño que hablaras de un método de análisis sin que pusieras ni una descripción, ni un documento, ni un enlace. Pero que te lo pida expresamente y sigas sin ponerlo me parece claramente descortés, con todo lo que hemos peleado juntos, o separados por un reto. Seguramente me has tomado por un HOYGAN pidiendo HALLUDA. Pues a lo mejor lo soy, fíjate tú.
¡Mil disculpas!
DEDDS17 Marzo 2011 - 11:35am
En absoluto he pretendido faltarte al respeto a ti ni a nadie de los que esté siguiendo este reto. Precisamente por todo lo que hemos peleado juntos o separados sabes que nunca ha ocurrido eso y, por lo que a mi respecta, ni ocurrirá. Asi que de nuevo te reitero mis disculpas.
Yo entendí que me pedias una justificación formal del funcionamiento del método y sinceramente no tengo los conocimientos suficientes para poder hacerlo. Solamente me he limitado a hecer una adaptación mindungui para ver si era útil para este reto.
¿Enlaces? te pongo los que a mi me han parecido más interesantes. La mayoría llevan directamente a documentos PDF, por eso pensé que quizás preferirias cribarlos tu tras una búsqueda por la red.
es.wikipedia.org/wiki/%C3%8Dndice_de_coincidencia
www.cripto.es/enigma/boletin_enigma_32.txt
www.izt.uam.mx/contactos/n33ne/pdf/cripto.pdf
www.bubok.es/ver/preview/5714
www.fi.uba.ar/materias/6669/docs/Vigenere.pdf
www.grupocole.org/~cgomezr/patronfic/07/e/enunc/indice.pdf
Y ahora una explicación de andar por casa.
Ya que nos las tenemos con un cifrado polialfabético empecé a buscar información soble el método Kasiski, y me encontré por casualidad una mención al "índice de coincidencias". Del mozuelo que lo inventó y lo desarrolló no he conseguido mucha información. Básicamente el índice de coincidencia de un texto dado es una cantidad que se deriva de la frecuencia de distribución de las diferentes letras en el texto. El índice de coincidencia puede servir para identificar idiomas porque tiende a un valor distinto en cada idioma. Por ejemplo, los textos largos en inglés suelen tener un índice de coincidencia que ronda 1.73, mientras que en español es 1.94.
Dado un determinado alfabeto, si creamos a partir de él un texto totalmente aleatorio y calculamos el índice de coincidencias obtendremos un valor muy bajo. Pero si creamos un texto siguiendo las reglas de un lenguaje natural (por ejemplo el español) el índice de coincidencia calculado eleva su valor considerablemente. Este principio es el que se utiliza en criptografía. Si calculamos el índice de coincidencia de un cifrado polialfabético nos da un valor bajo. Pero si lo hacemos con un fragmento de la longitud de la clave el valor aumenta.
Mucho me te mo que la explicación a lo mejor ha sido un poco farragosa, pero al final se reduce a realizar los cálculos para distintas longitudes de clave. Por cierto que a posteriori he visto que ganzua tiene una opción para calcular el índice de coincidencia.
Espero, Agustín, que el tocho este sirva para lavar mi falta. Si no es así, por favor házmelo saber.
Un saludo.
Sta bene...
Agustín17 Marzo 2011 - 12:09pm
... Non ti preoccupare.
Grazie
DEDDS17 Marzo 2011 - 2:31pm
:)
Coincidencia
DEDDS15 Marzo 2011 - 10:19pm
Buscando por las internetes información sobre los cifrados polialfabéticos, me he encontrado con que al parecer hay dos formas de atacarlos: una es el método de Kasiski (que no sé que tal irá para este reto) y la otra es un sistema que se llama "cálculo del índice de coincidencia". Este último método está orientado también a intentar averiguar la longitud de la clave para, una vez conseguida, seguir el ataque por el método de frecuencias o algún otro más o menos artesanal.
De momento no he podido determinar como aplicarlo al texto del reto, pero puede ser una buena dirección a seguir.
Mi opinión (y recalco que solamente es una opinión personal) es que todavía tenemos algunas opciones antes de empezar a pedir comodines, ¿no te parece, Agustín?
Un saludo.
Por supuesto
Agustín15 Marzo 2011 - 10:50pm
Ya he dicho que no quería devaluar el reto. O sea que pasamos de comodines.
Tranqui, Agustín
DEDDS15 Marzo 2011 - 9:21am
No te agobies, que ya verás como encontramos por donde meterle mano. Yo tampoco me acordé de bajarme el famoso fichero zip con la página, asi que a lo mejor LlamameX nos puede hacer la merced de volverlo a colgar.
Un saludo.
Vale, es muy difícil
Agustín15 Marzo 2011 - 2:54am
El ataque estadístico es muy difícil, porque es como descifrar chopocientos criptogramas de once caracteres (por ejemplo). Si un criptograma es corto puede resultar indescifrable, por sencillo que sea el método de cifrado, por ejemplo, una sustitución monoalfabética. Es decir, que lo que has conseguido, a mi entender, es un ingenioso método para fraccionar el mensaje, y cifrar cada cachito con un alfabeto-clave distinto, usando el contenido del propio mensaje. Dicho sea esto sin intención de quitarle mérito alguno, porque ya digo que es muy difícil de resolver, objetivo deseado por todo paridor de engendros.
Ahora bien, desde el punto de vista teórico, es una vulnerabilidad que las claves largas sean más vulnerables -valga la rebuznancia- que las cortas, ya que éstas, a su vez, son más susceptibles de ataques por fuerza bruta. O sea, que si alguno tiene un programilla de esos que crackean contraseñas, igual lo puede aplicar a esto y ganarse seis mil eurillos, digo... seis mil puntitos. Perdona, admin, no sé en qué estaría yo pensando.
Y como estamos de acuerdo en que los retos imposibles son un coñazo... ¿te importaría confirmar o desmentir si la clave es de once caracteres?
Casi mejor que eso
LlamameX15 Marzo 2011 - 5:23pm
Usar una longitud de clave es una facilidad para el ataque. No habría costado nada hacer un giro después de cada letra y habría sido mucho más difícil abordarlo.
Mejor que confirmar o desmentir os ofrezco comodines XD
1) El Recifrado - Cifrar el mismo texto con otra clave.
2) El Traidor - Comentaros una debilidad detectada.
3) La confirmación - Os digo si 11 es o no la LC.
Ahora bien, igual si usais comodines nuestro amado Admin decide que el reto ha quedado devaluado y no os da los puntos. Vosotros direis XD
No quiero devaluar el reto
Agustín15 Marzo 2011 - 8:13pm
para que alguien pueda disfrutar de esa fortuna moral, pero si de mí dependiera te pediría que presentaras un cifrado con una clave decente, entre 80 y 100 caracteres, je, je.
Dead link
Agustín14 Marzo 2011 - 9:59pm
Quería hacer unas pruebecillas en la página que has puesto para ahorrarme la tarea de programar, pero el enlace no pirula, de nuevo. Bueno, no está muerto del todo, pero no sale la página que se espera. Como no sea que yo tenga el ordenata infectado...
Confirmo
AgustínB14 Marzo 2011 - 11:46pm
Te confirmo que no funciona. Pero también podías haber descargado el zip con el código fuente. Contenía un fichero html y otro javascript y con eso lo tenías todo para ejecutar en local en tú máquina.
Es la historia de mi vida
Agustín15 Marzo 2011 - 12:29am
Siempre dejo escapar las oportunidades
No se que ha pasado
LlamameX15 Marzo 2011 - 5:08pm
Pero parece que redirige a una página de baja reputación. Voy a pedir al admin que quite el link mientras miro a ver que pasa. Miraré de colgar los archivos mientras en otro servicio de publicación.