オブジェクトの広場はオージス総研グループのエンジニアによる技術発表サイトです

組み込み/セキュリティ

間違いやすいセキュリティ用語

オージス総研 組み込みソリューション部
高橋 貴明
2021年9月21日

セキュリティ技術としての「署名」と「証明書」はどう違うのでしょうか?「復号化」という用語に違和感はないですか?本記事では、間違いやすい、混同しやすいセキュリティ用語について解説します。

はじめに

セキュリティ技術としての「署名」と「証明書」はどう違うのでしょうか?

「復号化」という用語に違和感はないですか?

同じ用語を人によって違う意味で使っていて、仕様書の解釈や打ち合わせでのコミュニケーションに困ったことはないですか?

本記事では、間違いやすい、混同しやすいセキュリティ用語について解説します。セキュリティ分野の基礎知識を得たいITエンジニアのみなさんの参考になれば幸いです。

目次:間違いやすいセキュリティ用語

  • 暗号化と復号「化」?
  • 暗号方式の種類 ー 公開鍵暗号と非対称鍵暗号は同じ?
  • 暗号鍵の種類 ー 秘密鍵は secret key?private key?
    • 呼び方のバリエーション
    • おすすめの呼び方
  • ハッシュとMACと署名
    • ハッシュ
    • MAC(メッセージ認証コード)
    • 署名(ディジタル署名)
    • まとめ
  • 署名と証明書
    • 公開鍵証明書の発行・利用を実現する仕組み

暗号化と復号「化」?

あるメッセージを秘匿して権限のない第三者から読み取れないようにすること、すなわち「平文(cleartext, plaintext)」を「暗号文(ciphertext)」に変換することを「暗号化(encryption)」と呼びます。

encryption

では逆に、暗号文を平文に変換することを何と呼ぶでしょうか?

decryption1

正解は「復号(decryption)」です。(異論は後述)

decryption2

JIS X 5004-1991(開放型システム間相互接続の基本参照モデル-安全保護体系)に下記の定義があります。

用語 定義
平文(cleartext) 意味内容が隠されていないデータ。
暗号文(ciphertext) 暗号化を利用して作成されたデータ。作成されたデータの意味内容は隠されている。
暗号化(encipherment, encryption) 暗号文を作成するためのデータの暗号変換。
復号(decipherment, decryption) 対応する可逆な暗号化の逆変換。
暗号技術(cryptography) 情報内容を隠ぺいすること、気付かれないうちに情報が改変されるのを防止すること、および/または情報が許可されていない方法で使用されることを目的とした、データの変換の原理、手段および方法を体系化した法則。
備考:暗号技術は、暗号化および復号の際に使用する方法を決定するものである。暗号化の原理、手段または方法に対して加える攻撃を暗号解読という。

他方で、暗号文を平文に変換することを「復号化」と呼ぶ文献もあります。例えば、「暗号技術入門 第3版 秘密の国のアリス」(結城浩著, 2015)です。

「暗号技術入門 第3版 秘密の国のアリス」(結城浩著, 2015)p.6

暗号文を平文に変換するアクションは「復号化する」よりも「復号する」のほうが日本語としては適切です。しかし、平文を暗号文に変換するアクションを「暗号する」とは表現しません。つまり、暗号と復号と言う用語には非対称性があるのです。本書では「暗号化」と「復号化」の字面としての対称性を優先し、「復号化」という表現で統一しています。

僭越ながらその気持ち、よくわかります(笑)。「~号化」と「~号」が対の概念とは、どうも座りが悪い。

この話題は、セキュリティ技術の解説書では定番のトピックのようで、文献を確認すると、例えば以下のように触れられています。

「マスタリング TCP/IP 情報セキュリティ編」(齋藤孝道著, 2013)p.18

暗号文から平文への変換のこと、つまり暗号化の逆の処理を、復号といいます。復号の場合、「復号」という文字には「化」の意味が含まれているそうで、復号化とはいいません。そのように記載している文献も見かけますが、復号と呼ぶのが一般的となっています。

