File tree 1 file changed +14
-1
lines changed
substrate/primitives/core/src
1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change 69
69
70
70
/// Marker trait to identify whether the scheme is not aggregatable thus changing
71
71
/// the implementation of the scheme parts such as Proof Of Possession or other specifics.
72
+ ///
73
+ /// This is specifically because implementation of proof of possession for aggregatable schemes
74
+ /// is security critical.
75
+ ///
76
+ /// We would like to prevent aggregatable scheme from unknowingly generating signatures
77
+ /// which aggregate to false albeit valid proof of possession aka rouge key attack.
78
+ /// We ensure that by separating signing and generating pop at the API level.
79
+ ///
80
+ /// Rouge key attack however is not immediately applicable to non-aggregatable scheme
81
+ /// when even if an honest signing oracle is tricked to sign a rogue pop, it is not
82
+ /// possible to aggregate it to generate a valid proof for a key the attack does not
83
+ /// possess. Therefore we do not require non-aggregatable schemes to prevent PoP
84
+ /// confirming signatures at API level
72
85
pub trait NonAggregatable { }
73
86
74
87
impl < T > ProofOfPossessionVerifier for T
83
96
T : Pair + NonAggregatable ,
84
97
T :: Public : CryptoType ,
85
98
{
86
- }
99
+ }
You can’t perform that action at this time.
0 commit comments