digraph G {
{
m [style=filled fillcolor=yellowgreen fontcolor=white label="Master Password" shape=underline]
salt [style=filled fillcolor=yellowgreen fontcolor=white label="Salt(Email)" shape=underline]
kdf [label="PBKDF2, 600000its" shape=component]
masterKey [style=filled fillcolor=green fontcolor=white label="Master Key(256 bits)" shape=underline]
hkdf [label="HKDF" shape=component]
stretchedMasterKey [style=filled fillcolor=green fontcolor=white label="Stretched Master Key(512 bits)" shape=underline]
csprng [label="CSPRNG" shape=component]
symmetricKey [style=filled fillcolor=green fontcolor=white label="{{Generated Symmetric Key}| {Encryption Key(256 bits)|MAC Key(256 bits)}}" shape=record]
iv [style=filled fillcolor=green fontcolor=white label="IV(128 bits)" shape=underline]
keyEncription [label="Key Encryption(AES 256)" shape=component]
protectedSymmetricKey [style=filled fillcolor=green fontcolor=white label="Protected Symmetric Key" shape=underline]
}
m -> kdf
salt -> kdf
kdf -> masterKey
masterKey -> hkdf
hkdf -> stretchedMasterKey
csprng -> symmetricKey
csprng -> iv
iv -> keyEncription [label="iv"]
stretchedMasterKey -> keyEncription [label="key"]
symmetricKey -> keyEncription [label="payload"]
keyEncription -> protectedSymmetricKey
}