Commit Graph
17 Commits
Author SHA1 Message Date
Patrick Fallberg 4ea0c88ac8 Rewrite security personalization data validation (#885)
* Data is not validated on Linux systems
* If encryption is enabled, data is also validated even if signing
  is disabled.
2017-07-04 15:49:57 +02:00
Rainer Clasen 59337b19fe Memory optimizations in signing (#874)
* Sha256 driver cosmetics

cosmetic cleanups:
- use actual define that was used to allocate the array
- remove unused file globals

* Save memory by eliminating sha256_hash array

eliminated sha256_hash array to save memory. Instead pass the
Sha256Class result pointer.

There seems to be no use for the extra sha256_hash array as it was
zeroed exactly at the same time, the Sha256Class result was invalidated
(by calling signerSha256Init)

If the result needs to stay around while another sha is calculated,
it's better to have the user taking care of this.

* Moved hmac methods and buffers to separate class

This allows saving the buffer memory if no hmac is needed ... eg. with
the public Signing API.
2017-06-07 08:25:56 +02:00
Patrick Fallberg 29fd6d6345 Let signing backend validate personalization (#873)
For soft signing, let backend handle checksum verification of
personalization data. This ensures that the backends sha256 library is
used and avoids an unnecessary instanitation of the public library.
For atsha204 signing, no checksum verification is made, just chip
locking flags.

Fixes #872
2017-06-06 09:51:37 +02:00
Marcelo Aquino 28c4f3f19e Signing improvements package (#871)
* Signing support with MAX_PAYLOAD>32

Support in the signing backends to handle configurations
where MAX_PAYLOAD is more than 32 bytes.

Fixes #748

* Support big message signatures

Support for signing messages larger than 32 bytes.
This is not fully testable with the current version of
the library but the change would add theoretical support
for signing any sized messages.

Fixes #749

* Have gw properly indicate whitelisting preferences

If the gateway hold a signing whitelist, inform all
nodes of this requirement and not just nodes that hold
whitelists themselves.

Fixes #806

* Harden security

The flag MY_SIGNING_GW_REQUEST_SIGNATURES_FROM_ALL
has been removed. Gateway will now request signatures
from everyone by default.
In addition to this, no nodes in the network will allow
clearing of signing/whitelisting preferences by OTA
commands by default.
If the old behaviour is needed (suitable for gradual
signing roll out and development purposes) a new flag,
MY_SIGNING_WEAK_SECURITY can be set.

Fixes #807

* Signing debug messages rewritten

All signing related debug has been rewritten to
better match other core debug printouts.
Also, backends are updated to have a smaller
implementation delta.

* Simplified signing option implemented

Enable by MY_SIGNING_SIMPLE_PASSWD. Signing, and signing requirements
will be enabled, as will encryption. Whitelisting is optional.
The value provided to MY_SIGNING_SIMPLE_PASSWD is used as HMAC and AES
key. Whitelists use the first 8 bytes of the password and the ninth
byte from the node ID as serial.
Password is required to be at least 8 characters wide. It is zero
padded if it is not long enough to cover the AES (16 bytes) and HMAC
(32 bytes) keys. It is not recommended to have a password shorter than
32 bytes, and there is no need for a password longer than 32 bytes.

* Add documentation section for signing debug

* Add nRF5 encryption to simple signing option

* Restructure MySigning documentation

* Minor fixes for Linux
2017-05-31 17:13:29 +02:00
Patrick Fallberg 7e6db413c7 Security personalizer rewritten (#794)
* Removed ability to lock data section
* Introduced "guided mode" to simplify process
* Refactored the sketch to be less monolithic
* Print details and instructions in tables
* Use device unique ID as serial when
* Calculate and store personalization checksum
* Print serial in a copy+paste friendly manner (fixes #804)
* Clarify meaning of UART confirmation (fixes #805)
2017-04-02 15:37:21 +02:00
Olivier b132a8a81e Transport update (#722)
* Major transport rework

* Adjust signal report calculations

* Minor driver optimizations

* Implement sanity check in legacy RFM69 driver

* Additional RFM69 rework

* RFM95 encryption

* Polishing
2017-03-28 20:31:08 +02:00
Olivier 61a415c422 Code cleanup (#787)
* Cleanup Core

* SAMD adjustments
2017-03-15 19:05:17 +01:00
Olivier e66989138b Fix signing presentation bug (#740) 2017-01-16 19:49:12 +01:00
Patrick Fallberg 1040fbebc5 Refactor signing backend (#690)
Cleaned up the AES driver and removed some cppcheck isues
in the process.
2016-12-25 16:12:40 +01:00
Patrick Fallberg 8e1ef13804 Repo restyled using astyle (#683)
The rules are in .tools/astyle/config/style.cfg
and can also be reviewed at
https://www.mysensors.org/view/260#coding-guidelines-core-library
2016-12-07 23:44:29 +01:00
Olivier 92cbd2ac8f Allow node to enter loop() if transport is NOK 2016-11-14 12:24:27 +01:00
Patrick Fallberg c47a83f1da Make stability improvements in message signing
* Made delay waiting for GW to transmit signing preferences apply
  also if signing is disabled since nodes always sends a signing
  presentation, and GW always replies with it's own presentation.
  This can cause message collition if the node at the same time
  proceed with other presentation messages.

* Made the signing backend "consume" signing presentation
  messages sent by GW when signing is disabled. These messages
  should not be forwarded to the "user".
2016-10-30 12:01:35 +01:00
Patrick Fallberg afd7b7abbb Add MY_SIGNING_GW_REQUEST_SIGNATURES_FROM_ALL flag
This flag, when set in a gateway sketch will make the gateway
require all nodes to sign messages sent to it.
2016-10-18 22:02:19 +02:00
Olivier 351845205c Code harmonization 2016-10-09 15:53:51 +02:00
tekka007 3c8ea78f45 Build(): Remove obsolete parameter 2016-10-01 15:50:59 +02:00
tekka007 e7682cf006 Harmonize message type names 2016-08-08 17:37:42 +02:00
Thomas Mørch ba6bb915c2 Reorganizing library structure, prep for 2.0.0 2016-07-09 21:17:37 +02:00