インターネットに「信頼」を実装するために
──まずはお二人の自己紹介と、普段の役割について教えてください。
萱間真人氏(以下、萱間):伊藤忠テクノソリューションズ株式会社のみらい研究所で、アセットデザインチームの責任者をしています。今回のプロジェクトでは、開発全体のファシリテーションに加え、システムアーキテクチャおよびアプリケーションアーキテクチャの設計を担当しました。
竹村太希氏(以下、竹村):慶應義塾大学大学院 政策・メディア研究科 修士1年です。研究テーマは、デジタルアイデンティティの分野と、分散システム・分散アルゴリズムです。研究室全体で、今回の共同研究テーマである「Verifiable Credentials」の開発にも取り組んでいます。
──共同研究プロジェクト「Trust Knots」の概要について教えてください。
萱間:Trust Knotsは、2024年4月にみらい研究所と慶應義塾大学SFC研究所が共同で発表した「インターネットにおける信頼の研究」を行うプロジェクトです。フィッシング詐欺、フェイクニュース、学歴詐称といった社会課題や、B2Bサプライチェーンにおけるデータ改ざんの問題に取り組んでいます。
現在のインターネットには、信頼を担保する仕組みが十分に実装されていません。そのため、相手が本当に意図した本人なのかを証明することが困難です。この「信頼」を広げることができれば、より安全なコミュニケーションやコンテンツのやり取りが可能になります。
具体的な活動としては、「VC Knots」のようなプロトタイプの開発や、さまざまなユースケースでの社会実装を進めています。また、そこで得られた知見をもとに、政府や業界団体に向けた提言活動も行っています。
──企業の研究はクローズドに行うことも多い中、産学連携で行うメリットとは?
萱間:インターネットにおける信頼は、CTC1社だけでは決して作れません。さまざまな団体や企業が協力して初めて実現できるものです。もしCTCが単独で「インターネットの信頼を作る」と掲げても、「自社の利益を優先しているのではないか」と懸念されるかもしれません。
さまざまな立場の人が「中立的な設計だ」と信頼していただくためには、アカデミックな知見が不可欠です。短期的な利益ではなく、長期的な真理を探求するアカデミアの視点があることで、インターネットの信頼はより実現可能なものになります。
竹村:大学では日々技術探求を行っていますが、それが実際のビジネス課題にどう役立つのかを把握しにくい側面があります。共同研究を通して、自分たちだけでは気づけない実社会の課題を知ることができました。アカデミア単体では得られない視点を産学連携で得られる意義は、非常に大きいと感じています。
EasyとSimpleを叶えた技術選定とVC Knotsの設計思想
──今回のテーマである「Verifiable Credentials(VC)」について解説をお願いします。
竹村:インターネット上のアカウント管理モデルは大きく変化しています。2000年代初頭はサイトごとにID・パスワードを設定していましたが、2010年代にはID連携が登場し、Googleなどのアカウントで外部サイトにログインできるようになりました。
しかし、ID連携はGoogleアカウントが無効化されると、付随するサービスが使えなくなるという依存性の問題や、ユーザーの行動がプラットフォーマーに把握されるプライバシーの問題を抱えています。
こうした課題を解決する新しいモデルとして登場したのが「Verifiable Credentials(VC)」です。最近標準化が進んでいる黎明期の技術ですが、急速に普及が始まっています。VCは「検証可能なデジタル証明書」であり、発行者(Issuer)、保有者(Holder)、検証者(Verifier)の3者が登場します。例えば、CTCが社員証を発行する場合は、CTCが発行者、社員が保有者、社員割引を提供する店舗などが検証者となります。
重要なのは、VCを検証者に提示した際に、その事実が発行者に伝わらない仕組みである点です。また、社員番号を隠して年齢だけを開示する「部分開示」も可能です。さらに、発行者が倒産しても証明書は手元に残るため、転職時に過去の在籍を自律的に証明できます。このように、VCはプライバシーと依存性の課題を同時に解決できる技術となっています。
──今回OSSとして公開された「VC Knots」とは、どのようなものでしょうか。
萱間:VC Knotsは、VCを扱うすべての方に向けたライブラリ群です。発行者、保有者、検証者のそれぞれがVCを活用したサービスを開発したいと考えた際、迅速かつ容易に実装できる環境の提供を目的としています。
日本でVCに取り組む開発者はまだ多くありません。そのため、日本語のドキュメントが完備され、GitHub上で日本語のサポートを受けられる環境は、現時点では非常に貴重だといえます。
また、VC Knotsは「簡単に作れる」ことを重視し、デザイン思想としても「Easy(簡単)」であることを徹底しています。PoC(概念検証)での利用を想定し、導入時の障壁を最小限に抑えました。
竹村:ウォレット側の開発にはGo言語を採用しました。ウォレットは、保有者が使う証明書管理アプリケーションなので、基本的にはスマートフォンで管理するシーンが多くなります。そのため、iOSやAndroidでの動作が必要となります。一方で、クラウド上で管理する「ホステッドウォレット」の需要もあります。こうした多様な実行環境に対応できる言語を選ぶ必要がありました。
また、モバイルアプリから呼び出したり、多言語のアプリと共通利用したりすることを考慮し、FFI(Foreign Function Interface)による外部連携のしやすさも重視しました。
最終的に、GoとRustが候補に残りましたが、より多くの開発者にとって学習コストが低く、親しみやすいGoを選定しました。
萱間:Go言語には「Make zero value useful(ゼロ値を有用にする)」という思想があります。特別な設定をしなくても、デフォルト状態で適切に動作するという考え方です。VC Knotsも、起動すればすべてのデータがインメモリ上で動作するように設計されています。本番運用には調整が必要ですが、まずは「動かせること」を最優先しました。
ただし、簡便なだけでは実運用に耐えられません。そこで重要なのが「Simple(単純さ)」です。例えば、Google Cloudに載せる場合はFirestoreを使い、AWSならDynamoDBに切り替えるというように、クラウド固有のサービスを簡単に切り替えられる仕組みが必要です。一つ一つがシンプルであればあるほど切り替えやすくなります。
「外側はEasyだが、内部はSimple」。この二段構えの構造により、初心者から熟練のエンジニアまで幅広くサポートできるライブラリを目指しています。
──VC Knotsをどういった開発者に使ってほしいと考えていますか。
萱間:技術に興味を持った方に、ぜひ自分事として触れていただきたいです。VCは医療や工業など多岐にわたる分野に応用可能です。「自分の専門領域ならこう使えるかもしれない」という発想を、VC Knotsですぐに形にしてほしいと考えています。
竹村:証明書の発行から検証までを一貫して試せるツールはまだ少ないのが現状です。「それなら自分たちで作ろう」という想いがVC Knotsの開発の原動力になっています。ですので、どんな開発者でも気軽に試してほしいです。
──CTCとしては、なぜOSSとして公開するのでしょうか。
萱間:インターネットの信頼は、一社では構築できません。だからこそ、広く仲間を募ることが重要です。まずはVCという技術を知り、触れられる状態にあることに気づいてもらいたい。
普及が進み、多くの人が「インターネットの信頼」の重要性に気づけば、結果としてCTCのビジネス機会も増えると考えています。まずは技術の良さを広めるため、オープンソース化を選択しました。
激しい仕様変更を乗り越える!産学連携で挑む実装の裏側と展望
──実際の共同研究・開発はどのように進められましたか。
萱間:毎週水曜日に2~3時間のミーティングを行っていました。当初は4時間ほどかけていましたが、現在は効率化されています。1週間を一区切りとするスプリントのような形式です。
当初は厳密なスクラム開発を目指しましたが、有志による活動であるため、メンバーが週に割ける時間を確認し、それに応じてタスクを割り振る柔軟なスタイルに落ち着きました。
竹村:私にとっては本格的なチーム開発への参加は初めてでした。初期段階で丁寧なチームビルディングを行っていただき、スクラム開発の進め方を学べたことで、その後の開発が非常にスムーズに進みました。
──開発していく中で苦労したポイントについて教えてください。
萱間:メンバーの時間を調整するのが一番の難所でした。固定された稼働時間がない中で、いかに全員が「作りたいもの」に集中できる環境を作るか、今も試行錯誤を続けています。
竹村:時間調整でいうと、卒業論文の時期と重なり時間の確保が難しい場面もありました。技術面では、VCの標準仕様や周辺プロトコルが現在進行形で更新されているため、最新の動向をキャッチアップし続けるのが大変でした。
また、ウォレット側をモジュール化して差し替え可能な設計にしていますが、プロトコル自体が密結合な部分もあり、分離の境界線をどこに引くべきか悩みました。これらは黎明期の技術ならではの挑戦だったと感じています。
萱間:開発開始以来、標準仕様が何度も変更されました。苦労して実装した機能が仕様から消えてしまうこともありましたが、その変化に波乗りするように対応していくダイナミックな開発は、非常にエキサイティングでした。
しかし、学生のみなさんの熱意には圧倒されました。純粋な学問的好奇心から技術を追求し、ソフトウェアを開発する姿勢は、私自身も「すごく良いプロダクトを作りたい」と強く刺激を受けました。ピュアな熱は、すごく大事だなと今回感じました。
──竹村さんは研究者の視点から、こだわったポイントはありますか。
竹村:単にSDKを作るだけでなく、具体的なアプリとライブラリを同時並行で開発する手法を採りました。その過程で「プライバシーの観点から、この実装は譲れない」という議論が学生側から活発に出ましたね。
「利便性は高いが、現在のVC技術ではプライバシーに課題が残る」といった発見は、そのままアカデミアの研究テーマになります。実際に私の研究室では、共同研究で見つかった課題に取り組む学生が増えており、産学連携ならではの素晴らしい成果だと感じています。

