Design: L'encodage binaire wasm illisible présente des avantages

Créé le 22 avr. 2017  ·  6Commentaires  ·  Source: WebAssembly/design

Je viens de regarder brièvement le projet aujourd'hui et je suis très intéressé à l'utiliser dans le travail de développement général.

Cependant, si le résultat final signifie qu'un utilisateur final exécutant wasm dans son navigateur client peut accéder à un code lisible par l'homme, il s'agit d'une occasion manquée.

Il n'y a aucune raison de fournir cette fonctionnalité à l'utilisateur final - un développeur peut y avoir accès via des fichiers de carte ou un mécanisme similaire nécessitant la source d'origine.

Bien qu'il soit impossible de dissuader les déterminés de décompiler/rétroconcevoir un produit, tout moyen de dissuasion est utile (si vous voulez le donner, incluez la source / un lien vers celui-ci). Si l'effort/le risque de vol l'emporte sur le coût d'une licence légale. etc etc etc

L'élément supplémentaire de la sécurité IP en ne fournissant pas de lisibilité encouragerait probablement une adoption plus large/plus rapide (c'est une évidence pour moi).

D'un autre côté, s'il n'y a pas d'avantage en matière de sécurité... alors avec des moteurs hw/js plus rapides au fil du temps, revenir à C/C++ et maintenir un ensemble de compétences encore élargi ne semble pas si attrayant.

Veuillez envisager de NE PAS fournir de mécanisme pour rendre l'encodage binaire wasm lisible. Quelqu'un d'autre finira par le faire de toute façon - en attendant, utilisez les ressources ailleurs et laissez-nous profiter d'une courte période de code côté client inintelligible.

Bob.

Commentaire le plus utile

Interdire le binaire à une forme de source lisible par l'homme n'est pas quelque chose que WebAssembly peut interdire. N'importe qui peut implémenter son propre truc, aussi joli / lisible soit-il. Le groupe se préoccupe plutôt de spécifier un format portable, efficace en termes de taille et de temps de chargement, adapté à la compilation sur le Web.

Nous sommes également soucieux de rendre quelque chose utilisable, c'est pourquoi nous spécifions un format de texte de bas niveau, et travaillerons probablement sur les capacités de débogage.

Ce n'est pas un objectif de garantir une protection juridique pour ou contre la décompilation, l'ingénierie inverse ou d'autres problèmes non techniques. Ceci est laissé à vos propres avocats, et j'exhorte les non-avocats à éviter les spéculations. Nous ne voulons pas nous contenter de fournir des conseils juridiques.

Il semble qu'une discussion préalable réponde à votre question ? Je ferme, n'hésitez pas à rouvrir ou continuer à discuter si ce n'est pas le cas.

Tous les 6 commentaires

Les dernières versions de Chrome sont déjà capables de convertir WASM binaire en format texte.

Êtes-vous en train de dire que je peux partir de (suite tirée de l'entrée wikipedia)

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

pour

entier factoriel(int n) {
si (n == 0)
retour 1 ;
autre
return n * factoriel(n-1);
}

ou reconnaissable en tant que tel en utilisant le chrome tel quel ?

Non, il renvoie le format "WAST" pas encore tout à fait formellement spécifié décrit ici : 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 optimisé pour un petit format binaire facile et rapide à analyser. Il ne conserve pas suffisamment d'informations pour récupérer complètement la syntaxe d'origine. Plus la fonction est grande et complexe, moins la décompilation sera reconnaissable. Cela est particulièrement vrai si vous regardez comment les structures, les classes, les modèles et les autres fonctionnalités de niveau supérieur sont gérés.

Excellent (c'est la "représentation intermédiaire" répertoriée dans l'article de wikipedia) - je pensais que vous suggériez qu'elle pourrait déjà être "embellie" davantage - je préférerais que ce ne soit pas le cas (prêt à l'emploi).

Et je préférerais que tout soit fait / non fait et conçu pour que cela reste ainsi.

(J'ai eu l'impression qu'il y avait un plan pour finalement être en mesure de le traduire en pseudo-code raisonnable, mais sans identifiants significatifs, dans le navigateur.)

Interdire le binaire à une forme de source lisible par l'homme n'est pas quelque chose que WebAssembly peut interdire. N'importe qui peut implémenter son propre truc, aussi joli / lisible soit-il. Le groupe se préoccupe plutôt de spécifier un format portable, efficace en termes de taille et de temps de chargement, adapté à la compilation sur le Web.

Nous sommes également soucieux de rendre quelque chose utilisable, c'est pourquoi nous spécifions un format de texte de bas niveau, et travaillerons probablement sur les capacités de débogage.

Ce n'est pas un objectif de garantir une protection juridique pour ou contre la décompilation, l'ingénierie inverse ou d'autres problèmes non techniques. Ceci est laissé à vos propres avocats, et j'exhorte les non-avocats à éviter les spéculations. Nous ne voulons pas nous contenter de fournir des conseils juridiques.

Il semble qu'une discussion préalable réponde à votre question ? Je ferme, n'hésitez pas à rouvrir ou continuer à discuter si ce n'est pas le cas.

chintailease.wast.zip

Une idée sur la façon de désassembler ce fichier .wast en code source d'origine ?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ghost picture ghost  ·  7Commentaires

void4 picture void4  ·  5Commentaires

chicoxyzzy picture chicoxyzzy  ·  5Commentaires

jfbastien picture jfbastien  ·  6Commentaires

thysultan picture thysultan  ·  4Commentaires