Skip to content

Rescind this specification #104

@drzraf

Description

@drzraf

This spec should not exists in this form in the first place and should be rescinded.

  • Because the specification's exceeds by far the scope of the W3C: It meddle with ES6 specification, fragments the programming environment and jeopardizes a programming-language consistency and predictability. It makes legit ES6 code failing depending on... the gTLD of an URL or the protocol used to transfer a piece of code.

  • Because the specification's scope is indirectly (purposefully or not) overly binding multiples independents domains: language's API, sockets, DNS-resolution, ... thus giving too much power to the browser standardization body at the prejudice of others.

  • Because it's actually disruptive: affecting programmers and users expectations: Their ability (and their ultimate sovereignty) to use web-technologies to resolve problems and provide features.

  • Because specification introduction (exposing its underlying motivations) makes wrong assumptions in multiple points:

    • "ensure that the features which enable those applications are enabled only in contexts which meet a minimum security level"

    • Good intentions set aside, this fundamental sentence lacks key precision and is outdated wrt HTTPS practical use nowadays.

    • HTTPS is about secure transport and certainly not become aimed to be a stone-in-the-shoe rigidly keeping web-developers from innovating. A secure transfer isn't a secure context and even less a "trustworthy" one.

    • It doesn't consider the fact that JS can be used to make the app more secure (crypto API in mind)

    • The increasing presence of SSL termination endpoints (MiTM provider) makes HTTPS no more secure by design since it's not e2e anymore. Same for rogue certificate-authorities which do exist and are present & enabled in the list of most users and have the potential of making an HTTPS link weaker. In multiple countries/regions someone could be safer using HTTP+DANE over a VPN or Tor rather than using Cloudflare pseudo-HTTPS + plain-text Cloudflare-DNS or accepting by default these thousands of CA authorities. (The past years have seen a pervasive move to enforce 3rd-parties reliance [CA+CT instead of DANE for name one example] meanwhile safer and simpler non-intermediary solutions were repeatedly ignored by browser vendors)

    • "Delivering code securely cannot ensure that an application will always meet a user’s security and privacy requirements, but it is a necessary precondition"

    • Of course but HTTPS is just one among many others (like HSTS, CSP, Subresource Integrity ...) which, together, represent a set of possibilities in the hand of websites/applications' developers & providers and their ultimate choice regarding security. This is NOT a reason for browsers to forcefully disable window.crypto or storage and restrict the JS-engine under arbitrary conditions.

    • This spec' conflate secure and trustworthy : My local, (GPS/crypto/...-accessing) application served on our local network is way more trustworthy (and secure) than this advertising company X grabbing GPS "securely" from "https://googlex.com.sk" with LetsEncrypt & CT)

    • Overall (and maybe more radically), if a (SRI-enabled or not) <script> fetches and run some obscure RSA-encrypted Wasm blob over HTTP(s) using their browser of choice, it's an affair between a user and a domain: Not something w3c has a say in.

    • Lets also remind that when Google wanted it, this body issued spec' granting remote websites access USB/serial ports of everyone's computers (just one "Accept" button away) but, when Chrome requests it, it could keep the JS engine fundamental basic language API inoperative if not running over (mostly Google/Cloudflare managed) HTTPs: Was that really about security in the first place?

  • Finally, the spec doesn't define WHAT would precisely end up being restricted by so-called "secure context". Some broad mention about risk like "GPS" or stateful browsing : But isn't the specification text the place where one would look for the precise list of banned/allowed APIs? On the contrary. We saw JS API were being further and further restricted, one GitHub PR after the other, in a slow process which doesn't match the formalism of (draft [?]) specification.

The only actual and practical effect of this spec is to impose HTTPS for weak reasons (pretexts?) in an era where LetsEncrypt/Google/Cloudflare/MiTM, CA and dubious CA lists HTTPS is certainly not a security panacea anymore.

Enforcing HTTPS at a programming-language level is not only a technical mistake but a political spec (which is another name for bad spec). As such it should be at best rescinded and, at worst, superseded.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions