¿Cuáles son las estrategias habituales de cifrado base64?

Si bien la codificación base64 no tiene la intención de encriptar, no es descabellado pensar que el proceso de codificación podría ser moderado de alguna manera para crear un cifrado. Sin duda, no soy la primera persona en pensar en un intento de cifrado de este tipo haciendo uso de la codificación base64. Por lo tanto, me gustaría preguntar qué tipos de estrategias de cifrado base64 se conocen.

Comentarios

  • ¿Te gusta un cifrado de flujo de 6 bits?
  • generalmente, el cifrado ocurre antes de que los datos se ejecuten a través de Base64
  • Yo ‘ he visto esquemas de cifrado base64 utilizados antes, pero todos ellos podrían ser trivialmente Esta pregunta tiene sentido porque la gente podría estar buscando algoritmos como este. Sin embargo, el sentido común probablemente significa que indicamos que base64 no es un cifrado y es el resultado de confundir la codificación con el cifrado. Tenga en cuenta que muchos de nosotros asumiremos que la premisa de esta pregunta es incorrecta: que se puede usar un esquema de codificación para el cifrado. Esto podría resultar en votos negativos, incluso si la pregunta es al menos interesante para muchos criptógrafos principiantes.
  • Quizás tangencialmente relevante: crypto.stackexchange.com/questions/62425/… , crypto.stackexchange.com/questions/5862/… y crypto.stackexchange. com / questions / 45215 / …

Responder

Esto está tomado de la entrada Wiki para Base64:

ejemplo de base64

Si realmente destinado a manipular la codificación Base64 para proporcionar cifrado, se podría hacer en el nivel de índice resaltado anteriormente. Necesitaría una clave secreta, una función de derivación de clave diseñada para crear una semilla de alta entropía que luego inició un generador de números pseudoaleatorios. La salida del generador (6 bits) se aplicaría XOR con el índice para cambiar la codificación de cada carácter. Y esta técnica se puede invertir para descifrar el mensaje cifrado.

Verá que es todo un poco molesto. Tradicionalmente, se creaba el texto cifrado y luego se codificaba. Además de recortar una secuencia aleatoria típica de 8 bits a 6 bits, la carga de trabajo es idéntica a la del cifrado de flujo . En realidad, necesita un 33% de cálculos adicionales, pero eso no es ni aquí ni allí.

Puede ser el primero en pensar en esta variante de Base64 ya que nadie parece estar al tanto de un comportamiento similar. Sin embargo, esto debería funcionar.

Comentarios

  • ¡Gracias por esta interesante sugerencia! En realidad, tenía en mente cosas simples, como permutar la asociación de tablas de letras de 6 bits. O introducir una clave y tener una operación xor bit a bit en cada letra pasando por la clave, o similar.
  • @Kagaratsch Bueno, creo que ‘ estamos pensando en algo similar líneas. Para permutarlo ‘ necesitará la funcionalidad PRNG y para vincular una clave a un PRNG, ‘ necesitará algún tipo de función de derivación de clave; de lo contrario, no ‘ habrá una discrepancia entre el formato de clave y el formato / estado requerido para operar el PRNG. Si simplemente permuta sin una clave, o usa el ciclo de su carácter clave, el esquema ‘ no es muy seguro y esto es crypto.SE después de todo 🙂
  • @PaulUszak Ese nombre técnico es bastante obvio tan pronto como lo conoces … ‘ simplemente se llama » Cifrado XOR «. 😉 Sin embargo, tenga en cuenta que el análisis de frecuencia lo romperá trivialmente. Lo mismo ocurre con los ataques de texto plano conocidos. Ah, y para ser completo con respecto a la nomenclatura técnica: cuando agregas un prng, un » cifrado XOR » se convierte en un » cifrado de flujo «. Pero probablemente ya lo sabías, ¿no ‘ tú?
  • @PaulUszak No estoy seguro de por qué dices » no «. Además, puede estar seguro de que sé lo que significa » ciclismo «. Un cifrado XOR pasa por la misma clave una y otra vez y en el mismo orden, tal como lo describe. Consulta el » ejemplo » de ese enlace wiki; coincide con sus descripciones 100% … a bitwise xor operation on each letter cycling through the key y Cycling round through the key means that the plain text will be XORed with the same sequence over and over, and in the same order. , que ‘ se llama » Cifrado XOR «. No hay error ni brecha de idioma allí.
  • Cualquier forma en que modifique base64 de esta manera se puede factorizar en (a) definir un cifrado en cadenas de bytes y luego (b) aplicar base64 estándar a su salida, mapeando cadenas de bytes de texto cifrado a texto sin formato. ‘ no tiene sentido fusionar (a) y (b); no agrega seguridad y complica innecesariamente la descripción tanto del cifrado subyacente como del estándar base64 implícito.

