From 27bdcb6672f7b9cd4cc9bda1cdeb8c2171dad57d Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 26 Jun 2022 20:14:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E7=AB=AF=E5=BA=95=E9=83=A8=E7=8A=B6=E6=80=81=E6=A0=8F?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/5294?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/repository.go | 20 +++++++++++++------- kernel/util/websocket.go | 2 ++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index a4a964987..e42b09a37 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -402,13 +402,19 @@ func indexRepoBeforeCloudSync() { return } elapsed := time.Since(start) - if nil != latest && latest.ID != index.ID { - // 对新创建的快照需要更新备注,加入耗时统计 - index.Memo = fmt.Sprintf("[Auto] Cloud sync, completed in [%.2fs]", elapsed.Seconds()) - err = repo.PutIndex(index) - if nil != err { - util.LogErrorf("put index into data repo before cloud sync failed: %s", err) - return + if nil != latest { + if latest.ID != index.ID { + // 对新创建的快照需要更新备注,加入耗时统计 + index.Memo = fmt.Sprintf("[Auto] Cloud sync, completed in [%.2fs]", elapsed.Seconds()) + err = repo.PutIndex(index) + if nil != err { + util.PushStatusBar("Save data snapshot for cloud sync failed") + util.LogErrorf("put index into data repo before cloud sync failed: %s", err) + return + } + util.PushStatusBar("Made a new data snapshot for cloud sync") + } else { + util.PushStatusBar("Checked data snapshot and found no changes ") } } if 7000 < elapsed.Milliseconds() { diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index b3eda3aad..ad2bcf8a1 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -18,6 +18,7 @@ package util import ( "sync" + "time" "github.com/88250/gulu" "github.com/88250/melody" @@ -145,6 +146,7 @@ func PushErrMsg(msg string, timeout int) (msgId string) { } func PushStatusBar(msg string) { + msg += " (" + time.Now().Format("2006-01-02 15:04:05") + ")" BroadcastByType("main", "statusbar", 0, msg, nil) } From cdeda3f076c4b713a35672540ee47a6ffa6f1277 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 26 Jun 2022 20:15:59 +0800 Subject: [PATCH 2/5] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E7=AB=AF=E5=BA=95=E9=83=A8=E7=8A=B6=E6=80=81=E6=A0=8F?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/5294?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/repository.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index e42b09a37..b8268cee4 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -368,7 +368,7 @@ func IndexRepo(memo string) (err error) { }) elapsed := time.Since(start) util.LogInfof("index data repo elapsed [%.2fs]", elapsed.Seconds()) - util.PushStatusBar(fmt.Sprintf("Index data repo elapsed [%.2fs]", elapsed.Seconds())) + util.PushStatusBar(fmt.Sprintf("Indexed data repo in %.2fs", elapsed.Seconds())) util.PushClearProgress() return } @@ -439,6 +439,6 @@ func syncRepo() (err error) { }) elapsed := time.Since(start) util.LogInfof("sync data repo elapsed [%.2fs]", elapsed.Seconds()) - util.PushStatusBar(fmt.Sprintf("Sync data repo elapsed [%.2fs]", elapsed.Seconds())) + util.PushStatusBar(fmt.Sprintf("Synced data repo in %.2fs", elapsed.Seconds())) return } From 5ca22dc691b1fa6408a6315cb92c3b428de0a3ce Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 26 Jun 2022 20:49:00 +0800 Subject: [PATCH 3/5] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E7=AB=AF=E5=BA=95=E9=83=A8=E7=8A=B6=E6=80=81=E6=A0=8F?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=20Fix=20https://github.com/siyuan-note/siyua?= =?UTF-8?q?n/issues/5294?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/appearance/langs/en_US.json | 5 ++++- app/appearance/langs/fr_FR.json | 5 ++++- app/appearance/langs/zh_CHT.json | 5 ++++- app/appearance/langs/zh_CN.json | 5 ++++- kernel/model/repository.go | 31 +++++++++++++++++++++++-------- 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 83a1385dc..3e25351f4 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -896,6 +896,9 @@ "143": "Creating data snapshot...", "144": "Resetting data repository...", "145": "Data repository reset completed", - "146": "Failed to reset data repository: %s" + "146": "Failed to reset data repository: %s", + "147": "Created a new data snapshot, took %.2fs", + "148": "Checked the data snapshot and found no changes", + "149": "Data snapshot has been synchronized, took %.2fs" } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 02cbf623b..c3bb76d83 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -896,6 +896,9 @@ "143": "Création d'un instantané de données...", "144": "Réinitialisation du référentiel de données...", "145": "Réinitialisation du référentiel de données terminée", - "146": "Échec de la réinitialisation du référentiel de données : %s" + "146": "Échec de la réinitialisation du référentiel de données : %s", + "147": "Créé un nouvel instantané de données, a pris %.2fs", + "148": "Vérifié l'instantané des données et n'a trouvé aucun changement", + "149": "L'instantané des données a été synchronisé, a pris %.2fs" } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 127a47bf5..922eee3da 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -895,6 +895,9 @@ "143": "正在創建數據快照...", "144": "正在重置數據倉庫...", "145": "數據倉庫重置完畢", - "146": "重置數據倉庫失敗:%s" + "146": "重置數據倉庫失敗:%s", + "147": "創建了一個新的數據快照,耗時 %.2fs", + "148": "檢查數據快照,沒有發現任何變化", + "149": "已經同步數據快照,耗時 %.2fs" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 392ae3486..4d5af5852 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -897,6 +897,9 @@ "143": "正在创建数据快照...", "144": "正在重置数据仓库...", "145": "数据仓库重置完毕", - "146": "重置数据仓库失败:%s" + "146": "重置数据仓库失败:%s", + "147": "创建了一个新的数据快照,耗时 %.2fs", + "148": "检查数据快照,没有发现任何变化", + "149": "已经同步数据快照,耗时 %.2fs" } } diff --git a/kernel/model/repository.go b/kernel/model/repository.go index b8268cee4..7ed21ad8f 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -360,15 +360,27 @@ func IndexRepo(memo string) (err error) { defer writingDataLock.Unlock() start := time.Now() + latest, _ := repo.Latest() WaitForWritingFiles() - sql.WaitForWritingDatabase() filelock.ReleaseAllFileLocks() - _, err = repo.Index(memo, map[string]interface{}{ + index, err := repo.Index(memo, map[string]interface{}{ CtxPushMsg: CtxPushMsgToStatusBarAndProgress, }) + if nil != err { + util.PushStatusBar("Create data snapshot failed") + return + } elapsed := time.Since(start) - util.LogInfof("index data repo elapsed [%.2fs]", elapsed.Seconds()) - util.PushStatusBar(fmt.Sprintf("Indexed data repo in %.2fs", elapsed.Seconds())) + + if nil != latest { + if latest.ID != index.ID { + util.PushStatusBar(fmt.Sprintf(Conf.Language(147), elapsed.Seconds())) + } else { + util.PushStatusBar(Conf.Language(148)) + } + } else { + util.PushStatusBar(fmt.Sprintf(Conf.Language(147), elapsed.Seconds())) + } util.PushClearProgress() return } @@ -393,11 +405,12 @@ func indexRepoBeforeCloudSync() { } start := time.Now() - latest, err := repo.Latest() + latest, _ := repo.Latest() index, err := repo.Index("[Auto] Cloud sync", map[string]interface{}{ CtxPushMsg: CtxPushMsgToStatusBar, }) if nil != err { + util.PushStatusBar("Create data snapshot for cloud sync failed") util.LogErrorf("index data repo before cloud sync failed: %s", err) return } @@ -412,10 +425,12 @@ func indexRepoBeforeCloudSync() { util.LogErrorf("put index into data repo before cloud sync failed: %s", err) return } - util.PushStatusBar("Made a new data snapshot for cloud sync") + util.PushStatusBar(fmt.Sprintf(Conf.Language(147), elapsed.Seconds())) } else { - util.PushStatusBar("Checked data snapshot and found no changes ") + util.PushStatusBar(Conf.Language(148)) } + } else { + util.PushStatusBar(fmt.Sprintf(Conf.Language(147), elapsed.Seconds())) } if 7000 < elapsed.Milliseconds() { util.LogWarnf("index data repo before cloud sync elapsed [%dms]", elapsed.Milliseconds()) @@ -439,6 +454,6 @@ func syncRepo() (err error) { }) elapsed := time.Since(start) util.LogInfof("sync data repo elapsed [%.2fs]", elapsed.Seconds()) - util.PushStatusBar(fmt.Sprintf("Synced data repo in %.2fs", elapsed.Seconds())) + util.PushStatusBar(fmt.Sprintf(Conf.Language(149), elapsed.Seconds())) return } From aa691726e04392e24aaf2a58f759a3dac89e24ee Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 26 Jun 2022 21:48:38 +0800 Subject: [PATCH 4/5] =?UTF-8?q?:memo:=20=E7=94=A8=E6=88=B7=E6=8C=87?= =?UTF-8?q?=E5=8D=97=20`=E6=95=B0=E6=8D=AE=E5=AE=89=E5=85=A8`=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=B8=AD=E5=8A=A0=E5=85=A5=20`=E5=A8=81=E8=83=81?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B`=20=E7=AB=A0=E8=8A=82=20Fix=20https://github?= =?UTF-8?q?.com/siyuan-note/siyuan/issues/5250?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20210117215840-jcl17fx.sy | 784 +++++++++++++++++- .../20210117211155-56n4odu.sy | 776 ++++++++++++++++- .../20211226115043-afhev0g.sy | 784 +++++++++++++++++- 3 files changed, 2341 insertions(+), 3 deletions(-) diff --git a/app/guide/20210808180117-6v0mkxr/20210117215840-jcl17fx.sy b/app/guide/20210808180117-6v0mkxr/20210117215840-jcl17fx.sy index b0900f351..1794c410f 100644 --- a/app/guide/20210808180117-6v0mkxr/20210117215840-jcl17fx.sy +++ b/app/guide/20210808180117-6v0mkxr/20210117215840-jcl17fx.sy @@ -6,7 +6,7 @@ "id": "20210117215840-jcl17fx", "title": "Data Security", "type": "doc", - "updated": "20220111133319" + "updated": "20220626214710" }, "Children": [ { @@ -346,6 +346,788 @@ ] } ] + }, + { + "ID": "20220626214041-sz90qpf", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626214041-sz90qpf", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Threat Model" + } + ] + }, + { + "ID": "20220626214041-68ld138", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-68ld138", + "updated": "20220626214048" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "It mainly evaluates local data security and SiYuan cloud storage security." + } + ] + }, + { + "ID": "20220626214041-mu28gc4", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214041-mu28gc4", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Premise" + } + ] + }, + { + "ID": "20220626214041-susd3su", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-susd3su", + "updated": "20220626214653" + }, + "Children": [ + { + "ID": "20220626214041-r7wqevv", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-r7wqevv", + "updated": "20220626214653" + }, + "Children": [ + { + "ID": "20220626214041-0ji5vg8", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-0ji5vg8", + "updated": "20220626214131" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "The local host operating system is a fully trusted environment. This is the most basic premise of data security, and it can only be guaranteed based on this premise." + } + ] + }, + { + "ID": "20220626214041-0m7kunu", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-0m7kunu", + "updated": "20220626214653" + }, + "Children": [ + { + "ID": "20220626214041-v8p0as0", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-v8p0as0", + "updated": "20220626214653" + }, + "Children": [ + { + "ID": "20220626214041-asg2zwy", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-asg2zwy", + "updated": "20220626214653" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Availability of original data" + } + ] + } + ] + }, + { + "ID": "20220626214041-4a0wgmi", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-4a0wgmi", + "updated": "20220626214649" + }, + "Children": [ + { + "ID": "20220626214041-xd159p7", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-xd159p7", + "updated": "20220626214649" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Rriginal data is not leaked" + } + ] + } + ] + }, + { + "ID": "20220626214041-7x7h5tv", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-7x7h5tv", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-trypmwy", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-trypmwy", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Key security" + } + ] + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-walongz", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-walongz", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-qmyo4ov", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-qmyo4ov", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Users do not leak keys to attackers" + } + ] + } + ] + }, + { + "ID": "20220626214041-r0gnkdl", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-r0gnkdl", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-rtbhm04", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-rtbhm04", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Data in cloud storage will not be deleted" + } + ] + } + ] + }, + { + "ID": "20220626214041-w7h0sju", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-w7h0sju", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-2s2zb0n", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-2s2zb0n", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "AES-GCM encryption algorithm is not broken" + } + ] + } + ] + }, + { + "ID": "20220626214041-ttywl0b", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-ttywl0b", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-3eek7k1", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-3eek7k1", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "The attacker cannot provide the computing power required for brute force cracking" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-ku1495e", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214041-ku1495e", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Cloud storage can guarantee" + } + ] + }, + { + "ID": "20220626214041-pmwe9u7", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-pmwe9u7", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-dcrtsao", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-dcrtsao", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-1ozs7g3", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-1ozs7g3", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Data can only be decrypted with the correct key" + } + ] + } + ] + }, + { + "ID": "20220626214041-n2epubs", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-n2epubs", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-ofy8fcf", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-ofy8fcf", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Data cannot be decrypted after being tampered with" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-2i5mpyi", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214041-2i5mpyi", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Normal example" + } + ] + }, + { + "ID": "20220626214041-hxlxq6f", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-hxlxq6f", + "updated": "20220626214555" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Based on the above premises and guarantees, the following are examples of what an attacker can achieve." + } + ] + }, + { + "ID": "20220626214041-zhwz3ln", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-zhwz3ln", + "updated": "20220626214434" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "If an attacker has read-only access to cloud storage, he can:" + } + ] + }, + { + "ID": "20220626214041-7fc1xei", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-7fc1xei", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-3w8hwp2", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-3w8hwp2", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-f2315iq", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-f2315iq", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Get the encrypted data and try brute force cracking" + } + ] + } + ] + }, + { + "ID": "20220626214041-zx44bbo", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-zx44bbo", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-9424m7p", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-9424m7p", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Infer data size from index information" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-m3wwddi", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-m3wwddi", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "If an attacker is able to hijack the network, then he can:" + } + ] + }, + { + "ID": "20220626214041-mz2bu3y", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-mz2bu3y", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-3eofuvg", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-3eofuvg", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-ml4720h", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-ml4720h", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Tampering with data makes data unavailable" + } + ] + } + ] + }, + { + "ID": "20220626214041-v1d69l9", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-v1d69l9", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-66rla1o", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-66rla1o", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Get user ID information" + } + ] + } + ] + }, + { + "ID": "20220626214041-4sk5r3x", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-4sk5r3x", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-495954g", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-495954g", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Infer data size from traffic" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-eikbmi8", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626214041-eikbmi8", + "updated": "20220626214222" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Exception example" + } + ] + }, + { + "ID": "20220626214041-844aaoz", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-844aaoz", + "updated": "20220626214558" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "If the above premises or guarantees are violated, the following are examples of what an attacker can achieve." + } + ] + }, + { + "ID": "20220626214041-tqyy2wg", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-tqyy2wg", + "updated": "20220626214626" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "If an attacker is able to compromise the local host operating system, then he can:" + } + ] + }, + { + "ID": "20220626214041-t2pukqz", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-t2pukqz", + "updated": "20220626214644" + }, + "Children": [ + { + "ID": "20220626214041-vqdjcfd", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-vqdjcfd", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-55vp65s", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-55vp65s", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Modify or delete the original data, making the original data unavailable" + } + ] + } + ] + }, + { + "ID": "20220626214041-081qsim", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-081qsim", + "updated": "20220626214642" + }, + "Children": [ + { + "ID": "20220626214041-csmhiio", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-csmhiio", + "updated": "20220626214642" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Get original data" + } + ] + } + ] + }, + { + "ID": "20220626214041-77tr01l", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-77tr01l", + "updated": "20220626214644" + }, + "Children": [ + { + "ID": "20220626214041-wo4tkf4", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-wo4tkf4", + "updated": "20220626214644" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Get the key" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214041-9sz5qad", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-9sz5qad", + "updated": "20220626214710" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "If an attacker has write access to cloud storage, he can:" + } + ] + }, + { + "ID": "20220626214041-bfgt82v", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214041-bfgt82v", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-qjop563", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214041-qjop563", + "updated": "20220626214041" + }, + "Children": [ + { + "ID": "20220626214041-pu5jrjr", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214041-pu5jrjr", + "updated": "20220626214041" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "Modify or delete cloud storage, causing cloud storage data to be unavailable" + } + ] + } + ] + } + ] } ] } \ No newline at end of file diff --git a/app/guide/20210808180117-czj9bvb/20210117211155-56n4odu.sy b/app/guide/20210808180117-czj9bvb/20210117211155-56n4odu.sy index 730c2155f..1dbcd7798 100644 --- a/app/guide/20210808180117-czj9bvb/20210117211155-56n4odu.sy +++ b/app/guide/20210808180117-czj9bvb/20210117211155-56n4odu.sy @@ -6,7 +6,7 @@ "id": "20210117211155-56n4odu", "title": "数据安全", "type": "doc", - "updated": "20220111133217" + "updated": "20220626213935" }, "Children": [ { @@ -400,6 +400,780 @@ ] } ] + }, + { + "ID": "20220626205507-zakjqo5", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626205507-zakjqo5", + "updated": "20220626205745" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "威胁模型" + } + ] + }, + { + "ID": "20220626210804-d1iir4r", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210804-d1iir4r", + "updated": "20220626213925" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "主要针对本地数据安全和思源云端存储安全进行评估。" + } + ] + }, + { + "ID": "20220626210024-c045aps", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626210024-c045aps", + "updated": "20220626213021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "前提假设" + } + ] + }, + { + "ID": "20220626210038-joi74n0", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626210038-joi74n0", + "updated": "20220626211139" + }, + "Children": [ + { + "ID": "20220626210038-412dnfz", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210038-412dnfz", + "updated": "20220626210038" + }, + "Children": [ + { + "ID": "20220626210038-us3tpf5", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210038-us3tpf5", + "updated": "20220626210326" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "本地操作系统是完全受信任的环境。这是数据安全最基础的前提,基于该前提才能保证" + } + ] + }, + { + "ID": "20220626210254-707f04m", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626210254-707f04m" + }, + "Children": [ + { + "ID": "20220626210254-fr4kbsa", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210254-fr4kbsa" + }, + "Children": [ + { + "ID": "20220626210254-ldlvsgr", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210254-ldlvsgr", + "updated": "20220626210532" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "原始数据的可用性" + } + ] + } + ] + }, + { + "ID": "20220626210411-15gniy2", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210411-15gniy2" + }, + "Children": [ + { + "ID": "20220626210411-abr4ep7", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210411-abr4ep7", + "updated": "20220626210723" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "原始数据不被泄漏" + } + ] + } + ] + }, + { + "ID": "20220626210401-9o0os4g", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210401-9o0os4g" + }, + "Children": [ + { + "ID": "20220626210401-64ngms3", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210401-64ngms3", + "updated": "20220626210417" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "密钥的安全性" + } + ] + } + ] + } + ] + } + ] + }, + { + "ID": "20220626210629-dleyp1j", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210629-dleyp1j" + }, + "Children": [ + { + "ID": "20220626210629-7yee6s7", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210629-7yee6s7", + "updated": "20220626210707" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "用户不泄漏密钥给攻击者" + } + ] + } + ] + }, + { + "ID": "20220626210739-9bgfjnr", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626210739-9bgfjnr" + }, + "Children": [ + { + "ID": "20220626210739-2zabs74", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626210739-2zabs74", + "updated": "20220626210932" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "云端存储中的数据不被删除" + } + ] + } + ] + }, + { + "ID": "20220626211010-vq0mwwm", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626211010-vq0mwwm", + "updated": "20220626211025" + }, + "Children": [ + { + "ID": "20220626211010-6k8ivhp", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211010-6k8ivhp", + "updated": "20220626211025" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "AES-GCM 加密算法未被攻破" + } + ] + } + ] + }, + { + "ID": "20220626211022-6h7y6bs", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626211022-6h7y6bs", + "updated": "20220626211139" + }, + "Children": [ + { + "ID": "20220626211022-3n1z0hp", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211022-3n1z0hp", + "updated": "20220626211139" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "攻击者无法提供暴力破解所需算力" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626210027-hhtc2a6", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626210027-hhtc2a6", + "updated": "20220626213850" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "云端存储能够保证" + } + ] + }, + { + "ID": "20220626211230-el1oox9", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626211230-el1oox9", + "updated": "20220626211249" + }, + "Children": [ + { + "ID": "20220626211249-wrkarxp", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626211249-wrkarxp", + "updated": "20220626211249" + }, + "Children": [ + { + "ID": "20220626211249-2ovxrgo", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211249-2ovxrgo", + "updated": "20220626211503" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "只有通过正确的密钥才能解密数据" + } + ] + } + ] + }, + { + "ID": "20220626211459-k8c0zvf", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626211459-k8c0zvf" + }, + "Children": [ + { + "ID": "20220626211459-w4e8ch7", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211459-w4e8ch7", + "updated": "20220626211539" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "数据被篡改后无法解密" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626213039-vc4f1ts", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626213039-vc4f1ts", + "updated": "20220626213102" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "正常示例" + } + ] + }, + { + "ID": "20220626211621-yw8d4zb", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211621-yw8d4zb", + "updated": "20220626211919" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "基于上述假设和保证,下面是攻击者能够达成的目标示例。" + } + ] + }, + { + "ID": "20220626211754-ftwoqz4", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626211754-ftwoqz4", + "updated": "20220626212025" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻击者对云端存储具有只读权限,那么他能够:" + } + ] + }, + { + "ID": "20220626212000-iri4fhz", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626212000-iri4fhz", + "updated": "20220626212909" + }, + "Children": [ + { + "ID": "20220626212007-152nmb6", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626212007-152nmb6", + "updated": "20220626212007" + }, + "Children": [ + { + "ID": "20220626212007-sj2d1y0", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212007-sj2d1y0", + "updated": "20220626212245" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "获取到已经加密的数据,尝试暴力破解" + } + ] + } + ] + }, + { + "ID": "20220626212247-3ldjbn9", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626212247-3ldjbn9", + "updated": "20220626212909" + }, + "Children": [ + { + "ID": "20220626212247-bdfgh5c", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212247-bdfgh5c", + "updated": "20220626212909" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "通过索引信息推断出数据大小" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626212515-ap79woa", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212515-ap79woa", + "updated": "20220626212650" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻击者能够劫持网络,那么他能够:" + } + ] + }, + { + "ID": "20220626212651-jmsl9e0", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626212651-jmsl9e0", + "updated": "20220626212914" + }, + "Children": [ + { + "ID": "20220626212658-td3mom4", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626212658-td3mom4", + "updated": "20220626212658" + }, + "Children": [ + { + "ID": "20220626212658-cil0rtv", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212658-cil0rtv", + "updated": "20220626212759" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "篡改数据造成数据不可用" + } + ] + } + ] + }, + { + "ID": "20220626212804-op12pak", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626212804-op12pak" + }, + "Children": [ + { + "ID": "20220626212804-2kb2439", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212804-2kb2439", + "updated": "20220626212836" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "获得用户 ID 信息" + } + ] + } + ] + }, + { + "ID": "20220626212854-jn95j1j", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626212854-jn95j1j", + "updated": "20220626212914" + }, + "Children": [ + { + "ID": "20220626212854-4vfflua", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626212854-4vfflua", + "updated": "20220626212914" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "通过流量推断出数据大小" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626211209-ok2rvht", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626211209-ok2rvht", + "updated": "20220626213125" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "异常示例" + } + ] + }, + { + "ID": "20220626213125-y4dolh0", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213125-y4dolh0", + "updated": "20220626213144" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果违反了上述假设或保证,下面是攻击者能够达成的目标和示例。" + } + ] + }, + { + "ID": "20220626213144-2t86jkw", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213144-2t86jkw", + "updated": "20220626213227" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻击者能够入侵本地操作系统,那么他能够:" + } + ] + }, + { + "ID": "20220626213227-y3lsr2u", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626213227-y3lsr2u", + "updated": "20220626213836" + }, + "Children": [ + { + "ID": "20220626213228-5y4ooc5", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626213228-5y4ooc5", + "updated": "20220626213653" + }, + "Children": [ + { + "ID": "20220626213228-mcfm0xy", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213228-mcfm0xy", + "updated": "20220626213653" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "修改或删除原始数据,造成原始数据不可用" + } + ] + } + ] + }, + { + "ID": "20220626213330-4qecgfd", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626213330-4qecgfd", + "updated": "20220626213831" + }, + "Children": [ + { + "ID": "20220626213330-ycd3hae", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213330-ycd3hae", + "updated": "20220626213831" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "获得原始数据" + } + ] + } + ] + }, + { + "ID": "20220626213347-bm66fsj", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626213347-bm66fsj", + "updated": "20220626213836" + }, + "Children": [ + { + "ID": "20220626213347-6a376wm", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213347-6a376wm", + "updated": "20220626213836" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "获得密钥" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626213353-klg8vw5", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213353-klg8vw5", + "updated": "20220626213537" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻击者对云端存储具有写入权限,那么他能够:" + } + ] + }, + { + "ID": "20220626213507-6er6cfn", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626213507-6er6cfn", + "updated": "20220626213935" + }, + "Children": [ + { + "ID": "20220626213541-93non0e", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626213541-93non0e", + "updated": "20220626213935" + }, + "Children": [ + { + "ID": "20220626213541-t09iiuw", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626213541-t09iiuw", + "updated": "20220626213935" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "修改或删除云端存储,造成云端存储数据不可用" + } + ] + } + ] + } + ] } ] } \ No newline at end of file diff --git a/app/guide/20211226090932-5lcq56f/20211226115043-afhev0g.sy b/app/guide/20211226090932-5lcq56f/20211226115043-afhev0g.sy index ad32f407e..055137b3d 100644 --- a/app/guide/20211226090932-5lcq56f/20211226115043-afhev0g.sy +++ b/app/guide/20211226090932-5lcq56f/20211226115043-afhev0g.sy @@ -5,7 +5,7 @@ "icon": "1f50f", "id": "20211226115043-afhev0g", "title": "資料安全", - "updated": "20220111133353" + "updated": "20220626214021" }, "Children": [ { @@ -357,6 +357,788 @@ ] } ] + }, + { + "ID": "20220626214021-in5zyhv", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626214021-in5zyhv", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "威脅模型" + } + ] + }, + { + "ID": "20220626214021-6tofzu0", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-6tofzu0", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "主要針對本地數據安全和思源雲端存儲安全進行評估。" + } + ] + }, + { + "ID": "20220626214021-viqft4z", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214021-viqft4z", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "前提假設" + } + ] + }, + { + "ID": "20220626214021-x8i173y", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-x8i173y", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-7gox8eu", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-7gox8eu", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-2wsjz7h", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-2wsjz7h", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "本地操作系統是完全受信任的環境。這是數據安全最基礎的前提,基於該前提才能保證" + } + ] + }, + { + "ID": "20220626214021-vlffl2a", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-vlffl2a", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-dsnclyw", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-dsnclyw", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-1n601ag", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-1n601ag", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "原始數據的可用性" + } + ] + } + ] + }, + { + "ID": "20220626214021-w7t53bu", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-w7t53bu", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-ahy7fhq", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-ahy7fhq", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "原始數據不被洩漏" + } + ] + } + ] + }, + { + "ID": "20220626214021-y8k9lz5", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-y8k9lz5", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-h2gyyuo", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-h2gyyuo", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "密鑰的安全性" + } + ] + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-ergkh2g", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-ergkh2g", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-hao852y", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-hao852y", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "用戶不洩漏密鑰給攻擊者" + } + ] + } + ] + }, + { + "ID": "20220626214021-g0xbo70", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-g0xbo70", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-tblyjo1", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-tblyjo1", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "雲端存儲中的數據不被刪除" + } + ] + } + ] + }, + { + "ID": "20220626214021-xdngup7", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-xdngup7", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-lebj0c9", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-lebj0c9", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "AES-GCM 加密算法未被攻破" + } + ] + } + ] + }, + { + "ID": "20220626214021-axp1ikp", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-axp1ikp", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-jdn7lut", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-jdn7lut", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "攻擊者無法提供暴力破解所需算力" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-75a1qb0", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214021-75a1qb0", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "雲端存儲能夠保證" + } + ] + }, + { + "ID": "20220626214021-gz8p50i", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-gz8p50i", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-6mh42fa", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-6mh42fa", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-3268c0b", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-3268c0b", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "只有通過正確的密鑰才能解密數據" + } + ] + } + ] + }, + { + "ID": "20220626214021-6qmxb8n", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-6qmxb8n", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-b8dnd5h", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-b8dnd5h", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "數據被篡改後無法解密" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-k0l9w1q", + "Type": "NodeHeading", + "HeadingLevel": 3, + "Properties": { + "id": "20220626214021-k0l9w1q", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "正常示例" + } + ] + }, + { + "ID": "20220626214021-h6pm7s8", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-h6pm7s8", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "基於上述假設和保證,下面是攻擊者能夠達成的目標示例。" + } + ] + }, + { + "ID": "20220626214021-n88bvde", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-n88bvde", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻擊者對雲端存儲具有隻讀權限,那麼他能夠:" + } + ] + }, + { + "ID": "20220626214021-bu1nuv1", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-bu1nuv1", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-3i7p5ux", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-3i7p5ux", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-u08ygc7", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-u08ygc7", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "獲取到已經加密的數據,嘗試暴力破解" + } + ] + } + ] + }, + { + "ID": "20220626214021-udnvdb5", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-udnvdb5", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-v3l2lpa", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-v3l2lpa", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "通過索引信息推斷出數據大小" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-v7wq31z", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-v7wq31z", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻擊者能夠劫持網絡,那麼他能夠:" + } + ] + }, + { + "ID": "20220626214021-o83u6yc", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-o83u6yc", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-ly7r5qb", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-ly7r5qb", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-3utkkjt", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-3utkkjt", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "篡改數據造成數據不可用" + } + ] + } + ] + }, + { + "ID": "20220626214021-lr58bwm", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-lr58bwm", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-qmq9vxb", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-qmq9vxb", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "獲得用戶 ID 信息" + } + ] + } + ] + }, + { + "ID": "20220626214021-i53soj1", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-i53soj1", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-8nqmuhl", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-8nqmuhl", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "通過流量推斷出數據大小" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-v89v1l5", + "Type": "NodeHeading", + "HeadingLevel": 2, + "Properties": { + "id": "20220626214021-v89v1l5", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "異常示例" + } + ] + }, + { + "ID": "20220626214021-07gbtjr", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-07gbtjr", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果違反了上述假設或保證,下面是攻擊者能夠達成的目標和示例。" + } + ] + }, + { + "ID": "20220626214021-5mz1301", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-5mz1301", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻擊者能夠入侵本地操作系統,那麼他能夠:" + } + ] + }, + { + "ID": "20220626214021-57coq7j", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-57coq7j", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-m7n7mzh", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-m7n7mzh", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-j7hqbfp", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-j7hqbfp", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "修改或刪除原始數據,造成原始數據不可用" + } + ] + } + ] + }, + { + "ID": "20220626214021-2b6ovit", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-2b6ovit", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-giszicf", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-giszicf", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "獲得原始數據" + } + ] + } + ] + }, + { + "ID": "20220626214021-54puka1", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-54puka1", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-mcxeo69", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-mcxeo69", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "獲得密鑰" + } + ] + } + ] + } + ] + }, + { + "ID": "20220626214021-oxtgu33", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-oxtgu33", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "如果攻擊者對雲端存儲具有寫入權限,那麼他能夠:" + } + ] + }, + { + "ID": "20220626214021-8dj1v35", + "Type": "NodeList", + "ListData": {}, + "Properties": { + "id": "20220626214021-8dj1v35", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-i8s5ai0", + "Type": "NodeListItem", + "ListData": { + "BulletChar": 42, + "Marker": "Kg==" + }, + "Properties": { + "id": "20220626214021-i8s5ai0", + "updated": "20220626214021" + }, + "Children": [ + { + "ID": "20220626214021-ye9pf1i", + "Type": "NodeParagraph", + "Properties": { + "id": "20220626214021-ye9pf1i", + "updated": "20220626214021" + }, + "Children": [ + { + "Type": "NodeText", + "Data": "修改或刪除雲端存儲,造成雲端存儲數據不可用" + } + ] + } + ] + } + ] } ] } \ No newline at end of file From fa9115a081d8828a147dd8ceb75d136bd3a27fcf Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 26 Jun 2022 22:27:18 +0800 Subject: [PATCH 5/5] =?UTF-8?q?:art:=20=E6=A1=8C=E9=9D=A2=E7=AB=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=9A=90=E8=97=8F=E5=BA=95=E9=83=A8=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=8F=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/5292?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/appearance/langs/en_US.json | 2 ++ app/appearance/langs/fr_FR.json | 2 ++ app/appearance/langs/zh_CHT.json | 2 ++ app/appearance/langs/zh_CN.json | 2 ++ app/src/config/appearance.ts | 11 ++++++++++- app/src/types/index.d.ts | 1 + kernel/conf/appearance.go | 2 ++ 7 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 3e25351f4..98217ecb5 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -522,6 +522,8 @@ "appearance11": "shrink to the tray after clicking the close button", "appearance14": "Doc icon uses the system native Emoji", "appearance15": "The desktop uses Twitter Emoji by default, and the native Emoji font in the system will be used after it is turned on", + "appearance16": "Hide bottom status bar", + "appearance17": "Hide the status bar at the bottom of the desktop when enabled", "min": "Min", "restore": "Restore", "max": "Max", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index c3bb76d83..19010cd81 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -522,6 +522,8 @@ "appearance11": "shrink to the tray after clicking the close button", "appearance14": "L'icône Doc utilise l'Emoji natif du système", "appearance15": "Le bureau utilise Twitter Emoji par défaut, et la police Emoji native du système sera utilisée après son activation", + "appearance16": "Masquer la barre d'état inférieure", + "appearance17": "Masquer la barre d'état en bas du bureau lorsqu'elle est activée", "min": "Min", "restore": "Restaurer", "max": "Max", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 922eee3da..2566f1214 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -522,6 +522,8 @@ "appearance11": "點擊關閉按鈕後縮小到託盤中", "appearance14": "文檔圖示使用系統原生 Emoji", "appearance15": "桌面端預設使用 Twitter Emoji,開啟後將使用系統原生的 Emoji", + "appearance16": "隱藏底部狀態欄", + "appearance17": "開啟後將隱藏桌面端底部狀態欄", "min": "最小化", "restore": "向下還原", "max": "最大化", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 4d5af5852..fbf5e70f1 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -523,6 +523,8 @@ "appearance11": "点击关闭按钮后缩小到托盘中", "appearance14": "文档图标使用系统原生 Emoji", "appearance15": "桌面端默认使用 Twitter Emoji,开启后将使用系统原生的 Emoji", + "appearance16": "隐藏底部状态栏", + "appearance17": "开启后将隐藏桌面端底部状态栏", "min": "最小化", "restore": "向下还原", "max": "最大化", diff --git a/app/src/config/appearance.ts b/app/src/config/appearance.ts index 5720ef0bd..6b5237d74 100644 --- a/app/src/config/appearance.ts +++ b/app/src/config/appearance.ts @@ -147,6 +147,14 @@ export const appearance = { +