[whatwg] meta="encrypt" tag is needed
juuso_html5 at tele3d.net
Fri May 7 14:46:55 PDT 2010
On Thu, May 6, 2010 at 8:44 AM, <juuso_html5 at tele3d.net> wrote:
Good observations Frank & Ash & Aryeh & others,
> I see a few shortcomings in this approach:
> a) each document is encrypted asymmetrically, affecting performance.
1) yes, that's partially true. What is asymmetrically encrypted is
the keys to symmetrical encryption; which is much faster
2) no, that is not required. if user agent stores the AES password
e.g. inside a session cookie, "beyond the login page" the web-pages
can have meta-encrypt-tag pubtool="cookie-AES".
==> thus when UA requests page, server requests a cookie named
according to meta-encrypt pubkey="_value_".
==> that cookie named _value_ contains the symmetrical AES key
==> so, server sees the UA has a proper pubkey
==> server encrypts the page using symmetrical AES and sends it to UA
3) no, that's not required for the passsalt="no|domainname" argument.
salting happens only in UAs, passsalt argument is a hint to browser
to hash the password field before submitting it to server. server
would treat the salted password as any normal 'properly randomized'
> b) there is no management of keys (expiration, revocation, trust, etc).
1) IF auth is used, CA can validate pubkey belonging to site until xx/yy/zzzz
Browser can remember authentication and store
2) IF external auth is not used site can generate it's own key pair ,
w3c? accepted / authenticated key generator tool, and the
webmaster then just
puts the public key into meta-encrypt tag and the private key
accessable location maybe .htpasswd file
3) ...so Dear Watsons... as the browser sees the meta-encrypt tag it (*may* be
configured) to contact CA and validate the pubkey belonging to site using
all the formal https validation techniques... What is left to the webmaster
is to insert a simple meta-encrypt tag
> c) the values for the pubtool attribute (encryption algorithm) will need to
be spec'd, slowing the deployment of new encryption algorithms (or better
1) yes, that's true, some specsing is needed as there are competing
PKI technologies, with small key sizes, elliptic curves good
candidates as they are well studied and at least to sufficient degree
patent free. Initial specsing has also been done e.g. by "the OpenSSL
team accepted an ECC patch in 2005", Also NSA may provide helpful
> d) how to handle XMLHttpRequests? how to handle XHRs receiving JSON or text?
1) I'm sure you'll find a solution ;)
> e) information from the UA to the server is plaintext (e.g.,
logon/passwords). If, instead, authentication relies only on possession of
the user's private key; then, any human can sit at the user's console and
automatically authenticate to all HTTP servers.
1) 'meta-encrypt'- tag encrypts only from UA -> server. IF there is a
meta-encrypt tag on a requested page, UA encrypts URI-request the form
parameters it sends to server using the pubkey="" public key
2) submits the browser's own pubkey to the server inside
each page-request to the server. the 'UA-encrypt' field may be valid only
for a session. if a page has a 'meta-encrypt'-tag and a browser has
a 'UA-encrypt'-field, the server
+) can generate a AES256 key and encrypt the page using it
+) return the requested AES256 _encrypted_ page to UA, but the
pages first line is a PKI encrypted message containing the AES256 key
that opens the 'page'
+) UA notices the BEGIN-ENC-MESSAGE......END-ENC-MESSAGE on the first line
+) UA tries it's own session private key to ENC-MESSAGE, opens
reads the AES256 key
+) UA opens the page using the AES256, and shows the page content
as any web page
3) UA gets all page content in from requested URL in fully encrypted
form server gets all the POST/GET parameters (from UA) to the page in
fully encrypted form
4) if page had a passsalt="no|domainname" form-field with or without
the 'meta-encrypt'-tag, UA hashes the password field with SHA256 and
submits the SHA256(password+domainname) to the server instead of plain
> I'd prefer a radically different approach (TLS = out of scope).
There certainly are many technically excellent solutions. My approach
just focuses in and can
a) make it maximally easy and usable for 'typical' webmasters to use
b) and force the passwords salted; thus preemptively preventing id-thefts
You're quite right, what I am suggesting is a server module which may
- if the meta-encrypt module is off, server module doesn't read the
page before submitting it.
- if the meta-encrypt module is off, the UA still sees e.g. <meta
encrypt passsalt="no|domainname"/> and the UA can salt the
- if the meta-encrypt module is off, UA receives the page content without the
BEGIN-ENC-MESSAGE......END-ENC-MESSAGE on the first line, and yet
the UA *sees* the meta-encrypt-tag on page, thus the UA concludes
server's meta-encrypt module is off. So if a page visitor wants to
fill a form on a page, before submitting the GET/POST parameters to
server, UA pops up a screen
Receiving site has it's encryption engine
turned off. Do you still want to submit
data to that site, as unencrypted plain
- Obviously a server must read the data chunks from a hard disk or
similar before it can submit those.
A server _module_ would be given e.g. two first 4096 byte chunks
from certain file types (html,htm,php). Module would check if there is
meta-encrypt tag (or </head>).
- if meta-encrypt was not found but </head> would be
==> module would return 0,
and apache/IIS would submit the page unencrypted
- if meta-encrypt was found
==> module would return 1, and apache would hand over
the whole file to module as well as the UA's public key
==> module would encrypt file and return it to apache
so it could be sent to UA. Also the module
would have parsed all the related file URLs that were
included in that original page. And module would
request apache to read the included file(s) and the
module would would encrypt them all
> What you're suggesting is that web servers be set up to parse HTML
> pages, or an extra server
> module (like PHP) to parse HTML content.
Yes, PHP and other scripting languages are popular. If a site or a
server doesn't want to use PHP module (or meta-encrypt-module) they
can choose not to install it or they may exclude files in
(home)directories and all-subdirectories not to be using PHP-module
(or meta-encrypt-module) just
by setting it off e.g. using .htaccess file of 'apache/ISS' settings file.
>>> 1) Man-in-the-middle problem; which doesn't exists because
>>> a) those are just academic mind games
>> You don't get to talk about security anymore.
> I don't think "academic" is an *entirely* unfair characterization of
> MITM on the web, actually.
> In fact, do you know of *any* examples of MITM attacks being
> successfully used against a public website?
I double that question. And before I generalized the internet MITM
attacks against PKIs being "academic mind game" (ok NSA & Co could
prove other vice), I googled and checked the wikipedia, if there were
any real life examples of internet MITM attacks against
unauthenticated PKIs, but no all seems to be non-internet site like
examples. Sure MITM can be done, but it's not the low hanging fruit;
that concerns most ordinary websites. AND just to tackle that
authentication problem I added the auth="verisign" parameter
We know hundred ways of how the HTTPS mediated security would easily
fail, but almost all off those would be "hacker-at-the-other-end
attacks". The real life data security problem is the identity thefts,
espionage and frauds. Where the unsalted passwords and multi-use of
same passwords play a key role as well as in minor degree, sniffing of
unencrypted traffic. Why would anyone even consider cryptographic MITM
attact for the purpose of achieving identity theft, as the
hacker/keylogger-at-the-other-end can achieve the same goal with less
effort. After all Internet is just a massive security hole, with of
without the HTTPS.
see the article at http://xkcd.com/538/
More information about the whatwg