Importancia de la seguridad-informática para los Derechos en Internet

in #spanish3 years ago (edited)

photo-1519389950473-47ba0277781c.jpg

Por increíble que parezca, estamos viviendo un mundo que se acerca cada vez más a la industria 4.0, donde los nómadas digitales serán algo común y la tecnologías de Internet e interfaces humano-maquina serán algo fundamental para todos en general. El año 2018 es el año más significativo que jamás haya transcurrido, en éste año se está cambiando la historia con: Inteligencia Artificial, Cifrado Cuántico, Blockchain, Impresión 3D, IoT y nuevas consciencias sociales, entre muchas otras cosas.

Pero entre todas esas cosas nuevas y novedosas... ¿Qué cosas son las cruciales que todos deberíamos saber para defender nuestros derechos en ese contexto?

photo-1528642474498-1af0c17fd8c3.jpg

Con el Experimento de Satoshi Nakamoto se supo que hay "personas" o quizá organizaciones que usan herramientas matemáticas adelantadas por añosde todo el público en general, e incluso se supo que hacen lenguajes nuevos con fines de probar romper/mejorar la seguridad de los sistemas. ¿Y las de los demás?
Por eso, hay un principio sobre el cual debemos hacer conciencia, para empezar: La criptografía

SHA Collisions



photo-1520121843168-25f75bb5c99a.jpg

La falta de seguridad que ofrece Internet es una de las principales razones por los que esta técnica ha incrementado su presencia en la actualidad. Se usa desde aplicaciones como encriptación para enviar archivos, guardar contraseñas etc.
Gracias a éstas soluciones en la matemática han podido aparecer actores como Wikileaks, que es un difusora de documentos filtrados que revelan cientos de miles de informes sobre diferentes aspectos de la diplomacia norteamericana y del mundo mostrando en su mayoría abusos de poder y corrupción.
Ok entonces éste tipo de funciones encriptan…Qué¿?

SHA es una manera de codificar la información para protegerla frente a terceros.
Para poder desencriptar el mensaje encriptado, será necesaria la clave que sólo conoce el receptor autorizado. Y solamente a través de ella es como se puede leer y conocer el contenido original.
La principal preocupación de estas entidades es que lleguen los mensajes enviados, única y exclusivamente, a los receptores que ellos quieran.
Estas propiedades tienen aplicaciones de seguridad como la libre colisión, que quiere decir que si se toma dos entradas diferentes, es imposible que el hash de la primera entrada, sea igual al hash de la segunda entrada, osea, es prácticamente imposible encontrar dos valores ‘a’, ‘b’ , tal que a ≠ b, al mismo tiempo que H(a)=H(b)

Con éstos básicos, podemos ver claramente que el "SHA" (Secure Hash Algorithm, Algoritmo de Hash Seguro) es una familia de funciones hash importante y que se ha usado para la seguridad de los sistemass de todo el planeta. Posteriormente se han publicado mejoras como SHA-2 en 2001, SHA-3 etc.

Y como es de esperarse, a lo largo de su historia, se han producido ataques a estas familias:
En 2004 se encontró una debilidad matemática en SHA-1, que permitiría encontrar colisiones de hash más rápido. Sin embargo, este hallazgo resulta poco relevante, pues la complejidad de búsqueda de colisiones algo que aún es computacionalmente inviable.
Pero....el 23 de febrero de 2017, un equipo formado por Google y CWI Amsterdam anunció la primera colisión de SHA-1, la cual ha sido nombrada como SHAttered. Rompiendo para siempre dicho algoritmo.


2018-09-12 14-35-57.png

Algo más reciente y por la cual se está volviendo tan necesario éstos conceptos es por Blockchain y su prometedora gama de opciones con Smart Contracts. En éste sentido, Ethereum tiene la ventaja tecnológica, un ejemplo de éste panorama de seguridad para la libertad es The DAO. El caso cuando un hacker logro sacar la cifra de 150 millones de dólares utilizando el envío recursivo de Ethereum.
Esta hazaña no es trivial; se pretendía hacer con anterioridad un cambio en el lenguaje, pero mientras se escribía de eso, el hacker estaba preparando e implementando una hazaña que apuntaba a la misma función para hackear al proyecto de Crowdfunding más fondeado de toda la historia. (En su momento)

Vamos a entrar en la vista general del ataque. El atacante estaba analizando DAO.sol, y notó que la función 'splitDAO' era vulnerable al patrón de envío recursivo.
Osea, actualizaba los saldos de los usuarios y los totales al final y mientras eso pasaba, cualquiera de las llamadas de función podría ocurrir como llamar a splitDAO de nuevo, obteniendo el retiro "infinita".

