26 | | BOINC uses code signing to prevent this. Each project has a key pair for code signing. The private key should be kept on a network-isolated machine used for generating digital signatures for executables. The public key is distributed to, and stored on, clients. All files associated with application versions are sent with digital signatures using this key pair. |
27 | | |
28 | | Even if attackers break into a project's BOINC servers, they will not be able to cause clients to accept a false code file. |
29 | | |
30 | | BOINC provides a mechanism by which projects can periodically change their code-signing key pair. The project generates a new key pair, then (using the code-signing machine) generates a signature for the new public key, signed with the old private key. The core client will accept a new key only if it's signed with the old key. This mechanism is designed to prevent attackers from breaking into a BOINC server and distributing a false key. |
| 27 | BOINC uses [CodeSigning code signing] to prevent this. |
| 28 | Even if attackers break into a project's BOINC server, |
| 29 | they will not be able to cause clients to accept a false code file. |
34 | | Each result file has an associated maximum size. Each project has a '''upload authentication key pair'''. The public key is stored on the project's data servers. Result file descriptions are sent to clients with a digital signature, which is forwarded to the data server when the file is uploaded. The data server verifies the file description, and ensures that the amount of data uploaded does not exceed the maximum size. |
| 33 | BOINC provides an optional mechanism, '''upload certificates''', |
| 34 | to prevent data server attacks. |
| 35 | Each output file has an associated maximum size. |
| 36 | Each project has a '''upload authentication key pair'''. |
| 37 | The public key is stored on the project's data servers. |
| 38 | Result file descriptions are sent to clients with a digital signature, |
| 39 | which is forwarded to the data server when the file is uploaded. |
| 40 | The data server verifies the file description, |
| 41 | and ensures that the amount of data uploaded does not exceed the maximum size. |
38 | | Each project must address theft of private account information (e.g. email addresses) using conventional security practices. All server machines should be protected by a firewall, and should have all unused network services disabled. Access to these machines should be done only with encrypted protocols like SSH. The machines should be subjected to regular security audits. |
| 45 | Each project must address theft of private account information |
| 46 | (e.g. email addresses) using conventional security practices. |
| 47 | All server machines should be protected by a firewall, |
| 48 | and should have all unused network services disabled. |
| 49 | Access to these machines should be done only with encrypted protocols like SSH. |
| 50 | The machines should be subjected to regular security audits. |
52 | | BOINC uses account-based sandboxing: applications run under a specially-created account (Mac/Linux version 5.4+, Windows version 6+). If your system's file and directory permissions are set appropriately, applications will have no access to files outside of the BOINC directory. |
| 72 | BOINC uses account-based sandboxing: |
| 73 | applications run under a specially-created account |
| 74 | (Mac/Linux version 5.4+, Windows version 6+). |
| 75 | If file and directory permissions are set appropriately, |
| 76 | applications will have no access to files outside of the BOINC directory. |
56 | | BOINC prevents some problems: for example, it detects when applications use too much disk space, memory, or CPU time, and aborts them. Projects can minimize the likelihood of causing problems by pre-released application testing. Projects should test their applications thoroughly on all platforms and with all input data scenarios before promoting them to production status. |
| 80 | BOINC prevents some problems: |
| 81 | for example, it detects when applications use too much disk space, memory, or CPU time, and aborts them. Projects can minimize the likelihood of causing problems by pre-released application testing. |
| 82 | Projects should test their applications thoroughly on all platforms |
| 83 | and with all input data scenarios before promoting them to production status. |