Exposición Pública de Calificaciones

desmontando-los-mitos-del-reglamento-general-proteccion-datos-643x342El RGPD y La ley Orgánica LOPDGDD, han introducido una variación sustancial en cuanto a cuál ha de ser el tratamiento de los datos personales, de que tipo de protección han de tener y las medidas que han de tomarse para que solo sean accesibles a aquellos que tengan legítimo derecho a conocerlos.

En este sentido prácticas hasta ahora usuales, tales como la exposición pública de calificaciones de Oposiciones o Concursos de Méritos , deben adecuarse a la Normativa Europea y Española al respecto.

Artículo 4, párrafos 1 y 2 del RGPD

1) «datos personales»: toda información sobre una persona física identificada o identificable («el interesado»); se considerará persona física identificable toda persona cuya identidad pueda determinarse, directa o indirectamente, en particular mediante un identificador, como por ejemplo un nombre, un número de identificación, datos de localización, un identificador en línea o uno o varios elementos propios de la identidad física, fisiológica, genética, psíquica, económica, cultural o social de dicha persona;

2) «tratamiento»: cualquier operación o conjunto de operaciones realizadas sobre datos personales o conjuntos de datos personales, ya sea por procedimientos automatizados o no, como la recogida, registro, organización, estructuración, conservación, adaptación o modificación, extracción, consulta, utilización, comunicación por transmisión, difusión o cualquier otra forma de habilitación de acceso, cotejo o interconexión, limitación, supresión o destrucción;

Artículo 6, letra F de la LOPDGDD

f) el tratamiento es necesario para la satisfacción de intereses legítimos perseguidos por el responsable del tratamiento o por un tercero, siempre que sobre dichos intereses no prevalezcan los intereses o los derechos y libertades fundamentales del interesado que requieran la protección de datos personales, en particular cuando el interesado sea un niño. Lo dispuesto en la letra f) del párrafo primero no será de aplicación al tratamiento realizado por las autoridades públicas en el ejercicio de sus funciones.

La publicación pública de esos datos deberá tener en cuenta el derecho a la confidencialidad, pero a la vez ha de respetar el ejercicio del legítimo derecho de otros actores a conocer esos datos.

En el caso que nos ocupa ha de protegerse la calificación de las personas que han opositado, y a la vez han de habilitarse mecanismos que permitan que las otras personas que han opositado puedan conocer las calificaciones del resto de participantes.

En consecuencia de lo descrito en el párrafo anterior, un tercero que no haya participado en el Concurso Oposición, no debe tener acceso a las calificaciones ni al resto de información relativa al mismo.

Esteganografía con Python

Una forma de diferenciar la estenografía con la criptografía común es que la criptografía solo cifra los archivos manteniendo el archivo original visible, pero al abrirlo mostrará una secuencia de caracteres que no permitirá su lectura y para ver su contenido original es necesario conocer la clave.

En la estenografía, puede verse un archivo con un formato diferente, y para conocer su contenido original será necesario conocer la clave y el software con el que se ocultó.

En ocasiones la mejor manera de ocultar información confidencial es ocultarla estando al alcance de todos.
Para lograr esto, uno de los métodos usados es la esteganografía:

Mediante dos script en Python, vamos a ocultar un mensaje en un archivo, para leerlo posteriormente. Para este propósito podemos usar cualquier tipo de archivo : audio, imagen, tales como mp3, wav, ogg, pdf, jpg, png, etc.
Las fases del proceso son:

  1. Elegir un archivo que nos servirá de soporte.
  2. Escribimos el texto a ocultar.
  3. Búsqueda secuencial de uno y cada uno de los caracteres que componen el mensaje en el archivo soporte.
  4. Se guarda la posición en la que se encuentra el carácter buscado
  5. Una vez encontrados todos los caracteres, se crea otro archivo nuevo, con la misma extensión que el que nos sirvió de soporte, en el que se añade a continuación de la marca de fin de archivo, las posiciones en la que encuentran los caracteres que conforman el mensaje.
  6. Grabación del nuevo archivo, que oculta el mensaje.

De Esta manera el archivo se puede ver o escuchar, según el tipo de manera habitual y con los programas que se usen al efecto, y la única forma de leer el mensaje utilizado es usando el script de lectura, evidentemente el mensaje debe haber sido ocultado con el script de ocultación

