1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-11 18:24:43 +02:00

All: Resolves #389: Documented method being used to encrypt master keys

This commit is contained in:
Laurent Cozic 2018-04-16 16:16:31 +02:00
parent fb6dee32ac
commit a6e4f47adf
3 changed files with 9 additions and 9 deletions

View File

@ -464,14 +464,14 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/hr.png" alt=""></td>
<td>Croatian</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/hr_HR.po">hr_HR</a></td>
<td>Hrvoje Mandić <a href="&#109;&#x61;&#105;&#x6c;&#x74;&#x6f;&#x3a;&#x74;&#114;&#98;&#117;&#104;&#111;&#x6d;&#x40;&#x6e;&#101;&#x74;&#x2e;&#x68;&#x72;">&#x74;&#114;&#98;&#117;&#104;&#111;&#x6d;&#x40;&#x6e;&#101;&#x74;&#x2e;&#x68;&#x72;</a></td>
<td>Hrvoje Mandić <a href="&#x6d;&#97;&#105;&#108;&#116;&#x6f;&#58;&#116;&#x72;&#x62;&#x75;&#104;&#x6f;&#x6d;&#64;&#110;&#101;&#116;&#46;&#x68;&#114;">&#116;&#x72;&#x62;&#x75;&#104;&#x6f;&#x6d;&#64;&#110;&#101;&#116;&#46;&#x68;&#114;</a></td>
<td>62%</td>
</tr>
<tr>
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/cz.png" alt=""></td>
<td>Czech</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/cs_CZ.po">cs_CZ</a></td>
<td>Lukas Helebrandt <a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#58;&#108;&#x75;&#107;&#x61;&#x73;&#64;&#x61;&#105;&#121;&#x61;&#x2e;&#x63;&#x7a;">&#108;&#x75;&#107;&#x61;&#x73;&#64;&#x61;&#105;&#121;&#x61;&#x2e;&#x63;&#x7a;</a></td>
<td>Lukas Helebrandt <a href="&#x6d;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#117;&#x6b;&#97;&#x73;&#64;&#x61;&#x69;&#121;&#x61;&#46;&#99;&#x7a;">&#108;&#117;&#x6b;&#97;&#x73;&#64;&#x61;&#x69;&#121;&#x61;&#46;&#99;&#x7a;</a></td>
<td>97%</td>
</tr>
<tr>
@ -485,7 +485,7 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/de.png" alt=""></td>
<td>Deutsch</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/de_DE.po">de_DE</a></td>
<td>Tobias Grasse <a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#x6f;&#58;&#x6d;&#x61;&#105;&#108;&#x40;&#x74;&#111;&#98;&#105;&#97;&#x73;&#x2d;&#x67;&#114;&#x61;&#x73;&#115;&#101;&#x2e;&#110;&#x65;&#x74;">&#x6d;&#x61;&#105;&#108;&#x40;&#x74;&#111;&#98;&#105;&#97;&#x73;&#x2d;&#x67;&#114;&#x61;&#x73;&#115;&#101;&#x2e;&#110;&#x65;&#x74;</a></td>
<td>Tobias Grasse <a href="&#109;&#x61;&#105;&#x6c;&#116;&#111;&#58;&#109;&#x61;&#105;&#x6c;&#x40;&#116;&#x6f;&#98;&#x69;&#x61;&#x73;&#x2d;&#x67;&#x72;&#x61;&#x73;&#x73;&#x65;&#46;&#x6e;&#101;&#116;">&#109;&#x61;&#105;&#x6c;&#x40;&#116;&#x6f;&#98;&#x69;&#x61;&#x73;&#x2d;&#x67;&#x72;&#x61;&#x73;&#x73;&#x65;&#46;&#x6e;&#101;&#116;</a></td>
<td>96%</td>
</tr>
<tr>
@ -499,7 +499,7 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/es.png" alt=""></td>
<td>Español</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/es_ES.po">es_ES</a></td>
<td>Fernando Martín <a href="&#x6d;&#97;&#105;&#x6c;&#x74;&#x6f;&#x3a;&#x66;&#64;&#109;&#114;&#x74;&#110;&#x2e;&#101;&#x73;">&#x66;&#64;&#109;&#114;&#x74;&#110;&#x2e;&#101;&#x73;</a></td>
<td>Fernando Martín <a href="&#109;&#97;&#x69;&#x6c;&#x74;&#x6f;&#58;&#102;&#x40;&#x6d;&#x72;&#116;&#x6e;&#x2e;&#x65;&#115;">&#102;&#x40;&#x6d;&#x72;&#116;&#x6e;&#x2e;&#x65;&#115;</a></td>
<td>100%</td>
</tr>
<tr>
@ -513,7 +513,7 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/es.png" alt=""></td>
<td>Galician</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/gl_ES.po">gl_ES</a></td>
<td>Marcos Lans <a href="&#x6d;&#97;&#x69;&#108;&#116;&#111;&#x3a;&#109;&#97;&#114;&#99;&#111;&#x73;&#108;&#97;&#110;&#x73;&#x67;&#97;&#114;&#122;&#x61;&#64;&#x67;&#109;&#x61;&#x69;&#x6c;&#46;&#99;&#x6f;&#109;">&#109;&#97;&#114;&#99;&#111;&#x73;&#108;&#97;&#110;&#x73;&#x67;&#97;&#114;&#122;&#x61;&#64;&#x67;&#109;&#x61;&#x69;&#x6c;&#46;&#99;&#x6f;&#109;</a></td>
<td>Marcos Lans <a href="&#109;&#x61;&#105;&#x6c;&#x74;&#111;&#x3a;&#x6d;&#x61;&#x72;&#99;&#111;&#x73;&#108;&#97;&#x6e;&#115;&#103;&#97;&#x72;&#122;&#97;&#64;&#x67;&#109;&#97;&#x69;&#108;&#46;&#99;&#111;&#109;">&#x6d;&#x61;&#x72;&#99;&#111;&#x73;&#108;&#97;&#x6e;&#115;&#103;&#97;&#x72;&#122;&#97;&#64;&#x67;&#109;&#97;&#x69;&#108;&#46;&#99;&#111;&#109;</a></td>
<td>97%</td>
</tr>
<tr>
@ -534,14 +534,14 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/br.png" alt=""></td>
<td>Português (Brasil)</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/pt_BR.po">pt_BR</a></td>
<td>Renato Nunes Bastos <a href="&#109;&#x61;&#x69;&#x6c;&#116;&#x6f;&#x3a;&#x72;&#x6e;&#x62;&#97;&#115;&#116;&#111;&#115;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#109;">&#x72;&#x6e;&#x62;&#97;&#115;&#116;&#111;&#115;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#109;</a></td>
<td>Renato Nunes Bastos <a href="&#109;&#x61;&#105;&#108;&#116;&#111;&#58;&#x72;&#110;&#x62;&#x61;&#x73;&#x74;&#x6f;&#x73;&#x40;&#x67;&#x6d;&#97;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;">&#x72;&#110;&#x62;&#x61;&#x73;&#x74;&#x6f;&#x73;&#x40;&#x67;&#x6d;&#97;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</a></td>
<td>95%</td>
</tr>
<tr>
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/ru.png" alt=""></td>
<td>Русский</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/ru_RU.po">ru_RU</a></td>
<td>Artyom Karlov <a href="&#109;&#x61;&#105;&#108;&#116;&#111;&#58;&#97;&#x72;&#116;&#x79;&#x6f;&#109;&#46;&#107;&#x61;&#x72;&#108;&#111;&#118;&#x40;&#x67;&#x6d;&#x61;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;">&#97;&#x72;&#116;&#x79;&#x6f;&#109;&#46;&#107;&#x61;&#x72;&#108;&#111;&#118;&#x40;&#x67;&#x6d;&#x61;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</a></td>
<td>Artyom Karlov <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#58;&#97;&#x72;&#x74;&#x79;&#111;&#109;&#x2e;&#x6b;&#97;&#x72;&#108;&#111;&#118;&#x40;&#103;&#109;&#97;&#x69;&#108;&#46;&#99;&#x6f;&#109;">&#97;&#x72;&#x74;&#x79;&#111;&#109;&#x2e;&#x6b;&#97;&#x72;&#108;&#111;&#118;&#x40;&#103;&#109;&#97;&#x69;&#108;&#46;&#99;&#x6f;&#109;</a></td>
<td>96%</td>
</tr>
<tr>

