掩碼認證訊息的簡要介紹

2021-08-21 08:00:20 字數 2111 閱讀 3812

masked authenticated messaging(mam)是乙個實驗性的模組,正在接受同業評審。它是乙個附加的資料傳輸協議,在tangle之上增加了傳送和接收加密資料流的功能,類似rss,且對裝置的大小和成本不作限制。iota的共識協議賦予了訊息流的完整性。鑑於這些特性,mam滿足了行業重要的需求,即完整性和私密性。

mam使用基於merkle tree的簽名機制來對一條加密訊息的密文進行簽名。

merkle tree的根節點被用來作為通道的id。因為單一的樹僅持續一定時間,所有每條訊息包含了下乙個merkle tree的根節點(或者這個通道的下一方向)。因為之前的樹沒有被引用,所以這可用於向通道內新增乙個正向加密元素。

每一條訊息通過乙個[one-time pad](進行加密,one-time pad包含了通道id和用於訊息簽名的秘鑰的索引,乙個額外的隨機數可能被用來作為可撤銷的加密秘鑰。

使用屬於某一葉子節點的私鑰對密文雜湊進行簽名。加密後的內容、簽名和葉子節點的兄弟節點隨後發布至tangle網路,任何知道私鑰的人都可以找到並對它進行解密。

當消費一條mam訊息流時,首先通過驗證簽名並審核簽名屬於樹的葉子節點之一,對訊息進行驗證,之後解密訊息。如果簽名驗證失敗,那麼整個訊息被認為是無效的。

隱私和加密模式

mam可通過多種方式進行可見性和訪問控制。這裡介紹幾種模式,提供了細緻入微的mam使用場景,遠超過簡單的加密訊息流。

公開模式

公共模式使用交易的位址作為樹的根節點,即用於發布訊息秘鑰。任何使用者遇到這一訊息都能夠通過使用訊息的位址將其解碼。

這一模式和無線電廣播類似,可用於來自裝置或個體的公開宣告,可能的使用案例如twitter的山寨版,但是新增了不可變和資料完整性的特點。

私密模式

私密模式可用於加密訊息流不公開的情形。私密模式下,使用merkle tree根節點的雜湊作為位址。當隨機使用者遇到你的訊息,他們並不能解密你的訊息,因為不能夠從雜湊得到根節點。這使得mam訊息流只能被那些擁有根節點的使用者讀取。

這一模式和加密廣播更加類似,任何人都能夠看見,但只有那些知道如何查詢到它的人才能解密。當私有的裝置之間進行秘密的通訊時,私密模式十分有用。

限制模式

限制模式向私密模式增加了授權私鑰。用於向tangle網路發布的位址是授權私鑰、merkle tree結合後的雜湊。訊息發布者可以停止使用授權私鑰,而無需改變channel id(即merkle tree),那麼一旦需要,就可以撤銷訂閱者。

當乙個私鑰變更發生時,新的授權私鑰需要分發至有關方,從而允許訂閱訊息流。

前向加密

每條訊息包含下乙個merkle tree的根節點,一旦當前樹的葉子節點耗盡,如果知道訊息流的型別和可選的授權私鑰,那麼使用者可以方便地追隨訊息流。

基於當前訊息僅指向下乙個merkle tree,使用者無法讀取當前根節點之前的mam流中的訊息。可以將mam流比作高速公路,當第一次讀取流,你便進入了高速公路,不能夠逆向行駛。

很簡單,但是十分有用,尤其當和通道拆分結合起來時。

通道拆分

mam發布者可以決定在任何時候對通道進行拆分。這意味著,之後的訊息使用乙個新merkle tree,其根節點之前從未披露過。這一特性可以實現特定資料集合的分支通道,整體的資料並不用於共享,因此可實現許可資料和提供細粒度訪問。

永久通道拆分

例如個人身份記錄,可以有兩個主要分支:公開和私密資料。公開分支使用mam私密模式,並允許所有持有根節點的使用者讀取訊息。

訊息可能包含姓名、興趣列表和乙個base64編碼的個人。當去看病時,使用者可以和醫生分享日常體重資料的子訊息流。鑑於存在前向加密,醫生不能獲取許可權之外的額外資料。

短暫資訊流拆分

另外一種方式是對資料流的短暫通道拆分。某裝置報告每天的環境資料,當探測到任何環境異常時,裝置對通道進行拆分,並開始用更小的時間間隔報告資料。裝置除了定期向主通道傳送資料,還可以通知新拆分通道的監聽者,新拆分的通道包含了更加頻繁的更新。

這不僅維護了主訊息流的時間間隔,而且能為特殊場景靈活地新增輔助訊息流。

總結

專案管理相關認證簡要介紹(2) PMP

今天是專案管理相關認證簡要介紹的第二篇,我們今天一起來看下pmp。pmp全稱project management professional,是美國專案管理協會 project management institute 簡稱pmi 發起的,評估專案管理人員知識技能是否具有高品質的資格認證考試。個人覺得...

crontab 的簡要介紹

1 概述 crontab 用於週期性被執行的指令,該指令從標準裝置輸入指令,並將指令存放在crontab檔案中,供之後讀取和執行。etc crontab 存放被定期執行的指令 etc cron.deny 不能使用crontab的使用者 etc cron.allow 可以使用crontab的使用者 以...

Redis 簡要介紹 用於講解訊息中介軟體

1 安裝 redis yum install y redis 2 編輯配置檔案 etc redis.conf,redis作為乙個訊息中介軟體,那麼應該監聽於本機的外網socket上,因此修改 bind 0.0.0.0 3 啟動redis systemctl start redis 4 output外...