Voy a dar a este esquema el máximo beneficio de la duda. Aquí está mi opinión, con una conclusión en la parte inferior:
Tenemos un archivo con 10,000,000 de caracteres de 7 bits, elegidos verdaderamente al azar. Esto significa que todos los caracteres deben aparecer, en promedio, cada 128 caracteres. Voy a referirme a este tamaño como un bloque a continuación.
También supondré que vas a especificar una clave como "comience en el Yth '>' después de la 'Q' después del inicio del bloque Nth y finalice en el décimo carácter ", porque sería fácil de recordar. Esto significa que su contraseña está realmente determinada de forma aleatoria, e inicialmente desconocida para usted. Una contraseña de diez caracteres elegida al azar como esta es bastante fuerte. Eso es 70 bits de aleatoriedad.
El primer problema es que para cada bloque de 128 caracteres, hay aproximadamente un 36% de probabilidades de que no aparezca ningún personaje en ese bloque. Esto se multiplica a medida que agrega bloques adicionales, por lo que hay aproximadamente un 13% de probabilidad de que una 'Q' no aparezca en dos bloques seguidos, y una probabilidad de 0.003% de que una 'Q' no aparezca en 10 bloques en una fila. Eso significa que solo 1 de 27351 series de 10 bloques faltará una 'Q'. Sin embargo, tenemos muchos datos! Tenemos 78125 bloques en este archivo, por lo que cabría esperar, en promedio, encontrar tres regiones de 10 bloques de este tipo sin una 'Q' en nuestro archivo de 10 MB. Las cosas se ponen raras cuando se trata de grandes números.
Esto significa que es posible que tengamos que buscar muchas maneras de encontrar la primera Q después del inicio del bloque Nth. Hay pocas posibilidades de hacerlo, pero como hemos visto, es probable que haya tres lugares en nuestro archivo gigante donde tenemos que buscar aproximadamente una KB de texto (¡manualmente!) Para una única 'Q'. Cuando consideras que queremos no solo el primero, sino el Nth '>' Después de eso Q, las cosas se complican rápidamente. Es posible que tengamos que buscar a través de 1 KB para la Q, y luego otro 1 KB para encontrar el primer '>'.
Todo lo que esto significa en la práctica es que sabemos que su contraseña no estará en los últimos 150 KB aproximadamente del archivo, porque no puede garantizar que haya un par de caracteres en particular en el orden y número. requerido.
También significa que podemos calcular el tamaño de una clave. Necesita cinco elementos de información para encontrar su contraseña en el archivo: el bloque inicial, el primer carácter, el número de segundos caracteres para contar adelante, el segundo carácter y el carácter de parada.
Podemos especificar esto como una serie de números y caracteres: [ 7685, 'Q', 6, '>' ]
, que significa "Comience a leer en el sexto '>' después de la 'Q' en el bloque 7685.
Ya que hay aproximadamente 78000 bloques que puedes elegir para el punto de partida, ese valor tiene entre 16 y 17 bits de aleatoriedad. Podría ser cualquier número entre 0 y 78000. Para los personajes, tiene 128 opciones en dos posiciones, que son 7 bits de aleatoriedad cada uno, o 14 bits en total. El segundo número es complicado. Ya que podemos esperar razonablemente contar al menos 1 KB para encontrar cada personaje, probablemente sea seguro elegir un valor inferior a 64 aquí. Eso es sólo seis bits de aleatoriedad. Entonces, gran total, su clave tiene (16-ish + 14 + 6) bits de aleatoriedad, que es de 36-ish bits. Si varía la longitud, podría agregar algunos bits más. Si bien no es trivial, una computadora doméstica moderna y típica podría alimentar todas las combinaciones posibles en un par de días.
Sin embargo, como han señalado otros, todo esto es en gran medida irrelevante. El archivo en sí solo tiene 10,000,000 puntos de partida posibles. Eso significa que el espacio de claves es en realidad significativamente más pequeño que las claves en sí, y realmente solo tienes alrededor de 23 bits de aleatoriedad. Lo que esto significa en términos prácticos es que cada posición inicial en el archivo puede ser referenciada por 16,000 claves diferentes y, en realidad, memorizar una posición inicial es significativamente más fácil que memorizar esa estructura de teclas. Si utiliza un bloque más pequeño, hay incluso menos combinaciones posibles.
Conclusión: Entonces, sí, como han dicho otros, esta es una mala idea. Use un programa de encriptación fuerte conocido usando una contraseña segura conocida. Puede crear una contraseña que sea más fácil de memorizar, lo que le brinda una protección considerablemente mayor que este esquema complejo y obtiene el beneficio de los algoritmos de cifrado probados y comprobados.