「暗号技術のすべて」(IPUSIRON著, 2017)p.21

「復号化」と表現する文献もありますが、本書では「復号」で統一します。「暗号化する」「復号する」という日本語は正しいですが、「復号化する」という日本語は不自然であるためです。

次に、関連する用語としてencodeとdecodeを考えてみましょう。

encode(符号化)に対してdecodeを何と呼びますか?

例えば JIS X 0500:2020(自動認識及びデータ取得技術-用語)では、動詞として「復号化」が採用されています。しかし、同じ規格内に「復号する」という用例もあります。

用語 定義
符号化(動詞)[encode (verb)] コードの使用によって、元の形に再変換が可能な形態にデータを変換する(動詞)。
復号化(動詞)[decode (verb)] 符号化された表現を元の形に戻してデータを再格納する(動詞)。
コード(code) 第1の集合の要素を第2の集合の要素に対応付けさせる規則の集まり。
データ符号化(data coding) ベースバンドデータビット表現または論理データビットから物理信号へのマッピング。
復号(decoding) 符号化された表現から、データを元の書式に復元するプロセス。

これは、注意深く専門分野を見定めて用語を弁別しないと、混乱しますね。

暗号化した暗号文を符号化して保存したり通信経路を介して送信したりすることがよくあると思いますが、その場合は下記のような過程をたどることになります。

encode_and_decode

余談ですが、中国語ではencryptを「加密」と呼び、decryptを「解密」と呼ぶそうです。ciphertextは「密文」です。なんと分かりやすい。そして漢字としての対称性も取れていますね。

暗号方式の種類 ー 公開鍵暗号と非対称鍵暗号は同じ?

現代の(コンピュータを用いる)暗号方式は、共通鍵暗号方式と公開鍵暗号方式の2つに大別されます。

しかし、暗号方式の用語には複数の言い回しがあってややこしいと感じることがあります。

「公開鍵暗号」と「非対称鍵暗号」は同じものでしょうか?

次の図のように整理できます。

public-key_and_asymmetric-key

暗号方式の名称としては、「公開鍵暗号」と「非対称鍵暗号(または非対称暗号)」は同じものを指しています。

たいていの場合は、対称鍵暗号/非対称鍵暗号よりも、共通鍵暗号/公開鍵暗号と呼び分ける方がわかりやすいでしょう。その方が、共通鍵暗号の鍵配送問題を解決した公開鍵暗号の特徴が際立つからです。ただ、一つの文書内に両方が出てきて対比して使う場合は対称鍵暗号/非対称鍵暗号を使うと分かりやすい場合もあるかもしれません。本記事でも項目によって使い分けています。

暗号鍵の種類 ー 秘密鍵は secret key?private key?

次に、鍵の名称にまつわる混乱しやすい話を取り上げます。

「秘密鍵」は、英語で言うとsecret keyでしょうか?private keyでしょうか?

関連する用語も含めて、JIS X 19790:2015(セキュリティ技術-暗号モジュールのセキュリティ要求事項)の定義を見てみましょう。表中の例や注記も規格からの引用です。

