Slide 35
Slide 35 text
Secret Tree
def self.populate_tree_impl(suite, tree, index, secret)
tree.array[index] = {
'handshake_ratchet_secret' => Melos::Crypto.expand_with_label(suite, secret, "handshake", "", suite.kdf.n_h),
'application_ratchet_secret' => Melos::Crypto.expand_with_label(suite, secret, "application", "", suite.kdf.n_h),
'next_handshake_ratchet_secret_generation' => 0,
'next_application_ratchet_secret_generation' => 0
}
unless Melos::Tree.leaf?(index)
left_secret = Melos::Crypto.expand_with_label(suite, secret, "tree", "left", suite.kdf.n_h)
right_secret = Melos::Crypto.expand_with_label(suite, secret, "tree", "right", suite.kdf.n_h)
populate_tree_impl(suite, tree, Melos::Tree.left(index), left_secret)
populate_tree_impl(suite, tree, Melos::Tree.right(index), right_secret)
end
end
Each user is assigned a leaf in the tree
From the base encryption secret, we recursively populate (snip)
ユーザーは木のleaf node
を割り当てられ、Secret Tree
を上からハッシュのチェーンで埋めていくことで秘密
を導出します 35