-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

All,

Tomcat has provided session-persistence mechanisms as far back as I
can remember, and on-disk/in-database/in-memcached/in-redis storage is
a somewhat popular practice.

Occasionally, we (the community) are asked how to protect the data in
those back-end stores e.g. using encryption. The answer has usually
been "you need to trust your data store" and that Tomcat simply
doesn't provide this kind of facility.

A few years ago, I started advocating treating all networks as
un-trusted, including "trusted" ones. If you've seen any of my
presentations or read any of my comments on networks, you'll know that
I think all network communications should be encrypted, even within
corporate networks or other environments where the network should be
considered "trusted".

I think a reasonable extension of this policy is to not trust your
storage mechanisms any farther than necessary. For example, if you are
storing Tomcat sessions on-disk or in a database, there are very few
other things that need to snoop (or modify!) that data besides Tomcat
itself. So there isn't any reason NOT to add something like encryption
to Tomcat for session stores.

I've been looking at StandardSession, which is Serializable.
DeltaSession extends StandardSession and adds some magic for
clustering which is /separate from/ the standard serialization
mechanism -- at least when sending session-changes; I haven't yet
looked at bulk-migration of sessions between cluster nodes.

Such encryption could easily be implemented in
StandardSession.doWriteObject/doReadObject by simply performing the
existing serialization operation but adding an encryption step,
finally writing a byte string into the ObjectOutputStream. An
encryption algorithm+key could be added to the SessionManager and, if
present, we add symmetric encryption to the process.

I have a few questions about this for the community:

1. Does anyone want this? (I definitely know there are some yesses out
there)

2. Is it sufficient to implement this in StandardSession, or do we
need something more configurable / customizable / extensible?

3. Is symmetric encryption sufficient, or is there a reason to
muck-around with asymmetric encryption.

4. Can anyone think of anything that might break (or significantly
degrade) if this were to be added? I'm specifically thinking about
clustering which has its own separate encryption mechanism.

Thanks,
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl69a8AACgkQHPApP6U8
pFhbAg/7BkhoAJUx8+r3mfFWx8ClSS0x5A4VMb86tLLM3zt7HTVyCrMuvOP3UTrh
6MnSbLFChJDeZfj39ypqWcocW5R+oB78ROVsJPiIOTsNPxyas7+hCL7D91BqxtGT
U/Q9DGnyWZTYObxlXqI0qqtFSnhN+UWa8ANpFQWGcuI/l1i8rIPHjkSazhFyBkbQ
Rxzed1/15KepSpBunXd3QzPeR3Nn7eFzL/J8EiVEe+T4psscoKGzJ8xRs2OcDj54
q88KqBfq04Dk+G9+KHLxDY2ZXmiP+Mt8uYNXwe/7zLbBtiv6aPdrNMNMS+ejdY+D
lRYX4u7KQmNdO/zIMyJJ/5DHy4MDktl803am+x4Cng4Skeh3Cg78TjeCf+NJ2toE
/lO9aCe/OGKAbZfczV8HSdMDKCgzon4G+6g/8glFlRk1MeuGMs/EfbLnyOB7cb/a
ixT/Tcx0l2U6W9iDNjSfq9+/sxDcmV64htSB5X+IP7GZyd8daOWg4QedkRyN04Dg
cjVPf8/rXtpUR4hY3DQG5GCStCyp7c1+dbBL1b/lBueV2arLK8V6Qz/8oQ2ERags
ZQUgRMuSaNHIp78djg6wDjUg+93ZhQ6Qxt/9pRuPqzkuZZsOGJ6vz9SPJaCYfz2F
9OjUY/G+VOyZi8jryu7c9fwYGO8WU7lGPBFjptOy4pgJdnaZLa4=
=l94x
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to