• Braulio Madrid

Esteganografía en texturas para unity


¿Que es la esteganografía?


La esteganografía (del griego στεγανος steganos, "cubierto" u "oculto", y γραφος graphos, "escritura") trata el estudio y aplicación de técnicas que permiten ocultar mensajes u objetos, dentro de otros, llamados portadores, de modo que no se perciba su existencia.


En resumen la esteganografía vendría a ser una rama alterna a la criptografía oculta en imágenes, también puede ser aplicada a textos aunque no es usual por el poco margen que este permite, pero también puede ser aplicado en formatos de audio y video.


Antiguamente la esteganografía se usaba para ocultar mensajes usando tinta invisible o tintas que reaccionan al calor, actualmente con la informática consiste es la alteración de bits, en imágenes, audio o video para camuflar un mensaje o una imagen. actualmente un resultado muy común son las marcas de agua invisibles.


Compartiré un enlace que está en inglés pero a velocidad de buen ojeador podrá enterarse de cuáles son los algoritmos y las técnicas usadas en este.


¿Qué aplicaciones puede aportar la esteganografía en el desarrollo de los videojuegos?


Existen diversos usos que se le pudiera dar, al menos algunos cuantos que se me ocurren. claro que no se a ciencia cierta si sea posible aplicarlos porque desconozco este campo,

  • Puede aplicarse a imágenes y audio para proteger los assets contra la piratería, por ejemplo guardando un ruido en imágenes y audio para remarcar la autoría al desencriptar.

  • Podría aplicarse en algunos assets de algún modo simple y fácil de decodificar, como parte de un easter egg, o la llave de un puzzle.

  • Puede ser aplicable en juegos online donde la transmisión de datos o actualizaciones vayan empaquetados dentro de los archivos.

  • Podría aplicarse como backup de código dentro de los mismos assets.

  • Mi mayor interés en este campo sería la de ocultar una imagen dentro de otra, a modo de compresión de assets, aunque sé que puede degradarse la información. (Aunque ya lo he intentado y al menos no es posible, la compresión y la disposición de los canales es lo que más afecta la integridad de los datos)

  • La mayor limitación en el desarrollo de videojuegos es que puede que las imágenes no puedan ser comprimidas, no puedas usar mipmaps y que esté obligado a filtrar en modo point y que tal vez no pueda usar bilinear o trilinear.


Aplicación en Texturas 2D.


La iniciativa surgió de la necesidad de buscar reducir el peso del videojuego personal que estoy desarrollando. aunque cuando compilo el juego en standalone pesa solo 86mb, la carpeta del proyecto va por las 3GB después de haber descartado assets innecesarios, así que si hay alguna forma de prescindir de más assets y a la vez hacer aún más liviano mi juego mucho mejor.


Leyendo el documento mi motivación se fue perdiendo porque no es un modo muy seguro de respaldar los datos y estos pueden verse afectados por la compresión y el renderizado de la textura.


Yo había hecho un shader basado en el standard de unity que te viene con todo, solo que este lo hice a la medida, ya que viendo que el valor del smoothness, metallic y el lit, eran valores flotantes, pensé en componer una imagen usando el canal rojo, azul y verde de la imagen para suplir cada valor y aun tenia otro slot disponible que era el alpha que me podía servir para el ambient occlusion.


El hecho es que me había funcionado el truco, pero queria mas, lograr lo mismo con las normales. Asi que pense que si usaba la esteganografía para combinar el mapa diffuse con las normales podría lograr aún más rendimiento conservando la calidad gráfica.


El problema radica en que decodificar la imagen puede consumir recursos del shader y lo que ganaría en compresión lo perdería en rendimiento, aparte de la limitación de no poder usar filtrado bilinear.


Conclusiones.


Aquí en este blog solo estoy informando lo que lei de igual modo dejé el documento original en inglés para que pueda ser leído y saquen sus conclusiones.


Soy algo terco y ya hice mis propias pruebas y solo a menos que sea para el uso de algún easter egg o algun juego basado en esteganografía, algo del tipo cicada 3301, a continuación les dejaré un link del codigo para que lo estudien y hagan sus pruebas también.


Aquí dejo algunos links para empezar a usar esteganografía. assets store, steghide, shadertoy

© 2023 por Darkcom. Proudly created with Wix.com | Peñol, Antioquia, Colombia| +57 3113389725 | Politica de privacidad

  • GitHub
  • BMadrid
  • DarkcomDev
  • Darkcom.dev
  • Braulio-Madrid
  • YouTube Darkcom Tech
This site was designed with the
.com
website builder. Create your website today.
Start Now