<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/rsa-git.git, branch version-4.7</title>
<subtitle>github.com: sybrenstuvel/python-rsa.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/'/>
<entry>
<title>Bumped version to 4.7</title>
<updated>2021-01-10T10:35:51+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2021-01-10T10:35:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=fa3282a47457254385f2313c2eceaad4b06186a4'/>
<id>fa3282a47457254385f2313c2eceaad4b06186a4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Marked version 4.7 as released</title>
<updated>2021-01-10T10:35:18+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2021-01-10T10:35:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=a364e82caa4cb1fc51400a8c628fb48867fb4362'/>
<id>a364e82caa4cb1fc51400a8c628fb48867fb4362</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix #170: mistake in examples of documentation</title>
<updated>2021-01-10T10:32:52+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2021-01-10T10:32:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=539c54aada3922757099ce1911a28c46e8e81a10'/>
<id>539c54aada3922757099ce1911a28c46e8e81a10</id>
<content type='text'>
Strings need to be encoded into bytes before the RSA module can operate
on them.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Strings need to be encoded into bytes before the RSA module can operate
on them.
</pre>
</div>
</content>
</entry>
<entry>
<title>Declare support for and test Python 3.9</title>
<updated>2021-01-10T10:26:14+00:00</updated>
<author>
<name>Hugo van Kemenade</name>
<email>hugovk@users.noreply.github.com</email>
</author>
<published>2020-11-19T21:40:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=b81e3171e9f870892e6b8a894db6d00ecd93f544'/>
<id>b81e3171e9f870892e6b8a894db6d00ecd93f544</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix #162: Blinding uses slow algorithm</title>
<updated>2020-11-15T15:27:29+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T15:25:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=06ec1ea1cc7be6034144bd06f07c35eb9d1b4953'/>
<id>06ec1ea1cc7be6034144bd06f07c35eb9d1b4953</id>
<content type='text'>
Store blinding factor + its inverse, so that they can be reused &amp; updated
on every blinding operation. This avoids expensive computations.

The reuse of the previous blinding factor is done via squaring (mod n), as
per section 9 of 'A Timing Attack against RSA with the Chinese Remainder
Theorem' by Werner Schindler, https://tls.mbed.org/public/WSchindler-RSA_Timing_Attack.pdf
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Store blinding factor + its inverse, so that they can be reused &amp; updated
on every blinding operation. This avoids expensive computations.

The reuse of the previous blinding factor is done via squaring (mod n), as
per section 9 of 'A Timing Attack against RSA with the Chinese Remainder
Theorem' by Werner Schindler, https://tls.mbed.org/public/WSchindler-RSA_Timing_Attack.pdf
</pre>
</div>
</content>
</entry>
<entry>
<title>Directly raise `DecryptionError` when crypto length is bad</title>
<updated>2020-11-15T15:23:19+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T15:23:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=341e5c4f939988bd472530441b6a02b625a30806'/>
<id>341e5c4f939988bd472530441b6a02b625a30806</id>
<content type='text'>
Crypto length and blocksize are public info, so don't need side-channel
free comparison.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Crypto length and blocksize are public info, so don't need side-channel
free comparison.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use `bytes.find()` instead of `bytes.index()`</title>
<updated>2020-11-15T15:18:18+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T15:18:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1'/>
<id>f254895b02f0cb106f9ccee6d8dc6af1a27f0bd1</id>
<content type='text'>
Use `bytes.find()` instead of `bytes.index()`, as the former doesn't raise
an exception when the to-be-found byte doesn't exist.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use `bytes.find()` instead of `bytes.index()`, as the former doesn't raise
an exception when the to-be-found byte doesn't exist.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add link to changelog</title>
<updated>2020-11-15T14:50:06+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T14:49:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=240b0d8910299f970921391ea9737cb64ec09208'/>
<id>240b0d8910299f970921391ea9737cb64ec09208</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix #164: Add padding length check as described by PKCS#1 v1.5</title>
<updated>2020-11-15T14:50:01+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T14:48:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=f878c374086e672e7806fdd18401ec6b71cfa960'/>
<id>f878c374086e672e7806fdd18401ec6b71cfa960</id>
<content type='text'>
According to PKCS#1 v1.5, the padding should be at least 8 bytes long.
See https://tools.ietf.org/html/rfc8017#section-7.2.2 step 3 for more info.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to PKCS#1 v1.5, the padding should be at least 8 bytes long.
See https://tools.ietf.org/html/rfc8017#section-7.2.2 step 3 for more info.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix #165: CVE-2020-25658 - Bleichenbacher-style timing oracle</title>
<updated>2020-11-15T14:21:31+00:00</updated>
<author>
<name>Sybren A. Stüvel</name>
<email>sybren@stuvel.eu</email>
</author>
<published>2020-11-15T14:18:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/rsa-git.git/commit/?id=dae8ce0d85478e16f2368b2341632775313d41ed'/>
<id>dae8ce0d85478e16f2368b2341632775313d41ed</id>
<content type='text'>
Use as many constant-time comparisons as practical in the
`rsa.pkcs1.decrypt` function.

`cleartext.index(b'\x00', 2)` will still be non-constant-time. The
alternative would be to iterate over all the data byte by byte in
Python, which is several orders of magnitude slower. Given that a
perfect constant-time implementation is very hard or even impossible to
do in Python [1], I chose the more performant option here.

[1]: https://securitypitfalls.wordpress.com/2018/08/03/constant-time-compare-in-python/
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use as many constant-time comparisons as practical in the
`rsa.pkcs1.decrypt` function.

`cleartext.index(b'\x00', 2)` will still be non-constant-time. The
alternative would be to iterate over all the data byte by byte in
Python, which is several orders of magnitude slower. Given that a
perfect constant-time implementation is very hard or even impossible to
do in Python [1], I chose the more performant option here.

[1]: https://securitypitfalls.wordpress.com/2018/08/03/constant-time-compare-in-python/
</pre>
</div>
</content>
</entry>
</feed>
