付録 B: PKI 管理メッセージプロファイル English
この付録には、標準に適合した実装において必ずサポートする PKI メッセージの詳細プロファイルを含んでいます。
以下の PKI 管理操作で使用される PKIMessages のプロファイルが用意されています。
- ルート CA 鍵更新
- 情報要求/応答
- 相互認証要求/応答(一方向)
- 初期登録/認証
- 基本認証機構
- 証明書リクエスト
- 鍵更新
<<本ドキュメントの以降のバージョンには上記の内容を拡張し、次の一覧が示す操作のプロファイルを包含することがあります(要望に応じて、そのほかの操作と一緒に)>>
- 失効要求
- 証明書公開
- CRL 公開
B1. 本プロファイルの解釈についての総則 English
- 個々のプロファイルにフィールドが「オプション(OPTIONAL)」か「デフォルト(DEFAULT)」かについて明記されていない場合は、それらのフィールドは関連メッセージに表示しないことになっています。(すなわち、受信者がこのようなフィールドを含んだメッセージを構文上の不正として正当な拒否を施行することができます。)必須フィールドの場合、もし明白な値があれば特に「必須」ということは明記されません。
- 構造が1つ以上のメッセージで起きる場合に、必要に応じてそれぞれの構造は別々にプロファイル化されます。
- PKIMessage 構造のalgorithmIdentifiers は別々にプロファイル化されます。
- 「NULL-DN」と呼ばれる「特別な」X.500 DN があります。すなわち、 RelativeDistinguishedNames のゼロ長の SEQUENCE を持つ DN のことです。(そのDERエンコードは「3000」Hとなります)
- フィールドにGeneralNameを必要とするが適切な値が得られない(例えば、エンドエンティティが自分の名称を知る前にリクエストを生成している)場合に、GeneralNameは X.500 NULL-DN となります。(すなわち、CHOICE における Name フィールドが NULL-DN を含むことになります)この特別な値は「NULL-GeneralName」とも呼ばれています。
- プロファイルがGeneralNameの値を指定しないときに、NULL-GeneralName 値が関連の PKIMessage フィールドに代入されることになります。このことは一部のメッセージの PKIHeader の送信者(sender)フィールドに起こります。
- フィールドの命名に関わる何らかの曖昧さが発生した場合に、プロファイルの名前は「ドット(dot)」表記法(例えば、「certTemplate.subject」とは、certTemplate というフィールドにある主体者(subject)フィールドを意味します。)を採用します。
- 「SEQUENCE OF types」がメッセージの一部であるときに、SEQUENCE OFのなかにあるフィールドをゼロベースの配列表記法で記述します。(例えば、 crm[0].certReq.certTemplate.subject は 、リクエストメッセージに含まれている最初の CertReqMsg のサブフィールドを表します)
- B7 節から B10 節までにあるすべての PKI メッセージの交換は開始エンティティによって PKIConfirm メッセージを送信する必要があります。このメッセージは本体がNULLであり、上下文脈からのヘッダー内容も明白のため、与えられたプロファイルの一部に含まれていません。信頼できる方法であればprotectionAlgにすべて適用できます。(例 : パスワード・ベースの MAC、もし共有秘密情報が既知な場合、あるいは署名)
B2. アルゴリズム使用法プロファイル English
次の表に PKI 管理プロトコルにおけるアルゴリズム使用法の定義を記述します。
表の列は以下の通りです。
名称: メッセージプロファイルの識別子
使用法: どこでどんなアルゴリズムが使用されるのかを記述
必須: 準拠する実装には必ずサポートしなければならない AlgorithmIdentifier
その他: 必須AlgorithmIdentifierの代案
名称
使用法
必須
その他
MSG_SIG_ALG 署名でを PKI メッセージを保護 DSA/SHA-1 RSA/MD5... MSG_MAC_ALG MAC で PKI メッセージを保護 PasswordBasedMac HMAC,
X9.9...SYM_PENC_ALG アウト・オブ・バンド方式で対称鍵を配布する所で、エンドエンティティの秘密鍵を対称暗号化 3-DES (3-key- RC5, EDE, CBC mode) CAST-128... PROT_ENC_ALG PKIMessages のなかで伝送される秘密鍵を暗号化するための非対称型アルゴリズム (暗号化ための対称鍵) D-H RSA PROT_SYM_ALG 秘密鍵ビットを暗号化するための対称型暗号アルゴリズム(このようなタイプの鍵は PROT_ENC_ALG で暗号されます。 3-DES (3-key- RC5, EDE, CBC mode) CAST-128...
必須 AlgorithmIdentifiers とその仕様:
DSA/SHA-1:
AlgId: {1 2 840 10040 4 3};
NIST, FIPS PUB 186: Digital Signature Standard, 1994;
Public Modulus size: 1024 bits.
PasswordBasedMac:
{1 2 840 113533 7 66 13}, with SHA-1 {1 3 14 3 2 26} as the owf parameter and HMAC-SHA1 {1 3 6 1 5 5 8 1 2} as the mac parameter;
(this specification), along with
NIST, FIPS PUB 180-1: Secure Hash Standard, April 1995;
H. Krawczyk, M. Bellare, R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", Internet Request for Comments 2104, February 1997.
3-DES:
{1 2 840 113549 3 7};
(RSA の BSAFE と S/MIME に適用)
D-H:
AlgId: {1 2 840 10046 2 1};
ANSI X9.42;
Public Modulus Size: 1024 bits.
DHParameter ::= SEQUENCE {prime INTEGER, -- p
base INTEGER -- g}
B3. 「自己署名」証明書 English
証明書構造が如何に「自己署名」できるのかを記述するプロファイルです。これらの構造は「ルート」CA 公開鍵の配布で使用されます。以下の 3つの状況のいずれかの場合に、発生する可能性があります。(これら構造の使用法の記述については、2.4節を参照してください)
種別
機能
newWithNew 本当の意味での「自己署名」証明書;含まれている公開鍵は必ず署名の検証に利用できなければなりません(これは完全性のみを保証し、その本人性についてはどうあろうとも) oldWithNew 新しい秘密鍵で署名された前のルート CA 公開鍵 newWithOld 前の秘密鍵で署名された新しいルート CA 公開鍵 <<このような証明書(関連拡張を含む)はすべてのフィールドにおいて「目的に合った」値を格納しなければなりません。例えば、現在の subjectAltNameは issuerAltName と 同一でなければならないことや、そして現在の keyIdentifiers には適切な値などを含まれなければならないことなど >>
B4. Proof of Possessionプロファイル English
証明書申請対象である公開検証鍵に対応した秘密署名鍵の所有を証明するための POP フィールド
フィールド
値
コメント
algorithmIdentifier MSG_SIG_ALG この証明に署名による保護のみが認められます signature present MSG_SIG_ALGを使って計算されたビット <<証明書の申請対象である公開暗号鍵に対応した秘密復号鍵の所有を証明するためには本プロファイルを使用できません; 代わりに B8 節のPKIConfirm の protectionAlg に記載されている方法が適用できます。 >>
PKIX-CMP イン・バンド方式認証リクエストプロトコルにおいて、すべてのCA/RAが Proof-of-Possession(署名鍵、復号鍵、鍵合意鍵などの)を実行するわけではありません(POPの実施方法は結局ポリシーの問題に帰着し、任意の与えられた CA の公開されたポリシー OID と認証実施規程(CPS)によってはっきりされるものになります)。しかしながら、本仕様では CA/RA エンティティが認証プロセスの一環として必ず POP(何らかの手段で)を実施しなければならないことを強制します。すべてのエンドエンティティが POP 提供の用意をしなければなりません。(すなわち、これらのコンポーネントは PKIX-CMP プロトコルに対応しなければなりません)
B5. ルート CA 鍵更新 English
ルート CA がその鍵ペアを更新します。その後ルート CA が関連のエンドエンティティに提供可能(何らかの伝送機構を通して)な CA 鍵更新声明メッセージを発行します。エンド・エンティティには PKIConfirm メッセージを必要としません。
ckuann message:
フィールド
値
コメント
sender CA name 応答 CA 名 body ckuann(CAKeyUpdAnnContent) oldWithNew present 上記の B3 を参照 newWithOld present 上記の B3 を参照 newWithNew present 上記の B3 を参照 extraCerts optionally present 証明書の「公開」に使用可能(例えば、新しい秘密鍵で署名した証明書
B6. PKI 情報リクエスト/レスポンス English
エンドエンティティは、あとで PKI 管理操作に必要となる一般的な PKI 要求メッセージを送付します。RA/CA が一般的なレスポンスとして返答します。もしRAがレスポンスを生成することになる場合に、RA が単に以前 CA から受け取ったメッセージと同等なものを先渡し、PKIMessage の extraCerts フィールドに考えられる追加的な証明書を加えます。エンドエンティティは 、PKIConfirm メッセージを必要としません。
メッセージのフロー:
ステップ エンドエンティティ PKI 1 format ir 2 -> ir -> 3 handle ir 4 format ip 5 <- ip <- 6 handle ip 7 format conf 8 -> conf -> 9 handle conf ccr:(修正中)
フィールド 値 sender Requesting CA name -- the name of the CA who produced the message recipient Responding CA name -- issuerAltName 拡張または証明書の issuer フィールドに含まれている CA 名 messageTime time of production of message -- current time at requesting CA protectionAlg MSG_SIG_ALG senderKID present -- メッセージ保護の検証を要求する場合には必須 recipKID present if required transactionID senderNonce freeText body ccr (CertReqMessages)
only one CertReqMsg allowed-- if multiple cross certificates are required they MUST be packaged in separate PKIMessages certTemplate -- details follow version v1 or v3 -- <> signingAlg present -- the requesting CA must know in advance with which algorithm it wishes the certificate to be signed subject present -- may be NULL-DN only if subjectAltNames extension value proposed validity present -- MUST be completely specified (i.e., both fields present) issuer present -- may be NULL-DN only if issuerAltNames extension value proposed publicKey present -- the key to be certified (which must be for a signing algorithm) extensions optionally present -- a requesting CA must propose values for all extensions which it requires to be in the cross-certificate POPOSigningKey -- "Proof of possession profile" を参照 (B4 節) protection -- bits calculated using MSG_SIG_ALG extraCerts -- MAY contain any additional certificates that requester wishes
-- to includeccp:(修正中)
フィールド 値 sender Responding CA name -- the name of the CA who produced the message recipient Requesting CA name -- issuerAltName 拡張または証明書の issuer フィールドに含まれている CA 名 messageTime time of production of message -- current time at requesting CA protectionAlg MSG_MAC_ALG or MSG_SIG_ALG -- 任意の認証された保護アルゴリズム senderKID present if required -- メッセージ保護の検証を要求する場合に必須 recipKID transactionID senderNonce recipNonce freeText body response status PKIStatusInfo.status failInfo certifiedKeyPair certificate protection present -- MSG_MAC_ALG or MSG_SIG_ALG を使って計算されたビット extraCerts optionally present -- エンドエンティティへのいくつかの証明書送付に使用することができます。RA がここにその証明書を追加することができます。
body genp (GenRepContent)
CAProtEncCert present (object identifier one of PROT_ENC_ALG), with relevant value
-- CAのためにエンドエンティティによる情報の暗号化が必要な場合に使用されます(例えば、回復目的とした秘密鍵)SignKeyPairTypes present, with relevant value
-- 主体者公開鍵のためにCAが証明を行う署名アルゴリズム識別子のセットEncKeyPairTypes present, with relevant value
--主体者公開鍵のために CA が証明を行う暗号化/鍵合意鍵アルゴリズムのセットPreferredSymmAlg present (object identifier one of PROT_SYM_ALG) , with relevant value
-- 後のPKIメッセージ(暗号化のため)にこのCAが使用する予定の対称型アルゴリズムCAKeyUpdateInfo optionally present, with relevant value
-- CA がこのフィールドを使って、関連ルートCAの鍵ペアについての情報を提供することができます(これは応答CAが対象のルートCAであることを暗示するものではない)
CurrentCRL optionally present, with relevant value
-- CAが完全CRLを提供できます。(すなわち、可能な限り揃えたもの)
B7. 相互認証リクエスト/レスポンス(一方向) English
単独の相互認証証明書(すなわち、1回につき 2つではない)生成。要求 CA は、PKIPublicationInfo 制御を使用して、応答 CA が生成した相互認証証明書を公開する役割を果たすことができます。
前提条件:
1. 応答 CA がリクエストを処理する前に、その原本性について検証することができます。(アウト・オブ・バンド方式が必要かもしれません)
2. 要求 CA がレスポンスを処理する前に、その原本の本人性を証明することができます。(アウト・オブ・バンド方式が必要かもしれない)
メッセージのフロー:
ステップ Requesting CA Responding CA 1 format ccr 2 -> ccr -> 3 handle ccr 4 produce ccp 5 <- ccp <- 6 handle ccp 7 format conf 8 -> conf -> 9 handle conf ccr:
Field Value
sender Requesting CA name
-- メッセージを作成した CA の名称recipient Responding CA name
-- 証明書の発行を要求されたCAの名称messageTime time of production of message
-- 要求CAの現在時刻protectionAlg MSG_SIG_ALG
-- このリクエストには署名による保護しか認められないsenderKID present if required
-- メッセージ保護の検証を要求された場合に必須transactionID present
-- 実装固有の値、要求CAにとって意味のあるもの
-- [もし応答CAにて既に使用中の場合には、応答 CA が拒否メッセージを発行しなければなりません]
senderNonce present
-- 128(擬似の―)ランダムビットfreeText any valid value
body ccr (CertReqMessages)
only one CertReqMsg allowed
--1つ CertReqMsg しか許可されません
-- もし複数の相互認証証明書が要求された場合に、それぞれは別々のPKIMessages に格納しなければなりません。
certTemplate present
-- 詳細は以降のものを参照version v1 or v3
-- <<v3 が強力に推奨されます>>signingAlg present
-- 要求 CA が予め証明書に署名する希望のアルゴリズムを知らなければなりません。subject present
-- subjectAltNames 拡張値の提示がある場合に限って、NULL-DN である可能性があります。validity present
-- 必ず完全に明記しなければなりません(すなわち、両方のフィールドが存在します)issuer present
-- issuerAltNames拡張値の提示がある場合に限って、NULL-DN である可能性があります。publicKey present
-- 証明される鍵(必ず署名アルゴリズムのため)
extensions optionally present
-- 要求CAは相互認証証明書に必要とするフィールドについてのすべての値を提示しなければなりません。POPOSigningKey present
-- 「Proof of possessionプロファイル」(B4 節)を参照してくださいprotection present
-- MSG_SIG_ALGを使って計算されたビットextraCerts optionally present
-- リクエスタが包括したい任意の追加証明書を格納することができます。ccp:
Field Value
sender Responding CA name
-- メッセージを作成したCAの名称recipient Requesting CA name
-- 証明書の生成を要求したCA の名称messageTime time of production of message
-- 応答CAの現在時刻protectionAlg MSG_SIG_ALG
-- このメッセージを保護するための署名に限るsenderKID present if required
-- メッセージ保護の検証を要求された場合に必須recipKID present if required
transactionID present
-- 対応するccrメッセージによる値
senderNonce present
-- 128(擬似的―)ランダムビットrecipNonce present
--対応するccrメッセージからのsenderNoncefreeText any valid value
body ccp (CertRepMessage)
only one CertResponse allowed
-- もし複数の相互認証証明書が必要となる場合に、それぞれが必ず別々のPKIMessages に格納しなければなりません。response present
status present
PKIStatusInfo.status present
-- PKIStatusInfoステータスが granted と grantedWithMods のどちらかの場合、 certifiedKeyPairが必ず存在し、そしてfailInfoが存在してはいけません。failInfo present depending on PKIStatusInfo.status
-- PKIStatusInfoステータスが「rejection」の場合に、certifiedKeyPairが必ず不在し、failInfoが必ず存在し、そして適切なビット設定を含めます。certifiedKeyPair present depending on PKIStatusInfo.status
certificate present depending on certifiedKeyPair
-- 公開する前に、実際の証明書の内容は必ず要求 CA から確認を受けなければいけません。protection present
-- MSG_SIG_ALGを使って計算されたビットextraCerts optionally present
-- レスポンダが希望する任意の追加証明書を格納することができます。
B8. 初期登録/認証(基本認証機構) English
(未初期化の)エンドエンティティが CA に対して(最初の)証明書を申請します。CA が証明書を含めたメッセージで応答し、エンドエンティティがまた確認情報を返します。すべての情報が認証されます。
この機構はエンドエンティティがローカルで生成した公開鍵(典型的な場合は、署名鍵)に対して証明書の申請も認めます。また、エンドエンティティは、集中的な生成を要求したり、ほかの鍵ペア(典型的な場合は暗号鍵ペア)の認証を求めたりすることができます。
認証要求の対象はローカルで生成された公開鍵1つ(それ以上の場合は別の PKIMessages を使用)に限ります。
エンドエンティティはローカル生成の公開鍵と連携している秘密鍵の「proof-of-possession」を保護しなければなりません。
前提条件:
1. エンドエンティティがアウト・オブ・バンド方式でCAの署名を認証できること
out-of-band means
2. エンドエンティティとCAとの間に1つのMACing鍵を共有すること
メッセージフロー:
ステップ エンドエンティティ PKI 1 format ir 2 -> ir -> 3 handle ir 4 format ip 5 <- ip <- 6 handle ip 7 format conf 8 -> conf -> 9 handle conf このプロファイルにおいて、エンドエンティティが 1つの PKIMessage にすべての CertReqMsg(すなわち、1つまたは2つ)を含み、そして PKI(CA)が生成する1つの PKIMessageには完全なレスポンス(すなわち、オプションとしての2番目の鍵ペアを含む要求の対象であり、かつ集中的な鍵生成が対応されている場合に)を含むように強制的に規定します。また簡素化を図るために、このメッセージが最後のものとなるよう強制的に規定します。(すなわち、「waiting」というステータス値を使用しない)
ir:
Field Value
recipient CA name
-- 証明書の生成を求められた CA の名称protectionAlg MSG_MAC_ALG
-- このリクエストに初期検証鍵に基づいた MAC 保護しか適用できないsenderKID referenceNum
-- 以前に CA がエンドエンティティに対し発行した参照番号(MACing 鍵とともに)transactionID present
-- 実装固有値、エンドエンティティにとって意味がある
-- [CA にて既に使用中の場合に、CAから拒否メッセージを発行しなければなりません]senderNonce present
-- 128(擬似的に―)ランダムビットfreeText any valid value
body ir (CertReqMessages)
only one or two CertReqMsg
are allowed
-- 複数の証明書が要求された場合に、リクエストはそれぞれ別々の PKIMessages に格納しなければなりません。CertReqMsg one or two present
-- 詳細は下記を参照してください、注意事項:crm[0] が1番目(必ず存在する)を表し、 crm[1](オプションである。一括生成の鍵を要求する時に使用される)を表します。crm[0].certReq. fixed value of zero
certReqId
-- メッセージにおける雛形の索引crm[0].certReq present
certTemplate
--制約が存在する限り、必ず主体者公開鍵の値を含むこと。
crm[0].pop... optionally present if public key
POPOSigningKey from crm[0].certReq.certTemplate is
a signing key
-- このやり取りにおいてproof of possessionを必要とすることがあります(詳細は B4 を参照)crm[0].certReq. optionally present
controls.archiveOptions
-- エンドエンティティは、ローカルで生成した秘密鍵のアーカイブ化を要求することができますcrm[0].certReq. optionally present
controls.publicationInfo
-- エンドエンティティは結果の証明書の公開を要求することができます。
crm[1].certReq fixed value of one
certReqId
-- このメッセージにおける雛形の索引crm[1].certReq present
certTemplate
-- 実際の公開鍵ビットを含んではいけません、制約が存在する限り(例えば、名前は crm[0] と同一である必要性はありません)crm[0].certReq. present [object identifier MUST be PROT_ENC_ALG]
controls.protocolEncKey
--もしこの CA が鍵の一括生成をサポートするならば、この短期の非対称型暗号鍵(エンドエンティティ生成)を使って、エンドエンティティの代わりにCA生成の秘密鍵を暗号化します。
crm[1].certReq. optionally present
controls.archiveOptions
crm[1].certReq. optionally present
controls.publicationInfo
protection present
-- MSG_MAC_ALGで計算されたビットip:
Field Value
sender CA name
-- このメッセージを生成したCAの名称messageTime present
-- CAがメッセージを生成する時刻protectionAlg MS_MAC_ALG
-- このレスポンスに対してMAC保護のみが認められるrecipKID referenceNum
-- 以前にCAがエンドエンティティに対して発行した参照番号(MACing鍵とともに)transactionID present
-- 対応するirメッセージによる値
senderNonce present
-- 128(擬似的―)ランダムビットrecipNonce present
-- 対応するirメッセージのsenderNonceによる値freeText any valid value
body ir (CertRepMessage)
contains exactly one response
for each request
-- PKI(CA)が必要に応じて1つまたは2つのリクエストに応答します。crc[0] は 1番目(必ず存在する)を示し;crc[1]は 2番目(irメッセージが2つのリクエストを包含し、かつ CA 鍵一括生成をサポートする場合に限って存在する)
certReqId
-- 対応するirメッセージにある1番目のリクエストに対する応答を含めなければなりません。crc[0].status. present, positive values allowed:
status "granted", "grantedWithMods"
negative values allowed:
"rejection"
crc[0].status. present if and only if
failInfo crc[0].status.status is "rejection"
crc[0]. present if and only if
certifiedKeyPair crc[0].status.status is
"granted" or "grantedWithMods"
certificate present unless end entity's public key is an encryption key and POP is done in this in-band exchange
encryptedCert present if and only if end entity's public key is an encryption key and POP done in this in-band exchange
publicationInfo optionally present
-- indicates where certificate has been published (present at discretion of CA)crc[1]. fixed value of one
certReqId
--対応するirメッセージにある2番目のリクエストに対する応答を含めなければなりません。crc[1].status. present, positive values allowed:
status "granted", "grantedWithMods"
negative values allowed:
"rejection"
crc[1].status. present if and only if
failInfo crc[0].status.status is "rejection"
crc[1]. present if and only if
certifiedKeyPair crc[0].status.status is "granted"
or "grantedWithMods"
certificate present
privateKey present
publicationInfo optionally present
-- 証明書の公開場所を示します(CAの自由裁量で存在する)protection present
-- MSG_MAC_ALGを使って計算されたビットextraCerts optionally present
-- CAがエンドエンティティに追加的な証明書を提供できます。conf:
Field Value
recipient CA name
-- 証明書の発行を要求されたCAの名称transactionID present
-- 対応のirとipメッセージによる値senderNonce present
-- 対応するipメッセージのrecipNonceによる値recipNonce present
--対応するipメッセージのsenderNonceによる値protectionAlg MSG_MAC_ALG
-- このメッセージには MAC 保護しか許可されません。認証のために署名鍵ペアしかir のなかに送られていない場合、もしくはこのイン・バンド手順のなかで POP が実行されていない場合に、MAC は初期認証鍵に基づいています。ほかの場合は、MACは返された encryptedCertの暗号化に使用された対称型鍵から派生した鍵に基づいています。senderKID referenceNum
-- CA が以前にエンドエンティティに発行した参照番号(MACing鍵とともに)body conf (PKIConfirmContent)
-- ASN.1 NULLです。protection present
-- MSG_MAC_ALG を使って計算されたビット
B9. 証明書リクエスト English
(初期化済の)エンドエンティティが CA に(何らかの理由で)証明書の発行を要求します。CA が証明書を含んだメッセージで応答し、エンドエンティティが確認情報を返答します。すべてのメッセージが認証されます。
この手順のプロファイルは以下の例外を除いて、B8 節で提示されたものと同じです。
- protectionAlg は要求、応答、確認メッセージにおいてMSG_MAC_ALG または MSG_SIG_ALG となります。(これは鍵暗号および鍵合意証明書リクエストに対するPOP考慮に依存しています。)
- senderKID とrecipKID はメッセージ検証を求められた場合にのみ存在します。
- 本体は cr または cp です
- protocolEncKeyが存在しない;
- 保護ビットはprotectionAlgに準じて計算されています。
B10. 鍵更新リクエスト English
(初期化済の)エンドエンティティが CA に対して証明書の発行を要求します。CA が証明書を含んだメッセージで応答し、エンドエンティティは確認メッセージを返答します。すべてのメッセージが検証されます。
この手順のためのプロファイルは以下の例外を除いて、B8 節に提示されているものと同じです。
- protectionAlg は要求、応答、確認メッセージにおいてMSG_MAC_ALG または MSG_SIG_ALGとなります。(これは鍵暗号および鍵合意証明書リクエストに対する POP 考慮に依存しています。)
- senderKID とrecipKID はメッセージ検証を求められた場合にのみ存在します。
- 本体はkurまたはkupです
- protocolEncKey が存在しない;
- 保護ビットはprotectionAlg に準じて計算されています。