¿Cómo maneja Oracle el secreto de TLSnotary?

Oraclize afirma ofrecer una recuperación segura y demostrablemente honesta de una página web aprovechando TLSnotary (un servicio que permite a un auditor verificar si una página web específica se recuperó con precisión)

El propósito de Oraclize parece ser hacer que esta información esté disponible para los contratos inteligentes.

Pero, según tengo entendido, el único factor que mantiene segura la prueba notarial de TLS es que la persona que realiza la auditoría genera y retiene un dato secreto hasta que la persona auditada les proporciona el hash de la página web recuperada. Obviamente, un contrato no puede generar y retener un secreto. ¿No significa esto que el contrato en sí no puede verificar la prueba del notario TLS?

Parece que se necesita alguna aclaración sobre cómo Oraclize está manejando exactamente el secreto de notario de TLS.

Oraclize también parece ofrecer una herramienta web que le permite desempeñar el papel de auditor. ¿Pueden varias personas auditar la misma prueba de TLSnotario en paralelo? Y supongamos que de alguna manera me las arreglo para atrapar a Oraclize haciendo trampa. ¿Cómo puedo demostrar esto a un tercero?

En términos más simples, ¿cuánto puedo confiar en el servicio de Oracle?

No tome mis preguntas a mal: estoy muy entusiasmado con la idea de que los oráculos realmente prueben sus afirmaciones. ¡Solo me gusta hacer preguntas difíciles!

¿Cómo se compara esto con capturas de pantalla/registros creados por icanprove.de?
solo quiero señalar a towncrier que hace lo mismo desde un enclave SGX.

Respuestas (3)

Oracle almacena el secreto de notario de TLS en una máquina virtual de Amazon Web Services (AWS) .

Usando las técnicas descritas aquí , pueden proporcionar algunas garantías adicionales con respecto al software que se ejecuta en la instancia de AWS y cuándo/si se ha modificado desde que se inicializó. Las "pruebas de honestidad" que brindan (y le permiten verificar con su herramienta web ) son las certificaciones firmadas de esta instancia de AWS de que se produjo una prueba de notario de TLS adecuada (en lugar de la prueba de notario de TLS en sí, que sería imposible para un tercero). para verificar después del hecho).

Probablemente sea difícil para el usuario promedio entender lo que esto significa en términos de seguridad y confianza, así que permítanme elaborar un poco sobre las implicaciones de seguridad de esta técnica.

Principales ventajas del enfoque de Oraclize:

  • Al involucrar a un oráculo de AWS , Oraclize ha hecho más difícil que su servicio de recuperación de datos mienta sobre el contenido de una página web. Por lo tanto , este enfoque es ligeramente mejor que un servicio de Oracle puramente confiable .
  • Además, alguien que compromete el contrato inteligente de Oraclize no obtiene automáticamente la capacidad de falsificar resultados (con la mayoría de los servicios de Oracle, comprometer la clave o el contrato inteligente le permitiría falsificar resultados arbitrarios)
  • Finalmente, verificar la firma del oráculo de AWS es una operación computacional comparativamente "barata", por lo que las "pruebas de honestidad" de Oraclize podrían verificarse en cadena siempre que el contenido notificado por TLS sea lo suficientemente breve (como una llamada a la API).

Principales desventajas del enfoque de Oraclize:

  • El propio Amazon, o cualquier persona capaz de piratear/ordenar la plataforma AWS de Amazon, puede obtener la capacidad de falsificar las "pruebas de honestidad" robando la clave privada del oráculo de AWS . Sin embargo, esta entidad probablemente también tendría que obtener el control del servidor API de Oraclize y/o el contrato inteligente si quisiera romper las aplicaciones basadas en el servicio de Oraclize.
  • Si atrapa a alguien falsificando pruebas de Oracle, no hay forma de demostrárselo a nadie a menos que usted mismo pueda obtener la clave privada de AWS Oracle. Para mayor claridad: si recupera algunos datos de Oraclize y obviamente son incorrectos, no hay forma de que el público sepa si el servidor o el servicio de Oraclize es la fuente del problema. Cualquiera puede culpar al otro.
  • No olvide que al recuperar una página web a través de un oráculo, todavía está permitiendo que el servidor web responda con lo que quiera . Entonces, para los atacantes de terceros, probablemente sería mucho más fácil comprometer el servidor cuando desea romper una aplicación que usa Oracle (es decir, el sitio web de intercambio si una aplicación lo usa a precios de mercado). Con este punto (y el anterior) en mente, es mucho menos complicado conseguir que el proveedor de información sea el oráculo . Se debe pensar en Oraclize como una alternativa para recuperar información de fuentes que no conocen la cadena de bloques. Las fuentes conscientes de Blockchain deberían simplemente firmar su información directamente.
  • En muchas situaciones de recuperación de información (donde solo dos partes están involucradas), tendría mucho más sentido que las propias partes de la transacción actuaran como cliente y auditor en la prueba notarial de TLS . Esto le brinda todas las garantías de Oraclize sin ninguno de los riesgos adicionales.

Cosas que Oraclize puede hacer para mejorar:

  • ofrecen una gran recompensa en cadena por la recuperación exitosa de la clave privada de su AWS Oracle.
  • asegúrese de que su código de AWS Oracle esté reforzado contra ataques de canal lateral de vm (es decir, las operaciones de firma son todas de tiempo y memoria constantes, etc.)
  • configure varias páginas https estáticas simples y ofrezca una gran recompensa en cadena que paga a cualquier dirección recuperada de esas páginas a través de la API de Oraclize. Esta sería una apuesta simultánea en su nombre contra el compromiso de los mecanismos de prueba de Oraclize y contra la posibilidad de que los atacantes comprometan un servidor ejecutado por Oraclize.

tl; dr:

Oraclize es mejor que nada para recuperar contenido de una página web HTTPS. Probablemente sea lo mejor que podemos hacer en este momento para hacer afirmaciones públicas sobre el contenido de las páginas web seguras. Pero no debe considerarse una solución final o completamente segura para la recuperación de contenido web. En muchos casos, hacer que sus aplicaciones usen TLSnotary es estrictamente superior a usar Oracle. ¡Y tener un proveedor de información que firme su contenido directamente es superior a ambos en todos los casos! Oraclelize es un paso adelante decente, pero no es la solución final . ¡Tenga cuidado de usar su servicio de una manera adecuada al nivel de riesgo de su aplicación!

La forma en que me explicaron el notario de TLS (por el autor en IRC) fue que el tercero debe conservar los datos para evitar que la fuente manipule sus datos y haga parecer que los datos capturados no son auténticos. En otras palabras, un mentiroso "¡Yo nunca dije eso!" de la gente de alojamiento web.

En realidad, es seguro porque es como cuando navega a un sitio seguro HTTPS, puede ver que es una empresa X (si inspecciona los certificados). ¡TLS Notary es esencialmente capaz de registrar esos bytes de tal manera que pueda reproducirlos más tarde para que pueda autenticar los bytes nuevamente! muy ingenioso (Pero la matemática de cómo hace esto en el documento técnico está por encima de mi cabeza. https://tlsnotary.org/TLSNotary.pdf )

Sí, esta es una buena explicación de hecho. La prueba TLSNotary se guarda en IPFS y la prueba ipfs multihash son los datos que se devuelven al contrato. Esto significa que al observar la red Ethereum puede obtener todos los hashes de las pruebas y luego obtener las pruebas reales a través de IPFS y verificarlas: esto es exactamente lo que hace nuestro monitor de red . Si desea comprender mejor cómo funciona TLSNotary, le sugiero que vea este excelente video explicativo .
Vi el video, pero todo lo que hizo fue confirmar que mi comprensión es correcta. La prueba TLSnotary es una prueba interactiva . No hay forma de verificar la prueba notarial de TLS a menos que esté desempeñando el papel de auditor durante la recuperación. Alguien que venga más tarde no tiene forma de verificar que el secreto de notario de TLS se retuvo realmente hasta que se recibió el hash. Dado que noté que está conectado con el proyecto, ¿hay alguna posibilidad de que pueda aclarar en una respuesta cómo exactamente Oraclize maneja el secreto durante y después de la generación de la prueba TLSnotary?
@JeffColeman: de acuerdo con los documentos y mi comprensión de cómo funciona, es posible verificar la prueba de tlsnotary después de la recuperación ( tlsnotary.org/wp/?p=27 , busque "este archivo se valida automáticamente). Es parte del protocolo que el tlsnotario no le da el secreto al auditado hasta que el auditado se haya comprometido a recibir la prueba del tlsnotario firmada por el servidor del tlsnotario.
El "servidor notario ciego" descrito en el documento es una parte confiable . Simplemente termine la cita: "este archivo se autovalida, suponiendo que confíe en la clave pública utilizada para hacer las firmas (que es la clave pública del servidor del notario, por supuesto)". Todo lo que hace ese archivo es sugerir una forma de hacer que Amazon sea la parte confiable en lugar de las personas notarias de TLS. En otras palabras, parece que la respuesta a mi pregunta anterior es "Una instancia de Amazon AWS está en posesión del secreto de TLSnotary". Alguien tiene que guardar el secreto.
@ThomasBertani, ¿hay alguna posibilidad de que podamos obtener una respuesta directa de Oraclize a esto? Lo dejaré por un par de días para darle una oportunidad antes de completar lo que infiero de las diversas documentaciones.
@JeffColeman: el servidor de notario que estamos usando en este momento (pronto cambiaremos a nuestras propias instancias de AWS Oracle) es el notario predeterminado tlsnotarygroup1, que es un "AWS Oracle", como se describe aquí . Por lo tanto, nadie tiene acceso al secreto, ya que puede verificar fácilmente de forma independiente siguiendo estas instrucciones y echando un vistazo al código real para pagesigner-oracles.

Como @JeffColeman mencionó en un comentario, TLSnotary es un protocolo interactivo, el auditor debe mantener en secreto una parte de la clave maestra para que funcione toda la solución. Porque si el auditado conoce la clave maestra completa, el auditado podrá calcular la clave HMAC del servidor y luego podrá modificar cualquier cosa simplemente regenerando un nuevo HMAC.

Pero para Oracle, son básicamente tanto auditor como auditado. Entonces, el problema es: ¿cómo puedo estar seguro de que el auditor y el auditado no están en connivencia, es decir, Oraclize no está haciendo trampa?

En general, es extremadamente difícil demostrar que el auditor y el auditado se han coludido. Porque para probar que hicieron trampa, tenemos que probar que el auditado ya conocía la parte secreta de la clave maestra durante la transmisión. Y debido a que el secreto finalmente se publicará (porque lo necesitamos para realizar la verificación), ¿cómo podemos saber en qué momento el auditado conoció el secreto?

Oracle resuelve este problema ejecutando el auditor en AWS y publicando el código y la información de tiempo de ejecución del auditor al público para que pueda verificar la integridad del entorno del auditor. Si bien es relativamente fácil detectar cambios , a menos que realmente audite el código fuente y la configuración de todo el entorno, aún es difícil asegurarse de que el auditor solo esté haciendo lo que se supone que debe hacer y nada más (sin errores, sin asunto previsto o no). Es por eso que solo dijimos que probablemente sea honesto .