From 6f53d320d4bcfc1f2fd068bc5cb23cf7ab803c50 Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Wed, 28 Jun 2023 14:49:42 +0200 Subject: feat: Active certificates referencing historical one --- notebooks/fips/references.ipynb | 1379 ++++++++++++++++++++++++++------------- 1 file changed, 923 insertions(+), 456 deletions(-) diff --git a/notebooks/fips/references.ipynb b/notebooks/fips/references.ipynb index a2c35fce..9514448b 100644 --- a/notebooks/fips/references.ipynb +++ b/notebooks/fips/references.ipynb @@ -53,14 +53,15 @@ }, { "cell_type": "code", - "execution_count": 129, - "id": "bbf7126f", + "execution_count": 1, + "id": "91a0cb1b", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", + "import logging\n", "import matplotlib.pyplot as plt\n", "\n", "from sec_certs.dataset.fips import FIPSDataset\n", @@ -75,15 +76,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "629aec45", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Downloading FIPS Dataset: 100%|█████████████████████████████████████| 56.7M/56.7M [00:06<00:00, 9.84MB/s]\n" + "Downloading FIPS Dataset: 100%|█████████████████████████████████████| 57.0M/57.0M [00:30<00:00, 1.94MB/s]\n" ] } ], @@ -93,7 +96,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "96ad0831", "metadata": {}, "outputs": [], @@ -103,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "id": "160b35a0", "metadata": {}, "outputs": [ @@ -177,17 +180,17 @@ " \n", "
\n", "158 rows × 23 columns
\n", + "159 rows × 23 columns
\n", "" ], "text/plain": [ " cert_id name \\\n", "dgst \n", - "84bdcd156603935b 4150 Intel® Converged Security and Manageability En... \n", - "93495fae156b6769 3833 FortiGate-1101E/2000E/2201E/2500E/3301E \n", - "fc70db0a12d574a3 4142 Oracle Solaris Userland Cryptographic Framework \n", + "71cadd0c63e57249 4472 Amazon Linux 2 GnuTLS Cryptographic Module \n", "9931f287c490c562 3618 Amazon Linux 2 Libgcrypt Cryptographic Module \n", - "bb551a7a1524e2ef 3451 BitLocker® Windows OS Loader (winload) in Micr... \n", + "03f65a290e11d786 3908 Juniper Networks NFX250 Network Services Platform \n", + "7119d5d9637ddeeb 3717 Juniper Networks NFX150 Network Services Platform \n", + "f36e412aea00d7c6 4519 Cisco Catalyst 9400 Series Switches \n", "... ... ... \n", - "db6529e972a44a4d 2144 FortiGate-3950B/3951B \n", - "f1d7fa1b12bf72b9 3853 Cisco Catalyst 9300 Series Switches \n", - "d0c9e369bee256f4 2564 Red Hat Enterprise Linux 6.6 NSS Module \n", - "8a159f78a49736dc 3153 Network Security Platform Sensor NS7100, NS720... \n", - "3b769fd26d07b8da 3831 GigaVUE-HC2 Visibility Appliance \n", + "9cbfc3c153a29e5c 2593 Network Security Platform Sensor NS-9300 S \n", + "1625f9db144171f7 1750 IDProtect Key with LASER PKI \n", + "15bb14fd69723b98 3580 Network Security Platform Sensor NS9100 and NS... \n", + "586540138f7cd7fd 3026 Aruba 7200 Series Controllers with ArubaOS FIP... \n", + "6678394ac11e55af 3643 Amazon Linux 2 GnuTLS Cryptographic Module \n", "\n", - " status standard type level \\\n", - "dgst \n", - "84bdcd156603935b active FIPS 140-2 Firmware-Hybrid 1.0 \n", - "93495fae156b6769 active FIPS 140-2 Hardware 2.0 \n", - "fc70db0a12d574a3 active FIPS 140-2 Software 1.0 \n", - "9931f287c490c562 active FIPS 140-2 Software 1.0 \n", - "bb551a7a1524e2ef active FIPS 140-2 Software 1.0 \n", - "... ... ... ... ... \n", - "db6529e972a44a4d historical FIPS 140-2 Hardware 2.0 \n", - "f1d7fa1b12bf72b9 historical FIPS 140-2 Hardware 1.0 \n", - "d0c9e369bee256f4 historical FIPS 140-2 Software 2.0 \n", - "8a159f78a49736dc historical FIPS 140-2 Hardware 2.0 \n", - "3b769fd26d07b8da historical FIPS 140-2 Hardware 2.0 \n", + " status standard type level \\\n", + "dgst \n", + "71cadd0c63e57249 active FIPS 140-2 Software 1.0 \n", + "9931f287c490c562 active FIPS 140-2 Software 1.0 \n", + "03f65a290e11d786 active FIPS 140-2 Hardware 1.0 \n", + "7119d5d9637ddeeb active FIPS 140-2 Hardware 1.0 \n", + "f36e412aea00d7c6 active FIPS 140-2 Hardware 1.0 \n", + "... ... ... ... ... \n", + "9cbfc3c153a29e5c historical FIPS 140-2 Hardware 2.0 \n", + "1625f9db144171f7 historical FIPS 140-2 Hardware 3.0 \n", + "15bb14fd69723b98 historical FIPS 140-2 Hardware 2.0 \n", + "586540138f7cd7fd historical FIPS 140-2 Hardware 2.0 \n", + "6678394ac11e55af historical FIPS 140-2 Software 1.0 \n", "\n", " embodiment date_validation date_sunset \\\n", "dgst \n", - "84bdcd156603935b Single Chip 2022-02-10 2026-09-21 \n", - "93495fae156b6769 Multi-Chip Stand Alone 2021-03-03 2026-03-02 \n", - "fc70db0a12d574a3 Multi-Chip Stand Alone 2022-02-02 2026-09-21 \n", + "71cadd0c63e57249 Multi-Chip Stand Alone 2023-04-14 2025-04-19 \n", "9931f287c490c562 Multi-Chip Stand Alone 2020-02-19 2025-02-18 \n", - "bb551a7a1524e2ef Multi-Chip Stand Alone 2019-05-06 2024-05-05 \n", + "03f65a290e11d786 Multi-Chip Stand Alone 2021-04-23 2026-04-22 \n", + "7119d5d9637ddeeb Multi-Chip Stand Alone 2020-09-28 2025-09-27 \n", + "f36e412aea00d7c6 Multi-Chip Stand Alone 2023-05-11 2026-03-02 \n", "... ... ... ... \n", - "db6529e972a44a4d Multi-Chip Stand Alone 2014-05-06 NaT \n", - "f1d7fa1b12bf72b9 Multi-Chip Stand Alone 2021-03-18 NaT \n", - "d0c9e369bee256f4 Multi-Chip Stand Alone 2016-02-17 NaT \n", - "8a159f78a49736dc Multi-Chip Stand Alone 2018-03-15 NaT \n", - "3b769fd26d07b8da Multi-Chip Stand Alone 2021-03-01 NaT \n", + "9cbfc3c153a29e5c Multi-Chip Stand Alone 2016-03-29 NaT \n", + "1625f9db144171f7 Single Chip 2012-07-17 NaT \n", + "15bb14fd69723b98 Multi-Chip Stand Alone 2019-12-09 NaT \n", + "586540138f7cd7fd Multi-Chip Stand Alone 2017-09-22 NaT \n", + "6678394ac11e55af Multi-Chip Stand Alone 2020-04-20 NaT \n", "\n", " algorithms ... \\\n", "dgst ... \n", - "84bdcd156603935b {DRBG#A667, AES#A668, SHS#A668, HMAC#A668, ECD... ... \n", - "93495fae156b6769 {HMAC#C1578, SHS#C1575, DRBG#C1571, DRBG#C1573... ... \n", - "fc70db0a12d574a3 {SHA-3#C1914, HMAC#C1914, SHS#C1914, RSA#C1914... ... \n", - "9931f287c490c562 {Triple-DES#C693, AES#C693, DRBG#C693, DSA#C69... ... \n", - "bb551a7a1524e2ef {AES#5287, SHS#4240, AES#5289, RSA#2821} ... \n", + "71cadd0c63e57249 {AES#C791, AES#C792, SHS#C790, HMAC#C792, AES#... ... \n", + "9931f287c490c562 {HMAC#C693, Triple-DES#C693, DSA#C693, DRBG#C6... ... \n", + "03f65a290e11d786 {ECDSA#C1981, RSA#C1981, DRBG#C1981, Triple-DE... ... \n", + "7119d5d9637ddeeb {DRBG#C947, HMAC#C970, DRBG#C942, SHS#C943, HM... ... \n", + "f36e412aea00d7c6 {RSA#C220, CVL#A1462, HMAC#A1462, DSA#C431, KB... ... \n", "... ... ... \n", - "db6529e972a44a4d {Triple-DES#1425, HMAC#1616, RSA#1169, SHS#195... ... \n", - "f1d7fa1b12bf72b9 {HMAC#C462, DSA#C431, SHS#C220, SHS#C462, Trip... ... \n", - "d0c9e369bee256f4 {AES#3078, AES#3082, CVL#368, HMAC#1936, CVL#3... ... \n", - "8a159f78a49736dc {SHS#3962, CVL#1441, RSA#2638, DRBG#1679, SHS#... ... \n", - "3b769fd26d07b8da {HMAC#3702, SHS#2737, ECDSA#C1747, CVL#C1747, ... ... \n", + "9cbfc3c153a29e5c {RSA#1825, CVL#599, DRBG#649, AES#3156, RSA#16... ... \n", + "1625f9db144171f7 {KTS#1654, ECDSA#214, CVL#2, AES#1654, RSA#824... ... \n", + "15bb14fd69723b98 {RSA#2638, KTS#C409, DRBG#C409, SHS#C409, SHS#... ... \n", + "586540138f7cd7fd {AES#2677, DRBG#433, AES#2680, RSA#1268, Tripl... ... \n", + "6678394ac11e55af {AES#C791, AES#C792, SHS#C790, HMAC#C792, AES#... ... \n", "\n", - " related_cves \\\n", - "dgst \n", - "84bdcd156603935b NaN \n", - "93495fae156b6769 NaN \n", - "fc70db0a12d574a3 {CVE-2016-2334, CVE-2017-3623} \n", - "9931f287c490c562 NaN \n", - "bb551a7a1524e2ef {CVE-2019-1314} \n", - "... ... \n", - "db6529e972a44a4d {CVE-2012-4948} \n", - "f1d7fa1b12bf72b9 NaN \n", - "d0c9e369bee256f4 {CVE-2017-1000253, CVE-2018-1111, CVE-2016-7091} \n", - "8a159f78a49736dc NaN \n", - "3b769fd26d07b8da {CVE-2020-12252, CVE-2020-12251} \n", - "\n", - " module_directly_referenced_by \\\n", - "dgst \n", - "84bdcd156603935b NaN \n", - "93495fae156b6769 NaN \n", - "fc70db0a12d574a3 NaN \n", - "9931f287c490c562 NaN \n", - "bb551a7a1524e2ef {2605, 3469} \n", - "... ... \n", - "db6529e972a44a4d NaN \n", - "f1d7fa1b12bf72b9 NaN \n", - "d0c9e369bee256f4 {2582} \n", - "8a159f78a49736dc NaN \n", - "3b769fd26d07b8da NaN \n", + " related_cves module_directly_referenced_by \\\n", + "dgst \n", + "71cadd0c63e57249 NaN NaN \n", + "9931f287c490c562 NaN NaN \n", + "03f65a290e11d786 NaN NaN \n", + "7119d5d9637ddeeb NaN NaN \n", + "f36e412aea00d7c6 NaN NaN \n", + "... ... ... \n", + "9cbfc3c153a29e5c NaN NaN \n", + "1625f9db144171f7 {CVE-2019-15809} NaN \n", + "15bb14fd69723b98 NaN NaN \n", + "586540138f7cd7fd NaN NaN \n", + "6678394ac11e55af NaN NaN \n", "\n", " module_indirectly_referenced_by module_directly_referencing \\\n", "dgst \n", - "84bdcd156603935b NaN NaN \n", - "93495fae156b6769 NaN NaN \n", - "fc70db0a12d574a3 NaN NaN \n", + "71cadd0c63e57249 NaN NaN \n", "9931f287c490c562 NaN NaN \n", - "bb551a7a1524e2ef {2605, 2958, 2606, 3469, 3566} {3447} \n", + "03f65a290e11d786 NaN NaN \n", + "7119d5d9637ddeeb NaN NaN \n", + "f36e412aea00d7c6 NaN {3637} \n", "... ... ... \n", - "db6529e972a44a4d NaN NaN \n", - "f1d7fa1b12bf72b9 NaN {3637} \n", - "d0c9e369bee256f4 {2582} NaN \n", - "8a159f78a49736dc NaN NaN \n", - "3b769fd26d07b8da NaN NaN \n", + "9cbfc3c153a29e5c NaN NaN \n", + "1625f9db144171f7 NaN NaN \n", + "15bb14fd69723b98 NaN NaN \n", + "586540138f7cd7fd NaN NaN \n", + "6678394ac11e55af NaN NaN \n", "\n", " module_indirectly_referencing policy_directly_referenced_by \\\n", "dgst \n", - "84bdcd156603935b NaN NaN \n", - "93495fae156b6769 NaN NaN \n", - "fc70db0a12d574a3 NaN NaN \n", + "71cadd0c63e57249 NaN NaN \n", "9931f287c490c562 NaN NaN \n", - "bb551a7a1524e2ef {3447} {2605, 3469} \n", + "03f65a290e11d786 NaN NaN \n", + "7119d5d9637ddeeb NaN NaN \n", + "f36e412aea00d7c6 {3637} NaN \n", "... ... ... \n", - "db6529e972a44a4d NaN NaN \n", - "f1d7fa1b12bf72b9 {3637} NaN \n", - "d0c9e369bee256f4 NaN {2582} \n", - "8a159f78a49736dc NaN NaN \n", - "3b769fd26d07b8da NaN NaN \n", + "9cbfc3c153a29e5c NaN NaN \n", + "1625f9db144171f7 NaN NaN \n", + "15bb14fd69723b98 NaN NaN \n", + "586540138f7cd7fd NaN NaN \n", + "6678394ac11e55af NaN NaN \n", "\n", " policy_indirectly_referenced_by policy_directly_referencing \\\n", "dgst \n", - "84bdcd156603935b NaN {4025} \n", - "93495fae156b6769 NaN NaN \n", - "fc70db0a12d574a3 NaN {3335} \n", + "71cadd0c63e57249 NaN NaN \n", "9931f287c490c562 NaN NaN \n", - "bb551a7a1524e2ef {2605, 2958, 2606, 3469, 3566} {3447} \n", + "03f65a290e11d786 NaN NaN \n", + "7119d5d9637ddeeb NaN NaN \n", + "f36e412aea00d7c6 NaN {3637} \n", "... ... ... \n", - "db6529e972a44a4d NaN NaN \n", - "f1d7fa1b12bf72b9 NaN {3637} \n", - "d0c9e369bee256f4 {2582} NaN \n", - "8a159f78a49736dc NaN NaN \n", - "3b769fd26d07b8da NaN NaN \n", + "9cbfc3c153a29e5c NaN NaN \n", + "1625f9db144171f7 NaN NaN \n", + "15bb14fd69723b98 NaN NaN \n", + "586540138f7cd7fd NaN NaN \n", + "6678394ac11e55af NaN NaN \n", "\n", " policy_indirectly_referencing year_from \n", "dgst \n", - "84bdcd156603935b {4025} 2022 \n", - "93495fae156b6769 NaN 2021 \n", - "fc70db0a12d574a3 {3335} 2022 \n", + "71cadd0c63e57249 NaN 2023 \n", "9931f287c490c562 NaN 2020 \n", - "bb551a7a1524e2ef {3447} 2019 \n", + "03f65a290e11d786 NaN 2021 \n", + "7119d5d9637ddeeb NaN 2020 \n", + "f36e412aea00d7c6 {3637} 2023 \n", "... ... ... \n", - "db6529e972a44a4d NaN 2014 \n", - "f1d7fa1b12bf72b9 {3637} 2021 \n", - "d0c9e369bee256f4 NaN 2016 \n", - "8a159f78a49736dc NaN 2018 \n", - "3b769fd26d07b8da NaN 2021 \n", + "9cbfc3c153a29e5c NaN 2016 \n", + "1625f9db144171f7 NaN 2012 \n", + "15bb14fd69723b98 NaN 2019 \n", + "586540138f7cd7fd NaN 2017 \n", + "6678394ac11e55af NaN 2020 \n", "\n", - "[158 rows x 23 columns]" + "[159 rows x 23 columns]" ] }, - "execution_count": 125, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1511,7 +1492,7 @@ }, { "cell_type": "markdown", - "id": "8ffa1a12", + "id": "9f11c4d5", "metadata": {}, "source": [ "### Ten most common CVEs in the dataset" @@ -1519,8 +1500,8 @@ }, { "cell_type": "code", - "execution_count": 52, - "id": "b01ba099", + "execution_count": 17, + "id": "0ecd1b1c", "metadata": { "scrolled": false }, @@ -1541,26 +1522,26 @@ }, { "cell_type": "code", - "execution_count": 99, - "id": "da41f336", + "execution_count": 18, + "id": "dbac8629", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('CVE-2016-7091', 49),\n", + " ('CVE-2000-0701', 45),\n", " ('CVE-1999-0037', 45),\n", + " ('CVE-1999-1288', 45),\n", + " ('CVE-2001-0690', 45),\n", + " ('CVE-2000-1207', 45),\n", " ('CVE-2001-0889', 45),\n", " ('CVE-2007-3103', 45),\n", - " ('CVE-1999-1288', 45),\n", - " ('CVE-2000-0701', 45),\n", - " ('CVE-1999-0297', 45),\n", - " ('CVE-1999-0798', 45),\n", - " ('CVE-1999-0894', 45),\n", - " ('CVE-2000-0017', 45)]" + " ('CVE-2000-0017', 45),\n", + " ('CVE-1999-0894', 45)]" ] }, - "execution_count": 99, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1576,7 +1557,7 @@ }, { "cell_type": "markdown", - "id": "3328d050", + "id": "5be2561b", "metadata": {}, "source": [ "### Ten most common crypto algorithms used" @@ -1584,8 +1565,8 @@ }, { "cell_type": "code", - "execution_count": 100, - "id": "feb1b151", + "execution_count": 19, + "id": "02306c40", "metadata": { "scrolled": true }, @@ -1595,17 +1576,17 @@ "text/plain": [ "[('RSA#1', 180),\n", " ('Triple-DES#34', 45),\n", + " ('SHS#1954', 35),\n", + " ('HMAC#1391', 35),\n", + " ('RSA#1166', 35),\n", " ('ECDSA#368', 35),\n", " ('AES#2273', 35),\n", - " ('DRBG#281', 35),\n", - " ('HMAC#1391', 35),\n", - " ('SHS#1954', 35),\n", - " ('Triple-DES#1420', 35),\n", " ('DSA#709', 35),\n", - " ('RSA#1166', 35)]" + " ('DRBG#281', 35),\n", + " ('Triple-DES#1420', 35)]" ] }, - "execution_count": 100, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1621,7 +1602,7 @@ }, { "cell_type": "markdown", - "id": "a18d0a01", + "id": "eff29c58", "metadata": {}, "source": [ "## Analysis of FIPS references" @@ -1629,12 +1610,498 @@ }, { "cell_type": "code", - "execution_count": 46, - "id": "ec1eb266", + "execution_count": 26, + "id": "6ceb86c7", + "metadata": {}, + "outputs": [], + "source": [ + "refs_columns: list[str] = [\n", + " \"cert_id\", \n", + " \"status\",\n", + " \"standard\",\n", + " \"type\",\n", + " \"level\",\n", + " \"embodiment\",\n", + " \"module_directly_referenced_by\", \n", + " \"module_indirectly_referenced_by\",\n", + " \"module_directly_referencing\",\n", + " \"module_indirectly_referencing\",\n", + " \"policy_directly_referenced_by\",\n", + " \"policy_indirectly_referenced_by\",\n", + " \"policy_directly_referencing\",\n", + " \"policy_indirectly_referencing\",\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "f38fce2b", + "metadata": {}, + "outputs": [], + "source": [ + "refs_df = df[refs_columns]" + ] + }, + { + "cell_type": "markdown", + "id": "2a54f24c", + "metadata": {}, + "source": [ + "### Active certificates which reference at least one historical cert (=module refs)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "125b4d99", "metadata": {}, "outputs": [], "source": [ - "# TODO" + "def get_cert_status(dataset: DataFrame, cert_id: int) -> str | None:\n", + " sub_df = refs_df[refs_df[\"cert_id\"] == int(cert_id)]\n", + " \n", + " if sub_df.shape[0] == 0: # Certificate is not in the dataset\n", + " print(f\"Cert ID: {cert_id} not in dataset\")\n", + " return None\n", + " \n", + " if sub_df.shape[0] > 1:\n", + " print(f\"Error Cert ID: {cert_id} has {sub_df.shape[0]} occurrences.\")\n", + " return None\n", + " \n", + " return sub_df.iloc[0][\"status\"]\n", + "\n", + "def is_cert_referencing_historical_cert(dataset: DataFrame, cert_ids: set[int]) -> bool:\n", + " statuses = [get_cert_status(dataset, cert_id) for cert_id in cert_ids]\n", + " return \"historical\" in statuses\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "23d509c5", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cert ID:| \n", + " | cert_id | \n", + "status | \n", + "standard | \n", + "type | \n", + "level | \n", + "embodiment | \n", + "module_directly_referenced_by | \n", + "module_indirectly_referenced_by | \n", + "module_directly_referencing | \n", + "module_indirectly_referencing | \n", + "policy_directly_referenced_by | \n", + "policy_indirectly_referenced_by | \n", + "policy_directly_referencing | \n", + "policy_indirectly_referencing | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dgst | \n", + "\n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " |
| f804663d999ea924 | \n", + "1883 | \n", + "historical | \n", + "FIPS 140-2 | \n", + "Hardware | \n", + "3.0 | \n", + "Single Chip | \n", + "{2779, 2860, 3141, 2590, 2665, 3518, 3850, 3960} | \n", + "{2779, 2860, 3141, 2590, 2665, 3518, 3850, 3960} | \n", + "NaN | \n", + "NaN | \n", + "{2779, 2860, 3141, 2590, 2665, 3518, 3850, 3960} | \n", + "{2779, 2860, 3141, 2590, 2665, 3518, 3850, 3960} | \n", + "NaN | \n", + "NaN | \n", + "
| \n", + " | cert_id | \n", + "status | \n", + "standard | \n", + "type | \n", + "level | \n", + "embodiment | \n", + "module_directly_referenced_by | \n", + "module_indirectly_referenced_by | \n", + "module_directly_referencing | \n", + "module_indirectly_referencing | \n", + "policy_directly_referenced_by | \n", + "policy_indirectly_referenced_by | \n", + "policy_directly_referencing | \n", + "policy_indirectly_referencing | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dgst | \n", + "\n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " |
| a16c79f3a7142b2b | \n", + "3273 | \n", + "active | \n", + "FIPS 140-2 | \n", + "Software | \n", + "1.0 | \n", + "Multi-Chip Stand Alone | \n", + "{4165, 3366, 3974, 4104, 3915, 4252, 3625, 388... | \n", + "{4165, 3366, 3974, 4104, 3915, 4252, 3625, 388... | \n", + "NaN | \n", + "NaN | \n", + "NaN | \n", + "NaN | \n", + "NaN | \n", + "NaN | \n", + "