1. 緒論
訊息完整性的重要性在於確保資料在傳輸過程中未經竄改 1。這對於建立企業對企業 (B2B) 通訊的信任和可靠性至關重要 2。在 AS2 (Applicability Statement 2) 通訊中,訊息完整性檢查 (MIC) 與訊息回條 (MDN) 密切相關,對於法律上有效的不可否認性至關重要 11。訊息完整性不僅僅是錯誤偵測(如網路中的循環冗餘校驗 CRC 6),更包含透過密碼學保證訊息的真實性和防篡改能力。框架檢查序列 (FCS) 和 MIC 的區別在於,MIC 尤其在與密碼學結合使用時,驗證的是發送者的合法性和真實性,而不僅僅是資料是否損壞 6。這意味著在 AS2 等協定中,MIC 提供了更高層級的安全保證。
AS2 是一種透過 HTTP/S 安全地進行 B2B 資料交換的協定, S_R19, 401, 404, 407,27, 412, 414, 415, 418,14, 30, S_S3, S_S4, S_S5, 12,16, 13, 14,140,141,142,143,144,145,146,147,148, 300, 301, 302, 25, 304, 306, 307, 36, 309, S_S30, S_S31, 20, S_S33, S_S34, S_S35, S_S36, S_S37, S_S38, S_S39, S_S40, S_S42, S_S46, S_S48, S_S49, S_S50, S_S51, S_S52, S_S53]。MDN 是一種數位簽章的回條,用於確認訊息的傳輸和完整性 11。MIC 是一個基於訊息內容計算出的雜湊值,用於確保訊息的完整性 [401, 404, 412, 414, 415, 76, 79, S_R51,14, 30, S_S3, S_S4, S_S5, 12,16, 13, 14,141,142,143,144,145,148, 304, 306, 20, S_S35, S_S39, S_S49, S_S51]。MDN 在 AS2 中提供了一個重要的回饋機制,透過確認訊息的接收和原始訊息未被更改的狀態(透過 MIC),實現了不可否認性。多個片段(例如14、30、12、13)強調 MDN 包含原始訊息的 MIC,發送者可以將其與本地計算的 MIC 進行比較。這種比較是驗證完整性和實現接收不可否認性的核心機制。2. 理解 AS2 協定與訊息回條 (MDN)
AS2 的基礎是 HTTP/S 和 S/MIME, S_R19, 401, 404, 407,27, 412, 414, 415, 418,14, 30, S_S3, S_S4, S_S5, 12,16, 13, 14,140,141,142,143,144,145,146,147,148, 300, 301, 302, 25, 304, 306, 307, 36, 309, S_S30, S_S31, 20, S_S33, S_S34, S_S35, S_S36, S_S37, S_S38, S_S39, S_S40, S_S42, S_S46, S_S48, S_S49, S_S50, S_S51, S_S52, S_S53],它支援加密、數位簽章和確認 11。AS2 與酬載無關,可以傳輸各種資料格式,如 EDI、XML 等 11。AS2 利用既有的網際網路標準(HTTP、MIME、S/MIME)提供了一個穩健且廣泛採用的安全 B2B 資料交換解決方案,使其更容易實施並與現有基礎架構整合。許多片段(例如14、14、36、20)反覆提及 HTTP/S 和 S/MIME,突顯了 AS2 對這些基本網際網路技術的依賴。這種標準化有助於其互操作性和廣泛採用。MDN 的作用是確認訊息的接收和完整性 11,它可以是同步的(HTTP 回應)或非同步的(單獨的 HTTP 訊息)12。MDN 通常會進行數位簽章以實現不可否認性 [404, 407, 412, 415, 418,14, 30, S_S3, S_S5, 12,16, 13, 14,141,142,143,144,145,148, 304, 306, 20, S_S35, S_S39, S_S49, S_S51],並在 Received-Content-MIC 欄位中包含原始訊息的 MIC [404, 407, 412, 415, 418, 30, 12,16, 14,141,142,143,144,14。同步和非同步 MDN 的選項根據貿易夥伴的通訊需求和基礎架構提供了靈活性。對於不需要立即確認或處理時間可能較長的情況,非同步 MDN 特別有用。片段(如27 和16)清楚地解釋了同步和非同步 MDN 之間的區別,並強調了使用 Receipt-delivery-option 標頭進行非同步 MDN。這種區別允許更具適應性的通訊模式。
3. AS2 中的訊息完整性檢查 (MIC) 值計算
MIC 的目的是驗證接收到的訊息內容與發送的內容是否完全相同 [401, 404, 412, 414, 415, 76, 79, S_R51,14, 30, S_S3, S_S4, S_S5, 12,16, 13, 14,141,142,143,144,145,148, 304, 306, 20, S_S35, S_S39, S_S49, S_S51],並偵測傳輸過程中是否發生任何竄改或變更 2。發送者使用 MIC 與回傳的 MDN 中的 MIC 進行比較 [401, 404, 412, 414, 415, 76, 79, S_R51,14, 30, S_S3, S_S4, S_S5, 12,16, 13, 14,141,142,143,144,145,148, 304, 306, 20, S_S35, S_S39, S_S49, S_S51]。MIC 充當訊息酬載的數位指紋,確保即使是微小的修改也會導致不同的雜湊值,從而提醒接收者(並隨後透過 MDN 比較提醒發送者)潛在的完整性問題。解釋 SHA-256 的片段(40、41、7、42)突顯了雜湊演算法對輸入資料中微小變更的敏感性。此屬性是 MIC 有效偵測篡改的基礎。
用於 MIC 的雜湊演算法通常包括 SHA-1、MD5 和 SHA-256 [404, 414, 415, 79, S_R51, 30, S_S3, S_S4, S_S5, 12,16,141,142,144,145, 304, S_S30, S_S34, S_S35, S_S46, S_S49, S_S50, S_S51, S_S54]。由於安全漏洞,建議使用 SHA-2 而不是 SHA-1 和 MD5 [40, 7, 413, 76, S_R50, 30, S_S3, S_S4, S_S5, 12,16,141,142,144,145, 304, S_S30, S_S34, S_S35, S_S46, S_S49, S_S50, S_S51, S_S54]。演算法在 Disposition-Notification-Options 標頭的 signed-receipt-micalg 參數中指定 [404, 407, 412, 415,16,143,146, 300, S_S33]。雖然一些系統可能仍然支援較舊的演算法,但行業趨勢和安全最佳實踐強烈建議使用更強大的演算法(如 SHA-256)進行 MIC 計算,以降低碰撞攻擊的風險。討論 SHA-256 的片段(40、41、7、42)經常提到其相較於 SHA-1 和 MD5 的更高安全性,這是因為其較大的雜湊輸出大小,使得尋找碰撞在計算上不可行。這就是為什麼它現在是推薦的演算法。
4. MIC 值計算與 MIME 標頭
根據 RFC 4130 的一般規則,對於簽署的訊息,MIC 是基於簽署的 MIME 標頭和內容計算的 [404,43, 78, 25]。對於加密但未簽署的訊息,MIC 是基於未壓縮的資料內容(包括所有 MIME 標頭欄位和任何應用的內容傳輸編碼)計算的 [25,43, 78,149, 25, 20]。對於未簽署且未加密的訊息,MIC 是基於訊息內容計算的,不包含 MIME 標頭 [412,43, 78,14。MIME 標頭是否包含在 MIC 計算中,關鍵取決於應用於原始 AS2 訊息的安全措施。這確保了完整性檢查涵蓋了訊息的整個安全部分。RFC 4130(在43、78 中提及)和 RFC 5402(25、25)中關於基於簽署和加密狀態的標頭包含的明確區分,表明了一個深思熟慮的設計選擇,以確保為不同的安全場景提供適當的完整性檢查。
對於已簽署的訊息,MIC 包含屬於訊息簽署部分的 MIME 標頭 [404,43, 78, 25]。在計算 MIC 之前可能需要對 MIME 標頭進行規範化 [77, 7。當訊息被簽署時,簽章涵蓋訊息的特定部分,包括相關的 MIME 標頭。因此,MDN 的 MIC 必須基於相同的資料進行計算,以確保有效的比較和已簽署組件完整性的驗證。如果 MIC 僅基於已簽署訊息的內容進行計算,攻擊者可能會在不影響 MIC 的情況下更改未簽署的標頭,從而損害接收者所感知的整體訊息完整性。將已簽署的標頭包含在 MIC 中可以防止這種情況發生。
對於加密但未簽署的訊息,MIC 包含未壓縮資料的所有 MIME 標頭欄位和任何應用的內容傳輸編碼 [25,43, 78,149, 25, 20]。MIC 是基於解密的 MIME 標頭和內容計算的 [412,43, 7。即使訊息酬載已加密以確保機密性,MIME 標頭也提供了關於訊息的重要元資料。即使內容本身受到加密保護,將這些標頭包含在未簽署但已加密訊息的 MIC 計算中,也能確保這些元資料在傳輸過程中未被篡改。雖然加密確保了內容的機密性,但它並不能固有地保證其完整性。將標頭包含在 MIC 中為訊息信封提供了一個獨立於加密提供的機密性的完整性檢查。
對於未加密且未簽署的訊息,MIC 僅基於訊息內容計算,不包含 MIME 或任何其他 RFC 2822 標頭 [412,43, 78,14。在沒有任何安全措施(如簽署或加密)的情況下,MIC 的重點完全在於傳輸的實際資料酬載的完整性。在這種情況下包含標頭不會增加顯著的安全價值,反而可能引入實施和比較方面的複雜性。由於沒有簽章將標頭與內容綁定,也沒有加密來保護整個訊息結構,因此僅基於內容計算 MIC 可以簡化對正在交換的核心資料的完整性檢查。
5. SHA-256 在 AS2 MIC 值計算中的作用
SHA-256 是 SHA-2 系列的一部分,被認為比 SHA-1 和 MD5 更安全 7,它產生一個 256 位元(32 位元組)的雜湊值 7,廣泛應用於數位簽章、憑證授權單位和區塊鏈技術 7。SHA-256 由於其較大的雜湊輸出,提供了更高的安全性,相較於較舊的演算法,攻擊者更難找到碰撞。其在各種對安全性要求高的應用中的廣泛採用,突顯了其可靠性。SHA-256 位元長度的增加直接轉化為潛在碰撞的搜尋空間大幅增加,使得使用當前運算能力進行暴力破解或創建具有相同雜湊值的惡意訊息在實際上不可行。
AS2 支援 SHA-256 作為 MIC 演算法 [404, 414, 415, 79, S_R50, S_R51, 30, S_S3, S_S4, S_S5, 12,16,141,142,144,145, 304, S_S30, S_S34, S_S35, S_S46, S_S49, S_S50, S_S51, S_S54],並且越來越被推薦為優於 SHA-1 和 MD5 的首選演算法 [404, 76, S_R50, 30, S_S3, S_S4, S_S5, 12,16,141,142,144,145, 304, S_S30, S_S34, S_S35, S_S46, S_S49, S_S50, S_S51, S_S54]。一些實作可能仍然預設或支援較舊的演算法以實現相容性 [404, 419, S_R53, S_R56]。雖然 SHA-256 是 AS2 中 MIC 的現代建議,但與舊有系統的互通性可能仍然需要支援較舊的演算法。然而,新的實作應優先考慮 SHA-256 以增強安全性。密碼學標準的發展以及舊演算法中漏洞的發現,推動了對更強大演算法(如 SHA-256)的建議。然而,與使用舊系統的夥伴進行通訊的需求,使得許多 AS2 解決方案需要繼續支援這些演算法。
6. 結論
關於 MIME 標頭的 MIC 值計算規則,根據訊息安全狀態總結如下:對於已簽署的訊息,MIC 包含已簽署的 MIME 標頭和內容。對於加密但未簽署的訊息,MIC 包含所有 MIME 標頭和未壓縮資料的內容傳輸編碼。對於未加密且未簽署的訊息,MIC 僅包含訊息內容,不包含 MIME 標頭。為了提高安全性,應強調使用 SHA-256 進行 MIC 值計算。為了正確計算 MIC 值並確保互通性,遵循 RFC 規範(RFC 4130、RFC 5402)至關重要。
訊息安全狀態MIC 值計算中是否包含 MIME 標頭相關 RFC已簽署是(已簽署的標頭)RFC 4130, RFC 5402加密,未簽署是(所有標頭,未壓縮資料)RFC 4130, RFC 5402未加密,未簽署否RFC 4130, RFC 5402
最終,理解 AS2 訊息的特定安全上下文(已簽署、已加密或兩者皆非)對於正確判斷相應 MDN 的 MIC 值計算是否包含 MIME 標頭至關重要。這確保了準確的完整性驗證和 B2B 資料交換中可靠的不可否認性。針對不同的訊息安全措施,MIC 值計算採用了細緻入微的方法,確保完整性檢查與現有的安全措施範圍相符。
引用的著作
- Message Integrity in Cryptography - GeeksforGeeks, 檢索日期:3月 20, 2025, https://www.geeksforgeeks.org/message-integrity-in-cryptography/
- engineering.purdue.edu, 檢索日期:3月 20, 2025, https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture15.pdf
- Does Encryption Ensure Data Integrity?, 檢索日期:3月 20, 2025, https://blog.ise.io/blog/does-encryption-ensure-data-integrity
- Message Integrity – Practical Networking .net, 檢索日期:3月 20, 2025, https://www.practicalnetworking.net/series/cryptography/message-integrity/
- Verifying consumer signing information to protect message integrity using WSS APIs - IBM, 檢索日期:3月 20, 2025, https://www.ibm.com/docs/en/was/9.0.5?topic=smrcuwa-verifying-consumer-signing-information-protect-message-integrity-using-wss-apis
- Correlation between MIC (Message Integrity Check) and Frame Check Sequence (CRC), Why do we need MIC if we have FCS? : r/networking - Reddit, 檢索日期:3月 20, 2025, https://www.reddit.com/r/networking/comments/1be70wv/correlation_between_mic_message_integrity_check/
- What Is the SHA-256 Algorithm & How It Works - SSL Dragon, 檢索日期:3月 20, 2025, https://www.ssldragon.com/blog/sha-256-algorithm/
- Verifying data integrity and authenticity using SHA-256 and GPG - Linux Kamarada, 檢索日期:3月 20, 2025, https://linuxkamarada.com/en/2018/11/08/verifying-data-integrity-and-authenticity-using-sha-256-and-gpg/
- How to verify SHA-256 checksum? - Rublon Help, 檢索日期:3月 20, 2025, https://help.rublon.com/en/support/solutions/articles/1000308518-how-to-verify-sha-256-checksum-
- SHA-256 or MD5 for file integrity - hash - Stack Overflow, 檢索日期:3月 20, 2025, https://stackoverflow.com/questions/14139727/sha-256-or-md5-for-file-integrity
- Comprehensive Guide to AS2 Protocol | Aayu Blog, 檢索日期:3月 20, 2025, https://aayutechnologies.com/blog/as2-protocol-explained/
- MDN Messages - BizTalk Server - Microsoft Learn, 檢索日期:3月 20, 2025, https://learn.microsoft.com/en-us/biztalk/core/mdn-messages
- Introduction to AS2, 檢索日期:3月 20, 2025, https://hstechdocs.helpsystems.com/manuals/globalscape/eft82/mergedprojects/eventrules/introduction_to_as2.htm
- The AS2 EDI Protocol Explained - ecosio, 檢索日期:3月 20, 2025, https://ecosio.com/en/blog/the-as2-edi-protocol-explained/
- MDN acknowledgments for AS2 messages in Azure Logic Apps, 檢索日期:3月 20, 2025, https://docs.azure.cn/en-us/logic-apps/logic-apps-enterprise-integration-as2-mdn-acknowledgment
- AS2 Protocol - Aayu Technologies, 檢索日期:3月 20, 2025, https://aayutechnologies.com/docs/as2/as2-protocol/
- AS2: The Complete Guide - CData Arc, 檢索日期:3月 20, 2025, https://arc.cdata.com/resources/edi/as2.rst
- What is an AS2 MDN? | JSCAPE, 檢索日期:3月 20, 2025, https://www.jscape.com/blog/what-is-an-as2-mdn
- Introduction to AS2, 檢索日期:3月 20, 2025, https://hstechdocs.helpsystems.com/manuals/globalscape/archive/eft5/as2/introduction_to_as2.htm
- AS2 (RFC 4130) - MIME-Based Secure Peer-to-Peer Business Data Interchange Using HTTP Applicability Statement 2 (AS2) | Interoperable Europe Portal, 檢索日期:3月 20, 2025, https://interoperable-europe.ec.europa.eu/collection/ict-standards-procurement/solution/as2-rfc-4130-mime-based-secure-peer-peer-business-data-interchange-using-http-applicability
- RFC 3335: MIME-based Secure Peer-to-Peer Business Data Interchange over the Internet, 檢索日期:3月 20, 2025, https://www.rfc-editor.org/rfc/rfc3335.html
- RFC 3335 - MIME-based Secure Peer-to-Peer Business Data Interchange over the Internet, 檢索日期:3月 20, 2025, https://datatracker.ietf.org/doc/html/rfc3335
- AS1 Transport - TIBCO Product Documentation, 檢索日期:3月 20, 2025, https://docs.tibco.com/pub/bcce/1.0.0/doc/html/GUID-408C71B1-3937-452E-B121-D40C89174198.html
- MIME-based Secure Peer-to-Peer Business Data Interchange over the Internet, 檢索日期:3月 20, 2025, https://www.researchgate.net/publication/234781707_MIME-based_Secure_Peer-to-Peer_Business_Data_Interchange_over_the_Internet
- RFC 5402 - Compressed Data within an Internet Electronic Data Interchange (EDI) Message, 檢索日期:3月 20, 2025, https://datatracker.ietf.org/doc/html/rfc5402
- MDN Construction from AS2/AS3 Message - EDIdEv, 檢索日期:3月 20, 2025, https://secure.edidev.net/edidev-ca/help/Using/Using_AS2/Using_MDN/MDNRequestFromAs2SubjMsg.htm
- Creating an AS2 Client in Stages - EDIdEv, 檢索日期:3月 20, 2025, https://www.edidev.com/articles/As2Step/creating_As2Client_Step.html
- Generating an Outgoing MDN - BizTalk Server | Microsoft Learn, 檢索日期:3月 20, 2025, https://learn.microsoft.com/en-us/biztalk/core/generating-an-outgoing-mdn
- How AS2 works - Aayu Technologies, 檢索日期:3月 20, 2025, https://aayutechnologies.com/docs/as2/how-as2-works/
- MDN acknowledgments for AS2 messages in Azure Logic Apps - Microsoft Learn, 檢索日期:3月 20, 2025, https://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-enterprise-integration-as2-mdn-acknowledgment
- AS2 Troubleshooting - Orderful Developer Hub, 檢索日期:3月 20, 2025, https://docs.orderful.com/docs/as2-troubleshooting
- An AS2 Server example in VB .NET - EDIdEv, 檢索日期:3月 20, 2025, https://edidev.com/samples/transmit/vbAs2ServerSourcecode.htm
- EDIINT MDN Building Service - IBM, 檢索日期:3月 20, 2025, https://public.dhe.ibm.com/software/commerce/doc/sb2bi/si50/stds62/Stds62_EDIINT_MDN_Building_svc.pdf
- S/MIME - Wikipedia, 檢索日期:3月 20, 2025, https://en.wikipedia.org/wiki/S/MIME
- Latest S/MIME Baseline Requirements - CA/Browser Forum, 檢索日期:3月 20, 2025, https://cabforum.org/working-groups/smime/requirements/
- AS2 - Wikipedia, 檢索日期:3月 20, 2025, https://en.wikipedia.org/wiki/AS2
- AS2 Transport - TIBCO Product Documentation, 檢索日期:3月 20, 2025, https://docs.tibco.com/pub/bcce/1.0.0/doc/html/GUID-CFC7054E-F70E-42B1-B311-6ED10EF8C900.html
- AS2 Messages - BizTalk Server - Microsoft Learn, 檢索日期:3月 20, 2025, https://learn.microsoft.com/en-us/biztalk/core/as2-messages
- Receive-Side Processing of an Incoming EDI Message over AS2 - BizTalk Server, 檢索日期:3月 20, 2025, https://learn.microsoft.com/en-us/biztalk/core/receive-side-processing-of-an-incoming-edi-message-over-as2
- What is the SHA-256 algorithm, and how does it work? - NordVPN, 檢索日期:3月 20, 2025, https://nordvpn.com/blog/sha-256/
- SHA256 Hash Online Calculator - LambdaTest, 檢索日期:3月 20, 2025, https://www.lambdatest.com/free-online-tools/sha256-hash-calculator
- How Does SHA-256 Work? - YouTube, 檢索日期:3月 20, 2025, https://www.youtube.com/watch?v=f9EbD6iY9zI
- An AS2 Client example in C# - EDIdEv, 檢索日期:3月 20, 2025, https://www.edidev.com/samples/transmit/cSharpAs2ClientSourcecode.htm
- SHA256 File Checksum - Online Tools, 檢索日期:3月 20, 2025, https://emn178.github.io/online-tools/sha256_checksum.html
- How to check the SHA256 integrity of a downloaded file or installer | Schneider Electric USA, 檢索日期:3月 20, 2025, https://www.se.com/us/en/faqs/FAQ000244427/