¿Qué significa cuando los datos están ocultos?

Datos

Eso es esencialmente encapsulación, es poner algunos datos entre los marcadores que vienen antes y después.

Cifrar significa tomar un poco de datos y mezclarlos de tal manera que puedas o no puedas descifrarlos o volverlos a otra forma.

Por ejemplo, cuando ingresa su contraseña en el cuadro de inicio de sesión de un sitio web, no transmite (o no debe) su contraseña, sino una versión cifrada de su contraseña.

Digamos que mi nombre de usuario de google es rzook y mi contraseña es: Eye * fall0! Gut & PWD $ stdz

Cuando me registré en google, no almacenaron la contraseña que ingresé. Se almacenan una versión encriptada de la contraseña, algo que es similar al siguiente: 01000000d08c9ddf0115d1118c7a00c04fc297eb01000000f4c17fbc567e5d4fb7a046f4e8f0531f0000000002000000000003660000c0000000100000008a7009788e571c942dd31c14fc352d5e0000000004800000a0000000100000009979abaadb2426387452dbbe92c6857630000000bbd08fd20611de54121ab6e4bfc95ab3057dbd10b96e13ff45f6ed62591372558c8f78fa977e8e6b06459dfd9a6690db14000000c41ccebf40c275b8eeda539c9d645907fbe33d1d

Y lo asoció con mi nombre de usuario. Y cuando el cliente del navegador se conecta (con suerte a través de SSL usando el último TLS más grande) debería enviar esa cadena larga y grande y mi nombre de usuario a google. Y Google buscará mi nombre de usuario y coincidirá con el texto cifrado enviado con el texto cifrado que almacenó anteriormente cuando me registré. Si coinciden, Google me permite iniciar sesión en mi Gmail o en cualquier aplicación de Google.

