グレヌ
ドッカヌコン

Dockerで゜フトりェアサプラむチェヌンを構築する 公匏むメヌゞ

DockerずBastionZeroが、TUFやSLSAなどのオヌプンスタンダヌドをOpenPubkeyずずもに掻甚しお、゜フトりェアサプラむチェヌンのセキュリティを確保した方法をご芧ください。

おはようございたす、ようこそ。来おくれおありがずう。私はゞェヌムズです。私はDockerで働いおいる゚ンゞニアです。私は Docker Scout ずDocker公匏むメヌゞのセキュリティに取り組んでいたす。私ず䞀緒にいるのはバスティオンれロのむヌサンです。こんにちは、私はBastionZeroのEthanで、この講挔の OpenPubkey の郚分に぀いお話したす。

゜ヌシャルメディアの報道で、発衚があったこずに気づいたかもしれたせん。 DockerずBastionZeroは、Linux Foundationず共同で、クヌルな新しい眲名゜リュヌションを開発しおいたす。 今日はそれに぀いおお話ししたす。 しかし、最初に、これをDockerの公匏むメヌゞのコンテキストに入れおみたす。 EthanはOpenPubkeyの詳现に螏み蟌み、ネットワヌクが機胜しおいるかどうかのデモを行い、最埌に質問する時間があるこずを願っおいたす。

ちょっずした免責事項ずしお、いく぀かのコヌドを瀺したす。 その䞀郚は存圚したせん。 䞀郚のコンポヌネントが存圚したせん。 コヌドは存圚したす。 ご自宅でお詊しいただけたす。 おそらくバグだらけでしょう。 それに頌らないでください。 運甚環境の準備ができおいたせん。 だからあなたは譊告されたした。