El código del script que oculta el mensaje

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Busqueda en un archivo de los caracteres contenidos en un texto, el limite en donde se buscará los caracteres es la posición hexadecimal ffff del archivo. El archivo original no se varia, se crea uno nuevo con la misma extensión y direfente nombre, que incluirá las direcciones en donde se encuentan cada uno de los caracteres que componen el texto de manera ordenada.
import os
print(" " * 20,"*" * 50,"\n")
print(" " * 25,"Oculta Mensaje en Archivo\n")
print(" " * 20,"*" * 50,"\n")

# cadena guardará el contenido del archivo en ascii
# mensajeTotal guardará todas las posiciones en donde se encuentran los caracteres de la frase ordenados
cadena = ""
mensajeTotal = ""

# variables para controlar errores
okv = True
okp = True

# se determinan los archivos a utilizar
original= input("Ruta del Archivo Original ")
copia = input("Ruta del Archivo que Ocultará el mensaje ")
frase = input(" Texto a ocultar ")
file = open(original, "rb")
contenido = file.read()

# variables para controlar la posicion en el archivo y el orden del caracter buscado
pos = 0
j = 0

# comprobamos que no existe x0x, que se utilizará para indicar posteriormente el inicio de el texto oculto mediante esteganografía
for i in contenido:
    cadena += chr(i)
for i in range(len(cadena)):
    if ( cadena[i] == "x" and cadena[i+1] == "0" and cadena[i+2] == "x"):
        okp = False
os.system('clear')

# buscamos caracter a caracter su posición en la variable cadena (contenido original del archivo)
for i in cadena:
    while (j < len(frase)):          if (cadena[pos] == frase[j]):             # si esta en una posicion superior a 0xffff se cancelará el proceso             if (pos > 0xffff):
                okv = False
            # creamos el mensaje que determina la posicion en la que se encuentra el caracter   
            previo = str(hex(pos))
            previo = previo[2:]
            while (len(previo) < 4):
                previo = "0" + previo
            mensaje = "x0x"+ previo
            # añadimos mensaje al mensajeTotal
            mensajeTotal += mensaje
            j += 1
            pos = 0
        pos += 1
    # comprobamos que se han encontado todos los caracteres    
    if (j < len(frase)):         okp = False          file.close() # si una o las dos son falsas el proceso ha sido cancelado if (okv == True and okp == True):     file2 = open(".mensajeTotal.txt","w")     file2.write(mensajeTotal)     file2.close()     os.system("cat "+original+" .mensajeTotal.txt > "+copia )
    print("Proceso Finalizado ")
else:
    print("Proceso Cancelado elija otro archivo")

El código del script que lee el mensaje

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
print(" " * 20,"*" * 50,"\n")
print(" " * 25,"Muestra Mensaje Oculto\n")
print(" " * 20,"*" * 50,"\n")

# Lectura de un archivo en el que se ha ocultado un texto mediante esteganografía

# cadena guardará el contenido del archivo en ascii
cadena = ""
original= input("Ruta del archivo a leer ")
file = open(original, "rb")
contenido = file.read()

for i in contenido:
    cadena += chr(i)
os.system('clear')

pos = 0
j = 0
letra = ["","","","",""]
mensaje = ""

# guarda 4 posiciones a partir de la secuencia de control x0x
for i in range(len(cadena)):
    if(cadena[i] == "x" and cadena[i+1] == "0" and cadena[i+2] == "x"):
        control = 0
        letras = ""
        for j in range(i+3,i+7):
            letra[control] = cadena[j]
            letras += letra[control]
            control += 1
        # convierte de hexadecimal a decimal    
        pos =int(letras,16)    
        mensaje += cadena[pos]
        
print(mensaje)        
file.close()

Sound Branding

Una identidad de sonido corporativa o de marca puede manifestarse en forma de: una banda sonora, sonido ambiental, sonido relacionado con el diseño del producto, sonidos de señal, un logotipo de sonido o una firma de sonido.

Todas las formas de identidad de sonido mencionadas pueden estar diseñadas para reflejar la identidad de la compañía o marca, y todas pueden estar protegidas por derechos de autor.

Demos para la Ensolab 2018

Del 25 al 27 de octubre empiezan los ciclos de masterclass, talleres y conciertos. Ensolab. Organizado con la intención de fomentar la cultura audiovisual avanzada y de vanguardia en la ciudad de Alicante, se llevará a cabo un ciclo de masterclass y workshop impartidos por prestigiosos profesionales del sector con la intención de formar a músicos, productores y público interesado en producción musical, programación, música e imagen.

Enlazo dos breves vídeos de Música algorítmica, realizada con sonic pi y el sintetizador zynaddsubfx