用語 定義
暗号鍵、鍵(cryptographic key, key) 暗号変換の動作を制御する記号列。
例:暗号変換は、暗号化、復号、MAC計算、署名生成、または署名検証を含むが、これに限定されない。
エンティティ(entity) 人、グループ、デバイスまたはプロセス。
プライベート鍵(private key) エンティティが所有する非対称鍵ペアの鍵で、そのエンティティ以外が使用しないほうがよいもの。
注記:非対称署名方式の場合、プライベート鍵は署名変換を定義する。非対称暗号化方式の場合、プライベート鍵は復号変換を定義する。
公開鍵(public key) エンティティが所有する非対称鍵ペアの鍵で、公開できるもの。
注記1:非対称署名方式の場合、公開鍵は検証変換を定義する。非対称暗号化方式の場合、公開鍵は暗号化変換を定義する。公開鍵は、広く利用可能である必要はなく、特定のグループの全メンバーに利用可能であるだけであってもよい。
注記2:この規格では、公開鍵は、CSPとはみなされない。
非対称暗号技術(asymmetric cryptographic technique) 二つの関連する変換[公開変換(公開鍵によって定義される。)およびプライベート変換(プライベート鍵によって定義される。)]を使う暗号技術。
注記:この二つの変換は、公開変換からプライベート変換を導出することが、与えられた時間限度および計算資源内では困難であるという特性をもつ。
秘密鍵(secret key) 対称鍵暗号アルゴリズムにおいて使用される暗号鍵であり、一つ以上のエンティティに一意に関連付けられ、公開されないほうがよいもの。
注記:”共通鍵”ともいう。
対称暗号技術(symmetric cryptographic technique) 暗号化変換および復号変換の両方に同じ秘密鍵を使用する暗号技術。
注記:”共通鍵暗号技術”ともいう。
クリティカルセキュリティパラメタ、CSP
(critical security parameter, CSP)
セキュリティに関する情報であって、その開示又は変更が、暗号モジュールのセキュリティを危たい(殆)化し得るもの。
例:秘密鍵、プライベート鍵、認証データ(例えば、パスワード、PIN、証明書、その他のトラストアンカ)
注記:CSPは平文でも暗号化されていてもよい。

おわかりでしょうか。

非対称暗号技術(公開鍵暗号技術)で用いられるのが、公開鍵(public key)とプライベート鍵(private key)です。

非対称暗号技術(公開鍵暗号技術)では、送信者と受信者がそれぞれ別の鍵を使います。送信者(Alice)は平文を暗号化する際に公開鍵を使って暗号文を生成します。受信者(Bob)は暗号文を復号する際にプライベート鍵を使って平文を生成します。

asymmetric cryptography

対称暗号技術(共通鍵暗号技術)で用いられるのが、秘密鍵(secret key)です。(秘密鍵は共通鍵(common key)とも呼ばれます)

対称暗号技術(共通鍵暗号技術)では、送信者と受信者が同じ鍵を使います。送信者(Alice)が平文を暗号化する際に使う鍵も、受信者(Bob)が暗号文を復号する際に使う鍵も、秘密鍵(共通鍵)です。

symmetric cryptography

呼び方のバリエーション