View File

@ -316,7 +316,7 @@
</tbody>
</table>
<h2 id="master-keys">Master Keys</h2>
<p>The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service, and are saved to the database. They are themselves encrypted via a user password.</p>
<p>The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service and are saved to the database. They are themselves encrypted via a user password using a <a href="https://github.com/laurent22/joplin/blob/fb6dee32ac035b00153106273135fb16be4b4fa5/ReactNativeClient/lib/services/EncryptionService.js#L263">strong encyption method</a>.</p>
<p>These encrypted master keys are transmitted with the sync data so that they can be available to each client. Each client will need to supply the user password to decrypt each key.</p>
<p>The application supports multiple master keys in order to handle cases where one offline client starts encrypting notes, then another offline client starts encrypting notes too, and later both sync. Both master keys will have to be decrypted separately with the user password.</p>
<p>Only one master key can be active for encryption purposes. For decryption, the algorithm will check the Master Key ID in the header, then check if it&#39;s available to the current app and, if so, use this for decryption.</p>

View File

@ -32,7 +32,7 @@ Data | ("Length" bytes) (ASCII)
## Master Keys
The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service, and are saved to the database. They are themselves encrypted via a user password.
The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service and are saved to the database. They are themselves encrypted via a user password using a [strong encyption method](https://github.com/laurent22/joplin/blob/fb6dee32ac035b00153106273135fb16be4b4fa5/ReactNativeClient/lib/services/EncryptionService.js#L263).
These encrypted master keys are transmitted with the sync data so that they can be available to each client. Each client will need to supply the user password to decrypt each key.