Design: A codificação binária wasm ilegível tem vantagens

Criado em 22 abr. 2017  ·  6Comentários  ·  Fonte: WebAssembly/design

Acabei de olhar brevemente para o projeto hoje e estou muito interessado em usá-lo no trabalho de desenvolvimento geral.

No entanto, se o resultado final significa que um usuário final executando wasm em seu navegador cliente pode acessar o código legível por humanos, esta é uma oportunidade perdida.

Não há razão para fornecer este recurso ao usuário final - um desenvolvedor pode ter acesso a ele por meio de arquivos de mapa ou algum mecanismo semelhante que exija a fonte original.

Embora seja impossível impedir o determinado de descompilar/engenharia reversa de um produto, qualquer impedimento é útil (se você quiser doá-lo, inclua a fonte / um link para ele). Se o esforço/risco em roubar supera o custo do licenciamento legal. etc etc etc

O elemento adicional de segurança de IP em não fornecer legibilidade provavelmente encorajaria uma adoção mais ampla/mais rápida (é um acéfalo completo para mim).

Por outro lado, se não houver nenhum benefício de segurança...então, com os mecanismos hw/js mais rápidos ao longo do tempo, voltar para C/C++ e manter um conjunto de habilidades mais expandido não parece tão atraente.

Por favor, considere NÃO fornecer um mecanismo para tornar a codificação binária wasm legível. Alguém fará isso eventualmente de qualquer maneira - enquanto isso, use os recursos em outro lugar e deixe-nos desfrutar de uma curta era de código ininteligível do lado do cliente.

Prumo.

Comentários muito úteis

Proibir o binário para alguma forma de fonte legível por humanos não é algo que o WebAssembly possa proibir. Qualquer um pode implementar sua própria coisa, por mais bonita / legível. O grupo se preocupa em especificar um formato portátil, eficiente em tamanho e tempo de carregamento adequado para compilação na web.

Também estamos preocupados em tornar algo utilizável, e é por isso que estamos especificando um formato de texto de baixo nível e provavelmente trabalharemos nos recursos de depuração.

Não é um objetivo garantir qualquer proteção legal a favor ou contra descompilação, engenharia reversa ou outras preocupações não técnicas. Isso é deixado para seus próprios advogados, e exorto os não-advogados a evitar especulações. Não queremos estar no negócio de fornecer aconselhamento jurídico.

Parece que a discussão anterior aborda sua pergunta? Vou fechar, fique a vontade para reabrir ou continuar discutindo se não.

Todos 6 comentários

As versões mais recentes do Chrome já são capazes de converter WASM binário em formato de texto.

Você está dizendo que eu posso ir de (seguindo retirado da entrada da wikipedia)

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

para

int fatorial(int n) {
se (n == 0)
retorno 1;
outro
return n * fatorial(n-1);
}

ou reconhecível como tal usando cromo como está?

Não, ele retorna o formato ainda não muito formalmente especificado "WAST" descrito aqui: 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 é otimizado para um formato binário pequeno, fácil e rápido de analisar. Ele não retém informações suficientes para recuperar completamente a sintaxe original. Quanto maior e mais complexa a função, menos reconhecível será a descompilação. Isso é especialmente verdadeiro se você observar como structs, classes, templates e outros recursos de nível superior são tratados.

Excelente (essa é a "representação intermediária" listada no artigo da wikipedia) - pensei que você estava sugerindo que já poderia ser "embelezado" ainda mais - eu preferiria que não pudesse ser (pronto para uso).

E eu preferiria que tudo fosse feito / não feito e projetado para mantê-lo assim.

(Tive a impressão de que havia um plano para finalmente poder traduzi-lo de volta para pseudocódigo razoável, embora sem identificadores significativos, no navegador.)

Proibir o binário para alguma forma de fonte legível por humanos não é algo que o WebAssembly possa proibir. Qualquer um pode implementar sua própria coisa, por mais bonita / legível. O grupo se preocupa em especificar um formato portátil, eficiente em tamanho e tempo de carregamento adequado para compilação na web.

Também estamos preocupados em tornar algo utilizável, e é por isso que estamos especificando um formato de texto de baixo nível e provavelmente trabalharemos nos recursos de depuração.

Não é um objetivo garantir qualquer proteção legal a favor ou contra descompilação, engenharia reversa ou outras preocupações não técnicas. Isso é deixado para seus próprios advogados, e exorto os não-advogados a evitar especulações. Não queremos estar no negócio de fornecer aconselhamento jurídico.

Parece que a discussão anterior aborda sua pergunta? Vou fechar, fique a vontade para reabrir ou continuar discutindo se não.

chitailease.wast.zip

Alguma idéia de como desmontar este arquivo .wast para o código-fonte original?

Esta página foi útil?
0 / 5 - 0 avaliações