private keyについては、世の中の技術書や英和辞典など多くの文献で「秘密鍵」を訳語として採用しています。例えば、研究社 英和コンピューター用語辞典 (オンライン版, https://ejje.weblio.jp/category/dictionary/kejcy/a) では下記の通りです。(2021-07-28閲覧)

秘密鍵 (=secret key).

第三者に知られてはならない鍵という意味からすると、private keyを「秘密鍵」と呼んでも間違いとは言えません。

また、private keyを「私有鍵」と呼んだり、「秘密にしなければならない鍵全般(プライベート鍵と共通鍵の両方)」を指して「秘密鍵」とする用法もあります。

暗号鍵の種類は、次の表のように整理できます。「秘密鍵」が多義的であり、誤解を招きやすいことがわかると思います。

名称 意味 具体的には?
共通鍵 暗号化側と復号側で共通の鍵 共通鍵暗号の鍵
公開鍵 第三者に知られてもよい鍵 公開鍵暗号のpublic key
秘密鍵 秘匿すべき鍵 公開鍵暗号のprivate key
 または
共通鍵暗号の鍵
 または
公開鍵暗号のprivate keyと共通鍵暗号の鍵の総称
私有鍵 私有の鍵 公開鍵暗号のprivate key

見出しに掲げた「秘密鍵はsecret key?private key?」に対する答えは、「どの暗号技術の話かによる。公開鍵暗号ならprivate key、共通鍵暗号ならsecret key。しかし、混乱の元なので、公開鍵暗号におけるprivate keyは秘密鍵ではなくプライベート鍵と呼んだ方がよい。」とするのが妥当ではないでしょうか。

おすすめの呼び方

暗号鍵について、意味を明瞭にするためのおすすめの呼び方を最後にまとめます。公開鍵暗号については、「パブリックキー/プライベートキー」とカタカナで対称的に記すのも誤解の回避のためには有効です。

対象 おすすめの呼び方
共通鍵暗号の鍵 共通鍵
公開鍵暗号のpublic key 公開鍵(またはパブリックキー)
公開鍵暗号のprivate key プライベート鍵(またはプライベートキー)

ハッシュとMACと署名

ハッシュ、MAC、署名はともに「メッセージ/データが改ざんされているかいないかの確認」が主な用途ですが、違いはどこにあるでしょうか?

まずはJIS規格の定義を見てみましょう。

用語 定義
ハッシュ値(hash value) 暗号学的ハッシュ関数からの出力。(JIS X 19790 : 2015)
暗号学的ハッシュ関数(cryptographic hash function) 任意長のビット列を固定長のビット列に計算量的に効率よく対応付ける関数であって、同一の出力値に対応する異なる二つの入力値を求めることが与えられた時間限度および計算資源内では困難であるもの。(JIS X 19790 : 2015)
メッセージ認証コード、MAC(message authentication code, MAC) 偶然のおよび意図的なデータの変更を検出するための、対称鍵を使用した暗号チェックサム。
例:ハッシュベースメッセージ認証コード(JIS X 19790 : 2015)
ディジタル署名(digital signature) メッセージの受信者が、メッセージの出所および完全性の証明、並びに(例えば、受信者による)偽造からの保護を可能にする、メッセージに付加されたデータ、またはメッセージを暗号変換したデータ。(JIS X 19790 : 2015)

ハッシュ

ハッシュを用いることにより、メッセージの完全性(情報の損失や改ざんがないこと)を確認できます。ただし、ハッシュだけでは暗号化は行われないため、機密性は確保できません。また、ハッシュ値は誰でも計算できるため、送信者が本人であること(真正性)も証明できません。ハッシュはディジタル署名や公開鍵暗号など、多くの暗号技術の内部で仕組みの一部として使われています。

なお、データの誤り検出に使われるCRC(巡回冗長検査)などもハッシュ関数の一種ですが、改ざんに対する耐性を持たないため、暗号学的ハッシュ関数とは区別されます。

暗号学的ハッシュ関数の具体的なアルゴリズムとしては、MD5、SHA-2(例えばSHA-512)、SHA-3(例えばSHA3-256)などがあります。

hash

MAC(メッセージ認証コード)

MAC(メッセージ認証コード)は、メッセージの完全性に加えて対称暗号(共通鍵暗号)による真正性(送信者のなりすましがされていないこと)を確認できます。ただし、対称暗号技術を用いるため、鍵配送問題(秘匿すべき鍵をどうやって安全に渡すか?という問題)が生じます。また、送信者の否認防止をすることもできません。

MACの具体的なアルゴリズムとしては、ハッシュ関数を用いるHMAC方式(例えばHMAC-SHA-512)や、ブロック暗号を用いるCMAC方式(例えばAES-CMAC)などがあります。

MAC

署名(ディジタル署名)

署名(ディジタル署名)は、メッセージの完全性に加えて非対称暗号(公開鍵暗号)による真正性の証明を行うことができます。また、否認防止性も有します。ただし、公開鍵の認証のためには証明書が必要となります。

ディジタル署名の具体的なアルゴリズムとしては、RSA署名、DSA署名、ECDSA署名などの方式があります。

digital signature

まとめ

ハッシュ、MAC、署名の違いを下記にまとめます。

いずれの暗号技術も、それ単独では伝送されるメッセージの機密性を確保できません。機密性を確保するためには、メッセージの暗号化を合わせて行う必要があります。

暗号技術 目的 使用する鍵の種類 完全性 真正性 否認防止性 機密性 アルゴリズムの例
ハッシュ(暗号学的ハッシュ関数とハッシュ値) 偽造・改ざん防止 × × × MD5、SHA-2、SHA-3など
MAC(メッセージ認証コード) 偽造・改ざん防止
なりすまし防止
対称鍵(共通鍵) × × CMAC、HMACなど
署名(ディジタル署名) 偽造・改ざん防止
なりすまし防止
否認防止
非対称鍵(署名用のプライベート鍵と検証用の公開鍵) × RSA-PSS、DSA、ECDSAなど

署名と証明書

署名(ディジタル署名)と証明書。どちらもメッセージ/データの内容や作成者が本物であることを主張するものですね。

セキュリティの分野ではどう使い分けられるでしょうか。

JIS規格の定義を見てみます。

用語 定義
ディジタル署名(digital signature) メッセージの受信者が、メッセージの出所および完全性の証明、並びに(例えば、受信者による)偽造からの保護を可能にする、メッセージに付加されたデータ、またはメッセージを暗号変換したデータ。(JIS X 19790 : 2015)
証明書(certificate) 認証局のプライベート鍵または秘密鍵で、偽造できないようにされたエンティティのデータ。
注記:認証機関によって発行された暗号モジュール認証書と混同しないように注意する。(JIS X 19790 : 2015)
公開鍵証明書(public key certificate) 適切な認証局によって署名され、それゆえ偽造できないようにされた、エンティティの公開鍵情報。(JIS X 19790 : 2015)

認証局(CA; 証明機関とも呼ぶ)の定義については、孫引きになりますが、JIS X 5063-1:2005(タイムスタンピングサービス-第1部:枠組み)で引用されたISO/IEC 11770-1およびISO/IEC 11770-3を参照しましょう。

用語 定義
次の用語は、ISO/IEC 11770-1で定義されたものを使用する。
証明機関(certification authority; CA)
公開かぎ証明書の作成および割当てを信託されたセンタ。任意選択として、証明機関は、エンティティに対してかぎを作成し、割り当てることもできる。(JIS X 5063-1:2005)
次の用語は、ISO/IEC 11770-3で定義されたものを使用する。
信頼できる第三者機関, TTP(trusted third party; TTP)
セキュリティ関連の活動に関して、他のエンティティから信頼されるセキュリティ期間またはその代理者。
参考:これらの定義は、ISO/IEC 11770-3を要約して作成したJIS X 5058-3の解説に記載している定義に一致している。(JIS X 5063-1:2005)

前の項で説明したディジタル署名を用いると、送信者の真正性(なりすまし防止)や否認防止性を確保できます。また、ディジタル署名と伝送するメッセージの暗号化を組み合わせれば、機密性も確保できます。

しかし、ディジタル署名だけでは、検証鍵(公開鍵)の配送時に中間者攻撃によって公開鍵の偽造やメッセージの改ざん被害を被る可能性があります。これを防ぐためには、公開鍵を認証する仕組みが必要となります。そこでよく用いられるのが、証明書(公開鍵証明書)です。

証明書とは、「信頼できる第三者機関」である認証局(CA)が、登録しようとする公開鍵に認証局自身のプライベート鍵によってディジタル署名を付与したものです。証明書はX.509(RFC5280)という規格で標準化されています。

ディジタル署名と証明書の違いは、下記のように図示できます。

signature vs certificate

ディジタル署名の対象となるメッセージの内容は特に限定されないのに対し、証明書は、公開鍵を対象として、ディジタル署名がその部品(構成要素)の一つとなっています。公開鍵証明書に結合されるメタデータには、例えば署名アルゴリズム名と鍵長(例:ecdsawithSHA512)などが含まれます。

この項の始めの疑問に戻りましょう。署名と証明書の本質的な違いは何でしょうか?

署名とは、メッセージの送信者による言わば一方的な主張です。署名が受信者の目の前でされたのであれば(もしくは、公開鍵が安全に伝送されたことを受信者が確信していれば)、証明書の出番はありません。証明書は、安全でない可能性がある経路を使って署名を伝送する場合に用いられる暗号技術です。証明書は、メッセージの送信者と受信者の双方が信頼する第三者による署名のお墨付きと言えます。

公開鍵証明書の発行・利用を実現する仕組み

最後に、公開鍵証明書の発行・利用を実現する仕組みである公開鍵基盤(PKI)に触れておきます。

認証局の公開鍵によって証明書の検証を行うことにより、認証局に登録された公開鍵が「本物(送信者のもの)」であることを確認できます。

それでは、認証局の公開鍵が「本物」であることはどうやって確認するのでしょうか?

その確認には、より上位の認証局が発行した証明書を使います。ではその証明書の検証は?…さらに上位の認証局の証明書を使います。

こうした証明書の階層構造の最上位に位置するのがルート認証局とルート証明書です。ルート証明書は、ルート認証局が自らの公開鍵に対して必然的に自らのプライベート鍵で自己署名したものになります。自分より上位の存在がありませんので、自分で署名するしかないわけです。ルート証明書は、あらかじめ安全な手段で使用者に配布しておく必要があります。たとえばWebブラウザであれば、アプリケーションのインストールと同時にいくつかのルート証明書がインストールされます。

このような、認証局を用いて公開鍵暗号方式やディジタル署名で用いられる公開鍵の証明書を発行・利用できる仕組みのことを公開鍵基盤(PKI)と呼びます。

public key infrastructure

おわりに

用語で迷ったら原典に当たれ、というのが理解のための鉄則だと思います。

セキュリティ分野の原典・リファレンスたる標準規格には、ISO(国際標準化機構)、IEC(国際電気標準会議)、NIST(アメリカ国立標準技術研究所)が発行したものや、日本の経済産業省・IPA(情報処理推進機構)が発行したガイドラインなど、さまざまなものがあります。

本記事では、技術的内容だけでなく、日本語としての意味や解釈を探索すべく、JIS(日本産業規格)の用語定義を手掛かりに、間違いやすい、混同しやすいセキュリティ用語を整理してみました。読者のみなさんの理解の一助になれば幸いです。

本記事で参照、引用した標準規格と文献の一覧を示します。

本記事は作成者個人の見解を示すものであり、所属企業・組織の見解を示すものではありません。

  • JIS X 0500 : 2020(自動認識及びデータ取得技術 - 用語)
  • JIS X 5004-1991(開放型システム間相互接続の基本参照モデル - 安全保護体系)
  • JIS X 5063-1 : 2005(タイムスタインピングサービス - 第1部:枠組み)
    • ISO/IEC 11770-1(Information technology - Security techniques - Key management - Part 1: Framework)
    • ISO/IEC 11770-3(Information technology - Security techniques - Key management - Part 3: Mechanisms using asymmetric techniques)
  • JIS X 19790 : 2015(セキュリティ技術 - 暗号モジュールのセキュリティ要求事項)
  • RFC5280 (https://tools.ietf.org/html/rfc5280)
  • インターネットX.509 PKI: 証明書と CRL のプロファイル (https://www.ipa.go.jp/security/rfc/RFC5280-00JA.html)
  • PKI 関連技術情報 (https://www.ipa.go.jp/security/pki/)
  • CRYPTREC暗号リスト(電子政府推奨暗号リスト) (https://www.cryptrec.go.jp/list.html)
  • 「マスタリング TCP/IP 情報セキュリティ編」齋藤孝道著、オーム社、2013
  • 「暗号技術入門 第3版 秘密の国のアリス」結城浩著、SBクリエイティブ、2015
  • 「暗号技術のすべて」IPUSIRON著、翔泳社、2017
  • 「暗号技術 実践活用ガイド」Jean-Philippe Aumasson著、マイナビ出版、2020