<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    通過開源、多平臺代碼簽名擴展 Apple 生態系統訪問權限

    VSole2022-09-22 14:18:26

    蘋果系統運行著一些現有的最大和最賺錢的軟件應用程序生態系統。理論上,要進入這些生態系統,傳統上需要使用macOS,并加入蘋果開發者計劃(Apple Developer Program)。

    如果你想為 Apple 操作系統開發應用程序,你可能會使用 Apple 的操作系統和 Apple 的官方工具進行開發和分發。但對于開源開發人員通常希望以最小的努力分發跨平臺應用程序。在整個編程語言生態系統中,你運行的操作系統被抽象為許多應用程序的實現細節。通過創建 macOS、iOS 等開發需要直接訪問 macOS 和通常高于市場價格的Apple 硬件的要求,蘋果軟件生態系統強加的分發要求是有效的排他性,并阻止利益相關方對進入其生態系統。

    在蘋果平臺上發布軟件的一個問題是代碼簽署和公證,即你需要:

    1.在應用程序中嵌入加密簽名,有效地證明來自 Apple Developer Program 關聯帳戶的真實性。(這是簽名。)

    2.將你的應用程序上傳到 Apple,以便他們對其進行檢查,驗證它符合要求,可能還會存儲一個副本。然后,蘋果會發布自己的加密簽名,即公證書,然后需要將其嵌入到正在分發的應用程序上,這樣蘋果的操作系統才能信任它。(這是公證。)

    從歷史上看,這些步驟需要 Apple 專有軟件專門從 macOS 運行。這意味著,即使你在 Rust、Go 等軟件生態系統或 Web 平臺中,你可以在不直接訪問 macOS 的情況下交叉編譯應用程序(測試顯然是另一回事),如果你愿意,你仍然需要 macOS簽署和公證你的申請。由于默認的安全設置,在macOS上需要有效的簽名和公證。在 iOS 等移動平臺上,除非你運行的是越獄設備,否則不可能發布未經簽名和公證的應用程序。

    如果我不需要macOS來構建我的應用程序,為什么我要被迫把蘋果設備作為我的軟件發布過程的一部分?為什么在發布的時候,我必須簽署和公證我的申請,它不能更簡化嗎?

    如果能重新實現 Apple 代碼簽名,以便開發人員有更多的靈活性和機會將應用程序分發到 Apple 的生態系統。其最終目標是擴大 Apple 生態系統對更多開發者的訪問。

    首先,得益于 rcodesign 0.14.0的發布。這是我第一次發布 rcodesign 的預構建二進制文件(Linux、Windows 和 macOS)。

    macOS rcodesign 可執行文件是自簽名的,它由 GitHub Actions Linux 運行程序使用 YubiKey 獨有的代碼簽名證書進行簽名。

    2021年,apple-codesign 項目/Rust crate 發生了很大變化!只需查看更改日志!

    這個項目從tugger-apple-codesign改名而來。

    如果你是通過 cargo install 安裝的,你需要 cargo install --force apple-codesign 來強制 Cargo 用另一個 crate 中的一個來覆蓋 rcodesign 可執行文件。

    rcodesign CLI可執行文件仍然存在,而且比以往任何時候都更強大。你仍然可以在Linux、Windows、macOS和任何其他平臺上對Apple應用程序進行簽名,你可以在這些平臺上編譯Rust程序。

    Sphinx 文檔請點擊這里,這與 PyOxidizer 的文檔一起發布在 readthedocs.io 上(因為我使用的是 monorepo)。那里有一些通用文檔,例如有關如何通過將你自己的替代代碼簽名 PKI 部署到并行 Apple 來選擇性地繞過 Gatekeeper 的指南。

    支持簽名包、DMG 和 .pkg 安裝程序

    當我去年宣布這個項目時,只有 Mach-O 二進制文件和非常簡單的 .app 包是可簽名的。即便如此,也有很多微妙的問題。

    Rcodesign sign現在可以對更復雜的包進行簽名,包括許多嵌套的包。有報道稱iOS應用包簽名正確。

    該工具還支持簽名.dmg磁盤映像文件和.pkg扁平封裝包安裝程序。

    已知的簽名限制現在記錄在 Sphinx 文檔中。

    我相信 rcodesign 現在支持對用于 Apple 軟件分發的所有主要文件格式進行簽名。

    支持 Linux、Windows 和 macOS 上的公證

    蘋果發布了一個名為Transporter的Java工具,可以讓你上傳文物到蘋果進行公證。它們使這個工具可用于Linux、Windows,當然還有macOS。

    雖然這個工具不是開源的,但使用這個工具可以讓你在 Linux 和 Windows 上進行公證,同時仍然使用 Apple 的官方工具與他們的服務器通信。

    rcodesign 現在支持調用 Transporter 并將工件上傳到 Apple 進行公證。我們現在支持公證包、.dmg 磁盤映像和 .pkg 扁平封裝安裝程序包。我已經成功地從 Linux 公證了所有這些應用程序類型。

    由于支持對所有應用程序類型進行簽名和公證,現在可以在沒有 macOS 參與發布過程的情況下發布 Apple 軟件。

    YubiKey 集成

    我嘗試盡可能多地使用我的 YubiKey,因為存儲在 YubiKey 上的密鑰或私鑰可能比位于某個文件系統上的密鑰或私鑰更安全。如果你破解了我的設備,你很可能會獲得我的私鑰。但是你需要物理訪問我的 YubiKey 并強迫或強迫我解鎖它,以獲得訪問其私鑰的權限。

    rcodesign 現在支持使用 YubiKeys 進行簽名操作。

    這確實需要默認的智能卡 Cargo 功能。因此,如果手動構建,你將需要例如cargo install --features smartcard apple-codesign.。

    YubiKey 集成來自 yubikey 。這個 crate 將直接與 macOS 和 Windows 中內置的智能卡 API 對話。所以如果你有一個啟用了 YubiKey 支持的 rcodesign 構建,YubiKeys 應該可以工作。通過插入 YubiKey 并運行 rcodesign smartcard-scan 進行嘗試。

    YubiKey 集成文檔可以點此查看。

    我甚至實現了一些命令來輕松管理 YubiKey 上的代碼簽名證書。例如,你可以直接在設備上運行 rcodesign smartcard-generate-key --smartcard-slot 9c 以生成新的私鑰,然后 rcodesign generate-certificate-signing-request --smartcard-slot 9c --csr-pem-path csr.pem將該證書導出到證書簽名請求 (CSR),你可以在 developer.apple.com 上交換 Applie 頒發的簽名證書。這意味著你可以輕松創建其私鑰直接在硬件設備上生成且永遠無法導出的代碼簽名證書。以這種方式生成密鑰比將密鑰存儲在軟件庫(比如蘋果的Keychains)中更安全。

    遠程代碼簽名

    我最感興趣的功能是我稱之為遠程代碼簽名的功能。

    我在GitHub托管的Linux GitHub Actions運行程序上簽署了一個macOS通用Mach-O可執行文件,使用的YubiKey物理連接到我桌子旁邊的Windows 11設備上。未在計算機之間復制簽名的應用程序。

    我有一個調用 rcodesign sign --remote-signer 的 GitHub Actions 工作流程。我手動觸發了該工作流程,并開始使用瀏覽器觀察近乎實時的作業輸出。rcodesign sign --remote-signer 打印出一些指令(包括一堵 base64 編碼數據的墻)以指示下一步該做什么。重要的是,它要求其他人運行 rcodesign remote-sign 以繼續簽名過程。

    該日志向我們展示了使用 YubiKey 進行連接和身份驗證,以及一些關于與遠程服務器對話的狀態更新。

    遠程簽名使我能夠從 GitHub 運營的 GitHub Actions 運行程序簽署 macOS 應用程序,同時使用安全存儲在我的 YubiKey 上的代碼簽名證書,該證書插入到距 GitHub Actions 運行程序數百公里的 Windows 設備上。

    這里發生的是 2 個 rcodesign 進程通過中央中繼服務器橋接的 websocket 相互通信。我免費操作一個默認服務器。服務器是開源的,如果你想運行你自己的服務器,你可以使用terrform模塊,希望只需要花幾分鐘時間。當啟動設備希望創建簽名時,它向請求加密簽名的簽名者發送一條消息。然后將簽名發送回發起者,發起者將其合并。

    我設計這個特性時考慮到了CI系統的自動發布(比如GitHub Actions)。我想要一種方法,可以簡化應用程序的代碼簽名和發布過程,而不必給CI中的低信任設備無限訪問我的私人簽名密鑰的權限。這可能在許多其他場景中都是有用的。你是否曾經因為沒有蘋果發行的代碼簽名證書而通過電子郵件或下拉框將應用程序發送給別人簽名?現在你有了一個不需要復制文件的替代解決方案。只要你可以看到啟動設備的日志輸出,或者將輸出傳遞給你(例如通過聊天應用程序或電子郵件),你就可以在另一臺設備上遠程簽署文件!

    關于遠程簽名安全性

    Websockets 通過由第三方操作的中央服務器?!授予遠程設備訪問權限以對任意內容執行代碼簽名?!你的恐懼和懷疑是 100% 有道理的:我也會這么想!

    促進遠程代碼簽名的服務會成為一個非常有利可圖的攻擊目標,如果被濫用,它可能被用來強制使用有效的代碼簽名證書的各方簽署不想要的代碼,如惡意軟件。實現這樣的功能有很多很多很多錯誤的方法。

    遠程代碼簽名設計和安全注意事項包含了我的一些高級設計目標和安全評估。遠程代碼簽名協議詳細介紹了通信協議,包括所涉及的加密(實際的加密,而不是流行的加密)。關鍵在于協議和服務器的設計使惡意服務器或中間人無法偽造簽名請求。簽名會話在幾分鐘后過期,第三方或服務器無法注入會導致不需要簽名的惡意消息。通過初始握手獲得會話臨時共享加密密鑰,并從那里使用對稱加密密鑰,因此對等方之間的所有有意義的消息都是端到端加密的。惡意服務器可以做的最糟糕的事情就是進行拒絕服務。

    我相信我的遠程簽名實現比許多常見做法更安全,因為今天的常見做法需要復制私鑰并讓低信任度設備(如 CI 工作人員)訪問私鑰或者文件在沒有加密監管鏈的情況下被復制以證明不會被篡改。是的,遠程簽名為遠程訪問引入了使用簽名密鑰的向量。但是按照我的意圖進行實踐,遠程簽名可以消除復制私鑰或授予對它們的無限訪問權限的需要。從威脅建模的角度來看,我認為密鑰訪問中的網絡限制使得遠程簽名比現在許多人使用的私鑰管理實踐更安全。

    話雖如此,這里的星號是我實現了我自己的密碼系統來實現端到端消息安全。如果在設計或實現中存在漏洞,密碼系統可能會崩潰,從而帶來對消息偽造的防御。屆時,惡意服務器或特權網絡攻擊者可能會強迫某人簽署不需要的軟件。但這很可能是損害的程度:對簽名密鑰的脫機攻擊是不可能的,因為簽名需要存在,而且私鑰永遠不會通過網絡傳輸。即使沒有端到端加密,該系統也比將你的私有密鑰作為一個容易被竊取的CI秘密(或類似的)留在周圍更安全。

    Apple 鑰匙串支持

    從0.14 版本開始,我們現在可以提前支持使用存儲在 Apple 鑰匙串中的代碼簽名證書進行簽名!如果你在 Keychain Access 或 Xcode 中創建了 Apple 代碼簽名證書,那么這可能就是你的代碼簽名證書所在的位置。

    我拖延了很長一段時間,因為我沒有意識到這有什么好處:如果你使用macOS,只需使用 蘋果的官方工具。但是隨著rcodesign獲得了對遠程代碼簽名的支持,以及其他一些功能,這些功能可以讓它成為所有平臺上蘋果工具的有力替代品,我認為我們應該提供這個功能,這樣我們就不會再阻止人們從keychain導出私鑰了。

    Apple 的代碼簽名很復雜。蘋果的工具和rcodesign之間很容易出現細微差別。

    rcodesign 現在有 print-signature-info 和 diff-signatures 命令來轉儲和比較與代碼簽名相關的 YAML 元數據,以便更容易地比較代碼簽名實現甚至多個簽名操作之間的行為。

    生態系統蘋果技術支持
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    工信部科技司就《工業和信息化部元宇宙標準化工作組籌建方案(征求意見稿)》公開征求意見。意見提出,按照急用先行的原則,重點加快研制元宇宙術語、參考架構等基礎通用標準,元宇宙身份體系、數字內容生成、跨域互操作等關鍵技術標準,優先開展“元宇宙+工業制造”等行業應用標準研制。面向隱私保護、內容監管、數據安全等元宇宙領域中新技術、新產品、新業態、新模式,加快開展關鍵技術和產業發展研究,加強與腦機接口、生成式
    66%的受訪者認為網絡安全主要是一種創收手段
    此次發布的典型案例既涉及流量劫持、流量造假、刷機、惡意通知、妨害平臺生態系統、屏蔽廣告等與數字經濟息息相關的內容,也涵蓋了商業詆毀、拒絕交易等典型不正當競爭行為,既為新技術和新模式的發展與成長提供了必要空間,也為相關市場主體行為的合法性判斷提供了有益思路。
    編者按:工業互聯網安全產業是工業互聯網健康發展的重要基礎支撐,國外發達國家和地區在這一產業的布局已相對完善,我國在建設制造強國、網絡強國、數字中國的戰略需求下,亟需科學優化工業互聯網安全產業布局。
    Malwarebytes威脅情報公司每月通過監控勒索軟件團伙在其暗網泄露網站上發布的信息來建立勒索軟件活動的圖景。這些信息代表的是那些成功被襲擊但選擇不支付贖金的受害者。
    容器安全工具涵蓋多種任務,包括配置加固和漏洞評估任務。Gartner持續觀察AST市場發展的主要驅動力是支持企業DevSecOps和云原生應用程序的需求。Checkmarx SCA的供應鏈安全執行行為分析,并對給定的開源包添加操作風險指標。這得到了Gartner客戶的積極反饋。Checkmarx一直在簡化軟件許可,將大多數產品與開發人員的數量聯系起來。
    網絡安全漏洞披露已成為網絡安全風險控制的中心環節。不規范或非法的網絡安全漏洞披露危害網絡空間整體安全,凸顯法律規定的灰色地帶。實踐中網絡安全漏洞披露表現為不披露、完全披露、負責任披露和協同披露等類型。美國從法律和政策層面分別構建網絡安全漏洞披露規則,并根據形勢不斷進行調整,規則設計呈現從負責任披露到協同披露的變化趨勢,國家層面統一的網絡安全漏洞披露協調和決策機制也在進一步完善中。我國現行立法從產品
    經濟衰退、利率上升、大規模科技裁員,支出也變得保守,對于這些因素的擔憂,交易撮合者也因此變得謹慎。
    FCEB將以身作則,在2024財年預算提交中優先考慮零信任實施和IT現代化。這是FCEB運營的重大轉變,各政府部門需要在預算中體現出對實現這一轉變并實現新的、更具彈性的安全基礎態勢的承諾。PMA呼吁建立卓越、公平和安全的聯邦服務和客戶體驗,并呼吁各部門繼續加強聯邦IT和網絡安全,作為任務交付的關鍵推動力。FCEB各部門將優先考慮物理基礎設施、人力資本和供應鏈風險管理。
    數字時代下,網絡安全議題重要性日益凸顯。印度作為同樣有著龐大網民數量的國家,其網絡安全體系對中國有著借鑒意義。當下,印度正從法律法規、政策規劃、組織結構、國際合作四個方面加速網絡安全體系建設,形成以《信息技術法》為核心的多部門法律體系,以《國家網絡安全戰略》為中心的政策規劃,以總理辦公室為樞紐的組織結構,并廣泛開展國際合作。從發展趨勢來看,印度網絡安全體系深受網絡犯罪影響,并呈現出體系不平衡的特點
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类