Implement a secure ICS protocol targeting LoRa Node151 microcontroller for controlling irrigation.

README.txt 4.0 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. STROBE protocol framework
  2. This is a development release of the STROBE framework. Although the
  3. specification of the framework is at release level (1.0.0), the code is
  4. development-quality and not yet ready for production use.
  5. STROBE's framework spec versioning (not software versioning) is a little
  6. bit funny. Every protocol hashes the spec version into the cryptographic
  7. state, so any change to the spec version string breaks interoperability.
  8. However, minor and patch revisions shouldn't break application
  9. compatibility, so protocol specifications that make sense with 1.0.0
  10. should also work with 1.0.1 and 1.1.0.
  11. TODO: Update this README to include worthwhile documentation and use cases
  12. for STROBE.
  13. #############
  14. Side channels
  15. #############
  16. The STROBE code is designed to resist timing side-channels that would
  17. recover secret keys and messages. Obviously, timing is affected by other
  18. variables such as message lengths.
  19. The compact X25519 code is designed to resist timing side-channels, including
  20. attacks on timing, caching, and branch prediction. However, the code
  21. is incomplete in that regard, and should be tested on your particular CPU
  22. and compiler. This warning is mainly in regard to embedded or old processors
  23. such as the Cortex-M0, Cortex-M3, 80386, 80486, Via Nano 2000, PowerPC G3,
  24. PowerPC G4, and RISC-V Rocket. These processors have a multiplication
  25. instruction which takes a variable amount of time depending on its operands.
  26. Since X25519 uses multiplication on sensitive data, some of that data will
  27. leak to an attacker who can observe timing information. There are per-CPU
  28. workarounds for this problem, but none of them are yet included in STROBE's
  29. X25519 implementation.
  30. Newer CPUs such as the Cortex-M4 and higher, and modern X86 processors, should
  31. be safe. However, the test suite does not currently test resistance to timing
  32. attacks (TODO).
  33. On vulnerable processors, I expect that ephemeral Curve25519 is safe, and that
  34. signature verification leaks information that's public in most threat models
  35. (eg, the signer, signature and hashed message). Signing and long-term X25519
  36. are probably vulnerable to key compromise.
  37. I would like to eventually place a warning on the X25519 code for this, but
  38. there are so many CPUs affected that it would be difficult to test the warning
  39. code.
  40. None of this code is designed to resist physically invasive attacks such as
  41. power side channels, electromagnetic side channels, or fault attacks.
  42. Remember of course that this is alpha-quality software, and probably contains
  43. bugs which are more serious than timing attacks.
  44. #############
  45. Mailing lists
  46. #############
  47. If you use STROBE, please subscribe to at least the strobe-security mailing
  48. list:
  49. strobe-security@lists.sourceforge.net
  50. https://lists.sourceforge.net/lists/listinfo/strobe-security
  51. This mailing list is moderated and low-volume. It will be used only to
  52. announce security issues in STROBE, should they arise.
  53. You may also be interested in the strobe-announce and strobe-discuss
  54. mailing lists.
  55. strobe-discuss@lists.sourceforge.net
  56. https://lists.sourceforge.net/lists/listinfo/strobe-discuss
  57. strobe-announce@lists.sourceforge.net
  58. https://lists.sourceforge.net/lists/listinfo/strobe-announce
  59. ###########################
  60. Export control notification
  61. ###########################
  62. Downloading of this software may constitute an export or re-export of
  63. cryptographic software from the United States of America. The U.S.
  64. government prohibits export of encryption source code to certain countries
  65. and individuals, including, but not limited to, the countries of Cuba, Iran,
  66. North Korea, Sudan, Syria, and residents and nationals of those countries.
  67. Other countries may also have restrictions on the import, possession, use,
  68. and/or re-export to another country, of encryption software. BEFORE using
  69. any encryption software, please check your country's laws, regulations and
  70. policies concerning the import, possession, or use, and re-export of
  71. encryption software, to see if this is permitted.