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