Proposal 121: Limit maximum descriptor size to 20 kilobytes to prevent abuse.

svn:r16303
This commit is contained in:
Karsten Loesing 2008-07-31 13:27:14 +00:00
parent 1a76cd179a
commit 1b2545ff98

View File

@ -26,6 +26,8 @@ Change history:
scalable authorization protocol (2.2), rewrote existing scalable authorization protocol (2.2), rewrote existing
authorization protocol (2.3); changes based on discussion authorization protocol (2.3); changes based on discussion
with Nick with Nick
31-Jul-2008 Limit maximum descriptor size to 20 kilobytes to prevent
abuse.
Overview: Overview:
@ -212,6 +214,23 @@ Details:
(clients and servers would have to be upgraded anyway for using the new (clients and servers would have to be upgraded anyway for using the new
features). features).
An adversary could try to abuse the fact that introduction points can be
encrypted by storing arbitrary, unrelated data in the hidden service
directory. This abuse can be limited by setting a hard descriptor size
limit, forcing the adversary to split data into multiple chunks. There
are some limitations that make splitting data across multiple descriptors
unattractive: 1) The adversary would not be able to choose descriptor IDs
freely and have to implement an own indexing structure. 2) Validity of
descriptors is limited to at most 24 hours after which descriptors need
to be republished.
The regular descriptor size in bytes is 745 + num_ipos * 837 + auth_data.
A large descriptor with 7 introduction points and 5 kilobytes of
authorization data would be 11724 bytes in size. The upper size limit of
descriptors should be set to 20 kilobytes, which limits the effect of
abuse while retaining enough flexibility in designing authorization
protocols.
1.2. Client authorization at introduction point 1.2. Client authorization at introduction point
The next possible authorization point after downloading and decrypting The next possible authorization point after downloading and decrypting