Top Page�_ Security Top�_ Algorithm�_ Key Management�_

�p�X���[�h�ɂ�錮�Ǘ���@

CMS�ŃT�|�[�g�����p�X���[�h�ɂ�錮�Ǘ���@�ɂ‚��Ď����B

�����o�A���S���Y���́A�p�X���[�h�����Í����p�̌�(KEK)�ɕϊ�����ׂɎg����B
���Í��A���S���Y���ɂ��A���o�������Í����p�̌�(KEK)�ŃR���e���c�Í����p�̌�(CEK)���Í��������B

�����o�A���S���Y���iKey Derivation Algorithm�j

�����̃A���S���Y���́A�p�X���[�h�����Í�����(KEK)�ɕϊ�����ׂɎg����B
�K���I�Ȏ�@�́APBKDF2 [RFC2898]���܂܂Ȃ���΂Ȃ�Ȃ��B

KeyDerivationAlgorithmIdentifier ::= AlgorithmIdentifier

CMS�ŃT�|�[�g����錮���o�֐�"PBKDF2"�ɂ‚��Ď����B

PBKDF2

PBKDF2
1.2.840.113549.1.5.12

PBKDF2�̏ڍׂ́A"RFC 2898 [PKCS#5]"���Q�ƁB
�֘A���鑽���̃p�����[�^�́A���[�U�[���K�p�����p�X���[�h���献�Í��p�̌��𓾂�ׂɎg����B

parameters ::= SEQUENCE {
  salt CHOICE {
    specified OCTET STRING,
    otherSource AlgorithmIdentifier },
  iterationCount INTEGER (1..MAX),
  keyLength INTEGER (1..MAX) OPTIONAL,
  prf AlgorithmIdentifier DEFAULT { 
    algorithm hMAC-SHA1,
    parameters NULL } }
PBKDF2�̃p�����[�^�ɂ‚���
�t�B�[���h�� ���e
salt �Í��w�I�[�������֐��ihMAC���j�ɓ��͂���\���g
iterationCount �J��Ԃ���
keyLength ���Í�����(KEK)�̃T�C�Y[Byte]
prf �g�p����Í��w�I�[�������֐��ihMAC���j��oid�B�ȗ����́AhMAC-SHA1�ƂȂ�B

�������A���S���Y���iKey Encryption Algorithms�j

�����̃A���S���Y���́A����ꂽ���Í�����(KEK)���g���āA�R���e���c�Í�����(CEK)���Í�������ׂɎg����B
�K���I�Ȏ�@�́A"id-alg-PWRI-KEK"�����b�v�A���S���Y�����g�p���Ȃ���΂Ȃ�Ȃ��B

id-alg-PWRI-KEK

id-alg-PWRI-KEK
1.2.840.113549.1.9.16.3.9

���̃A���S���Y���̃p�����[�^�t�B�[���h�́A�����b�v�A���S���Y���Ŏg�������Í����A���S���Y�����܂܂��B
���Í�����(KEK)�̈Í����A���S���Y���Ɠ���̃A���S���Y���ł���K�v�͂Ȃ��B
�Ƃ͂����A�قȂ�A���S���Y�����g�p����ꍇ�ɓ����ȏ�̃Z�L�����e�B�ƂȂ鎖���m���ɂ���悤�A���ӂ���ׂ��ł���B
�i�Ⴆ�΁ARC2/40���Ń��b�s���O����Triple-DES���́A�Í����x�Ō����ȃC���s�[�_���X�s�����𓱂��B�j

�K���I�Ȏ�@�́ATriple-DES CBC�y�сA���̑��̃A���S���Y���A �Ⴆ��AES, CAST-128, RC5, IDEA, Skipjack, Blowfish�y�� �v�����ꂽ�Í����[�h�����܂ށB
�u���b�N�Í���OFB���[�h�y��ECB���[�h��ARC4���̂����Ȃ�KSG (keystream generator)�Í����g�p���Ȃ��ׂ��ł���B

parameters ::= AlgorithmIdentifier

Key Wrap �̃v���Z�X

�܂��A�R���e���c�Í�����(CEK)���A�ȉ��̒ʂ萮�`����B

  1. �R���e���c�Í�����(CEK)�̃o�C�g���́A�P�o�C�g�̃J�E���g�l�B
  2. �R���e���c�Í�����(CEK)�̍ŏ��̂R�o�C�g�̃r�b�g�P�ʂ̕␔���܂ރ`�F�b�N�l�B
  3. �R���e���c������(CEK)
  4. �����_���p�f�B���O�ŁA���`�����R���e���c�p�Í����������Í����A���S���Y���̃u���b�N���̔{���ɂȂ�悤�ɂ���B
    �p�f�B���O�f�[�^�͈Í��_�G���x�������Ȃ����A�\���s�”\���͏�����B
    ��ɒm��ꂽ�f�[�^���ł���̂ŁAPKCS#5�p�f�B���O�͎g��Ȃ��悤�ɒ��ӂ���B

�‚܂�A���̕��т̍\���ɂȂ�B
SS �c �R���e���c�Í�����(CEK) �o�C�g�̃J�E���g�l
CC �c �`�F�b�N�l
XX �c �R���e���c������(CEK)
PP �c �p�f�B���O (�v�����ꂽ�ꍇ)

SSCCXX XX XX ... XXPP PP ... PP

���ɁA���̐��`�����R���e���c�p�Í���(CEK)���A�Q��Í��������{����B
���̂Ƃ��Aparameters�Ŏw�肳�ꂽ�Í��A���S���Y����p���A �Q��ڂ̈Í����ɂ����Ă͏������x�N�^IV�̓��Z�b�g�����A���̂܂܎g���B
���A�ݒ肷��Í����́A�����o�֐��Ńp�X���[�h���瓱���o�����Í�����p����B

Key Unwrap �̃v���Z�X

�Í������ꂽ�f�[�^�u���b�N����n�Ƃ���B

  1. �悸�A�Í����W���[���̏������x�N�^IV���A(n-1)�Ԗڂ̃u���b�N�̒l�ɐݒ肵�A(n)�Ԗ�(�ŏI)�̃u���b�N�𕜍�����B
  2. ���ɁA��������(n)�Ԗ�(�ŏI)�̃u���b�N���������x�N�^IV�ɂ��A1�`(n-1)�Ԗڂ̃u���b�N�𕜍�����B
  3. �Í����W���[���̃p�����[�^�ǂ���̏������x�N�^IV�ɐݒ肵�Ȃ����A1�`(n)�Ԗڂ܂ł̑S�u���b�N�𕜍�����B
  4. 1�o�C�g�ڂ������B2�`4�o�C�g�ڂ��`�F�b�N�n�A5�o�C�g�ځ`���R���e���c�p�Í���CEK�̕����ƂȂ�B

PasswordRecipientInfo�ɂ�����R���e���c�p�Í���CEK�̈Í��E�i�[��

���̗�ł́A�ȉ��̏����ɂ������������B

�Í���CEK 8C 62 7C 89 73 23 A2 F8�@�c �i�ʏ�͗������琶���j
�p�X���[�h "password"
�����o�֐� PBKDF2 with HMAC-SHA-1
�@salt 12 34 56 78 78 56 34 12�@�c �i�ʏ�͗������琶���j
�@�J��Ԃ��� 5�@�@�@�@�@�@�@�@�@�@�@�@�c �i������1000��j
���Í����֐� PWRI-KEK
�@�Í��֐� DES�Í�, �Í����p���[�hCBC
�@�������x�N�^IVEF E5 98 EF 21 B3 3D 6D�@�c �i�ʏ�͗������琶���j

�܂��A�����o���s���B
�����o�����͌��Í����A���S���Y���ŗp����̂ŁA�����͂��̃A���S���Y���̌����Ƃ���B
����́APWRI-KEK �{ DES-CBC��p����̂ŁA����dkLen��8[Byte]�ƂȂ�B
KEK �� PBKDF2�ipassword="password", salt=12 34 56 78 78 56 34 12, count=5, dkLen=8�j
�@�@ �� d1 da a7 86 15 f2 87 e6 �c ���Í�����KEK�ɂȂ�B

�R���e���c�p�Í���CEK�̐��`�B
����́A���Í����ɗp����Í��֐���DES-CBC��p����B
�u���b�N����8[Byte]�ł��邽�߁A���`��f�[�^��8�̐����{�̃T�C�Y�ɂȂ�Ȃ���΂Ȃ�Ȃ��B
�]���āA�u�����v�A�u�`�F�b�N�v�A�u�b�d�j�v��z�u���A����Ȃ����̓����_���f�[�^�ɂ���ăp�f�B���O����B

�����@�@�@�@�F08 �c ���b�v����R���e���c�p�Í���CEK�̌�����8Byte
�`�F�b�N�@�@�F73 9D 83 �c �iCEK�̐擪3Byte�̕␔�j
�b�d�j�@�@�@�F8C 62 7C 89 73 23 A2 F8 �c CEK�{��
�p�f�B���O�@�FC4 36 F5 41 �c �����_���Ƀp�f�B���O����B

���`��f�[�^�F08 73 9D 83 8C 62 7C 89 73 23 A2 F8 C4 36 F5 41

�ł������`��f�[�^���Q��Í�������B �Í����W���[���i����́ADES-CBC�j�̐ݒ�B
�������x�N�^IV �� EF E5 98 EF 21 B3 3D 6D
�����@�@�@Key �� d1 da a7 86 15 f2 87 e6

1��ځF06 A0 43 86 1E 82 88 E4 8B 59 9E B9 76 10 00 D4
2��ځFB8 1B 25 65 EE 37 3C A6 DE DC A2 6A 17 8B 0C 10

"PasswordRecipientInfo"��ASN.1�G���R�[�h����

    0 A3   68: [3] {
    2 02    1:   INTEGER 0
    5 A0   26:   [0] {
    7 06    9:     OBJECT IDENTIFIER id-PBKDF2 (1 2 840 113549 1 5 12)
   18 30   13:     SEQUENCE {
   20 04    8:       OCTET STRING
             :         12 34 56 78 78 56 34 12�@�@�c salt
   30 02    1:       INTEGER 5�@�@�c �J��Ԃ���
             :       }
             :     }
   34 30   32:   SEQUENCE {
   36 06   11:     OBJECT IDENTIFIER id-alg-PWRI-KEK
             :         (1 2 840 113549 1 9 16 3 9)
   33 30   17:     SEQUENCE {
   35 06    5:       OBJECT IDENTIFIER des-CBC (1 3 14 3 2 7)
   42 04    8:       OCTET STRING
             :         EF E5 98 EF 21 B3 3D 6D�@�@�c �������x�N�^IV
             :       }
             :     }
   68 04   16:   OCTET STRING
             :     B8 1B 25 65 EE 37 3C A6 DE DC A2 6A 17 8B 0C 10�@�@�c �Í������ꂽ�R���e���c�p��CEK
             :   }