──今後の「Trust Knots」および「VC Knots」の展望を教えてください。
萱間:VC Knotsを公開後の反響はまだあまり多くはないのが現状です。積極的な情報発信が必要な段階だと認識しています。
竹村:いかに広めていくかが今後のチャレンジです。研究室では、学部1、2年生が最初に取り組む教材としてこのライブラリを活用しています。身近にメンテナンスされたライブラリがあり、開発した先輩が身近にいる環境は、世界的にも非常に恵まれていると思います。
萱間:今後のVC Knotsに関しては、相互運用性が非常に重要だと思っています。VCそのものを発展させることは、私たちが独りよがりにできるものではなく、さまざまな企業や団体と協力して初めて実現するものです。
そのためVC Knotsは、他のプロダクトとしっかり相互接続性、相互運用性を確認していきたいと思っています。相互接続の確認には2つの観点があります。1つは、OpenID for Verifiable Credentials(OID4VC)が提供しているコンフォーマンステストに準拠すること。もう1つは、各プロダクトを持っている企業とコンタクトを取って、実際にVC Knotsを使っていただき、うまくつながるかどうかを一緒に確認することです。
Trust Knots全体としては、企業や学生を交えたアイデアソンを計画しています。ビジネス現場でのVC活用アイデアをVC Knotsでプロトタイプ化し、実社会の実装へ近づけたいです。そこで浮き彫りになった課題を標準化団体や政府へフィードバックし、セキュリティやプライバシーの観点から提言を行うサイクルを回していきたいと考えています。
──最後に、読者に向けてメッセージをお願いします。
萱間:一番はGitHubにアクセスしていただきたいです。もし敷居が高いと感じる方は、まずは「VC」について検索してみてください。身近な課題と技術の接点に気づいていただければ嬉しいです。
竹村:VCの普及によって、世の中がより安全になる世界を目指しています。そのために、まずはこの技術を知っていただき、ご自身のプロジェクトや業務で活用できないか、検討していただけますと幸いです。

