公的個人認証サービス(JPKI)は、マイナンバーカードのICチップに搭載された電子証明書を利用して、オンライン上で安全・確実な本人確認を行うためのサービスです。これまでのマイナ活用.comの記事でも、公的個人認証サービスを活用した本人確認について解説してきました。マイナンバーカードのICチップ徹底解説!本人確認が劇的に変わる!公的個人認証サービス(JPKI)とは|マイナンバーカードを活用した本人確認の未来本記事ではさらに一歩踏み込み、その技術的側面を解説します。 具体的には、公的個人認証サービス(JPKI)の技術的核心となる「デジタル署名」と「公開鍵基盤(PKI)」について詳しく解説していきます。また、本人確認という用語が指すものの正確な定義についても整理していきます。本記事を通して、公的個人認証サービス(JPKI)の技術的な仕組みと、このサービスによって確実な本人確認ができる理由を理解していきましょう。目次本人確認とはまずは本人確認という単語をより正確に整理していきましょう。 本人確認は「身元確認(Identity Proofing)」と「当人認証(Authentication)」の二つの要素に分かれます。※参考資料⺠間事業者向けデジタル本人確認ガイドライン 第1.0版NIST SP 800-63 Digital Identity Guidelines身元確認は、本人確認書類を確認する等の手段により、申請者が実在する人物であり、申請された情報や属性が正確で、かつその情報が申請者本人に関連していることを確認するプロセスのことです。これは例えば、銀行口座を開設するために身分証等を提示する際の本人確認が該当します。このように身元確認は、典型的にはユーザーの新規登録時に行われます。身元確認の具体的な手法は、犯収法をはじめとした法令によって指定される場合もあります。一方、当人認証は、あらかじめ登録されたパスワードや生体情報などの本人のみが提示可能な情報を照合する等の手段により、今手続きをしている対象が、あらかじめ登録された本人であることを確認するプロセスのことです。当人認証は、IDとパスワードを用いてウェブサイトにログインする際など、典型的にはサービス利用時のログイン処理等で行われます。いわゆる認証という単語を使うときは、こちらを指していることがほとんどでしょう。身元確認と当人認証には、それらの強度を示す国際的な標準規格が存在し、それぞれIAL(Identity Assuarance Level:身元確認保証レベル) と AAL(Authentication Assuarance Level:当人認証保証レベル) と呼ばれています。これらはNIST SP 800-63という、米国立標準技術研究所(NIST)によって公開されているガイドライン中で定義されているものです。出典:⺠間事業者向けデジタル本人確認ガイドライン 第1.0版 P26(⼀般社団法⼈OpenID ファウンデーション・ジャパン KYCワーキンググループ 本⼈確認ガイドラインタスクフォース, 2023年3⽉)公的個人認証サービスは、身元確認と当人認証の両方の用途に対応しています。マイナンバーカードの発行時には、厳密な本人確認書類の確認および対面での確認が行われます。この発行プロセス自体が、IAL3の身元確認に該当します。そしてマイナンバーカードに含まれる2つの電子証明書のうち、署名用電子証明書には基本4情報(氏名・住所・生年月日・性別)といった身元情報が含まれます。これを活用することで、証明書の有効性と証明書を格納しているマイナンバーカードの所有さえ確かに証明できれば、高い保証レベルで確認済みの身元情報を用いたオンライン上での身元確認が可能となります。マイナンバーカードを用いて当人認証を実現する際には、典型的には利用者証明用電子証明書を利用します。利用者証明用電子証明書を利用するには、マイナンバーカードの発行時に自身で登録した4桁のパスワードが必要です。そのため、マイナンバーカードの電子証明書による認証は、知識認証(4桁パスワード) とカードの所有認証が組み合わさった多要素認証となっています。さらにICチップは耐タンパー性*を備えているため、AAL3の保証レベルに相当します。*ICチップ内の情報が不正に読み出されたり解析されようとした場合、自動的に内容が消去される等の対抗措置が講じられる性質 参考:マイナンバーカードのセキュリティ(デジタル庁)このように、マイナンバーカードを利用することで、高い保証レベルによる身元確認と当人認証を実現することができます。ところで、これらの本人確認では、利用者がデータを送っているだけではなく、たしかにマイナンバーカードというモノを所有していることを、インターネット越しにどのように証明しているのでしょうか? これには次節のデジタル署名の技術を活用します。デジタル署名とはデジタル署名は公開鍵暗号技術*の一種で、以下の3つのアルゴリズムで構成されています。※ここでの公開鍵暗号は秘匿性のための公開鍵暗号PKE(Public Key Encryption)ではなく、公開情報である公開鍵と秘密情報である秘密鍵を組み合わせて扱う暗号技術全般、すなわちPKC(Public Key Cryptography)を指します。鍵生成:署名者の鍵ペア、つまり公開鍵と秘密鍵を生成します。一般に、秘密鍵から公開鍵が導かれ、公開鍵は署名の検証に、秘密鍵は署名の生成に利用されます。ただし、公開鍵から秘密鍵を導くことは計算的に困難です。署名生成(Sign):メッセージ(電子文書やデータ)と秘密鍵を入力情報として、署名を生成します。この署名は、秘密鍵の所有者にのみ生成可能で、署名から元のメッセージや秘密鍵を推測することは非常に困難です。署名検証(Verify):検証は、メッセージ・公開鍵・署名のセットに対して行われ、署名が正当なものであれば成功します。これらのアルゴリズムを順を追ってみていきましょう。まず署名者のために、鍵生成によって公開鍵と秘密鍵を作ります。このうち、秘密鍵は署名者だけが使えるように厳重に管理し、公開鍵は必要に応じて検証者に渡せるようにします。次にメッセージとなる被署名データと秘密鍵を合わせて、署名を生成します。秘密鍵は署名者だけが使えるため、この署名は署名者だけが作れることになります。そしてオリジナルの被署名データと生成された署名を受け取った検証者が、公開鍵を用いて、この署名の正当性を検証します。この手順を踏むことで、被署名データが、第三者による偽装やなりすましによって作成されたものではなく、署名者自身によって署名されたものであることを保証できます。つまりデジタル署名を用いることで、被署名データの真正性を保証することができると言えます。またさらに、被署名データの改ざんがあれば、検証時に不整合として検出することができます。これは、デジタル署名が完全性を持つといえます。さらに、被署名データと署名を証拠として残しておくことで、署名者が自ら署名したことをあとから否定することを防ぐ否認防止の役割も果たします。こうした性質を持つことから、デジタル署名は電子契約などで行われる電子署名*にも利用されており、契約文書などのデータに対し署名を付与することで、承認や保証の意を示す証拠として活用されています。※電子署名とデジタル署名では意味が異なります。デジタル署名は技術の名前で、先に説明したような公開鍵暗号を使って真正性・改ざん検知を実現する技術のことを言います。一方で電子署名とは、デジタル署名を始めとする何らかの方法を用いて、あるデータの真正性などを確認する方法を言う法律用語です。 参考:電子署名及び認証業務に関する法律また、デジタル署名は当人認証に活用することも可能です。認証を行うサービスは、任意のデータ(一般には乱数を使ったチャレンジ&レスポンスのデータ)を生成して、そのデータをユーザーに提示してデジタル署名を行うことを要求します。ユーザーは、チャレンジ&レスポンスのデータに対して秘密鍵で署名を計算して返し、サービス側(検証者)は、署名とデータを証明書等から取得した公開鍵で検証することで、秘密鍵の所有証明として当人であることを確認します。この認証の方式は、チャレンジレスポンス認証と呼ばれます。この方式は、秘匿データが通信経路上に現れないという点で優れています。近年ではフィッシング耐性のあるパスワードレス認証として、パスキー認証が注目されていますが、こちらもデジタル署名によるチャレンジレスポンス認証が行われています。さて、マイナンバーカードと公的個人認証サービスの話に戻ると、実はマイナンバーカードのICチップ内にも、デジタル署名を行うための秘密鍵が格納されています。この秘密鍵により署名を生成し、受け手側はそれを公開鍵で検証することで、秘密鍵の所有、つまりはマイナンバーカードの所有をインターネット越しであっても証明することができます。前節で挙げていた「マイナンバーカードの所有をインターネット越しにどのように証明するか」という疑問の答えは、「デジタル署名を利用する」ということでした。しかし、これだけではまだ不十分なところがあります。デジタル署名によって、署名者は、検証に用いた公開鍵に対応する秘密鍵の所有者であることは分かる一方で、その所有者を表す情報(例えば、氏名や住所などの属性情報)は、デジタル署名単体では分かりません。そこで、公開鍵とその所有者の情報を紐づける仕組みが必要です。この仕組みは公開鍵基盤(PKI: Public Key Infrastructure) によって提供されます。これについて次節で詳しく解説します。公開鍵基盤(PKI)とはPKIでは、公開鍵証明書という概念を導入することで、ある公開鍵に対応する秘密鍵の所有者の属性を保証します。公開鍵証明書とは、その公開鍵に対応する秘密鍵の所有者に関する情報と、その公開鍵に対して「信頼できる第三者によるデジタル署名」を施したものを、一つのデータセットとしてまとめたものです。出典:Giaros (2007年6月18日). Public Key Certificate Diagram (Italian Version). Wikimedia Commons. https://commons.wikimedia.org/wiki/File.svgライセンス: Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)公開鍵証明書の作成のプロセスの中で、第三者の秘密鍵によるデジタル署名が現れてややこしいですね。この証明書を作成するためのデジタル署名を行う第三者サービスは、認証局 (CA)と呼ばれます。認証局は、所有者の情報と、秘密鍵に対応する公開鍵自体の情報が正しいことを、これもまたデジタル署名を用いて保証しています。このように、あるデジタル署名の正しさを保証するために別の(認証局の)デジタル署名を使用することで、一連の保証関係を作ることができます。では、その認証局の情報に嘘や誤りがなく、その鍵(保証)が正しいと信頼してよいことは、誰が保証してくれるのでしょうか?それは検証者自身で判断するしかありません。最終的に認証局の鍵(保証)が信頼に足るかを決めるのは、その一連のデジタル署名を検証し、正しいかどうかを検証する人です。検証者は、あるデジタル署名を検証するために、その一連の証明書チェーンを遡って確認していき、その基点となっている証明書が、自身が「この主体による情報であれば信頼してもよい」と思った認証局によって発行されたものであるかを確認します。この検証者が信頼する基点となる認証局を「トラストアンカー」と呼びます。トラストアンカーとなる認証局は「ルート認証局」とも呼ばれ、ルート認証局は自分の秘密鍵で自分の証明書に署名します。この証明書は「自己署名証明書」と呼ばれます。–証明書の有効性–なお、証明書には有効期限が設定されています。通常の証明書は1〜5年程度、認証局の証明書で10〜15年程度です。なぜ有効期限を設定する必要があるのかというと、技術の進歩を想定しているからです。暗号技術は現実的な時間で解くことが難しいような計算困難性を安全性の根拠としています。しかし現在のコンピュータ性能で計算が困難な問題も、性能が上がった未来では現実的な時間で解けるようになるかもしれません。このように暗号の安全性が低下してしまうことを危殆化と言います。有効期限は、この危殆化が起こることを予期して、その時々で最も安全とされる暗号方式に移行するべきという考え方に基づいて設定されたものです。また、単純に鍵の運用ミス等によって流出するなどの理由によって暗号が安全であると言えなくなった場合も危殆化であるとされます。鍵を長く運用し続けることは、やはり危殆化のリスクを高めるので、ある程度の年数運用したら作り直す(ローテート)ことが良いとされています。先の例のように流出が確認された場合などに対応するため、有効期限前であっても、認証局は作成した証明書を直ちに失効させることができます。これは、失効対象の証明書の情報(シリアル番号や失効理由を含むもの)のリストに対し、認証局が署名することで行います。このデータをCRL(Certificate Revocation List)と呼びます。失効確認の方法としては、このCRLを事前に検証者が取得して、証明書(のシリアル番号等)がCRLの中に含まれるかを確認します。また、失効確認をオンラインで行う方法としてはOCSP(Online Certificate Status Protocol)というものもあります。検証者がまとめて失効情報のリストをダウンロードするCRL方式とは異なり、こちらは都度OCSPリクエストを作成し、OCSPレスポンダと呼ばれるサーバに対して証明書の状態を問い合わせます。–検証方法–PKIを用いたデジタル署名の検証は、以下のステップで行われます。送信者の証明書が、検証者の信頼する認証局もしくはその認証局から認証された別の中間認証局より発行されたものであることを確認する。(認証パス検証)証明書が有効期限内であり、認証局によって失効されていないことを、CRLやOCSPレスポンダへの問い合わせ等によって確認する。(有効確認)受け取った署名が、送信者の証明書に含まれる公開鍵に対応する秘密鍵で作成されていることを確認する。こうして、デジタル署名で達成されていた秘密鍵の所有証明に加えて、鍵の所有者の身元確認および内容の証明を行うことができます。さて、これでようやく公的個人認証サービス (JPKI)の話に戻ることができます。ここまでの話から、公的個人認証サービスの略称 JPKI の意味するものが何か、容易に想像がつくことでしょう。そう、JPKIはJapanese Public Key Infrastractureのことで、日本国をトラストアンカー※にしたPKIの仕組みだったのです。なお、世の中のほとんどのPKIは、X.509と呼ばれる規格にしたがって運用されています。JPKIも例に漏れずX.509の規格に従っています。X.509では先程まで概念として登場していたキーワードのほとんど、例えば証明書やCRLなどの実装を定義しています。より細かい技術仕様について気になる方はRFC5280のプロファイル仕様を参照するとよいでしょう。※より正確には、ルート認証局を運営している地方公共団体システム機構(J-LIS) がトラストアンカーになっています。公的個人認証サービス(JPKI)を利用した本人確認JPKIでは、2種類の証明書を発行しています。署名用電子証明書利用者証明用電子証明書これらはいずれもマイナンバーカード内に秘密鍵と証明書が格納されており、それぞれの証明書で用途が異なります。出典:マイナンバーカードの機能のスマートフォン搭載について(総務省 情報流通行政局、2021年9月)代表的な用途としては、本人確認とはの節でも例に挙げた通り、署名用電子証明書を用いた身元確認と、利用者証明用電子証明書を用いた当人認証です。署名用電子証明書には、鍵の所有者情報として、基本4情報(氏名、住所、生年月日、性別) が埋め込まれています。そのため、ある電子文書を作成した者が一体誰であるのかは、証明書を見ることで確認することができます。署名用電子証明書でのデジタル署名をよく見かけるのは、犯罪による収益の移転防止に関する法律 (犯収法)※に基づく身元確認が行われる時でしょう。例えば銀行口座や証券口座の開設などがあります。このような業務を行う際には、どういう手段によって身元確認を行わなければならないかという本人確認方法が具体的に指定されています。※参考:過去記事: 犯収法上のオンライン本人確認がJPKIに原則一本化へ! 企業の対応策は利用者証明用電子証明書は、技術的には、実は署名用電子証明書と全く同じ仕組みです。証明書に記載されている情報が署名用電子証明書とは異なるだけです。利用者証明用電子証明書には氏名などの鍵の所有者情報が一切記録されておらず、純粋に公開鍵の証明書になっています。意図された利用方法は署名用電子証明書と異なり、当人認証に特化しています。デジタル署名の説明で言及したチャレンジレスポンスによる認証を行うことを目的とした電子証明書です。ところで、何も情報が入っていない利用者証明用電子証明書で、どうやって利用者が誰なのかを特定するのでしょうか? 実は、公的個人認証サービスでは、署名用電子証明書と利用者証明用電子証明書を紐付ける機能を提供しています。これをうまく使うと、署名用電子証明書による電子署名を使って登録した人を、利用者証明用電子証明書によるチャレンジレスポンスでログインさせることができるわけです。いずれの場合も、署名の検証のフローはPKIで説明した検証の方法と違いはありません。ただし、JPKIでは失効情報を取得できる者(署名検証者)が法律によって制限されており、たとえば地方自治体であったり、主務大臣からの認定を受けた民間事業者(典型的には、プラットフォーム事業者)などに限られます。まとめ本記事では公的個人認証サービスを支える技術を解説しました。公的個人認証サービス(JPKI)を利用した本人確認の技術的ポイントをまとめると以下の通りです。公的個人認証サービスを利用することで、高い保証レベルの身元確認と当人認証を実現できるマイナンバーカードを所有していることは、デジタル署名を用いて保証する公開鍵と所有者の情報は、公開鍵証明書(電子証明書)で紐付けられており、その電子証明書の信頼性をJ-LISをトラストアンカーとするPKIにより保証する当社ポケットサインは公的個人認証機能を活用したAPIサービス「PocketSign Verify(ポケットサイン・ベリファイ)」 を提供しています。当社の「PocketSign Verify」は特に即日利用可能なJPKIモック環境を無料で提供Developler Friendlyな開発者向けコンソール無償で多数の開発ドキュメントを提供など開発者の視点で非常に導入しやすいものとなっております。公的個人認証サービス(JPKI)を利用した本人確認の導入にご興味をお持ちの方は、ぜひPocketSign Verifyをご試用ください。▼PocketSign Verifyの詳細はこちらhttps://pocketsign.co.jp/product/verify▼ポケットサインのサービスや取り組みについて、詳しくはこちらをご覧ください。 https://pocketsign.co.jp▼問い合わせはこちらからhttps://pocketsign.co.jp/contact