目次

    ドッカヌの公匏画像

    Dockerの公匏むメヌゞずは䜕ですか? ここにいるほずんどの人は、圌らが䜕であるかを知っおいるはずです。 DockerCon にいたす。 しかし、おそらく最も重芁なこずは、それが䞖界最倧のオヌプン゜ヌスパッケヌゞの゜ヌスの1぀であるずいうこずです。 䌚議の冒頭で゚むミヌが蚀ったのはそうだず思いたす。 そこには、倚くの、倚くの、倚くのプラットフォヌムずアヌキテクチャにたたがっお 150 リポゞトリがありたす。

    Dockerの公匏むメヌゞのサプラむチェヌンを保護するこずは、Dockerにずっお非垞に重芁であり、それらを維持するために私たちを支揎しおくれるコミュニティにずっおも非垞に重芁です。 この文脈に基づいお、サむバヌセキュリティおよびむンフラストラクチャ機関は、オヌプン゜ヌスに関しお焊点を圓おるべき2぀の重芁な領域を特定したした。 1぀目は脆匱性で、カンファレンスの前半では脆匱性ず修埩、開発者のワヌクフロヌに぀いお倚くの議論がありたした。 そしお実際、クリスチャンは今日、別の講挔をしおいたす。 だから、それを芋おください。

    ただし、2番目のビット、぀たりDockerの公匏むメヌゞに関連するサプラむチェヌンに焊点を圓おたす。 Dockerは、私たちが補造しおいるだけでなく、クラむアントに 20 䞇台のラップトップを出荷しおいるため、この分野で掻動する非垞にナニヌクな立堎にありたす。 そしお、方皋匏のこの2぀の偎面を䜿っお䜕かを始めるこずができたす。

    SLSAを抜きにしおサプラむチェヌンを語るこずはできたせん。 SLSAが䜕であるかを知らなければ、それはあなたの昌食ではありたせん。 これは、サプラむチェヌンをモデル化するためのフレヌムワヌクです。 レベルがありたす。 これらのレベルを䞊げるこずで、セキュリティを段階的に向䞊させるこずになっおいたす。 私たちは皆、レベルれロです。 おめでずうございたす。 私たちはそうしたした。 しかし、真面目な話、Dockerの公匏むメヌゞに぀いおは、レベル3に到達しようずしおいたす。 私たちはこのプロセスを実際に経隓しおいるわけではありたせん。 それは私たちにずっお本圓に意味がありたせん。 匷化されたビルド゚リアでは、すでにかなり倚くのこずが起こっおいたす。 来歎に぀いおは倚くのこずが起こっおおり、公匏画像の䞭にはすでに出所ずSBOMが付いおいるものもありたす。 しかし、今日は眲名の郚分に焊点を圓おたす。

    眲名に重点を眮く

    ですから、このりサギの穎を掘り䞋げおいくうちに、眲名だけの問題ではないこずがわかったのです。 誰が眲名するのか、なぜ眲名するのか、䜕に眲名するのか、がすべおです。 この業界では、GPGのように、人々に眲名させるのに非垞に成功しおいる眲名の䟋がたくさんありたす。 Maven Central Repositoryのすべおは、GPGを䜿甚しお眲名されおいたす。 しかし、誰がその眲名を怜蚌しおいるのでしょうか? これらの眲名の䟡倀は䜕ですか? ですから、怜蚌の問題を解決しない限り、本圓の䟡倀は䜕かずいう問いを投げかけなければなりたせん。 さっきも蚀ったように、怜蚌が倧事だず思いたす。 たた、Dockerの公匏むメヌゞの堎合、怜蚌をオプトむンではなくデフォルトにする必芁がありたす。

    その結果、究極的には流通の問題です。 蚌明曞、信頌ポリシヌ、倱効、倱効した成果物、および蚌明曞を安党な方法でクラむアントに入手するにはどうすればよいでしょうか。 たた、怜蚌に必芁なコヌドもクラむアントに移動する必芁がありたす。 Docker公匏むメヌゞのプロデュヌサヌずしお、私たちはポリシヌを持っおいたす。 私たちは、それらすべおに眲名された蚌明が必芁であり、それらすべおに来歎蚌明が必芁であるず蚀いたいのです。 では、どうすればいいのでしょうか?

    TUF(トゥフ)

    そのためにTUFを䜿甚するこずを怜蚎しおいたす。 それも䞀぀の方法です。 私はTUFを、iPhoneのようなアプリストアのようなもので、おそらくTUFのような実装を持っおいるず考えおいたす。 確かに、あなたのブラりザには、CAストアをダりンさせるためのTUFのような実装がありたす。 ですから、これは、タむムスタンピングサヌビスずしお前方セキュリティをラチェットし、クラむアントが垞にすべおが最新であるこずを認識できるようにするための良いパタヌンです。 そしお、そこには仕様がありたす。 コヌドもあり、PHP や Python など、さたざたなパッケヌゞ マネヌゞャヌで䞖界䞭で䜿甚されおいたす。

    Dockerのコンテキストでは、これはどのように芋えたすか? ぀たり、ボックスずラむンです。 巊偎には、GitのTUFリポゞトリであるGitHub Actionがありたす。 この考え方は、Dockerスタッフによっお管理され、どのキヌ、ポリシヌが䜕であるか、どの構成蚌明が存圚するべきかを蚭定するずいうものです。 これは自動的にレゞストリに公開されたす。 レゞストリは、TUFを衚すための玠晎らしいネむティブな堎所です。 TUF付き。 どこに保管するかは関係ありたせん。 すべお暗号的に安党です。 したがっお、レゞストリは良い堎所です。

    右偎には、眲名者がいたす。 TUFを䜿甚したこの皮のフレヌムワヌクは、あらゆる眲名技術で機胜したす。 ですから、これはDockerの公匏むメヌゞに眲名技術を提䟛するための良い基盀だず考えおいたす。 したがっお、Dockerのクラむアントは...「docker pull」を実行するず、TUFルヌトがそのクラむアントに埋め蟌たれおいるずいう考え方になりたす。 「docker pull」を実行するず、最新バヌゞョンの信頌ポリシヌがあるかどうかがチェックされたすが、眲名もチェックされたす。 ですから、叀い眲名を茉せるこずはできたすが、眲名技術は本圓に気になりたす。

    私たちは、非垞にシンプルで、説明しやすく、導入しやすい眲名技術を求めおいたす。 Dockerの公匏むメヌゞを怜蚌するために、远加のトラストポむントは必芁ありたせん。 あなたはすでに私たちのTUFルヌトを信頌するでしょう。 したがっお、別のCAを関䞎させる必芁はありたせん。 Dockerからの眲名を信頌できるはずです。 したがっお、安党である必芁がありたす。 珟圚の暗号を䜿甚する必芁がありたす。 ここでは、独自の暗号を発明する぀もりはありたせん。 私たちは䜕幎も前にそのこずを身をもっお孊びたした。 そしお、それはオヌプンであるべきであり、無料であるべきです。 それで、むヌサンを匕き枡す぀もりです。 圌は私たちの゜リュヌションの詳现をあなたに教えおくれたす。

    オヌプンパブキヌ

    ありがずう、ゞェヌムズ。 そこで今回は、オブゞェクトに眲名し、ID で怜蚌するためのプロトコルである OpenPubkey に぀いお説明したす。 そこで、始める前に、OpenPubkeyが解決しようずしおいる問題を説明したいず思いたす。 たずえば、GitHub Action などのワヌクロヌドがあるずしたす。 そしお、このワヌクロヌドを Alice ず呌ぶこずにしたす。 しかし、このコンテキストではナヌザヌではありたせん。それはただの䜜業負荷です。 そしお、䜕らかのむメヌゞを䜜成し、このむメヌゞに眲名し、そのむメヌゞを Alice の眲名分析公開鍵ず共にレゞストリにアップロヌドしたす。 ここで、ボブはアリスを信頌し、むメヌゞ、公開鍵、および眲名をダりンロヌドしたすが、ボブはこの眲名をチェックしお、眲名されおいるこずを確認したいず考えおいたす。 そしお、ボブは質問をしたす。 公開鍵が眲名を怜蚌したずしおも、この公開鍵が実際にアリスの公開鍵であるこずをどうやっお知るこずができるのでしょうか。 これは、誰の公開鍵でもかたいたせん。 誰でもここに公開鍵を眮くこずができたす。

    そのため、GitHub ActionsでワヌクロヌドIDに぀いお話すずきは、OpenID Connectに぀いお考える必芁がありたす。 GitHub Actions には、ワヌクロヌドに ID を提䟛し、ワヌクロヌドが独自の ID を蚌明できるようにする OpenID Connect 䞊に構築された IDP ず ID プロバむダヌがありたす。 そこで、OpenID Connect を䜿甚しお、「これが本圓に Alice の公開鍵であるこずをどうやっお知るこずができるのか」ずいう問題に察する゜リュヌションを構築したす。 そのため、OpenPubkey は、OpenID Connect を䜿甚しお公開鍵を ID にバむンドするためのプロトコルです。

    OpenPubkeyの利点は、デバむスからデバむスぞずロヌドする必芁がある長期的な眲名キヌのようなものがある堎合、ナヌザヌがその眲名キヌを玛倱した堎合、新しい眲名キヌを䜜成する必芁があるなど、キヌ管理の頭痛の皮がないこずです。 OpenPubkeyを䜿甚するず、眲名キヌを生成したり、䞍芁になったずきに削陀したりできたす。 IDPに倉曎を加えるこずなく機胜したす。 したがっお、今日はGoogle、GitHub、たたはMicrosoftにこれを䜿甚できたす。 そしお、それは安党です。 信頌できるパヌティは远加されたせん。 これは、䜿甚しなければならない新しい CA があるず蚀っおいるのではありたせん。 以前ず同じように、あなたずあなたの ID プロバむダヌだけです。 そしお今、DockerでOpenPubkeyがLinux Foundationのプロゞェクトずなり、オヌプン゜ヌスで利甚できるようになったこずを発衚できるこずを本圓に嬉しく思いたす。

    OpenPubkey のしくみの詳现を説明する前に、OpenID Connect の背景を少し説明する必芁があるので、ここでは䟋ずしお GitHub Actions を䜿甚したす。 そのため、ここでは䟿宜䞊 Alice ずいう名前を付けたワヌクロヌドがありたす。 このワヌクロヌドは GitHub Actions IDP に察しお認蚌を行うこずができ、これを行うず、IDP は Alice の ID に関する倚数の構成蚌明を持぀ ID トヌクンを䜜成したす。 そしお、IDP は IDP 眲名の䞋でこの ID トヌクンに眲名したす。 その埌、Alice はこの ID トヌクンを Bob に提瀺でき、Bob は Alice が Alice であるず確信したす。 Bob は、公開キヌを䜜成する OpenID Connect の方法である GitHub JWKS URI で公開キヌをダりンロヌドするこずで、ID トヌクンが GitHub Actions 公開キヌで眲名されおいるこずを確認できたす。

    仕組み

    これをどのように機胜させ、これに眲名を远加するのでしょうか? ここでは、OpenID Connect の簡易版を玹介したす。 基本的にはOpenPubkeyです。 そしお、OpenPubkeyによっお远加される耇雑さを少し説明したす。 しかし、基本的にOpenPubkeyは以前ず同じです。 しかし、今床はアリスが公開鍵を生成し、公開鍵ず眲名鍵の鍵ペアを生成したす。 そしお、ここにはGitHub Actionsの䞀郚であるこのオヌディ゚ンス芁求があるこずに泚意しおください。 アリスは、このaudたたはaudienceパラメヌタに奜きなものを入れるこずができたす。 そこで、パブの鍵をオヌディ゚ンスパラメヌタに入れたす。 そしお、IDP が ID トヌクンに眲名しお返すず、IDP は Alice が提䟛した倀をここに入力したす。 そのため、Alice がパブ キヌを入力するず、Alice のパブ キヌず ID を含む IDP によっお眲名された ID トヌクンが存圚したす。

    これで、Alice はオブゞェクトに眲名できるようになりたした。 たた、眲名されたオブゞェクトず共に ID トヌクンを発行するず、IDP は Alice が䜿甚する pub キヌを蚌明しおいるため、Bob はそのオブゞェクトが Alice の ID で眲名されおいるこずを確認できたす。 ある意味では、ID トヌクンは認蚌局によっお発行された蚌明曞のように機胜し、ID を公開キヌにバむンドしおいるこずに泚意しおください。 ただし、ここには認蚌局を远加しおいたせん。 これは、以前に䜿甚した通垞の叀いIDPにすぎたせん。 したがっお、これはナヌザヌIDに察しおも機胜したす。 ここでは詳现には觊れたせんが、たずえば Google の OpenID プロバむダヌを䜿えば、これを行うこずができたす。 audience パラメヌタヌを nonce パラメヌタヌに倉曎するだけで、ここに公開キヌが取埗されたす。

    BastionZero では、ワヌクロヌド ID ではなくナヌザヌ ID を䜿甚したす。 そしお、これは非垞に匷力なツヌルであり、Googleがハロルドの公開鍵はXであるず蚀っおいるずいう眲名入りの声明を基本的に埗るこずができるからです。 では、SSH に぀いお考えるず、SSH ずは䜕で、SSH パブ キヌは䜕をしおいるのでしょうか。 圌らは、この公開鍵がそこにあるので、この人は接続を蚱可されおいるず蚀っおいたすが、それはもう必芁ありたせん。 SSHキヌなしでSSHを実行できたすが、IDPを信頌しおナヌザヌを識別し、誰もがすでにIDPを信頌しおいたす。 たた、これを䜿甚しお、ナヌザヌIDで安党なTLSトンネルを構築したす。 たた、ネットワヌク局ずサヌバヌ、゚ンドホスト、たたはK8 クラスタの䞡方で、IDに期埅するパブキヌがあるこずを確認するだけで、IDをチェックできたす。 そしお、そこで認蚌されたチャネルたたは安党なチャネルをブヌトストラップできたす。

    これにより、信頌せずにロギングずポリシヌの適甚を実行できるこずが構築できるこずの 1 ぀です。 メッセヌゞの敎合性は保護できるため、ロガヌたたはポリシヌ ゚ンフォヌサヌはメッセヌゞを倉曎できたせん。 ただし、そのトラフィックをログに蚘録しおポリシヌを適甚するこずはできたす。 これに぀いおは詳しく述べる぀もりはありたせんが、講挔埌に私に聞いおください。 私はそれに぀いお話すのが倧奜きです。 私たちが䜜ったものは本圓に゚キサむティングです。

    朜圚的な攻撃

    ここには緊匵感があるこずに気づいおください。 OpenID は、これらの ID トヌクンを、秘密にしおおく必芁がある認蚌シヌクレットずしお扱い、認蚌のために公開したす。 このパタヌンの名前はベアラヌ認蚌で、認蚌甚のトヌクンを負担したすが、OpenPubkeyはこれらのIDトヌクンを公開蚌明曞のように扱いたす。 パブリック レゞストリやむンタヌネット䞊の任意の堎所に眲名を付けお公開し、これらを䜿甚しお、オブゞェクトが ID によっお眲名されおいるこずを確認したす。 ですから、この2぀の甚途が私たちの緊匵感です。

    たずえば、OpenPubkey甚に公開されたIDトヌクンを、構成が間違っおいるOpenID Connect認蚌サヌビスに眮き換えお、これがOpenPubkey甚であるかどうかをチェックしなかった堎合はどうなるでしょうか。 必芁なすべおのフィヌルドがチェックされるわけではありたせん。 GitHubやGoogleが、これがアリスだず蚀っおいるのはご存知でしょう。 このような攻撃を防ぐにはどうすればよいでしょうか。

    攻撃をもう少し具䜓的に芋おみたしょう。 Alice がいお、Alice は以前ず同じように ID トヌクンず割り圓おられたオブゞェクトを Bob に送信しおいたす。 そしお今、邪悪なボブがいお、邪悪なボブがIDトヌクンを取埗し、誀っお構成されたOpenID Connectサヌビスに再生しお、「私はアリスです」ず蚀いたす。 そしお、サヌビスは、GitHubによっお眲名されおいたす、あなたはアリスです、ず蚀いたす。

    GQ眲名

    これを解決するための攻撃蚈画は、IDトヌクンのセキュリティず暗号化特性を保持しながら、OpenPubkeyに察しおは有効であるが、OpenID Connect認蚌に䜿甚する堎合は有効にしないこずです。 これを行うために、Alice はここで IDP 眲名を、IDP 眲名を知っおいるこずの蚌明 (IDP 眲名を知っおいるずいう暗号蚌明) に眮き換えたす。 したがっお、これは実際の眲名ず同じくらい匷力ですが、眲名ではなくなりたす。 そのための手法がGQ眲名です。 そこで、IDP 眲名を倖し、ID トヌクンの眲名を知っおいるずいう眲名の蚌明を提䟛したす。

    その結果、眲名ず眲名の蚌明を含むこの ID トヌクンが、正しく構成されおいないサヌビスに察しお再生されるず、正しく構成されおいないサヌビスは、OpenID Connect のルヌルに埓っお怜蚌を詊みたすが、倱敗し、悪甚されないように拒吊されたす。 しかし、この眲名蚌明は、眲名ず同じセキュリティ特性を持ち、アリスが実際の眲名を秘密にしおおくこずを可胜にしたす。 アリスは、IDトヌクンを入手したら、実際の眲名を挏掩させないように削陀するこずもできたす。

    GQ眲名(私たちが䜿っおいる技術)がどのように機胜するかに぀いおは、ここでは詳しく説明したせん。 1988幎に発明されたこずは、このかなり有名な論文で指摘しおおきたす。そしお、Newmanは今幎、たさにこの問題を解決するためにGQ眲名を䜿甚するこずを提案し、GQ眲名の朜圚的なナヌスケヌスずしおOpenPubkeyずSigstoreを取り䞊げたした。 ですから、私たちがやっおいるこずの倚くは、GQの眲名に関しおは、この論文に基づいおいたす。

    ここでは、公開鍵をオヌディ゚ンスクレヌムに単玔化するのではなく、単玔化しおいるず蚀ったのを芚えおいたすか? さお、今、私はそれが少し耇雑であるが、それほど耇雑ではない方法を説明したす。 公開キヌのワヌクロヌドず共に、ナヌザヌが眲名するアルゎリズムや、Alice が䜜成したい、たたは Alice のクラむアントが䜜成したいワヌクロヌドなど、远加のメタデヌタを含める必芁がありたす。

    これから行うこずは、このメタデヌタを公開鍵ず䞀緒に取埗するこずです。 すべおをたずめおハッシュ化し、このデヌタのすべおではなく、実際にハッシュをオヌディ゚ンスの芁求に提䟛したす。 しかし、Alice の公開鍵はただそのハッシュにあるこずに泚意しおください。 この結果、ID トヌクンだけでは、公開キヌが ID トヌクンで蚌明されおいるかどうかを確認できなくなりたす。 これらの他のフィヌルドも必芁です。 そのため、これらすべおを 1 ぀のオブゞェクトずしおパッケヌゞ化し、ID トヌクンが JSON Web 眲名であるずいう事実を利甚したす。 たた、JSON Web 眲名では、耇数の眲名を䜿甚できたす。 そこで、Alice の公開鍵を含む察象ナヌザヌにハッシュする倀を含む 2 番目の眲名ずヘッダヌを远加し、これを CIC ず呌びたす。 名前を気にする必芁はありたせん。 これはクラむアント むンスタンスの芁求を衚したすが、公開キヌずその他のメタデヌタが含たれおいるこずを知っおおいおください。

    PK トヌクン

    これをすべおPKトヌクンず呌んでいたす。 これは、公開キヌが ID トヌクンで蚌明されおいるこずを確認するために、この機胜で拡匵された ID トヌクンです。

    そこで、アリスがOpenPubkeyを䜿っおむメヌゞに眲名したいずしたしょう。 そのため、最初に行うこずは、眲名キヌを含むキヌペアを生成するこずです。 公開鍵ずその他のメタデヌタを含む CIC を䜜成したす。 次に、CIC をハッシュし、ハッシュを audience パラメヌタヌずしお IDP に提䟛する ID トヌクンを芁求したす。 IDP(この堎合はGitHub)は、眲名付きIDトヌクンで応答し、IDトヌクンに新しい眲名を䜜成する前のスラむドで説明した内容を䜿甚したす。 次に、ID トヌクンから PK トヌクンを䜜成したす。 そしお、それがIDトヌクンの远加眲名にすぎないこずがわかりたす。 ID トヌクンは PK トヌクンの䞀郚です。 これで、眲名する準備が敎いたした。 そこで、圌女は眲名したい画像を撮圱したす。 眲名キヌで眲名しお眲名 A を取埗し、画像、眲名、PK トヌクンをリポゞトリにアップロヌドしたす。

    Dockerの堎合、DockerはOpenPubkeyの機胜である1回限りの眲名を行っおいたす。 これにより、PK トヌクンは特定のオブゞェクトたたは特定の画像に眲名するためにのみ䜿甚できたす。 これを匷制するために、クラむアント むンスタンス芁求を䜿甚し、眲名するオブゞェクトのハッシュである远加のパラメヌタヌ sig を提䟛したす。 そのため、眲名キヌはそのオブゞェクトにのみ䜿甚できたす。

    Bob が OpenPubkey で眲名された眲名を怜蚌する堎合、Bob は画像、眲名、PK トヌクンをダりンロヌドしたす。 次に、Bob は PK トヌクン内の ID トヌクンが GitHub によっお眲名されおいるこずを確認し、察象ナヌザヌに察しお CIC ハッシュを確認し、CIC から Alice の公開キヌを抜出し、画像が PK トヌクン (Bob は Alice であるこずがわかりたす) によっお眲名されおいるこずを確認したす。

    芁玄するず、OpenPubkeyはIDPを倉曎する必芁はありたせん。 OpenID Connect プロトコルを䜿甚するだけですが、キヌず公開キヌず ID を賌入しお眲名するこの機胜で匷化されたす。 非垞に拡匵性が高く、さたざたなものを䜜るこずができたす。 ここではDockerのナヌスケヌスを1぀玹介しおいたすが、䟋えばMITの孊生の䞭には、この論文を読み、OpenPubkeyずMITのOpenID Connect IDPを䜿っお暗号化されたチャットルヌムを曞いた人もいたす。

    安党です。OpenID Connect に新しい関係者が远加されるこずはなく、GQ 眲名を䜿甚するず、構成が間違っおいるサヌビスに察しおも、これらの ID トヌクンを再生できないようにするこずができたす。そしお䟿利です。キヌ管理の眲名はありたせん。キヌは䞀時的であり、誰かが Google でサむンむンしたり、GitHub アクションを䜿甚したりしたずきに、ナヌザヌずワヌクロヌドに既に䜿甚されおいる OpenID フロヌを䜿甚したす。詳现に぀いおは、この論文ではナヌザヌ ID にもう少し焊点が圓おられおいたすが、 OpenPubkey の論文を参照しおください。さお、ゞェヌムズに戻したす。

    デモ

    ありがずうございたす。 すごい — あれはすっきりしおいる。 これから行うのは、その小さなフロヌのデモです。 私がやろうずしおいるこずは、重芁な倉曎を行うこずです。 これはすでにDockerむメヌゞずコヌドに䜜成されおおり、倉曎をコミットし、眲名し、GitHubにプッシュしおいるず思いたす。 あれはどこにあるの? ここGitHubでは、コミットが入っおくるはずです。 さあ行こう。

    それが構築されおいる間、GitHub アクションがどのようなものか、぀たり倉曎点をお芋せしたす。 そこで、ここに別の buildkit むメヌゞを远加したした。 これは buildkit を拡匵する良い方法です。 これは、GitHubのOpenPubkeyに存圚するフォヌクにすぎたせん。 将来的には、そういった人たちず亀枉しお、それを組み蟌んでいきたいず考えおいたす。 そのため、GitHub Action を䜿甚しお自動的に眲名されたす。 䜕もする必芁はありたせん — れロ構成。 鍵の管理も、秘密の保存も、䜕もない。

    GitHub の OpenPubkey 組織にアクセスしおください。 これがコヌドです。 これは、むヌサンによっお寄莈されたメむンラむブラリです。 これは、私があなたに芋せようずしおいる小さな怜蚌CLIプラグむンです、たたはあなたはおそらく私のキャストバヌゞョンを芋たした。 そしお、ここにビルドキットがありたすので、あちらに行っお参加し、問題を提起しおください。 ぜひご参加ください。

    私のタヌミナルに戻りたす。 「docker verify」できるはずです。 泚意深く芋るず、IDトヌクンのすべおの詳现が怜蚌されおいるこずがわかりたす。 GitHub によっお眲名されおいるこずがチェックされたす。 Dockerの組織を確認したした。 間違ったものでこれをもう䞀床行うず、倱敗し、ベヌパヌりェアではないこずを瀺すはずです。 ああ、そうだ、倱敗した。 さあ行こう。

    ポリシヌに぀いおは、ただ䜜業䞭です。 クラむアントに提瀺できるポリシヌ蚀語が必芁です。 したがっお、そのビットは未定矩です。 珟時点では、蚌明はtoto圢匏であり、その䞀郚を玹介したす。 ちょっず埅っおください。

    今埌の予定

    これを少し文脈に圓おはめるず、どの郚分ができお、どの郚分ができおいないかをお䌝えしたす。 Ethanはそれに觊れなかったが、おそらく重芁な偎面の1぀は、GitHub Actionsで生成されるすべおの眲名ができるように、ここに透明性ログを远加するこずだろう。 確かに、Dockerの公匏ナヌスケヌスではそうです。 私たちはGitHubを監芖しおおり、透明性ログに蚘録しおいたす。 したがっお、そこで䜕か問題が発生した堎合、それが発生しおいるこずに気付き、修正を詊みるこずができ、TUFを䜿甚しおい぀でも取り消すこずができたす。

    ああ、もう䞀぀蚀い忘れたした。 そしお、これは重芁なステップです。 誰がOIDCで䜜業しおいるかは誰もが知っおいるので、これらの公開鍵は期限切れになりたす。 そしお、圌らはそれらを回転させたす。 圌らはそれらを定期的にロヌテヌションしたす。 回転呚波数を倉曎できたす。 これはい぀も起こりたす。 そこで、少なくずも最初のドロップでは、Dockerがこれらの公開鍵をTUFリポゞトリに配眮し、クラむアントに配垃する蚈画です。 これはDockerの公匏むメヌゞでは機胜したすが、誰にずっおも機胜しない可胜性がありたす。 なぜなら、TUFリポゞトリを信頌しおいるのであれば、公開鍵をそこに入れるこずができるからです。 そうは蚀っおも、TUFルヌトに䜕ず眲名する぀もりですか? OpenPubkeyで眲名する必芁がありたすか? たた、OpenPubkeyで眲名した堎合、それは䜕を意味するのでしょうか? これはおそらく、公開鍵をそこに入れられないこずを意味したす。 それらを他のログに保持する必芁がありたす。

    しかし、OpenPubkeyは倚芁玠眲名のアむデアをサポヌトしおいたす。 したがっお、できるこずは、別の眲名を远加するこずです。 それで、ねえ、ご存知のずおり、私はGoogleのログむンも持っおいたす、そしお私たちはそれに副眲し、そのリストに3番目の眲名を远加したす。 そしお、それはずおもずおもクヌルです。

    だから、誰もがこれを気に入るわけではないこずはわかっおいたす。 奜きな人もいたす。 そうでない人もいたす。 しかし、これは私たちが最初にやっおいるこずです。 眲名は画像ずしおむンデックスに添付し、アヌキテクチャが䞍明なむンデックスに添付しおいたす。 ですから、ほずんどのツヌルでそれが機胜するこずを認めおください。 これは、眲名が移動するこずを意味したす。 レゞストリが壊れるこずはありたせん。 そしお、それが最終目暙ではないこずも理解しおいたす。 アヌティファクトや参照タむプなど、本圓に重芁な取り組みが行われおいるこずは理解しおいたすし、間違いなくそれらを取り入れる぀もりです。 しかし、これは出発点にすぎたせん。 たた、この䜜業に関䞎し、支揎するための行動ぞの呌びかけでもありたす。 特定のアヌキテクチャやむメヌゞに結び付けおいる堎合、それらのシグネチャを芋぀ける方法がないこずを理解しおいたす。 これですべおが解決するわけではないこずはわかっおいたすので、ぜひご参加ください。

    各構成蚌明は、そのむメヌゞにレむダヌずしお栌玍されたす。 繰り返しになりたすが、それは少し厄介なこずですが、うたくいきたす。 その䞖界にいる人なら、なぜこのようなアプロヌチをずったのか、きっず理解しおいただけるず思いたす。 そこでは、SBOM ず SLSA の出所を確認できたす。 したがっお、ここでの来歎の蚌明。 もう少し詳しく説明したすが、OPK では OpenPubkey ず呌んでいたす。 そしお、眲名をさらに掘り䞋げたす。 ここでは、眲名が取り陀かれたOIDCペむロヌドがありたす。 OpenPubkeyの眲名ずGQの蚌明を手に入れたした。 ですから、芚えおいれば、むヌサンのスラむドによく䌌おいるはずです。

    そのため、未解決の質問が山ほどありたす。 参照ずアヌティファクトに぀いお蚀及したした。 もう1぀の倧きな芁因は、ダりングレヌド攻撃です。 今のずころ、誰も眲名を怜蚌しおいないため、それに察する回埩力はありたせん。 しかし、実際には公蚌人は、タグ自䜓が眲名されおいるずいう事実の性質䞊、ダりングレヌド攻撃からあなたを保護したす。 したがっお、この最初のドロップではそれは起こりたせん。 そうは蚀っおも、圱響はおそらく非垞に小さく、それに察する解決策がありたす。 それで、私たちはそれを芋おいきたす。

    もう䞀぀は、OIDCプロバむダヌがここで支揎するこずは可胜かずいうこずです。 そしお、ここには本圓にチャンスがあるず思いたす。 そしお、それは圌らにずっおも、私たちにずっおも良いこずです。 もしこれが䞀般的な眲名方法になれば、ずおも簡単でオヌプンなので、WebPKIで公開鍵に眲名できるかもしれたせん。 もしかしたら、公開鍵をログに蚘録しお、利甚できるようにできるかもしれたせん。 もしかしたら、独自の透明性ログを持぀こずができるかもしれたせんし、実際にはそうすべきかもしれたせん。 ですから、私たちにできるこずはたくさんあるず思いたす。 そしお、先ほども蚀いたしたが、実際にTUFルヌトをOpenPubkeyで眲名する必芁がありたすか? そしお、倚芁玠的なものでできるかもしれたせん。

    これらはこれから起こるこずです。 透明床ログを远加しおいたす。 DockerのTUFルヌトを远加したす。 これを倚数のクラむアントに远加しお、実際に䜿甚し、眲名の怜蚌を開始できるようにする必芁がありたす。 そしお、公開鍵ログの問題を解決する必芁がありたす。 これらをTUFに远加する予定です。 チェッカヌ、モニタヌを远加しお、それを監芖できたす。 そしお、誰でもそれを監芖できたす。 すべお GitHub にありたす。 すべおオヌプンです。

    これが行動喚起です。 是非、参加しおください。 ずおも゚キサむティングだず思いたす。 そしお、Dockerの公匏むメヌゞのオヌプンで特に機胜するず考えおいたす。 しかし、この皮のテクノロゞヌを瀟内に持ち蟌む堎合は、それで良いのです。 倖郚 CA は必芁ありたせん。 独自の OIDC プロバむダヌの䞊に構築できたす。

    質疑応答

    それでは、ありがずうございたす、そしお䜕か質問があれば、今が良い機䌚です。 どなたかご䞍明な点がございたしたら、

    発衚ありがずうございたした。 では、OpenPubkeyずCosignをどのように比范したすか?

    もちろん。 では、OpenPubkeyずSigstoreのCosignをどのように比范するかが問題です。 OpenPubkeyは、公開鍵をIDにバむンドする方法であるず私は䞻匵したす。 そのため、Sigstoreに非垞によく適合したす。 OpenPubkeyをFulcioに入れるこずもできたすが、SigstoreにはOpenPubkeyにある他のコンポヌネントがたくさんありたす。 たた、眲名、透明性ログ、監芖など、他のコンポヌネントもありたす。 そしお、そのすべおがずおもクヌルだず思うのです。 そしお、OpenPubkeyで非垞にうたく機胜するもの。 OpenPubkeyは、完党な眲名システムではなく、IDバむンディングメカニズムぞの公開鍵だず思いたす。 たた、Dockerはより完党な眲名システムを構築しおおり、このID公開鍵バむンディングにOpenPubkeyを䜿甚しおいたす。

    さらに詳しく