Ese también es un método que usa encapsulación. Cuando el navegador transmite mi contraseña cifrada a través de SSL (es decir, https : //mail.google.com vs http : //mail.google.com), cifra mi contraseña cifrada utilizando otra forma de cifrado. Una forma de encriptación utilizada entre navegadores como Firefox y servidores web como mail.google.com.

Así que también es una forma de ocultar datos. La contraseña real está oculta, de google, y de miradas indiscretas de personas que intentan interceptar mi conexión a google y enganchar mi contraseña.

Si no dejo que el navegador guarde el texto de la contraseña, solo yo sé mi contraseña. El código de inicio de sesión de Google que se ejecuta en el navegador solo lo ve en la memoria de la computadora cuando se ingresa y luego se cifra. No se envía a google, solo la versión encriptada.

Debido a que el cifrado es solo de una manera, no se puede descifrar, excepto por una gran cantidad de potencia informática durante un largo período de tiempo, con suerte prácticamente nunca.

Funciona porque el código de inicio de sesión del cliente en su navegador sabe cómo cifrar las contraseñas de la misma manera que el código de registro de usuario de Google que se ejecuta en los servidores de Google sabe cómo cifrar las contraseñas. Debido a que lo hacen de la misma manera, la contraseña se convierte en el mismo conjunto de bits cifrados exactos.

Entonces, incluso si alguna organización poderosa intercepta mi tráfico de red encriptado, tal vez porque son un gobierno represivo que quiere leer los correos electrónicos de todos. Primero tienen que romper los paquetes SSL encriptados, que encapsulan mi contraseña encriptada. Si de alguna manera logran hacer eso, entonces tienen que encontrar mi contraseña encriptada e intentar descifrarla.

Ambas cosas son muy difíciles de hacer, por eso los hackers no intentan hacerlas. En cambio, te engañarán para que instales un programa en tu PC. Ese programa intentará romper el navegador o el sistema operativo de tal manera que el código furtivo que se ejecuta en mi computadora pueda alcanzar el máximo en la contraseña de texto claro que el navegador almacena brevemente en mi memoria.

Seguridad significa estar libre de una amenaza. Una de las formas en que puede hacer que algo esté libre de amenazas es ocultarlo. Si alguien no sabe dónde buscar, es más difícil encontrarlo. Cifrar datos es una forma de ocultarlos, lo que dificulta su búsqueda.

Si quiero almacenar datos secretos comerciales sobre mi proceso de fabricación súper rápido para crear los más deliciosos dulces EVUH! Entonces tengo que esconderlo. Tengo que esconderlo de otros fabricantes de dulces lo suficientemente poco ético como para hacer un poco de espionaje industrial. Lo esconderé, así que solo yo sé dónde lo escondo. Lo pondré en un contenedor encriptado dentro de otro contenedor encriptado que no parece estar encriptado.

Podría utilizar un software llamado VeraCrypt, y crearé un archivo encriptado especial que pueda montar en mi computadora como si fuera otro disco duro. No es realmente una unidad, es un archivo cifrado que VeraCrypt hace que parezca una unidad. Solo puedo acceder a los datos si los abro con VeraCrypt. Ejecutará un código que me permite usar el Explorador de Windows para ver la unidad y abrir archivos allí. Tengo que darle a VeraCrypt una contraseña especial para abrir esa unidad.

Pero dentro de esa unidad cifrada hay un volumen oculto más pequeño, que es otro archivo cifrado que puedo abrir y usar como una unidad. Pero para llegar tengo que escribir una segunda contraseña.

En mi disco cifrado externo, pongo documentos falsos que describen una versión falsa de mi proceso de caramelo súper elegante, pero pongo los reales en el volumen oculto. Nunca hablo del volumen oculto. Nunca menciono que hay una segunda contraseña. Nadie tiene ninguna razón para sospechar que tal cosa existe.

Si algún agente de espionaje de la compañía Candy roba mi computadora, podrían abrir el archivo .hc que contiene el proceso de falsificación de dulces. Pero ni siquiera sabrán buscar el volumen oculto.

Al menos en teoría. En la práctica, por cada intento de ocultar algo, a alguien inteligente se le ocurrirá una contramedida. Entonces la seguridad viene en capas. Comenzando con labios con cremallera. No hable sobre su seguridad con personas en las que no confía. Intente no hablar de seguridad incluso con personas en las que confíe, a menos que sea absolutamente necesario.

Los piratas informáticos generalmente no obtienen contraseñas con virus o computadoras súper potentes para descifrar archivos cifrados. Caminan directamente a través de sus capas de seguridad como alguien que se supone que debe estar allí, y tratan de tomar lo que quieren a la vista.

El programa de televisión Mr. Robot hace un gran trabajo al mostrar cómo sucede eso.

TL; DR – está encapsulado – los datos ocultos son más difíciles de buscar, porque primero tienes que averiguar dónde mirar – la seguridad significa estar libre de amenazas, pero viene en capas, la primera de las cuales eres tú – No hable sobre sus prácticas de seguridad con nadie.

La gente usa el término ocultar, pero en realidad no se trata de ocultar datos o código.

Lo primero sobre la encapsulación es controlar cómo se colocan los datos en el objeto, cómo se extraen del objeto y cómo se usan dentro del objeto. Digamos que tengo un número entero que representa la cantidad de elementos de un determinado producto. Si deja ese número en público, cualquiera puede editar el número sin cambiar también los datos asociados que también deben modificarse, como las tablas de bases de datos asociadas o eliminar el elemento de una lista de elementos disponibles. Si se diseña correctamente, debe evitar errores causados ​​por el acceso incorrecto a métodos o propiedades que no se han inicializado correctamente y evitar errores causados ​​por la manipulación inadecuada de datos. ¿Esto impide que alguien edite su código? Generalmente no, pero el desarrollador que usa su clase tiene que tomar una decisión consciente de ingresar a su clase y cambiar el código. Es menos probable que otros desarrolladores lo hagan si su clase está bien escrita y correctamente encapsulada.

La segunda razón para una buena encapsulación es, digamos, que creas este objeto realmente importante. Está bien escrito y está en el código de producción y todos adoran la forma en que funciona, pero a usted le corresponde actualizarlo para agregar algunas características nuevas que mejorarán el rendimiento. Con la encapsulación siempre y cuando no cambie la interfaz, es decir, cómo coloca las cosas en la clase y cómo las saca, puede cambiar cómo funcionan las cosas dentro de la clase sin afectar a otros que pueden estar usando la clase que no funciona. No necesito las nuevas funciones.

En mi opinión, la razón principal para la encapsulación no se trata tanto de ocultar propiedades y métodos, sino más bien de guiar a otros desarrolladores a usar su objeto correctamente y minimizar los errores.

Ocultar cosas es útil cuando hay alguien de quien esconderlo, y creo que esa es la parte que está causando tus dificultades.

Casi nunca sucede que un solo individuo escriba el cien por ciento del código en un proyecto. En el 99.999% de los casos, es un esfuerzo grupal.

Incluso si está solo en la ISS programando un brazo robótico para remover su café, o lo que sea que programen allí, necesita cosas que otros programadores hayan hecho previamente.

Ahora, cuando escribes código que será utilizado por otra persona, la programación orientada a objetos te brinda algunas herramientas, y una de estas herramientas es la encapsulación. Esto le permite pensar y decidir: “Quiero permitir que quien use mi código acceda solo a este bit aquí y este bit allá, para que el funcionamiento interno de mi código permanezca inaccesible”.

¿Es esto más seguro? Bueno, de manera teórica. Si deja las cosas peligrosas a la vista, muy pronto alguien lo jugará y romperá algo.

Y luego, te culparán. “No es mi culpa” , dirán. “Acabo de usar el código de Alec. No es mi culpa que llamar a esta función con un parámetro de ese tipo haga que se bloquee todo el servidor. No escribí la función, ¿verdad?

¿Tendrá la oportunidad de decir “pero espere, esa función nunca tuvo la intención de tomar parámetros de ese tipo” ? No.

Pero hay más.

Digamos que su código necesita resolver un problema manejando cierta información confidencial, como los datos de la tarjeta de crédito. Digamos que no usas OOP; los datos yacen en la memoria de la computadora. Cualquiera puede simplemente leer esa variable y guardarla en un archivo para cuando tenga ganas de comprar algo caro en Amazon, ¿verdad?

Con OOP puedes simplemente hacer que esos datos sean privados; entonces, si alguien lo solicita, su idioma se negará cortésmente a proporcionarlo.

¿Es suficiente? No lo es. Si las personas tienen acceso a su código (como es el caso, por ejemplo, con todo el código de código abierto que hace que este mundo gire), pueden editarlo, sobrecargar sus clases, sobrescribir sus métodos o muchas otras cosas malas.

Pero eso requiere un esfuerzo dedicado para ser malvado. No es solo tomar algo que está ahí afuera; está cavando y entrando en el código, y robando. Puede ser, de hecho, francamente ilegal.

Todo esto es teórico y tal vez difícil de entender sin algunos ejemplos del mundo real, para los cuales uno necesitaría saber el idioma de su elección.