Respuesta

Esto no tiene sentido. No hay una clave secreta en base64: la codificación y decodificación de base64 son funciones públicas que cualquiera puede evaluar.

La única forma en que base64 se relaciona con la criptografía es que es conveniente codificar el texto cifrado de algún criptosistema, que es distribuidos uniformemente en cadenas de 8 bits, en un conjunto limitado de US-ASCII que no se repetirá ni rechazará en contextos que se limiten a texto sin formato, como XML.

Comentarios

  • +1 (… y base64 produce resultados más cortos que la codificación hexadecimal, razón por la cual se desarrolló y por qué tiende a usarse con frecuencia en aplicaciones).
  • Hace perfecto sentido 🙂 La pregunta se planteó como hipotética y el OP está buscando posibilidades de implementación. ‘ no existe una ley natural que requiera que todo el cifrado tenga que ser súper eficiente. Solo tiene que encriptar / desencriptar. ¿Sabes que la gente todavía construye máquinas de vapor y está muy orgullosa de ellas …?
  • @PaulUszak No ‘ no tiene sentido como base64, una transformación pública entre dos representaciones equivalentes de datos, hay un tipo de objeto diferente de un esquema de encriptación que involucra secretos desconocidos por un adversario. Cualquier forma en que modifique la interfaz y los componentes internos de base64 para poner algún tipo de clave y cifrado en ella puede tenerse en cuenta en la transformación de representación de base64 estándar y algún cifrado subyacente cuya seguridad es irrelevante para la parte de base64. Si hiciera una máquina Enigma a vapor, ¿diría que modificó el concepto de energía de vapor en un esquema de cifrado?
  • @SqueamishOssifrage Sí.

Respuesta

La regla de oro de la criptografía debería ser: «No es porque usted no pueda leer el texto que está encriptado». Base64 no está destinado a ser utilizado para crear texto cifrado y no debe usarse para ese propósito.

Los métodos de cifrado siempre se basan en un secreto o artefactos que aseguran que solo los actores de la comunicación puedan revertir el texto cifrado. Si no es así, como con Base64, entonces no es cifrado.

Base64 está diseñado para codificar binario como texto con varias ventajas sobre otros esquemas de codificación. La privacidad no es una de estas ventajas.

Respuesta

Sí, existe interés en cifrar base64 ascendente: es la economía en iteraciones. Cuando encriptamos datos y luego los codificamos, tenemos que hacer al menos dos bucles: uno sobre el cifrado de los datos y el otro sobre la codificación de los datos generados. Al encriptar en sentido ascendente podemos reducir a un bucle y por lo tanto obtener un rendimiento significativo.

@ e-sushi: De hecho, no hay muchos ejemplos excepto este que usa un solo bucle: php_base64encrypted

Probablemente hay otras formas de hacerlo mejor, pero demuestra que es posible …

Editar: lo siento, no estoy muy familiarizado con este sitio.

Comentarios

  • ¿Puede proporcionar un ejemplo (enlace al papel o algo) de tal `interés en encriptar base64`? Traté de encontrar más información usando mi motor de búsqueda favorito , pero de alguna manera fallé. Por lo tanto, un puntero sería mucho más eciated.
  • La codificación Base64 es un proceso que se puede transmitir (p. ej. permite que un flujo de datos se codifique de forma incremental a medida que ‘ s se genera, sin tener que leerlo todo primero). Por lo tanto, sería perfectamente posible que un esquema de cifrado convencional alimentara su salida a un codificador incremental base64, sin tener que » hacer al menos dos bucles » sobre los datos. La única razón por la que esto no es ‘ t más común es probablemente el hecho de que, para flujos de datos lo suficientemente largos como para que esto sea útil, ‘ Suele ser mucho más eficiente omitir la codificación base64 por completo y simplemente transmitirlos y / o almacenarlos como datos binarios sin procesar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *