Design: La codificación binaria wasm ilegible tiene ventajas

Creado en 22 abr. 2017  ·  6Comentarios  ·  Fuente: WebAssembly/design

Acabo de mirar brevemente el proyecto de hoy y estoy muy interesado en usarlo en el trabajo de desarrollo general.

Sin embargo, si el resultado final significa que un usuario final que ejecuta wasm en el navegador de su cliente puede acceder a un código legible por humanos, esta es una oportunidad perdida.

No hay ninguna razón para proporcionar al usuario final esta función: un desarrollador puede tener acceso a ella a través de archivos de mapas o algún mecanismo similar que requiera la fuente original.

Si bien es imposible disuadir al determinado de descompilar/revertir la ingeniería de un producto, es útil tener cualquier elemento disuasorio (si desea regalarlo, incluya la fuente/un enlace). Si el esfuerzo/riesgo de robar supera el costo de la licencia legal. etc etc etc

El elemento adicional de seguridad IP al no proporcionar legibilidad probablemente fomentaría una adopción más amplia/rápida (para mí es una completa obviedad).

Por otro lado, si no hay ningún beneficio de seguridad... entonces con motores hw/js más rápidos con el tiempo, volver a C/C++ y mantener un conjunto de habilidades ampliado no parece tan atractivo.

Considere NO proporcionar un mecanismo para hacer que la codificación binaria wasm sea legible. Alguien más lo hará eventualmente de todos modos; mientras tanto, use los recursos en otro lugar y déjenos disfrutar de una corta era de código del lado del cliente ininteligible.

Beto.

Comentario más útil

Prohibir binario a alguna forma de fuente legible por humanos no es algo que WebAssembly pueda prohibir. Cualquiera puede implementar lo suyo, por bonito/legible que sea. En cambio, el grupo se preocupa por especificar un formato portátil, eficiente en tamaño y tiempo de carga, adecuado para la compilación en la web.

También nos preocupa hacer que algo se pueda usar, por lo que estamos especificando un formato de texto de bajo nivel y probablemente trabajaremos en las capacidades de depuración.

No es un objetivo garantizar ninguna protección legal a favor o en contra de la descompilación, la ingeniería inversa u otras preocupaciones no técnicas. Esto se deja en manos de sus propios abogados, e insto a los que no son abogados a evitar la especulación. No queremos estar en el negocio de brindar asesoramiento legal.

¿Parece que la discusión previa aborda su pregunta? Cerraré, siéntase libre de reabrir o continuar discutiendo si no.

Todos 6 comentarios

Las versiones más recientes de Chrome ya son capaces de convertir WASM binario en un formato de texto.

¿Estás diciendo que puedo ir desde (siguiendo tomado de la entrada de wikipedia)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7d
10 00
7e
0b

para

int factorial(int n) {
si (n == 0)
devolver 1;
demás
devuelve n * factorial(n-1);
}

o reconocible como tal usando cromo como está?

No, devuelve el formato "WAST" aún no especificado formalmente que se describe aquí: http://webassembly.org/docs/text-format/ .

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

Web Assembly está optimizado para un formato binario pequeño, fácil y rápido de analizar. No retiene suficiente información para recuperar completamente la sintaxis original. Cuanto más grande y compleja sea la función, menos reconocible será la descompilación. Esto es especialmente cierto si observa cómo se manejan las estructuras, las clases, las plantillas y otras características de nivel superior.

Excelente (Esa es la "representación intermedia" que figura en el artículo de wikipedia). Pensé que estabas sugiriendo que ya podría "embellecerse" aún más. Preferiría que no pudiera ser (listo para usar).

Y preferiría que todo estuviera hecho/no hecho y diseñado para que siga siendo así.

(Tuve la impresión de que había un plan para finalmente poder traducirlo de nuevo a un pseudocódigo razonable, aunque sin identificadores significativos, en el navegador).

Prohibir binario a alguna forma de fuente legible por humanos no es algo que WebAssembly pueda prohibir. Cualquiera puede implementar lo suyo, por bonito/legible que sea. En cambio, el grupo se preocupa por especificar un formato portátil, eficiente en tamaño y tiempo de carga, adecuado para la compilación en la web.

También nos preocupa hacer que algo se pueda usar, por lo que estamos especificando un formato de texto de bajo nivel y probablemente trabajaremos en las capacidades de depuración.

No es un objetivo garantizar ninguna protección legal a favor o en contra de la descompilación, la ingeniería inversa u otras preocupaciones no técnicas. Esto se deja en manos de sus propios abogados, e insto a los que no son abogados a evitar la especulación. No queremos estar en el negocio de brindar asesoramiento legal.

¿Parece que la discusión previa aborda su pregunta? Cerraré, siéntase libre de reabrir o continuar discutiendo si no.

chintalease.wast.zip

¿Alguna idea sobre cómo desensamblar este archivo .wast al código fuente original?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Comentarios

nikhedonia picture nikhedonia  ·  7Comentarios

mfateev picture mfateev  ·  5Comentarios

dpw picture dpw  ·  3Comentarios

chicoxyzzy picture chicoxyzzy  ·  5Comentarios