Contratos Inteligentes en Solidity y pruebas seguras

¿Cómo hacer pruebas de seguridad en smart contracts?

Hoy en día hay muchas soluciones de seguridad y nos parece fundamental distribuirlas en la comunidad.

¿Qué pasa en tu stack cuando algo inesperado pasa? Es decir, qué sucede cuando tienes inputs inválidos, o se tienen que procesar números tan grandes que son procesados incorrectamente dentro de Solidity.
Un ejemplo de eso es multiplicar números tan grandes entre sí mismos que no quepan en 256 bits (overflow).
Entre los patrones de programación con éstos fines podemos notar muchos contratos abstractos que usan Callfunctions y para entrar en una aserción (assertion) que simplemente te regresa "false" en lugar de ejecutar de formas inesperada nuestro código.

  pragma solidity ^0.4.19;
   // Tenemos que especificar qué versión del compilador compilará este código

  Library SafeMult {
        function mul(unit256 _a, unit256 _b) internal pure returns (uinnt256) {
              if (_a ==0)  {
              return 0;
              }

              uint256 c  = _a * _b;
              require(c / _a == _ b);

              return c;
        }
  }

Opción:

Contratos Proxy

  pragma solidity ^0.4.18;
  // Tenemos que especificar qué versión del compilador compilará este código
        import "./SafeMult.sol";
  
        contract SafeMultProxy {
        using SafeMult for uint;
        
        function mulProxy(uint256 a, uint256 b) returns (uint256) {
              return a.mul(b);
              }

        }

Recientemente el ide de ethereum añadió una función interesante para hacer units tests con éste fin.

Una propuesta sería para dichos tests:

  pragma solidity ^0.4.18;
  import "./SafeMultProxy.sol";
  
  contract SafeMultProxyTest {
        SafeMultProxy safemultproxy;
  
  function beforeAll() {

  safemultproxy = new SafeMultProxy();
  }

  function Overflow ()public constant returns (bool) {

        uint256 a = 4;
        uint256 b = 2 **256 - 1;
        return Assert.equal {
              a * b,
              2 ** 256 - 4,
              "Not overflow? Wut?"
        };
        }
        //¿Se está ejecutando?
        function Overflow() public constant returns (bool){
        uint256 a = 4;
        uint256 b = 2 **256 - 1;
        return Assert.equal {
                    false
                    Norevert
         }
              }
    }

Para que puedas así hacer pruebas sobre cada pequeño aspecto en tus smart contracts (unit tests) y tengas noción de cómo es un ataque en algo tan trascendente como un smart contract en Solidity.


ERC20 y Beneficios de conocer éstos datos

Para éstos mismos propósitos de seguridad, el estándar ERC-20 se ha popularizado porque se beneficia de la infraestructura existente de Ethereum en lugar de tener que construir una arquitectura completamente nueva y segura.
También, éste standard de seguridad homogeniza la red de Ethereum y se pueden hacer componentes más uniformes y analizar la escalabilidad de forma segura.

photo-1520881363902-a0ff4e722963.jpg

Seguridad en otros sistemas

Entre otras de las consideraciones básicas que deberían popularizarse está la seguridad del protocolo SSL (Secure Sockets Layer)
Los fallos de seguridad van desde, exploits o debilidades en el diseño, Malware con Criptoanálisis, ataques de OCSP, etc.

Ejemplo:
En el año 2008, Luciano Bello (investigador) descubrió problemas en las funciones aleatorias de Openssl. Esto facilitó invertir procesos aleatorios, falsificar certificados, flasificar claves SSH, etc.
Y ésto es crucial porque muchos (muchísimos sistemas importantes) usan Linux hoy en día.

Notas

Concluimos que con éstos conocimientos básicos de cómo funciona la tecnología de información, podemos:

  • Proporcionar defensa para nuestros sistemas y la de los demás.

  • Podemos defender a los individuos interesados en éstos temas y las nuevas tecnologías y refutar amenazas legales infundadas o mal dirigidas.

  • Podemos proporcionando asesoramiento al gobierno y a las empresas sobre seguridad.

Pero lo más importante es que podemos comunicar a más personas éstos detalles técnicos para que haya más gente apoyando tecnologías nuevas que ayudan a preservar las libertades individuales. (como Ethereum, la criptografía, SSH, etc)

Atte. ConnectUS

ship-military-wallpaper-full-hd-1920x1080-495330.jpg

Referencia 1

Referencia 2

Referencia 3

Referencia 4

Referencia 5



gold+scales.jpg

Discord Server

-ConnectUS Network-
Red de valor tecnológico





Sort:  

Congratulations @connectus! You received a personal award!

2 Years on Steemit

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!