1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 01:18:00 +00:00
Go to file
Simon Tatham d8fda3b6da testsc: add side-channel test of probabilistic prime gen.
Now that I've removed side-channel leakage from both prime candidate
generation (via mp_unsafe_mod_integer) and Miller-Rabin, the
probabilistic prime generation system in this code base is now able to
get through testsc without it detecting any source of cache or timing
side channels. So you should be able to generate an RSA key (in which
the primes themselves must be secret) in a more hostile environment
than you could previously be confident of.

This is a bit counterintuitive, because _obviously_ random prime
generation takes a variable amount of time, because it has to keep
retrying until an attempt succeeds! But that's OK as long as the
attempts are completely independent, because then any timing or cache
information leaked by a _failed_ attempt will only tell an attacker
about the numbers used in the failed attempt, and those numbers have
been thrown away, so it doesn't matter who knows them. It's only
important that the _successful_ attempt, from generating the random
candidate through to completing its verification as (probably) prime,
should be side-channel clean, because that's the attempt whose data is
actually going to be turned into a private key that needs to be kept
secret.

(In particular, this means you have to avoid the old-fashioned
strategy of generating successive prime candidates by incrementing a
starting value until you find something not divisible by any small
prime, because the number of iterations of that method would be a
timing leak. Happily, we stopped doing that last year, in commit
08a3547bc5: now every candidate integer is generated
independently, and if one fails the initial checks, we throw it away
and start completely from scratch with a fresh random value.)

