Swift Digest
Blog | Swift.org Blog

Swift Certificates と Swift ASN.1 の発表

Introducing Swift Certificates and Swift ASN.1

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら

この記事の要点

何が発表されたのか

Swift CertificatesSwift ASN.1 は、X.509 証明書を扱うための新しい Swift パッケージです。

X.509 証明書は、システム内のアクター(actor)の身元を暗号的に証明するために広く使われる形式で、公開鍵基盤(PKI: Public Key Infrastructure)を定義する X.509 標準の一部です。Certificate Authority と呼ばれる少数の信頼された主体に身元証明の権限を委ねる仕組みで、私たちが最もよく目にするのは TLS 証明書としての利用ですが、コード署名やトークン交換など用途は多岐にわたります。サーバーサイドアプリケーションでは、ネットワーク接続を保護するための TLS 証明書の読み込みをはじめ、ACME による TLS 証明書の動的なプロビジョニングや x5c による身元検証など、X.509 を扱う場面が頻繁にあります。そのため、機能の揃った X.509 ライブラリはサーバーサイドのエコシステムにとって強力な資産になります。

この X.509 証明書の構造は、ASN.1(Abstract Syntax Notation One) というデータ型定義言語で記述されています。ASN.1 は非常に柔軟で複雑な言語で、型の定義方法とは別に、その型をバイト列へ変換する「encoding rules(符号化規則)」が複数存在します。暗号関連のユースケースの大半は、その中でも DER(Distinguished Encoding Rules) または BER(Basic Encoding Rules)を使います。X.509 証明書は ASN.1 で定義され DER でシリアライズされるため、強力で安全な Swift ネイティブの X.509 ライブラリを提供するには、その土台となる ASN.1 ライブラリも必要になります。これが 2 つのパッケージに分かれている理由です。

何に使えるのか

Swift ASN.1

Swift ASN.1 は、主に次の 2 つの機能を提供します。

これだけで、Swift Certificates を含む DER 向けの暗号ユースケースの大半をカバーできます。

ASN.1 パーサーの重要な役割は、信頼できないユーザー入力をパースすることです。この処理におけるメモリ安全性のバグは、しばしば深刻度の高い脆弱性につながります。Swift ASN.1 は、こうしたセキュリティ上重要なパース・シリアライズを、低オーバーヘッドかつ完全にメモリ安全なコードで提供する点に価値があります。

Swift Certificates

Swift Certificates は早期段階で公開されたため、広く使うために必要な機能の一部はまだ揃っていません。発表時点では次のことができます。

  1. Web PKI で使われ、RFC 5280 に準拠する大半の X.509 証明書のパース
  2. X.509 のチェーン構築
  3. 差し替え可能な X.509 検証ポリシーのサポート
  4. 差し替え可能な OCSP 解決のサポート

バージョン 1.0 は、Web PKI のユースケースを安全に支えられる十分に堅牢な X.509 検証器が用意できた時点でのリリースが予定されています。

導入・今後の位置づけ

中期的な目標として、swift-nio-ssl が使っている BoringSSL ベースの X.509 実装を Swift Certificates に置き換えることが挙げられています。これが実現すれば、TLS を使うすべてのアプリケーションの性能が大きく改善し、広い攻撃面にメモリ安全性がもたらされると期待されています。あわせて、証明書発行サービスとのより自動化されたやり取りを可能にするため、Certificate Signing Request(CSR)のサポートを追加する意向も示されています。これらは将来の構想であり、実現を約束するものではありません。

いずれのパッケージもオープンソースプロジェクトとして GitHub 上で開発されています。リポジトリの issue やプルリクエストを確認し、実際にコードを使ってフィードバックを返すことが呼びかけられています。

関連リンク