@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
!define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/refs/heads/main/icons/devicons
!define FONTAWESOME https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/font-awesome-5
!include DEVICONS/python.puml
!include FONTAWESOME/undo.puml
!include FONTAWESOME/file.puml
!include FONTAWESOME/bug.puml
!include FONTAWESOME/brain.puml

LAYOUT_WITH_LEGEND()

title Diagrama C4 - Proceso criptoesteganográfico de audio

Person(investigador, "Investigador", "Responsable del desarrollo y evaluación del modelo")

System_Boundary(c1, "Criptoesteganografía de audio") {

    Container(compresion, "Compresión de texto", "Python, LLMLingua", "Reduce el tamaño del texto preservando contenido esencial", "brain")
    Container(encriptacion, "Encriptación XOR", "Python", "Aplica XOR entre mensaje comprimido y llave generada con caos", "python")
    Container(esteganografia, "Esteganografía LSB", "Python", "Inserta mensajes cifrados en audio WAV usando bits menos significativos", "python")
    Container(evaluacion, "Evaluación desempeño", "Python", "Calcula métricas de rendimiento e invisibilidad del audio modificado", "python")
    Container(retroalimentacion, "Retroalimentación y Ajuste", "Python", "Ajusta parámetros según resultados de evaluación", "undo")

System_Ext(audio_wav, "Archivo WAV", "Contenedor para audio esteganografiado", "file")
System_Ext(ataques, "Ataques de seguridad", "Ruido, compresión, filtrado", "bug")

Rel(investigador, esteganografia, "Inserta/Extrae mensaje")
Rel(investigador, retroalimentacion, "Ajusta parámetros", "Análisis resultados")

Rel_Neighbor(compresion, encriptacion, "Entrega mensaje comprimido")
Rel_Neighbor(encriptacion, esteganografia, "Mensaje cifrado")
Rel(esteganografia, audio_wav, "Oculta/Extrae mensaje")
Rel(audio_wav, ataques, "Sufre ataques")
Rel(ataques, retroalimentacion, "Resultados ataques")
Rel(audio_wav, evaluacion, "Evalúa integridad")
Rel(evaluacion, retroalimentacion, "Proporciona métricas")
Rel_Back(retroalimentacion, encriptacion, "Ajuste parámetros caos")
Rel_Back(retroalimentacion, esteganografia, "Ajusta método LSB")
@enduml