So the test harness works by repeatedly running the prime generator in
one-shot mode until an attempt succeeds, and then resetting the
random-number stream to where it was just before the successful
attempt. Then we generate the same prime number again, this time with
the sclog mechanism turned on - and then, we compare it against the
version we previously generated with the same random numbers, to make
sure they're the same. This checks that the attempts really _are_
independent, in the sense that the prime generator is a pure function
of its random input stream, and doesn't depend on state left over from
previous attempts.
2021-08-27 18:04:49 +01:00
charset Add missing dependencies on generated source files. 2021-04-18 17:01:50 +01:00
cmake Don't #include <utmp.h> if it doesn't exist. 2021-05-13 18:40:47 +01:00
contrib New script contrib/proveprime.py. 2021-06-12 13:50:51 +01:00
crypto Make mp_unsafe_mod_integer not be unsafe. 2021-08-27 17:43:40 +01:00
doc Tidy up formatting of manpage cross-references. 2021-08-22 12:23:05 +01:00
icons Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
keygen Make pcs_set_oneshot even more one-shot. 2021-08-27 18:04:49 +01:00
otherbackends New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
ssh Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
test sclog: wrap memmove. 2021-08-27 18:04:49 +01:00
unix testsc: add side-channel test of probabilistic prime gen. 2021-08-27 18:04:49 +01:00
utils New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
windows Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
.gitignore Add .gitignore rules for in-tree builds. 2021-04-19 18:26:56 +01:00
aqsync.c Build outgoing SSH agent requests in a strbuf. 2018-05-25 14:36:16 +01:00
be_all_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_all.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_misc.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
be_none.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nos_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nossh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_ssh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
Buildscr Merge tag '0.76' into main 2021-07-17 11:49:44 +01:00
Buildscr.cv Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
callback.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
cgtest.c cmdgen: support configurable key fingerprint type. 2021-03-13 11:01:35 +00:00
CHECKLST.txt Spelling errors in the release checklist. 2021-05-03 17:01:55 +01:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
cmdgen.c cmdgen: add missing null pointer check in --dump mode. 2021-06-12 14:08:10 +01:00
cmdline.c New option to reject 'trivial' success of userauth. 2021-06-23 21:01:50 +01:00
config.c Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
console.c Console host key prompts: add 'more info' action. 2021-03-13 13:54:59 +00:00
console.h Factor out some common code in {ux,win}cons.c. 2021-03-13 11:01:35 +00:00
cproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
defs.h Make cmake.h available everywhere. 2021-04-19 18:26:56 +01:00
dialog.c dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
dialog.h dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
fuzzterm.c Make TermWin's palette_get_overrides() take a Terminal *. 2021-06-12 14:08:10 +01:00
import.c Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
LATEST.VER Update version number for 0.76 release. 2021-07-10 10:39:20 +01:00
ldisc.c Remove assertion that len != 0 in ldisc_send. 2020-06-14 10:17:20 +01:00
ldisc.h New array-growing macros: sgrowarray and sgrowarrayn. 2019-02-28 20:15:38 +00:00
LICENCE It's a new year. 2021-01-11 21:37:51 +00:00
licence.pl Separate the functions of licence.pl. 2021-04-17 13:52:27 +01:00
logging.c Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
marshal.h Add some more marshalling functions, for file parsing. 2020-01-09 19:57:35 +00:00
minibidi.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
misc.h Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
mksrcarc.sh Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
mkunxarc.sh Integrate the 'doc' subdir into the CMake system. 2021-05-03 17:01:55 +01:00
mpint.h Make mp_unsafe_mod_integer not be unsafe. 2021-08-27 17:43:40 +01:00
network.h Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
nocmdline.c Make cmdline_tooltype a const int. 2020-01-30 06:40:22 +00:00
nocproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nogss.c Rewrite gprefs() in settings.c so that its input mapping includes 2011-06-25 17:37:31 +00:00
noprint.c noprint.c: fix compile failure. 2021-02-10 21:07:57 +00:00
noproxy.c Introduce noproxy.c. 2020-09-13 09:11:31 +01:00
norand.c Centralise 'no random numbers' stubs into norand.c. 2020-02-07 19:17:19 +00:00
nosshproxy.c Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
noterm.c Make calling term_nopaste() a cross-platform feature. 2013-08-17 16:06:40 +00:00
notiming.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nullplug.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
pageant.c pageant_get_keylist: add missing init of kl->broken. 2021-04-10 10:55:53 +01:00
pageant.h winpgnt: menu options to delete/reencrypt everything. 2021-04-04 10:02:24 +01:00
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pproxy.c Get rid of lots of implicit pointer types. 2018-10-04 19:10:23 +01:00
proxy.c Make SSH proxying conditional on CONF_proxy_type! 2021-05-24 14:16:01 +01:00
proxy.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
psftp.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.h Auxiliary application: 'psocks', a simple SOCKS server. 2020-02-23 16:36:27 +00:00
putty.h Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
puttymem.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
README Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
release.pl Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
settings.c Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
sign.sh GPG key rollover. 2021-08-14 08:02:27 +01:00
ssh.h New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
sshcr.h Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
sshkeygen.h Side-channel-safe rewrite of the Miller-Rabin test. 2021-08-27 18:04:49 +01:00
sshproxy.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
sshpubk.c Fix tight loop on reading truncated key files. 2021-06-12 14:08:10 +01:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
storage.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
terminal.c Fix terminal redraw slowdown in presence of true colour. 2021-07-15 20:16:49 +01:00
terminal.h Apply UPDATE_DELAY in arrears, not in advance. 2021-02-07 19:59:21 +00:00
testcrypt.c Add some tests of Miller-Rabin to cryptsuite. 2021-08-27 17:43:40 +01:00
testcrypt.h Add some tests of Miller-Rabin to cryptsuite. 2021-08-27 17:43:40 +01:00
testsc.c testsc: add side-channel test of probabilistic prime gen. 2021-08-27 18:04:49 +01:00
testzlib.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
timing.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
tree234.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
version.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
x11disp.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00

This is the README for PuTTY, a free Windows and Unix Telnet and SSH
client.

PuTTY is built using CMake <https://cmake.org/>. To compile in the
simplest way (on any of Linux, Windows or Mac), run these commands in
the source directory:

  cmake .
  cmake --build .

Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'
subdirectory using `doc/Makefile'. If you aren't using one of our
source snapshots, you'll need to do this yourself. Halibut can be
found at <https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

If you want to send bug reports or feature requests, please read the
Feedback section of the web site before doing so. Sending one-line
reports saying `it doesn't work' will waste your time as much as
ours.

See the file LICENCE for the licence conditions.