aboutsummaryrefslogtreecommitdiff
path: root/draft-summermatter-set-union.xml
diff options
context:
space:
mode:
Diffstat (limited to 'draft-summermatter-set-union.xml')
-rw-r--r--draft-summermatter-set-union.xml74
1 files changed, 45 insertions, 29 deletions
diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index 0467499..c2e154a 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -1168,7 +1168,8 @@ hashSum | 0x0101 | 0x5151 | 0x5050 | 0x0000 |
1168 The first case is when one of the peers announces having an empty set. This is announced by setting 1168 The first case is when one of the peers announces having an empty set. This is announced by setting
1169 the SETSIZE field in the <em><xref target="messages_se" format="title" /></em> to 0. 1169 the SETSIZE field in the <em><xref target="messages_se" format="title" /></em> to 0.
1170 <!-- FIXME: why not also do this if sending the elements is about as 1170 <!-- FIXME: why not also do this if sending the elements is about as
1171 expensive as sending the SE? Should be a simple calculation. (thesis summermatter: future work) --> 1171 expensive as sending the SE? Should be a simple calculation. (thesis summermatter: future work) @Christian:
1172 As discussed 14.06 we let this comment in here as it is described in the thesis-->
1172 The second case is if the application requests full synchronisation explicitly. 1173 The second case is if the application requests full synchronisation explicitly.
1173 This is useful for testing and MUST NOT be used in production. 1174 This is useful for testing and MUST NOT be used in production.
1174 </t> 1175 </t>
@@ -2489,7 +2490,7 @@ FUNCTION END
2489 is to be applied after the SE calculation to 2490 is to be applied after the SE calculation to
2490 the computed set size differences, resulting 2491 the computed set size differences, resulting
2491 in a hard cap on the set size difference estimate 2492 in a hard cap on the set size difference estimate
2492 that is then actually used. --> 2493 that is then actually used. @Christian: ???-->
2493 </t> 2494 </t>
2494 </section> 2495 </section>
2495 2496
@@ -2851,7 +2852,8 @@ END FUNCTION
2851 send at the beginning of the operation. 2852 send at the beginning of the operation.
2852 <!-- FIXME: I don't see how the next sentence makes sense. If we got a FULL_DONE, 2853 <!-- FIXME: I don't see how the next sentence makes sense. If we got a FULL_DONE,
2853 and we still have differing sets, something is broken and re-doing it hardly 2854 and we still have differing sets, something is broken and re-doing it hardly
2854 makes sense, right? --> 2855 makes sense, right? @Christian im not sure about that it could be that for example
2856 the set size changes (from application or other sync) while synchronisation is in progress....-->
2855 If the sets differ, a resynchronisation is required. The number of possible 2857 If the sets differ, a resynchronisation is required. The number of possible
2856 resynchronisation MUST be limited, to prevent resource exhaustion attacks. 2858 resynchronisation MUST be limited, to prevent resource exhaustion attacks.
2857 </t> 2859 </t>
@@ -2872,10 +2874,22 @@ END FUNCTION
2872 exceeded, or if the size is implausible for the given operation. 2874 exceeded, or if the size is implausible for the given operation.
2873 </t> 2875 </t>
2874 </dd> 2876 </dd>
2877 <dt><xref target="messages_ibf_last" format="title" /></dt>
2878 <dd>
2879 <t>
2880 When all <em><xref target="messages_ibf" format="title" /></em> messages have
2881 been received an <em><xref target="messages_ibf_last" format="title" /></em> message
2882 should conclude the transmission of the IBF and a change to the <strong>Active Decoding</strong>
2883 phase should be ensured.
2884 </t>
2885 </dd>
2875 <!-- FIXME: we can also receive an IBF_LAST in this state, 2886 <!-- FIXME: we can also receive an IBF_LAST in this state,
2876 here additional sanity checks, like that we have received 2887 here additional sanity checks, like that we have received
2877 all of the other fragments/parts of the IBF first and 2888 all of the other fragments/parts of the IBF first and
2878 that the parameters are thus consistent apply. --> 2889 that the parameters are thus consistent apply. @Christian So we would have
2890 to transmit the number of IBF slices that will be transmitted first
2891 to do this check right?
2892 -->
2879 </dl> 2893 </dl>
2880 </section> 2894 </section>
2881 2895
@@ -2888,10 +2902,12 @@ END FUNCTION
2888 To prevent an endless loop in decoding, loop detection MUST be implemented. 2902 To prevent an endless loop in decoding, loop detection MUST be implemented.
2889 The simplest solution is to prevent decoding of more than a given number of elements. 2903 The simplest solution is to prevent decoding of more than a given number of elements.
2890 <!-- FIXME: this description is awkward. Needs to be discussed. 2904 <!-- FIXME: this description is awkward. Needs to be discussed.
2891 I think you also do not mean 'hashes' but 'element IDs'. --> 2905 I think you also do not mean 'hashes' but 'element IDs'. @Christian just omit the details
2906 i guess anybody can freely decide how to handle loops its just important that e protection is
2907 in place. Right?-->
2892 A more robust solution is to implement a algorithm that detects a loop by 2908 A more robust solution is to implement a algorithm that detects a loop by
2893 analyzing past partially decoded IBFs. This can be achieved 2909 analyzing past partially decoded IBFs. This can be achieved
2894 by saving the hash of all prior partly decoded IBFs hashes in a hashmap and check 2910 by saving the element IDs of all prior partly decoded IBFs hashes in a hashmap and check
2895 for every inserted hash, if it is already in the hashmap. 2911 for every inserted hash, if it is already in the hashmap.
2896 </t> 2912 </t>
2897 <t> 2913 <t>
@@ -2899,12 +2915,14 @@ END FUNCTION
2899 operation MUST be terminated.Furthermore, if the IBF 2915 operation MUST be terminated.Furthermore, if the IBF
2900 decoding successfully terminates and fewer elements were 2916 decoding successfully terminates and fewer elements were
2901 decoded than plausible, the operation MUST also be terminated. 2917 decoded than plausible, the operation MUST also be terminated.
2902 The upper and lower thresholds 2918 The upper thresholds for decoded elements from the IBF is the
2903 for the number of decoded elements can be calculated with the peers set sizes 2919 remote set size the other peer has committed too (Case if the complete remote set is
2904 and the other peer's committed set sizes from the <strong>Expecting IBF</strong> 2920 new). The lower threshold for decoding element is the absolute value of the difference
2905 state. 2921 between the local and remote set size (Case the set difference is only in the set of
2922 a single peer). The other peer's committed set sizes
2923 is transmitted in the the <strong>Expecting IBF</strong> state.
2906 <!-- FIXME: be more precise about how to calculate those 2924 <!-- FIXME: be more precise about how to calculate those
2907 bounds from those inputs. --> 2925 bounds from those inputs. @Christan better? -->
2908 </t> 2926 </t>
2909 2927
2910 <t>Security considerations for received messages:</t> 2928 <t>Security considerations for received messages:</t>
@@ -2948,15 +2966,15 @@ END FUNCTION
2948 <t> 2966 <t>
2949 The <em><xref target="messages_done" format="title" /></em> message is only received if the IBF has finished 2967 The <em><xref target="messages_done" format="title" /></em> message is only received if the IBF has finished
2950 decoding and all offers have been sent. If the <em><xref target="messages_done" format="title" /></em> message is received before 2968 decoding and all offers have been sent. If the <em><xref target="messages_done" format="title" /></em> message is received before
2951 the decoding of the IBF is finished or all open offers and demands 2969 the decoding of the IBF is finished or all open demands
2952 have been answered, the operation MUST be terminated. 2970 have been answered, the operation MUST be terminated.
2953 <!-- FIXME: it is legitimate to not respond to an offer, right? Otherwise 2971 <!-- FIXME: it is legitimate to not respond to an offer, right? Otherwise
2954 we would not need demands; hence, the above should only be 2972 we would not need demands; hence, the above should only be
2955 for 'open demands', right? --> 2973 for 'open demands', right? @Christian your right corrected this one-->
2956 If 2974 If
2957 the sets differ, a resynchronisation is required. The number of possible 2975 the sets differ, a resynchronisation is required. The number of possible
2958 resynchronisation MUST be limited to prevent resource exhaustion attacks. 2976 resynchronisation MUST be limited to prevent resource exhaustion attacks.
2959 <!-- FIXME: again, how can this happen? Why should we really allow this? --> 2977 <!-- FIXME: again, how can this happen? Why should we really allow this? @Christian same point above if set changes while we synchronize-->
2960 </t> 2978 </t>
2961 <t> 2979 <t>
2962 When a <em><xref target="messages_done" format="title" /></em> message is received the 2980 When a <em><xref target="messages_done" format="title" /></em> message is received the
@@ -3004,14 +3022,6 @@ END FUNCTION
3004 The set difference calculated from the strata estimator needs to be plausible, 3022 The set difference calculated from the strata estimator needs to be plausible,
3005 which means within the byzantine boundaries described in section <xref target="security_generic_functions_check_byzantine_boundaries" format="title" />. 3023 which means within the byzantine boundaries described in section <xref target="security_generic_functions_check_byzantine_boundaries" format="title" />.
3006 </t> 3024 </t>
3007 <t>
3008 <!-- FIXME: I do not think this kind of consideration
3009 belongs into an RFC... Besides, you can have memory
3010 corruption at most steps of the algorithm if the code is sufficiently
3011 careless... -->
3012 In case of compressed strata estimators the unpacking algorithm needs to
3013 be protected against unpacking memory corruption (memory overflow).
3014 </t>
3015 </dd> 3025 </dd>
3016 </dl> 3026 </dl>
3017 </section> 3027 </section>
@@ -3036,10 +3046,10 @@ END FUNCTION
3036 elements received matches the number that the remote peer 3046 elements received matches the number that the remote peer
3037 originally committed to transmitting, 3047 originally committed to transmitting,
3038 otherwise the operation MUST be terminated. 3048 otherwise the operation MUST be terminated.
3039 <!-- FIXME: this is redundant, already covered by the new state, right? --> 3049 <!-- FIXME: this is redundant, already covered by the new state, right? @Christian: ??? State-->
3040 After receiving the 3050 After receiving the
3041 <em><xref target="messages_full_done" format="title" /></em> message, future elements MUST NOT be accepted. 3051 <em><xref target="messages_full_done" format="title" /></em> message, future elements MUST NOT be accepted.
3042 <!-- FIXME: again, how can this happen? Why should we really allow this? --> 3052 <!-- FIXME: again, how can this happen? Why should we really allow this? @Christian Again set changes while sync ;-) -->
3043 If 3053 If
3044 the sets differ, a resynchronisation is required. The number of possible 3054 the sets differ, a resynchronisation is required. The number of possible
3045 resynchronisation MUST be limited to prevent resource exhaustion attacks. 3055 resynchronisation MUST be limited to prevent resource exhaustion attacks.
@@ -3061,10 +3071,8 @@ END FUNCTION
3061 then the swap will no longer just add 0.5 RTT! I think 3071 then the swap will no longer just add 0.5 RTT! I think
3062 we MUST instead permit that an IBF decodes to an element 3072 we MUST instead permit that an IBF decodes to an element
3063 that was offered/demanded (only in the previous iteration?) and then 3073 that was offered/demanded (only in the previous iteration?) and then
3064 simply SKIP that element ID! --> 3074 simply SKIP that element ID! @Christian oh i missed this one. Yes, your right we dont do this!
3065 In this moment the peer MUST 3075 -->
3066 wait for all open offers and demands to be fulfilled, to prevent
3067 retransmission before switching into active decoding operation mode.
3068 A switch into active decoding mode MUST only be permitted for 3076 A switch into active decoding mode MUST only be permitted for
3069 a predefined number of times as described in <xref target="security_generic_functions_active_passive_switches" format="default"/> 3077 a predefined number of times as described in <xref target="security_generic_functions_active_passive_switches" format="default"/>
3070 </t> 3078 </t>
@@ -3074,9 +3082,17 @@ END FUNCTION
3074 <t> 3082 <t>
3075 A check needs to be in place that prevents receiving an inquiry 3083 A check needs to be in place that prevents receiving an inquiry
3076 for an element multiple times or more inquiries than are plausible. 3084 for an element multiple times or more inquiries than are plausible.
3085 The upper thresholds for sent/received inquiries is the
3086 remote set size the other peer has committed too (Case if the complete remote set is
3087 new). The lower threshold for for sent/received inquiries is the absolute value of the
3088 set difference between the local and remote set size
3089 (Case the set difference is only in the set of a single peer).
3090 The other peer's committed set sizes is transmitted in the the <strong>Expecting IBF</strong> state.
3091 Beware that it is possible to get key collisions and an inquiry for the same key
3092 can be transmitted multiple times, so the threshold should take this into account.
3077 <!-- FIXME: how again does one determine how many inquiries are plausible? 3093 <!-- FIXME: how again does one determine how many inquiries are plausible?
3078 Be precise! I can see several options (overall set sizes, but also 3094 Be precise! I can see several options (overall set sizes, but also
3079 SE, or even IBF size). --> 3095 SE, or even IBF size). @Christian I Added check parameter-->
3080 The sending and receiving of <em><xref target="messages_inquiry" format="title" /></em> messages should 3096 The sending and receiving of <em><xref target="messages_inquiry" format="title" /></em> messages should
3081 always be protected with an <xref target="security_generic_functions_mfc" format="title" /> 3097 always be protected with an <xref target="security_generic_functions_mfc" format="title" />
3082 to secure the protocol against missing, duplicated, out-of-order or unexpected messages. 3098 to secure the protocol against missing, duplicated, out-of-order or unexpected messages.