Comments (6)
(#52)
from babeld.
the goal is not to skip checking but rather ignore when there's no HMAC.
What difference does it make to reject incorrectly-signed packets?
On a side note, my code e314264 is probably wrong. The name babel-mac-verify
comes from the Information Model.
from babeld.
the goal is not to skip checking but rather ignore when there's no HMAC.
What difference does it make to reject incorrectly-signed packets?
The issue is that correctly-signed packets are rejected.
I have the feeling to have said everything, but I can try to explain differently. Let's given 3 kinds of nodes:
- nodes without any hmac-related option given to babeld command-line
- nodes with hmac configured with 1 key, and some whatever flag (no_hmac_verify, hmac_verify, ignore_no_hmac) at a non-default value
- nodes with hmac configured with 1 key and the flag at a default value
We expects that:
- nodes 1 can communicate with nodes 2
- nodes 2 can communicate with nodes 3
- nodes 1 can not communicate with nodes 3
#35 verifies the above 3 cases. The hmac branch of jech/babeld (91a9259) fails for case 2.
Otherwise, what would be the purpose of the discussed flag if it's not to provide a way to do a smooth upgrade to using HMAC ?
On a side note, my code e314264 is probably wrong.
Oops, I didn't notice that #52 has more commits than the hmac branch of jech/babeld. We use the latter.
About e314264 I don't see any code initializing hmac_verify to the default value of true.
from babeld.
Your presentation with the three kinds of nodes is very clear, thanks.
I applied (b909a58) your commit with some minor changes into my branch (#52).
About e314264 I don't see any code initializing hmac_verify to the default value of true.
Thanks, fixed in 7b79301.
from babeld.
I'm sorry if I'm daft, Julien, but I still don't understand.
The intent of the old code is that no HMAC verification is made at all if NO_HMAC_VERIFY is set. In other words, HMACs are ignored on reception, unconditionally. This is a simple semantics, and one that's easy to explain.
It looks like the code is buggy; that's possible, in which case I'll be grateful for a bugfix.
Your patch, however, changes the logic: now unsigned packets are accepted, but incorrectly signed packets (e.g. packets signed with an obsolete key) are rejected. This is a complicated semantics, one that is not easy to explain, and one that I don't feel is useful.
Would you be willing to provide a fix for the bug without changing the intent of the code?
from babeld.
The flag is now called accept-bad-signatures
, and causes the interface to accept both unsigned packets and packets with an incorrect key. Rejecting the latter provides no additional security, since an attacker can simply send unsigned packets.
Please let me know if there's still something missing.
from babeld.
Related Issues (20)
- kernel_route: Invalid argument HOT 2
- bugs in parse_hello_subtlv, parse_ihu_subtlv, parse_request_subtlv, parse_seqno_request_subtlv, and parse_other_subtlv HOT 2
- Babeld does not function properly HOT 1
- Feature request: exchange arbitrary strings HOT 4
- incorrect checkings in babel HOT 1
- obscure error message: babeld: send: Destination address required HOT 10
- babeld replaces routes non-atomically HOT 1
- routing loop due to ignoring linkdown HOT 3
- Need help with redistribute default routes HOT 4
- Interface Regex? HOT 1
- Inject routes with different mtu? HOT 3
- Is there intention to support IPv4 multicast group as well? HOT 1
- Error : Generating IPV6 Address HOT 1
- Same route announced twice? HOT 2
- Upper Bound on Interface Count? HOT 4
- Denying routes in install filter doesn't work HOT 6
- Release tag missing for 1.11 HOT 1
- 1.12 tag missing HOT 1
- Check Interfaces in add_interface HOT 2
- babeld 1.12.1 build failure HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from babeld.