SP800-56A
| NIST SP 800-56A Revision 3 single-step key derivation function for key agreement schemes. Uses concatenation format: counter |
Β |
Z |
Β |
FixedInfo with hash or HMAC-based derivation. |
Properties
| Property |
Value |
| Category |
Key Derivation Functions |
| Sub-category |
Key Agreement KDF |
| Security status |
π‘οΈ Secure |
| Complexity |
Intermediate |
| Inventor |
National Institute of Standards and Technology (NIST) |
| Year |
2018 |
| Origin |
πΊπΈ United States |
| Source |
algorithms/kdf/sp800-56a.js |
Parameters
| Parameter |
Supported values |
| Output sizes |
1 byte (8 bits) to 8191 bytes (65528 bits) |
Capabilities
| Flag |
Value |
SaltRequired |
No |
Security
Status: π‘οΈ Secure
Known vulnerabilities
| Issue |
Description |
Mitigation |
| Weak Hash Function |
Avoid SHA-1 for cryptographic security; use SHA-256 or stronger hash functions |
β |
| Insufficient Shared Secret Entropy |
Ensure shared secret Z has sufficient entropy from secure key agreement |
β |
Documentation
References
Test vectors
15 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 β SP800-56A SHA-1 Vector #1
| Field |
Value |
salt |
(empty) |
label |
6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 |
hashFunction |
SHA-1 |
outputSize |
4 |
input |
51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a |
expected |
049b3766 |
Vector 2 β SP800-56A SHA-1 Vector #2
| Field |
Value |
salt |
(empty) |
label |
f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef |
hashFunction |
SHA-1 |
outputSize |
5 |
input |
b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380 |
expected |
b7d5840565 |
Vector 3 β SP800-56A SHA-1 Vector #3 - 33 byte output
| Field |
Value |
salt |
(empty) |
label |
ea0e5d80a76bb5063148cc997b76da2d895bc3e4dff37c48579cc4e580f1fda3 |
hashFunction |
SHA-1 |
outputSize |
33 |
input |
7ce80e8b0480cde01fec587fe7045a8e |
expected |
176e355aaa4a2209a7cad190d2c76b78 b12cdf83add1387709c30750110e5730 21 |
Vector 4 β SP800-56A SHA-224 Vector #1
| Field |
Value |
salt |
(empty) |
label |
6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 |
hashFunction |
SHA-224 |
outputSize |
4 |
input |
51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a |
expected |
e14ba657 |
Vector 5 β SP800-56A SHA-224 Vector #2
| Field |
Value |
salt |
(empty) |
label |
f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef |
hashFunction |
SHA-224 |
outputSize |
5 |
input |
b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380 |
expected |
2c92bd1085 |
Vector 6 β SP800-56A SHA-256 Vector #1
| Field |
Value |
salt |
(empty) |
label |
6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 |
hashFunction |
SHA-256 |
outputSize |
4 |
input |
51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a |
expected |
f62ebab9 |
Vector 7 β SP800-56A SHA-256 Vector #2
| Field |
Value |
salt |
(empty) |
label |
f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef |
hashFunction |
SHA-256 |
outputSize |
5 |
input |
b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380 |
expected |
39cb7a8753 |
Vector 8 β SP800-56A SHA-256 Vector #3
| Field |
Value |
salt |
(empty) |
label |
9d4169cc1427f2a407191b84ab7abaace66a95ca26ab0915803106315080f331 |
hashFunction |
SHA-256 |
outputSize |
6 |
input |
ba68a99d6eb2affd8bd039ab13c3a3aa 9f02c6c11fde8570429d2fce61d97d81 c51cdbb8ff143d04 |
expected |
f7632ae67c0b |
Vector 9 β SP800-56A SHA-256 Vector #4
| Field |
Value |
salt |
(empty) |
label |
430312b971580ac2abbe70998f136d3cace833e0b165b74c351afe5fa20d1eb7 |
hashFunction |
SHA-256 |
outputSize |
7 |
input |
dc5e08ed643fc5aca38cdf756ca0d7d6 78f3b241fa61976eeb16a904fc83e032 6e1cbd639a9591899adf8de1fc1b1b5d |
expected |
706f616063adba |
Vector 10 β SP800-56A SHA-256 Vector #5
| Field |
Value |
salt |
(empty) |
label |
edefb6c58327538f3b4f7e4b9af30c7025122de56b7e682e56d7efe433c2ca85 |
hashFunction |
SHA-256 |
outputSize |
8 |
input |
2897b5b2f94be3550bac75877817a0f4 7836a57a5ff777345daa6e5f0599d4ab 8d4c59c62067aedf00c02dda77e4af87 1cda63fbde164edc |
expected |
35f489fc6a91be16 |
Vector 11 β SP800-56A SHA-384 Vector #1
| Field |
Value |
salt |
(empty) |
label |
6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 |
hashFunction |
SHA-384 |
outputSize |
4 |
input |
51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a |
expected |
894340ad |
Vector 12 β SP800-56A SHA-384 Vector #2
| Field |
Value |
salt |
(empty) |
label |
f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef |
hashFunction |
SHA-384 |
outputSize |
5 |
input |
b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380 |
expected |
c4159fbaea |
Vector 13 β SP800-56A SHA-512 Vector #1
| Field |
Value |
salt |
(empty) |
label |
6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 |
hashFunction |
SHA-512 |
outputSize |
4 |
input |
51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a |
expected |
6f015ea0 |
Vector 14 β SP800-56A SHA-512 Vector #2
| Field |
Value |
salt |
(empty) |
label |
f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef |
hashFunction |
SHA-512 |
outputSize |
5 |
input |
b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380 |
expected |
189c0f84b0 |
Vector 15 β SP800-56A SHA-512 Vector #3
| Field |
Value |
salt |
(empty) |
label |
9d4169cc1427f2a407191b84ab7abaace66a95ca26ab0915803106315080f331 |
hashFunction |
SHA-512 |
outputSize |
6 |
input |
ba68a99d6eb2affd8bd039ab13c3a3aa 9f02c6c11fde8570429d2fce61d97d81 c51cdbb8ff143d04 |
expected |
b7269e8fa844 |
β All algorithms