{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# sec-certs Python API demo\n", "\n", "In this demo, we will:\n", "1. Fetch the fully processed dataset from our web\n", "2. Turn the dataset into a [pandas](https://pandas.pydata.org/) dataframe -- a data structure suitable for further data analysis.\n", "3. Filter the dataset to certificates of our interest\n", "4. Explore various attrributes of a dataset and its individual certificate\n", "5. Learn how to go from a single vulnerability to all certificates that *may suffer* from the vulnerability\n", "6. Plot various characteristics of the dataset\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Fetch the fully processed dataset from our web" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# First, import the necessary libraries\n", "from sec_certs.dataset import CCDataset\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Downloading CC Dataset: 100%|██████████| 144M/144M [00:14<00:00, 10.6MB/s] \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The downloaded CCDataset contains 5330 certificates\n" ] } ], "source": [ "# Download the dataset and see how many certificates it contains\n", "dataset = CCDataset.from_web()\n", "print(f\"The downloaded CCDataset contains {len(dataset)} certificates\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# # Don't run this! This creates new empty dataset, crawls commoncriteriaportal.org and processed all certificates.\n", "# dset = CCDataset()\n", "# dset.get_certs_from_web()\n", "# dset.process_auxillary_datasets()\n", "# dset.download_all_artifacts()\n", "# dset.convert_all_pdfs()\n", "# dset.analyze_certificates()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Turn the dataset into a [pandas](https://pandas.pydata.org/) dataframe -- a data structure suitable for further data analysis." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df = dataset.to_pandas()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['cert_id', 'name', 'status', 'category', 'manufacturer', 'scheme',\n", " 'security_level', 'eal', 'not_valid_before', 'not_valid_after',\n", " 'report_link', 'st_link', 'cert_link', 'manufacturer_web',\n", " 'extracted_versions', 'cpe_matches', 'verified_cpe_matches',\n", " 'related_cves', 'directly_referenced_by', 'indirectly_referenced_by',\n", " 'directly_referencing', 'indirectly_referencing', 'extracted_sars',\n", " 'protection_profiles', 'cert_lab', 'year_from'],\n", " dtype='object')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print columns of the dataset\n", "df.columns" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dgst\n", "8298c7814b3b2860 NaN\n", "9a1c767d358eee50 NaN\n", "979e00ac7d3e229c NaN\n", "a6015339aa4434cf NaN\n", "a89ee15539d006d1 NaN\n", "Name: related_cves, dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Select a single column\n", "df_vulns = df.related_cves\n", "df_vulns.head()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Save the dataset as json (might not work from browser)\n", "dataset.to_json(\"cc_dataset.json\")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Filter the dataset to certificates of our interest" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Select only certificates that have some related cves\n", "vulnerable_certificates = df.loc[df.related_cves.notnull()]\n", "\n", "# Select only certificates from BSI\n", "bsi_certs = df.loc[df.cert_lab == \"BSI\"]\n", "\n", "# Select only certificates certified in 2017 or later\n", "certs_2017_and_newer = df.loc[df.not_valid_before.dt.year >= 2017]\n", "\n", "# select only active certificates\n", "active_certificates = df.loc[df.status == \"active\"]\n", "\n", "# Select only certificates that reference some other certificate\n", "reference_rich_certificates = df.loc[df.directly_referencing.notnull()]\n", "\n", "# Select only certificates with EAL6 and higher\n", "eal6_or_more = df.loc[df.eal >= \"EAL6\"]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cert_idnamestatuscategorymanufacturerschemesecurity_levelealnot_valid_beforenot_valid_after...verified_cpe_matchesrelated_cvesdirectly_referenced_byindirectly_referenced_bydirectly_referencingindirectly_referencingextracted_sarsprotection_profilescert_labyear_from
dgst
ef1fba0df82eb56eBSI-DSZ-CC-1096-2021Arbit Data Diode 10 GbE v1.00activeBoundary Protection Devices and SystemsArbit Cyber Defence Systems ApSDE{EAL7+, ALC_FLR.1}EAL7+2021-04-072026-04-07...NaNNaNNaNNaNNaNNaN{SAR(family='ALC_FLR', level=1), SAR(family='A...NaNBSI2021
167ed26aa5bc8193NSCIB-CC-163925-CRFort Fox Hardware Data Diode FFHDD3_1/10activeBoundary Protection Devices and SystemsFox-IT B.V.NL{ALC_FLR.3, ASE_TSS.2, EAL7+}EAL7+2018-07-112023-07-11...NaNNaNNaNNaNNaNNaN{SAR(family='ASE_CCL', level=1), SAR(family='A...NaNNaN2018
6cd7a7a1cffaa67eNSCIB-CC-0095534-CR3NXP JCOP 4.7 SE051activeICs, Smart Cards and Smart Card-Related Device...NXP SemiconductorsNL{ASE_TSS.2, EAL6+, ALC_FLR.1}EAL6+2023-03-272028-03-27...NaNNaNNaNNaN{BSI-DSZ-CC-1136-V3-2022, NSCIB-CC-180212-CR5}{BSI-DSZ-CC-1136-2021, BSI-DSZ-CC-1136-V3-2022...{SAR(family='ALC_FLR', level=1), SAR(family='A...[Java Card Protection Profile - Open Configura...NaN2023
51e4fcdced4053b0ANSSI-CC-2023/14S3D384C/S3D352C/S3D300C/S3D264C/S3D232C/S3K384...activeICs, Smart Cards and Smart Card-Related Device...Samsung Electronics Co., Ltd.FR{ASE_TSS.2, EAL6+}EAL6+2023-03-022028-03-02...NaNNaNNaNNaN{ANSSI-CC-2021/56}{ANSSI-CC-2021/56}{SAR(family='ASE_CCL', level=1), SAR(family='A...[Security IC Platform Protection Profile with ...NaN2023
1116a6b1b0edbf8dNSCIB-CC-66030-CR6NXP Crypto Library V3.1.x on P6021y VBactiveICs, Smart Cards and Smart Card-Related Device...NXP Semiconductors Germany GmbH, Business Unit...NL{ASE_TSS.2, EAL6+, ALC_FLR.1}EAL6+2023-02-162028-02-16...NaNNaNNaNNaN{BSI-DSZ-CC-1072-V5-2022}{BSI-DSZ-CC-1072-V2-2019, BSI-DSZ-CC-1072-V5-2...{SAR(family='ASE_CCL', level=1), SAR(family='A...[Security IC Platform Protection Profile with ...NaN2023
\n", "

5 rows × 26 columns

\n", "
" ], "text/plain": [ " cert_id \\\n", "dgst \n", "ef1fba0df82eb56e BSI-DSZ-CC-1096-2021 \n", "167ed26aa5bc8193 NSCIB-CC-163925-CR \n", "6cd7a7a1cffaa67e NSCIB-CC-0095534-CR3 \n", "51e4fcdced4053b0 ANSSI-CC-2023/14 \n", "1116a6b1b0edbf8d NSCIB-CC-66030-CR6 \n", "\n", " name status \\\n", "dgst \n", "ef1fba0df82eb56e Arbit Data Diode 10 GbE v1.00 active \n", "167ed26aa5bc8193 Fort Fox Hardware Data Diode FFHDD3_1/10 active \n", "6cd7a7a1cffaa67e NXP JCOP 4.7 SE051 active \n", "51e4fcdced4053b0 S3D384C/S3D352C/S3D300C/S3D264C/S3D232C/S3K384... active \n", "1116a6b1b0edbf8d NXP Crypto Library V3.1.x on P6021y VB active \n", "\n", " category \\\n", "dgst \n", "ef1fba0df82eb56e Boundary Protection Devices and Systems \n", "167ed26aa5bc8193 Boundary Protection Devices and Systems \n", "6cd7a7a1cffaa67e ICs, Smart Cards and Smart Card-Related Device... \n", "51e4fcdced4053b0 ICs, Smart Cards and Smart Card-Related Device... \n", "1116a6b1b0edbf8d ICs, Smart Cards and Smart Card-Related Device... \n", "\n", " manufacturer scheme \\\n", "dgst \n", "ef1fba0df82eb56e Arbit Cyber Defence Systems ApS DE \n", "167ed26aa5bc8193 Fox-IT B.V. NL \n", "6cd7a7a1cffaa67e NXP Semiconductors NL \n", "51e4fcdced4053b0 Samsung Electronics Co., Ltd. FR \n", "1116a6b1b0edbf8d NXP Semiconductors Germany GmbH, Business Unit... NL \n", "\n", " security_level eal not_valid_before \\\n", "dgst \n", "ef1fba0df82eb56e {EAL7+, ALC_FLR.1} EAL7+ 2021-04-07 \n", "167ed26aa5bc8193 {ALC_FLR.3, ASE_TSS.2, EAL7+} EAL7+ 2018-07-11 \n", "6cd7a7a1cffaa67e {ASE_TSS.2, EAL6+, ALC_FLR.1} EAL6+ 2023-03-27 \n", "51e4fcdced4053b0 {ASE_TSS.2, EAL6+} EAL6+ 2023-03-02 \n", "1116a6b1b0edbf8d {ASE_TSS.2, EAL6+, ALC_FLR.1} EAL6+ 2023-02-16 \n", "\n", " not_valid_after ... verified_cpe_matches related_cves \\\n", "dgst ... \n", "ef1fba0df82eb56e 2026-04-07 ... NaN NaN \n", "167ed26aa5bc8193 2023-07-11 ... NaN NaN \n", "6cd7a7a1cffaa67e 2028-03-27 ... NaN NaN \n", "51e4fcdced4053b0 2028-03-02 ... NaN NaN \n", "1116a6b1b0edbf8d 2028-02-16 ... NaN NaN \n", "\n", " directly_referenced_by indirectly_referenced_by \\\n", "dgst \n", "ef1fba0df82eb56e NaN NaN \n", "167ed26aa5bc8193 NaN NaN \n", "6cd7a7a1cffaa67e NaN NaN \n", "51e4fcdced4053b0 NaN NaN \n", "1116a6b1b0edbf8d NaN NaN \n", "\n", " directly_referencing \\\n", "dgst \n", "ef1fba0df82eb56e NaN \n", "167ed26aa5bc8193 NaN \n", "6cd7a7a1cffaa67e {BSI-DSZ-CC-1136-V3-2022, NSCIB-CC-180212-CR5} \n", "51e4fcdced4053b0 {ANSSI-CC-2021/56} \n", "1116a6b1b0edbf8d {BSI-DSZ-CC-1072-V5-2022} \n", "\n", " indirectly_referencing \\\n", "dgst \n", "ef1fba0df82eb56e NaN \n", "167ed26aa5bc8193 NaN \n", "6cd7a7a1cffaa67e {BSI-DSZ-CC-1136-2021, BSI-DSZ-CC-1136-V3-2022... \n", "51e4fcdced4053b0 {ANSSI-CC-2021/56} \n", "1116a6b1b0edbf8d {BSI-DSZ-CC-1072-V2-2019, BSI-DSZ-CC-1072-V5-2... \n", "\n", " extracted_sars \\\n", "dgst \n", "ef1fba0df82eb56e {SAR(family='ALC_FLR', level=1), SAR(family='A... \n", "167ed26aa5bc8193 {SAR(family='ASE_CCL', level=1), SAR(family='A... \n", "6cd7a7a1cffaa67e {SAR(family='ALC_FLR', level=1), SAR(family='A... \n", "51e4fcdced4053b0 {SAR(family='ASE_CCL', level=1), SAR(family='A... \n", "1116a6b1b0edbf8d {SAR(family='ASE_CCL', level=1), SAR(family='A... \n", "\n", " protection_profiles cert_lab \\\n", "dgst \n", "ef1fba0df82eb56e NaN BSI \n", "167ed26aa5bc8193 NaN NaN \n", "6cd7a7a1cffaa67e [Java Card Protection Profile - Open Configura... NaN \n", "51e4fcdced4053b0 [Security IC Platform Protection Profile with ... NaN \n", "1116a6b1b0edbf8d [Security IC Platform Protection Profile with ... NaN \n", "\n", " year_from \n", "dgst \n", "ef1fba0df82eb56e 2021 \n", "167ed26aa5bc8193 2018 \n", "6cd7a7a1cffaa67e 2023 \n", "51e4fcdced4053b0 2023 \n", "1116a6b1b0edbf8d 2023 \n", "\n", "[5 rows x 26 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show arbitrary subset that we've defined earlier\n", "eal6_or_more.head()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Explore various attrributes of a dataset and its individual certificate" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Infineon Technologies AG Infineon Security Controller M7892 B11 with optional RSA2048/4096 v1.02.013 or v2.07.003, EC v1.02.013 or v2.07.003, SHA-2 v1.01, SCL v2.02.012, Base v1.02.013 or v2.07.003, and Toolbox v1.02.013 or v2.07.003 libraries and with specific IC dedicated software (firmware) dgst: 15d68159595eae09\n" ] } ], "source": [ "# Select a single certificate by its digest\n", "cert = dataset[\"15d68159595eae09\"]\n", "print(cert)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'status': 'active',\n", " 'category': 'ICs, Smart Cards and Smart Card-Related Devices and Systems',\n", " 'name': 'Infineon Security Controller M7892 B11 with optional RSA2048/4096 v1.02.013 or v2.07.003, EC v1.02.013 or v2.07.003, SHA-2 v1.01, SCL v2.02.012, Base v1.02.013 or v2.07.003, and Toolbox v1.02.013 or v2.07.003 libraries and with specific IC dedicated software (firmware)',\n", " 'manufacturer': 'Infineon Technologies AG',\n", " 'scheme': 'DE',\n", " 'security_level': {'ALC_FLR.1', 'EAL6+'},\n", " 'not_valid_before': datetime.date(2020, 11, 26),\n", " 'not_valid_after': datetime.date(2025, 11, 26),\n", " 'report_link': 'https://www.commoncriteriaportal.org/files/epfiles/0782V5a_pdf.pdf',\n", " 'st_link': 'https://www.commoncriteriaportal.org/files/epfiles/0782V5b_pdf.pdf',\n", " 'cert_link': 'https://www.commoncriteriaportal.org/files/epfiles/0782V5c_pdf.pdf',\n", " 'manufacturer_web': 'https://www.infineon.com/',\n", " 'protection_profiles': {ProtectionProfile(pp_name='Security IC Platform Protection Profile, Version 1.0', pp_eal='EAL4+', pp_link='https://www.commoncriteriaportal.org/files/ppfiles/pp0035b.pdf', pp_ids=frozenset({'PKISKPP', 'SECURITY_IC_V1.0'}))},\n", " 'maintenance_updates': set(),\n", " 'state': CCCertificate.InternalState(st_download_ok=True, report_download_ok=True, st_convert_garbage=False, report_convert_garbage=False, st_convert_ok=True, report_convert_ok=True, st_extract_ok=True, report_extract_ok=True, st_pdf_hash='781a91574529280685f19db6ff42f38c313ced51333878edb1e201213926f160', report_pdf_hash='34fddbff0d9d5231e861613f4a59a8a9ac61584610e522953adfa50ee69d42c0', st_txt_hash='7d950c298fce34a95a70db4d89347b68616f6dd8c6617af838d8bdd9de01eb17', report_txt_hash='68dc7f2f4f25a864c2eead97218f8dd61a2ecf76f6762aa9fa27fb528178c070', _st_pdf_path=PosixPath('/this/is/dummy/nonexisting/path/certs/targets/pdf/15d68159595eae09.pdf'), _report_pdf_path=PosixPath('/this/is/dummy/nonexisting/path/certs/reports/pdf/15d68159595eae09.pdf'), _st_txt_path=PosixPath('/this/is/dummy/nonexisting/path/certs/targets/txt/15d68159595eae09.txt'), _report_txt_path=PosixPath('/this/is/dummy/nonexisting/path/certs/reports/txt/15d68159595eae09.txt')),\n", " 'pdf_data': CCCertificate.PdfData(report_metadata={'pdf_file_size_bytes': 819344, 'pdf_is_encrypted': False, 'pdf_number_of_pages': 31, '/Author': 'Bundesamt für Sicherheit in der Informationstechnik', '/CreationDate': \"D:20201127105614+01'00'\", '/Creator': 'Writer', '/Keywords': '\"Common Criteria, Certification, Zertifizierung, Infineon Technologies AG\"', '/ModDate': \"D:20201201164110+01'00'\", '/Producer': 'LibreOffice 6.3', '/Subject': 'Common Criteria Certification, BSI-DSZ-CC-0782-V5-2020, Infineon Technologies AG', '/Title': 'Certification Report BSI-DSZ-CC-0782-V5-2020', 'pdf_hyperlinks': {'http://www.commoncriteriaportal.org/cc/', 'https://www.sogis.eu/', 'https://www.bsi.bund.de/zertifizierungsreporte', 'https://www.bsi.bund.de/zertifizierung', 'http://www.commoncriteriaportal.org/', 'https://www.bsi.bund.de/', 'https://www.bsi.bund.de/AIS'}}, st_metadata={'pdf_file_size_bytes': 1582331, 'pdf_is_encrypted': False, 'pdf_number_of_pages': 112, '/Creator': 'Microsoft Word - M7892_B11_SCL_public_ST.docx', '/Producer': 'Nuance PDF Create 8', '/CreationDate': \"D:20201127091852+01'00'\", '/ModDate': \"D:20201127091852+01'00'\", '/Author': 'Infineon Technologies AG', '/Title': 'Microsoft Word - M7892_B11_SCL_public_ST.docx', '/Keywords': '16-bit security controller', 'pdf_hyperlinks': set()}, report_frontpage={'anssi': {}, 'bsi': {'match_rules': ['(BSI-DSZ-CC-.+?) (?:for|For) (.+?) from (.*)'], 'cert_id': 'BSI-DSZ-CC-0782-V5-2020', 'cert_item': 'Infineon Security Controller M7892 B11 with optional RSA2048/4096 v1.02.013 or v2.07.003, EC v1.02.013 or v2.07.003, SHA-2 v1.01, SCL v2.02.012, Base v1.02.013 or v2.07.003, and Toolbox v1.02.013 or v2.07.003 libraries and with specific IC dedicated software (firmware', 'developer': 'Infineon Technologies AG', 'cert_lab': 'BSI', 'ref_protection_profiles': 'Security IC Platform Protection Profile, Version 1.0, 15 June 2007, BSI-CC-PP-0035-2007', 'cc_version': 'PP conformant plus product specific extensions Common Criteria Part 2 extended', 'cc_security_level': 'Common Criteria Part 3 conformant EAL 6 augmented by ALC_FLR.1'}, 'nscib': {}, 'niap': {}, 'canada': {}}, st_frontpage={'anssi': {}, 'bsi': {}, 'nscib': {}, 'niap': {}, 'canada': {}}, report_keywords={'cc_cert_id': {'DE': {'BSI-DSZ-CC-0782-V5-2020': 38, 'BSI-DSZ-CC-0782-V4-2018': 8}}, 'cc_protection_profile_id': {'BSI': {'BSI-CC-PP-0035-2007': 2, 'BSI-CC-PP- 0035-2007': 1}}, 'cc_security_level': {'EAL': {'EAL 6': 4, 'EAL 5': 4, 'EAL 2': 2, 'EAL 1': 1, 'EAL 4': 1, 'EAL6': 3, 'EAL6+': 3, 'EAL5+': 1, 'EAL 6 augmented': 3, 'EAL6 augmented': 3}}, 'cc_sar': {'ALC': {'ALC_FLR.1': 5, 'ALC_FLR': 2, 'ALC_CMC.5': 1, 'ALC_CMS.5': 1, 'ALC_DEL.1': 1, 'ALC_DVS.2': 1, 'ALC_LCD.1': 1, 'ALC_TAT.3': 1}}, 'cc_sfr': {}, 'cc_claims': {}, 'vendor': {'Infineon': {'Infineon': 9, 'Infineon Technologies AG': 18, 'Infineon Technologies': 1}, 'GD': {'G&D': 1, 'Giesecke & Devrient': 1}}, 'eval_facility': {'TUV': {'TÜV Informationstechnik': 4}}, 'symmetric_crypto': {'AES_competition': {'AES': {'AES': 13}}, 'DES': {'DES': {'DES': 3}, '3DES': {'Triple-DES': 3, 'TDES': 7}}}, 'asymmetric_crypto': {'RSA': {'RSA2048': 1, 'RSA4096': 1, 'RSA-2048': 1}, 'ECC': {'ECDH': {'ECDH': 3}, 'ECDSA': {'ECDSA': 3}, 'ECC': {'ECC': 7}}}, 'pq_crypto': {}, 'hash_function': {'SHA': {'SHA2': {'SHA-2': 16}}}, 'crypto_scheme': {'MAC': {'MAC': 3}, 'KA': {'Key Agreement': 1}}, 'crypto_protocol': {}, 'randomness': {'TRNG': {'TRNG': 1}, 'PRNG': {'PRNG': 1}, 'RNG': {'RNG': 3}}, 'cipher_mode': {'ECB': {'ECB': 2}, 'CBC': {'CBC': 2}, 'CTR': {'CTR': 2}, 'CFB': {'CFB': 2}}, 'ecc_curve': {'NIST': {'K-233': 2, 'K-409': 2}}, 'crypto_engine': {}, 'tls_cipher_suite': {}, 'crypto_library': {'Infineon': {'v1.02.013': 39}}, 'vulnerability': {}, 'side_channel_analysis': {'SCA': {'physical probing': 1, 'SPA': 2, 'DPA': 3}, 'FI': {'physical tampering': 1, 'DFA': 3}}, 'technical_report_id': {'BSI': {'BSI TR-02102': 1, 'BSI 18': 1, 'BSI 7148': 1}}, 'device_model': {}, 'tee_name': {}, 'os_name': {}, 'cplc_data': {}, 'ic_data_group': {}, 'standard_id': {'FIPS': {'FIPS186-4': 4, 'FIPS197': 4, 'FIPS180-4': 1}, 'PKCS': {'PKCS #1': 3}, 'BSI': {'AIS 34': 1, 'AIS 31': 2, 'AIS 25': 1, 'AIS 26': 1, 'AIS 36': 2, 'AIS31': 2, 'AIS 35': 1, 'AIS1': 1, 'AIS14': 1, 'AIS19': 1, 'AIS20': 1, 'AIS25': 1, 'AIS26': 1, 'AIS32': 1, 'AIS34': 1, 'AIS35': 1, 'AIS36': 1, 'AIS38': 1, 'AIS46': 1}, 'RFC': {'RFC5639': 4}, 'ISO': {'ISO/IEC 15408': 4, 'ISO/IEC 18045': 4, 'ISO/IEC 17065': 2}}, 'javacard_version': {}, 'javacard_api_const': {}, 'javacard_packages': {}, 'certification_process': {'ConfidentialDocument': {'being maintained, is not given any longer. In particular, prior to the dissemination of confidential documentation and information related to the TOE or resulting from the evaluation and certification': 1, 'M7892 B11 Recertification Common Criteria CCv3.1 EAL6 augmented (EAL6+)”, Infineon Technologies AG (confidential document) [7] Evaluation Technical Report for BSI-DSZ-CC-0782-V5-2020, Version 5, 2020-11-06, “Evaluation': 1, 'Report – ETR (Summary)”, TÜV Informationstechnik GmbH, (confidential document) [8] Security IC Platform Protection Profile, Version 1.0, 15 June 2007, BSI-CC-PP- 0035-2007 7': 1, '“Evaluation Technical Report for composite Evaluation (ETR Comp)”, TÜV Informationstechnik GmbH (confidential document) [11] Configuration list for the TOE, Version 3.0, 2017-09-29, “Configuration Management Scope ALC': 1, 'Common Criteria with Evaluation Assurance Level EAL6 augmented (EAL6+) M7892 B11” (confidential document) [12] SCL78 Symmetric Crypto Library for SCPv3 DES / AES 16-bit Security Controller User Interface': 1, 'Infineon Technologies AG (confidential document) [13] SLE70 Asymmetric Crypto Library for Crypto@2304T RSA / ECC / Toolbox (1.02.013), 2020-10-05': 1, 'Technologies AG (confidential document) [14] SLE70 Asymmetric Crypto Library for Crypto@2304T RSA / ECC / Toolbox (2.07.003), 2019-05-27': 1, 'Technologies AG (confidential document) [15] Crypto@2304T User Manual, 2010-03-23, Infineon Technologies AG [16] 16-bit Controller Family': 1, '70 Programmer’s Reference Manual, 2019-12-03, Infineon Technologies AG (confidential document) [17] M7892 Errata Sheet, 2019-12-18, Infineon Technologies AG [18] M7892 SOLID FLASH Controller': 1, 'Controller Family Hardware Reference Manual, Revision 3.0, 2019-06-24, Infineon Technologies AG (confidential document) [19] AMM Advanced Mode for NRG SAM Addendum to M7892 Hardware Reference Manual, Version 2.0': 1, 'Infineon Technologies AG (confidential document) [20] SLx 70 Family Secure Hash Algorithm SHA-2 (SHA 256/224, SHA 512/384) Library, Version 1.01': 1, 'Infineon Technologies AG (confidential document) [21] M7892 Security Guidelines, 2020-07-17, Infineon Technologies AG (confidential document) [22': 1, '70 Family Production and Personalization User’s Manual, 2015-04-01, Infineon Technologies AG (confidential document) 27 / 31 Certification Report BSI-DSZ-CC-0782-V5-2020 C. Excerpts from the Criteria For the': 1}}}, st_keywords={'cc_cert_id': {}, 'cc_protection_profile_id': {'BSI': {'BSI-PP-0035': 1}}, 'cc_security_level': {'EAL': {'EAL6': 8, 'EAL6+': 4, 'EAL4+': 1, 'EAL 6': 1, 'EAL6 augmented': 4, 'EAL 6 augmented': 1}}, 'cc_sar': {'ADV': {'ADV_SPM': 2, 'ADV_ARC.1': 1, 'ADV_FSP.5': 3, 'ADV_IMP.2': 2, 'ADV_INT.3': 1, 'ADV_TDS.5': 1, 'ADV_SPM.1': 6, 'ADV_IMP': 1, 'ADV_IMP.1': 2, 'ADV_FSP': 1, 'ADV_FSP.4': 4}, 'AGD': {'AGD_OPE.1': 1, 'AGD_PRE.1': 1}, 'ALC': {'ALC_DVS': 1, 'ALC_FLR.1': 11, 'ALC_DVS.2': 3, 'ALC_CMC.5': 3, 'ALC_CMS.5': 3, 'ALC_DEL.1': 1, 'ALC_LCD.1': 1, 'ALC_TAT.3': 1, 'ALC_CMS': 2, 'ALC_CMS.4': 2, 'ALC_CMC': 1, 'ALC_CMC.4': 3}, 'ATE': {'ATE_COV.3': 4, 'ATE_DPT.3': 1, 'ATE_FUN.2': 1, 'ATE_IND.2': 1, 'ATE_COV': 1, 'ATE_COV.2': 3}, 'AVA': {'AVA_VAN.5': 4}, 'ASE': {'ASE_INT': 1, 'ASE_CCL': 1, 'ASE_SPD': 1, 'ASE_OBJ': 1, 'ASE_ECD': 1, 'ASE_REQ': 1, 'ASE_CCL.1': 1, 'ASE_ECD.1': 1, 'ASE_INT.1': 1, 'ASE_OBJ.2': 1, 'ASE_REQ.2': 1, 'ASE_SPD.1': 1, 'ASE_TSS.1': 1, 'ASE_TSS': 1}}, 'cc_sfr': {'FAU': {'FAU_SAS.1': 10, 'FAU_SAS': 4, 'FAU_GEN': 1, 'FAU_SAS.1.1': 1}, 'FCS': {'FCS_RNG.1': 14, 'FCS_RNG': 4, 'FCS_COP': 103, 'FCS_CKM': 74, 'FCS_RNG.1.1': 2, 'FCS_RNG.1.2': 2, 'FCS_COP.1': 30, 'FCS_CKM.4': 39, 'FCS_CKM.1': 41, 'FCS_CKM.2': 6}, 'FDP': {'FDP_ITT.1': 18, 'FDP_IFC.1': 17, 'FDP_ACC.1': 26, 'FDP_ACF.1': 21, 'FDP_SDI.1': 16, 'FDP_SDI.2': 14, 'FDP_ACC.1.1': 1, 'FDP_ACF.1.1': 1, 'FDP_ACF.1.2': 1, 'FDP_ACF.1.3': 1, 'FDP_ACF.1.4': 1, 'FDP_ITC.1': 34, 'FDP_ITC.2': 34, 'FDP_SDI.1.1': 1, 'FDP_SDI.2.1': 2, 'FDP_SDI.2.2': 2}, 'FMT': {'FMT_LIM': 2, 'FMT_LIM.1': 6, 'FMT_LIM.2': 6, 'FMT_MSA.1': 21, 'FMT_MSA.3': 20, 'FMT_SMF.1': 16, 'FMT_SMR.1': 5, 'FMT_MSA.3.1': 1, 'FMT_MSA.3.2': 1, 'FMT_MSA.1.1': 1, 'FMT_SMF.1.1': 1, 'FMT_CKM.4': 1}, 'FPT': {'FPT_TST': 3, 'FPT_TST.2': 33, 'FPT_TST.1': 12, 'FPT_TST.2.1': 2, 'FPT_FLS.1': 19, 'FPT_PHP.3': 25, 'FPT_ITT.1': 18, 'FPT_AMT.1': 1, 'FPT_LIM.2': 1}, 'FRU': {'FRU_FLT.2': 7}}, 'cc_claims': {'O': {'O.RND': 1}, 'T': {'T.RND': 1}}, 'vendor': {'Infineon': {'Infineon Technologies AG': 26, 'Infineon Technologies': 2, 'Infineon': 15}}, 'eval_facility': {}, 'symmetric_crypto': {'AES_competition': {'AES': {'AES': 68}}, 'DES': {'DES': {'DES': 16}, '3DES': {'TDES': 48, 'Triple-DES': 2}}, 'constructions': {'MAC': {'HMAC': 4, 'CBC-MAC': 4}}}, 'asymmetric_crypto': {'RSA': {'RSA2048': 1, 'RSA4096': 1, 'RSA-2048': 1}, 'ECC': {'ECDH': {'ECDH': 11}, 'ECDSA': {'ECDSA': 26}, 'ECC': {'ECC': 16}}, 'FF': {'DH': {'Diffie-Hellman': 9}, 'DSA': {'DSA': 1}}}, 'pq_crypto': {}, 'hash_function': {'SHA': {'SHA2': {'SHA-256': 1, 'SHA-512': 1, 'SHA-2': 70}}}, 'crypto_scheme': {'KA': {'Key Agreement': 3, 'Key agreement': 1}}, 'crypto_protocol': {}, 'randomness': {'TRNG': {'TRNG': 11, 'DTRNG': 1}, 'PRNG': {'PRNG': 6}, 'RNG': {'RND': 2, 'RNG': 9}}, 'cipher_mode': {'ECB': {'ECB': 11}, 'CBC': {'CBC': 11}, 'CTR': {'CTR': 6}, 'CFB': {'CFB': 7}}, 'ecc_curve': {}, 'crypto_engine': {}, 'tls_cipher_suite': {}, 'crypto_library': {'Infineon': {'v1.02.013': 32}}, 'vulnerability': {}, 'side_channel_analysis': {'SCA': {'Leak-Inherent': 11, 'Physical Probing': 2, 'physical probing': 1, 'side-channel': 2, 'side channel': 4, 'SPA': 7, 'DPA': 12}, 'FI': {'Malfunction': 9, 'DFA': 9, 'fault induction': 1}}, 'technical_report_id': {'BSI': {'BSI 1': 2}}, 'device_model': {}, 'tee_name': {}, 'os_name': {}, 'cplc_data': {}, 'ic_data_group': {}, 'standard_id': {'FIPS': {'FIPS 197': 2, 'FIPS 180-4': 1, 'FIPS PUB 197': 3, 'FIPS PUB 180-4': 2, 'FIPS PUB 186-4': 2}, 'NIST': {'SP 800-67': 3, 'SP 800-38A': 6}, 'BSI': {'AIS31': 9}, 'RFC': {'RFC 5639': 2, 'RFC 8017': 1}, 'ISO': {'ISO/IEC 18092': 4, 'ISO/IEC 7816-3': 1, 'ISO/IEC 14888-3': 1, 'ISO/IEC 11770-3': 2, 'ISO/IEC 10118': 2, 'ISO/IEC 18033': 2, 'ISO/IEC14443-3': 1, 'ISO/IEC 97971: 2011': 1}, 'CC': {'CCMB-2017-04-001': 2, 'CCMB-2017-04-002': 2, 'CCMB-2017-04-003': 2, 'CCMB-2012-09-004': 1}}, 'javacard_version': {}, 'javacard_api_const': {}, 'javacard_packages': {}, 'certification_process': {}}, report_filename='0782V5a_pdf.pdf', st_filename='0782V5b_pdf.pdf'),\n", " 'heuristics': CCCertificate.Heuristics(extracted_versions={'2.02.012', '1.01', '2.07.003', '1.02.013'}, cpe_matches={'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'}, verified_cpe_matches=None, related_cves={'CVE-2017-15361'}, cert_lab=['BSI'], cert_id='BSI-DSZ-CC-0782-V5-2020', st_references=References(directly_referenced_by={'BSI-DSZ-CC-1088-2022', 'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, indirectly_referenced_by={'BSI-DSZ-CC-1088-2022', 'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, directly_referencing=None, indirectly_referencing=None), report_references=References(directly_referenced_by={'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, indirectly_referenced_by={'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, directly_referencing={'BSI-DSZ-CC-0782-V4-2018'}, indirectly_referencing={'BSI-DSZ-CC-0782-V3-2017', 'BSI-DSZ-CC-0782-V4-2018', 'BSI-DSZ-CC-0782-V2-2015', 'BSI-DSZ-CC-0782-2012'}), extracted_sars={SAR(family='ASE_CCL', level=1), SAR(family='ASE_INT', level=1), SAR(family='ASE_SPD', level=1), SAR(family='ALC_DEL', level=1), SAR(family='ALC_LCD', level=1), SAR(family='ALC_CMS', level=5), SAR(family='ALC_DVS', level=2), SAR(family='AVA_VAN', level=5), SAR(family='ATE_COV', level=3), SAR(family='ALC_TAT', level=3), SAR(family='ASE_ECD', level=1), SAR(family='ADV_TDS', level=5), SAR(family='ADV_SPM', level=1), SAR(family='ADV_INT', level=3), SAR(family='ATE_IND', level=2), SAR(family='ASE_TSS', level=1), SAR(family='ASE_REQ', level=2), SAR(family='AGD_PRE', level=1), SAR(family='ATE_FUN', level=2), SAR(family='ADV_IMP', level=2), SAR(family='ADV_ARC', level=1), SAR(family='ALC_FLR', level=1), SAR(family='ADV_FSP', level=5), SAR(family='ATE_DPT', level=3), SAR(family='ASE_OBJ', level=2), SAR(family='AGD_OPE', level=1), SAR(family='ALC_CMC', level=5)}, direct_transitive_cves=None, indirect_transitive_cves=None, scheme_data={'cert_id': 'BSI-DSZ-CC-0879-V5-2022', 'product': 'Infineon Security Controller M7893 B11 with optional RSA2048 v2.03.008, SHA-2 V1.01, Toolbox v2.03.008 and with specific IC …', 'vendor': 'Infineon Technologies AG', 'certification_date': '19.10.2022', 'category': 'Smart Cards and similar devices', 'url': 'https://www.bsi.bund.de/SharedDocs/Zertifikate_CC/CC/SmartCards_IC_Cryptolib/0879_0879V2_0879V3_0879V4_0879V5.html', 'enhanced': {'product': 'Infineon Security Controller M7893 B11 with optional RSA2048 v2.03.008, SHA-2 V1.01, Toolbox v2.03.008 and with specific IC dedicated software (firmware)', 'applicant': 'Infineon Technologies AG\\nAm Campeon 1-12\\n85579 Neubiberg', 'evaluation_facility': 'TÜV Informationstechnik GmbH', 'assurance_level': 'EAL6+,ALC_FLR.1', 'protection_profile': 'Security IC Platform Protection Profile, Version 1.0, 15 June 2007, BSI-CC-PP-0035-2007', 'certification_date': '19.10.2022', 'expiration_date': '18.10.2027', 'entries': [{'id': 'BSI-DSZ-CC-0879-V5-2022', 'description': 'and RSA4096 cryptographic library. Beside that the certified scope has been limited: the keygeneration is out of the certified scope.'}, {'id': 'BSI-DSZ-CC-0879-V4-2020', 'description': ') v1.03.006.'}, {'id': 'BSI-DSZ-CC-0879-V3-2018', 'description': 'Certificate'}, {'id': 'BSI-DSZ-CC-0879-V2-2015', 'description': 'Security Target'}, {'id': 'BSI-DSZ-CC-0879-2014-MA-01 (04.12.2014)\\nMaintenancereport / Maintenance Report', 'description': '.'}, {'id': 'BSI', 'description': 'Security Target'}], 'report_link': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Reporte/Reporte08/0879V5c_pdf.pdf?__blob=publicationFile&v=2', 'target_link': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Reporte/Reporte08/0879V5b_pdf.pdf?__blob=publicationFile&v=2', 'description': 'The Target of Evaluation (TOE) is Infineon smart card IC (Security Controller) M7893 B11 with optional Software Libraries RSA2048/4096 v1.03.006, EC v1.03.006, SHA-2 v1.01 and Toolbox v1.03.006 and with specific IC dedicated software. The TOE provides a real 16-bit CPU-architecture and is compatible to the Intel 80251 architecture. The major components of the core system are the two CPUs (Central Processing Units), the MMU (Memory Management Unit) and MED (Memory Encryption/Decryption Unit). The dual interface controller is able to communicate using either the contact based or the contactless interface.\\nThe TOE consists of the hardware part, the firmware parts and the software parts. The software parts are differentiated into: the cryptographic libraries RSA, EC and SHA-2 and the supporting libraries Toolbox and Base. RSA, EC, SHA-2 and Toolbox provide certain functionality to the Smartcard Embedded Software.'}, 'subcategory': 'ICs, Cryptolib'})}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Display attributes of this certificate\n", "vars(cert)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'extracted_versions': {'1.01', '1.02.013', '2.02.012', '2.07.003'},\n", " 'cpe_matches': {'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'},\n", " 'verified_cpe_matches': None,\n", " 'related_cves': {'CVE-2017-15361'},\n", " 'cert_lab': ['BSI'],\n", " 'cert_id': 'BSI-DSZ-CC-0782-V5-2020',\n", " 'st_references': References(directly_referenced_by={'BSI-DSZ-CC-1088-2022', 'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, indirectly_referenced_by={'BSI-DSZ-CC-1088-2022', 'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, directly_referencing=None, indirectly_referencing=None),\n", " 'report_references': References(directly_referenced_by={'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, indirectly_referenced_by={'KECS-ISIS-1139-2021', 'KECS-ISIS-1113-2021', 'KECS-ISIS-1140-2021'}, directly_referencing={'BSI-DSZ-CC-0782-V4-2018'}, indirectly_referencing={'BSI-DSZ-CC-0782-V3-2017', 'BSI-DSZ-CC-0782-V4-2018', 'BSI-DSZ-CC-0782-V2-2015', 'BSI-DSZ-CC-0782-2012'}),\n", " 'extracted_sars': {SAR(family='ADV_ARC', level=1),\n", " SAR(family='ADV_FSP', level=5),\n", " SAR(family='ADV_IMP', level=2),\n", " SAR(family='ADV_INT', level=3),\n", " SAR(family='ADV_SPM', level=1),\n", " SAR(family='ADV_TDS', level=5),\n", " SAR(family='AGD_OPE', level=1),\n", " SAR(family='AGD_PRE', level=1),\n", " SAR(family='ALC_CMC', level=5),\n", " SAR(family='ALC_CMS', level=5),\n", " SAR(family='ALC_DEL', level=1),\n", " SAR(family='ALC_DVS', level=2),\n", " SAR(family='ALC_FLR', level=1),\n", " SAR(family='ALC_LCD', level=1),\n", " SAR(family='ALC_TAT', level=3),\n", " SAR(family='ASE_CCL', level=1),\n", " SAR(family='ASE_ECD', level=1),\n", " SAR(family='ASE_INT', level=1),\n", " SAR(family='ASE_OBJ', level=2),\n", " SAR(family='ASE_REQ', level=2),\n", " SAR(family='ASE_SPD', level=1),\n", " SAR(family='ASE_TSS', level=1),\n", " SAR(family='ATE_COV', level=3),\n", " SAR(family='ATE_DPT', level=3),\n", " SAR(family='ATE_FUN', level=2),\n", " SAR(family='ATE_IND', level=2),\n", " SAR(family='AVA_VAN', level=5)},\n", " 'direct_transitive_cves': None,\n", " 'indirect_transitive_cves': None,\n", " 'scheme_data': {'cert_id': 'BSI-DSZ-CC-0879-V5-2022',\n", " 'product': 'Infineon Security Controller M7893 B11 with optional RSA2048 v2.03.008, SHA-2 V1.01, Toolbox v2.03.008 and with specific IC …',\n", " 'vendor': 'Infineon Technologies AG',\n", " 'certification_date': '19.10.2022',\n", " 'category': 'Smart Cards and similar devices',\n", " 'url': 'https://www.bsi.bund.de/SharedDocs/Zertifikate_CC/CC/SmartCards_IC_Cryptolib/0879_0879V2_0879V3_0879V4_0879V5.html',\n", " 'enhanced': {'product': 'Infineon Security Controller M7893 B11 with optional RSA2048 v2.03.008, SHA-2 V1.01, Toolbox v2.03.008 and with specific IC dedicated software (firmware)',\n", " 'applicant': 'Infineon Technologies AG\\nAm Campeon 1-12\\n85579 Neubiberg',\n", " 'evaluation_facility': 'TÜV Informationstechnik GmbH',\n", " 'assurance_level': 'EAL6+,ALC_FLR.1',\n", " 'protection_profile': 'Security IC Platform Protection Profile, Version 1.0, 15 June 2007, BSI-CC-PP-0035-2007',\n", " 'certification_date': '19.10.2022',\n", " 'expiration_date': '18.10.2027',\n", " 'entries': [{'id': 'BSI-DSZ-CC-0879-V5-2022',\n", " 'description': 'and RSA4096 cryptographic library. Beside that the certified scope has been limited: the keygeneration is out of the certified scope.'},\n", " {'id': 'BSI-DSZ-CC-0879-V4-2020', 'description': ') v1.03.006.'},\n", " {'id': 'BSI-DSZ-CC-0879-V3-2018', 'description': 'Certificate'},\n", " {'id': 'BSI-DSZ-CC-0879-V2-2015', 'description': 'Security Target'},\n", " {'id': 'BSI-DSZ-CC-0879-2014-MA-01 (04.12.2014)\\nMaintenancereport / Maintenance Report',\n", " 'description': '.'},\n", " {'id': 'BSI', 'description': 'Security Target'}],\n", " 'report_link': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Reporte/Reporte08/0879V5c_pdf.pdf?__blob=publicationFile&v=2',\n", " 'target_link': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Reporte/Reporte08/0879V5b_pdf.pdf?__blob=publicationFile&v=2',\n", " 'description': 'The Target of Evaluation (TOE) is Infineon smart card IC (Security Controller) M7893 B11 with optional Software Libraries RSA2048/4096 v1.03.006, EC v1.03.006, SHA-2 v1.01 and Toolbox v1.03.006 and with specific IC dedicated software. The TOE provides a real 16-bit CPU-architecture and is compatible to the Intel 80251 architecture. The major components of the core system are the two CPUs (Central Processing Units), the MMU (Memory Management Unit) and MED (Memory Encryption/Decryption Unit). The dual interface controller is able to communicate using either the contact based or the contactless interface.\\nThe TOE consists of the hardware part, the firmware parts and the software parts. The software parts are differentiated into: the cryptographic libraries RSA, EC and SHA-2 and the supporting libraries Toolbox and Base. RSA, EC, SHA-2 and Toolbox provide certain functionality to the Smartcard Embedded Software.'},\n", " 'subcategory': 'ICs, Cryptolib'}}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Focus on extracted heuristics\n", "vars(cert.heuristics)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Learn how to go from a single vulnerability to all certificates that *may suffer* from the vulnerability" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['BSI-DSZ-CC-0782-V5-2020',\n", " 'BSI-DSZ-CC-0964-V4-2019',\n", " 'BSI-DSZ-CC-0782-V4-2018',\n", " 'BSI-DSZ-CC-0964-V3-2017',\n", " 'BSI-DSZ-CC-0782-V3-2017',\n", " 'BSI-DSZ-CC-0926-V2-2017',\n", " 'BSI-DSZ-CC-0782-V2-2015',\n", " 'BSI-DSZ-CC-0829-V2-2015',\n", " 'BSI-DSZ-CC-0891-2015',\n", " 'BSI-DSZ-CC-0964-2015',\n", " 'BSI-DSZ-CC-0926-2014',\n", " 'BSI-DSZ-CC-0917-2014',\n", " 'BSI-DSZ-CC-0907-2013',\n", " 'BSI-DSZ-CC-0782-2012',\n", " 'BSI-DSZ-CC-0829-2012',\n", " 'BSI-DSZ-CC-0758-2012']" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Search for certificate IDs of certs vulnerable to RoCA CVE (CVE-2017-15361)\n", "roca_cve_id = 'CVE-2017-15361'\n", "df[\"is_vulnerable_to_roca\"] = df.related_cves.map(lambda x: False if pd.isnull(x) else roca_cve_id in x)\n", "df.loc[df.is_vulnerable_to_roca, \"cert_id\"].to_list()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Infineon Technologies AG Infineon Security Controller M7892 B11 with optional RSA2048/4096 v1.02.013 or v2.07.003, EC v1.02.013 or v2.07.003, SHA-2 v1.01, SCL v2.02.012, Base v1.02.013 or v2.07.003, and Toolbox v1.02.013 or v2.07.003 libraries and with specific IC dedicated software (firmware) dgst: 15d68159595eae09\n" ] } ], "source": [ "# Inspect individual certificate that might suffer from RoCA vuln.\n", "print(dataset[\"15d68159595eae09\"])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Given certificates that suffer from ROCA, which certified products reference them?\n", "roca_vulnerable_cert_ids = df.loc[df.is_vulnerable_to_roca, \"cert_id\"].to_list()\n", "df[\"references_roca\"] = df.indirectly_referencing.map(lambda x: False if pd.isnull(x) else any(y in x for y in roca_vulnerable_cert_ids))\n", "\n", "df_roca_affected = df.loc[df.references_roca]" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "🎉 `df_roca_affected` dataframe now holds certified products that reference certified products directly affected by RoCA vulnerability. **Let's take a look**" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cert_idnamestatuscategorymanufacturerschemesecurity_levelealnot_valid_beforenot_valid_after...directly_referenced_byindirectly_referenced_bydirectly_referencingindirectly_referencingextracted_sarsprotection_profilescert_labyear_fromis_vulnerable_to_rocareferences_roca
dgst
6a07be907f66f5d1BSI-DSZ-CC-1147-V2-2023MTCOS Pro 2.5 EAC with PACE / P71D352 (N7121)activeICs, Smart Cards and Smart Card-Related Device...MaskTech International GmbHDE{EAL5+, ALC_DVS.2, AVA_VAN.5}EAL5+2023-02-222028-02-22...{BSI-DSZ-CC-1148-V2-2023}{BSI-DSZ-CC-1148-V2-2023}{BSI-DSZ-CC-1136-V3-2022, BSI-DSZ-CC-1147-2020...{BSI-DSZ-CC-0891-2015, BSI-DSZ-CC-1136-V3-2022...{SAR(family='ASE_CCL', level=1), SAR(family='A...[Machine Readable Travel Document with ICAO Ap...BSI2023FalseTrue
49bcce8117e22c62BSI-DSZ-CC-1148-V2-2023MTCOS Pro 2.5 EAC with PACE / P71D352 (N7121) ...activeICs, Smart Cards and Smart Card-Related Device...MaskTech International GmbHDE{ALC_DVS.2, EAL4+}EAL4+2023-02-222028-02-22...NaNNaN{BSI-DSZ-CC-1147-V2-2023, BSI-DSZ-CC-1136-V3-2...{BSI-DSZ-CC-0891-2015, BSI-DSZ-CC-1136-V3-2022...{SAR(family='ASE_CCL', level=1), SAR(family='A...[Protection Profile for Machine Readable Trave...BSI2023FalseTrue
01cb2ad202b5df12ANSSI-CC-2022/68ACOS-IDv2.1 eMRTD (A) BAC Configuration(Versio...activeICs, Smart Cards and Smart Card-Related Device...Austria Card plastikkarten und Ausweissysteme ...FR{ALC_TAT.2, ALC_FLR.1, EAL4+, ALC_CMS.5, ADV_T...EAL4+2022-12-152027-12-15...NaNNaN{ANSSI-CC-2022/08, BSI-DSZ-CC-1110-V5-2022}{BSI-DSZ-CC-1110-V4-2021, BSI-DSZ-CC-0945-2017...{SAR(family='ALC_FLR', level=1), SAR(family='A...[Protection Profile for Machine Readable Trave...NaN2022FalseTrue
37739e3954762bc2ANSSI-CC-2022/64ACOS-IDv2.1 SSCD (A) CB-Comm (Version 2.1 SSCD...activeICs, Smart Cards and Smart Card-Related Device...Austria Card plastikkarten und Ausweissysteme ...FR{EAL5+, ALC_DVS.2, ALC_FLR.1, AVA_VAN.5}EAL5+2022-12-152027-12-15...NaNNaN{ANSSI-CC-2022/19, BSI-DSZ-CC-1110-V5-2022}{ANSSI-CC-2022/19, BSI-DSZ-CC-0945-2017, BSI-D...{SAR(family='ALC_FLR', level=1), SAR(family='A...[Protection profiles for secure signature crea...NaN2022FalseTrue
a4b7ab85878030d7ANSSI-CC-2022/65ACOS-IDv2.1 SSCD (A) CL-TC-Comm (Version 2.1 S...activeICs, Smart Cards and Smart Card-Related Device...Austria Card plastikkarten und Ausweissysteme ...FR{EAL5+, ALC_DVS.2, ALC_FLR.1, AVA_VAN.5}EAL5+2022-12-152027-12-15...NaNNaN{ANSSI-CC-2022/20, BSI-DSZ-CC-1110-V5-2022}{BSI-DSZ-CC-1110-V4-2021, BSI-DSZ-CC-0945-2017...{SAR(family='ALC_FLR', level=1), SAR(family='A...[Protection profiles for secure signature crea...NaN2022FalseTrue
\n", "

5 rows × 28 columns

\n", "
" ], "text/plain": [ " cert_id \\\n", "dgst \n", "6a07be907f66f5d1 BSI-DSZ-CC-1147-V2-2023 \n", "49bcce8117e22c62 BSI-DSZ-CC-1148-V2-2023 \n", "01cb2ad202b5df12 ANSSI-CC-2022/68 \n", "37739e3954762bc2 ANSSI-CC-2022/64 \n", "a4b7ab85878030d7 ANSSI-CC-2022/65 \n", "\n", " name status \\\n", "dgst \n", "6a07be907f66f5d1 MTCOS Pro 2.5 EAC with PACE / P71D352 (N7121) active \n", "49bcce8117e22c62 MTCOS Pro 2.5 EAC with PACE / P71D352 (N7121) ... active \n", "01cb2ad202b5df12 ACOS-IDv2.1 eMRTD (A) BAC Configuration(Versio... active \n", "37739e3954762bc2 ACOS-IDv2.1 SSCD (A) CB-Comm (Version 2.1 SSCD... active \n", "a4b7ab85878030d7 ACOS-IDv2.1 SSCD (A) CL-TC-Comm (Version 2.1 S... active \n", "\n", " category \\\n", "dgst \n", "6a07be907f66f5d1 ICs, Smart Cards and Smart Card-Related Device... \n", "49bcce8117e22c62 ICs, Smart Cards and Smart Card-Related Device... \n", "01cb2ad202b5df12 ICs, Smart Cards and Smart Card-Related Device... \n", "37739e3954762bc2 ICs, Smart Cards and Smart Card-Related Device... \n", "a4b7ab85878030d7 ICs, Smart Cards and Smart Card-Related Device... \n", "\n", " manufacturer scheme \\\n", "dgst \n", "6a07be907f66f5d1 MaskTech International GmbH DE \n", "49bcce8117e22c62 MaskTech International GmbH DE \n", "01cb2ad202b5df12 Austria Card plastikkarten und Ausweissysteme ... FR \n", "37739e3954762bc2 Austria Card plastikkarten und Ausweissysteme ... FR \n", "a4b7ab85878030d7 Austria Card plastikkarten und Ausweissysteme ... FR \n", "\n", " security_level eal \\\n", "dgst \n", "6a07be907f66f5d1 {EAL5+, ALC_DVS.2, AVA_VAN.5} EAL5+ \n", "49bcce8117e22c62 {ALC_DVS.2, EAL4+} EAL4+ \n", "01cb2ad202b5df12 {ALC_TAT.2, ALC_FLR.1, EAL4+, ALC_CMS.5, ADV_T... EAL4+ \n", "37739e3954762bc2 {EAL5+, ALC_DVS.2, ALC_FLR.1, AVA_VAN.5} EAL5+ \n", "a4b7ab85878030d7 {EAL5+, ALC_DVS.2, ALC_FLR.1, AVA_VAN.5} EAL5+ \n", "\n", " not_valid_before not_valid_after ... \\\n", "dgst ... \n", "6a07be907f66f5d1 2023-02-22 2028-02-22 ... \n", "49bcce8117e22c62 2023-02-22 2028-02-22 ... \n", "01cb2ad202b5df12 2022-12-15 2027-12-15 ... \n", "37739e3954762bc2 2022-12-15 2027-12-15 ... \n", "a4b7ab85878030d7 2022-12-15 2027-12-15 ... \n", "\n", " directly_referenced_by indirectly_referenced_by \\\n", "dgst \n", "6a07be907f66f5d1 {BSI-DSZ-CC-1148-V2-2023} {BSI-DSZ-CC-1148-V2-2023} \n", "49bcce8117e22c62 NaN NaN \n", "01cb2ad202b5df12 NaN NaN \n", "37739e3954762bc2 NaN NaN \n", "a4b7ab85878030d7 NaN NaN \n", "\n", " directly_referencing \\\n", "dgst \n", "6a07be907f66f5d1 {BSI-DSZ-CC-1136-V3-2022, BSI-DSZ-CC-1147-2020... \n", "49bcce8117e22c62 {BSI-DSZ-CC-1147-V2-2023, BSI-DSZ-CC-1136-V3-2... \n", "01cb2ad202b5df12 {ANSSI-CC-2022/08, BSI-DSZ-CC-1110-V5-2022} \n", "37739e3954762bc2 {ANSSI-CC-2022/19, BSI-DSZ-CC-1110-V5-2022} \n", "a4b7ab85878030d7 {ANSSI-CC-2022/20, BSI-DSZ-CC-1110-V5-2022} \n", "\n", " indirectly_referencing \\\n", "dgst \n", "6a07be907f66f5d1 {BSI-DSZ-CC-0891-2015, BSI-DSZ-CC-1136-V3-2022... \n", "49bcce8117e22c62 {BSI-DSZ-CC-0891-2015, BSI-DSZ-CC-1136-V3-2022... \n", "01cb2ad202b5df12 {BSI-DSZ-CC-1110-V4-2021, BSI-DSZ-CC-0945-2017... \n", "37739e3954762bc2 {ANSSI-CC-2022/19, BSI-DSZ-CC-0945-2017, BSI-D... \n", "a4b7ab85878030d7 {BSI-DSZ-CC-1110-V4-2021, BSI-DSZ-CC-0945-2017... \n", "\n", " extracted_sars \\\n", "dgst \n", "6a07be907f66f5d1 {SAR(family='ASE_CCL', level=1), SAR(family='A... \n", "49bcce8117e22c62 {SAR(family='ASE_CCL', level=1), SAR(family='A... \n", "01cb2ad202b5df12 {SAR(family='ALC_FLR', level=1), SAR(family='A... \n", "37739e3954762bc2 {SAR(family='ALC_FLR', level=1), SAR(family='A... \n", "a4b7ab85878030d7 {SAR(family='ALC_FLR', level=1), SAR(family='A... \n", "\n", " protection_profiles cert_lab \\\n", "dgst \n", "6a07be907f66f5d1 [Machine Readable Travel Document with ICAO Ap... BSI \n", "49bcce8117e22c62 [Protection Profile for Machine Readable Trave... BSI \n", "01cb2ad202b5df12 [Protection Profile for Machine Readable Trave... NaN \n", "37739e3954762bc2 [Protection profiles for secure signature crea... NaN \n", "a4b7ab85878030d7 [Protection profiles for secure signature crea... NaN \n", "\n", " year_from is_vulnerable_to_roca references_roca \n", "dgst \n", "6a07be907f66f5d1 2023 False True \n", "49bcce8117e22c62 2023 False True \n", "01cb2ad202b5df12 2022 False True \n", "37739e3954762bc2 2022 False True \n", "a4b7ab85878030d7 2022 False True \n", "\n", "[5 rows x 28 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_roca_affected.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cert_idnamestatuscategorymanufacturerschemesecurity_levelealnot_valid_beforenot_valid_after...directly_referenced_byindirectly_referenced_bydirectly_referencingindirectly_referencingextracted_sarsprotection_profilescert_labyear_fromis_vulnerable_to_rocareferences_roca
dgst
350581534e265186ANSSI-CC-2013/55Plateforme jTOP INFv#46 masquée sur composants...archivedICs, Smart Cards and Smart Card-Related Device...Trusted Logic / InfineonFR{EAL5+, ALC_DVS.2, AVA_VAN.5}EAL5+2013-08-072019-09-01...{ANSSI-CC-2015/25, ANSSI-CC-2013/64}{ANSSI-CC-2015/25, ANSSI-CC-2013/64}{BSI-DSZ-CC-0829-2012}{BSI-DSZ-CC-0829-2012, BSI-DSZ-CC-0728-2011, B...{SAR(family='ALC_DVS', level=2), SAR(family='A...[Java Card™ System Protection Profile Open Con...SERMA2013FalseTrue
\n", "

1 rows × 28 columns

\n", "
" ], "text/plain": [ " cert_id \\\n", "dgst \n", "350581534e265186 ANSSI-CC-2013/55 \n", "\n", " name status \\\n", "dgst \n", "350581534e265186 Plateforme jTOP INFv#46 masquée sur composants... archived \n", "\n", " category \\\n", "dgst \n", "350581534e265186 ICs, Smart Cards and Smart Card-Related Device... \n", "\n", " manufacturer scheme \\\n", "dgst \n", "350581534e265186 Trusted Logic / Infineon FR \n", "\n", " security_level eal not_valid_before \\\n", "dgst \n", "350581534e265186 {EAL5+, ALC_DVS.2, AVA_VAN.5} EAL5+ 2013-08-07 \n", "\n", " not_valid_after ... directly_referenced_by \\\n", "dgst ... \n", "350581534e265186 2019-09-01 ... {ANSSI-CC-2015/25, ANSSI-CC-2013/64} \n", "\n", " indirectly_referenced_by \\\n", "dgst \n", "350581534e265186 {ANSSI-CC-2015/25, ANSSI-CC-2013/64} \n", "\n", " directly_referencing \\\n", "dgst \n", "350581534e265186 {BSI-DSZ-CC-0829-2012} \n", "\n", " indirectly_referencing \\\n", "dgst \n", "350581534e265186 {BSI-DSZ-CC-0829-2012, BSI-DSZ-CC-0728-2011, B... \n", "\n", " extracted_sars \\\n", "dgst \n", "350581534e265186 {SAR(family='ALC_DVS', level=2), SAR(family='A... \n", "\n", " protection_profiles cert_lab \\\n", "dgst \n", "350581534e265186 [Java Card™ System Protection Profile Open Con... SERMA \n", "\n", " year_from is_vulnerable_to_roca references_roca \n", "dgst \n", "350581534e265186 2013 False True \n", "\n", "[1 rows x 28 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Say that you're interested into `ANSSI-CC-2013/55` that was deployed in Estonia. Is it affected? Let's find out.\n", "df_roca_affected.loc[df.cert_id == \"ANSSI-CC-2013/55\"]" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Plot various characteristics of the dataset" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAANICAYAAADZ99V3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAADwIUlEQVR4nOzdZ1gU5/s+/HORKlJVQBQU7NgNMRKNsRBLsLcYibEQTYy9a2JPYou9JJavETX2XoMae4sFC/aKgAUsCASNgHA9L3iYPytokl+Y2dnk/BzHHLozw97X3rO7c+3MXQwiIiAiIiIyIxamDoCIiIjo72ICQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZocJDBEREZkdJjBERERkdixNHYBaMjIycP/+fTg4OMBgMJg6HCIiIvoLRAS///47PD09YWHx+uss/9oE5v79+/Dy8jJ1GERERPR/EBMTg2LFir12+782gXFwcACQWQGOjo4mjoaIiIj+iqSkJHh5eSnn8df51yYwWbeNHB0dmcAQERGZmT9r/sFGvERERGR2mMAQERGR2WECQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZocJDBEREZkdJjBERERkdpjAEBERkdlhAkNERERmhwkMERERmR0mMERERGR2mMAQERGR2WECQ0RERGbH0tQBmFKJ4Tv+8XPcmRSUB5EQERHR38ErMERERGR2mMAQERGR2WECQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZocJDBEREZkdJjBERERkdpjAEBERkdlhAkNERERmhwkMERERmR0mMERERGR2mMAQERGR2WECQ0RERGaHCQwRERGZHSYwREREZHb+dgJz6NAhNGvWDJ6enjAYDNi8eXOOfa5cuYLmzZvDyckJ9vb2ePvttxEdHa1sf/HiBXr16oWCBQuiQIECaNOmDeLi4oyeIzo6GkFBQcifPz/c3NwwZMgQvHz58u+/QiIiIvrX+dsJzLNnz1ClShXMmzcv1+23bt1C7dq1Ua5cORw4cAAREREYNWoUbG1tlX0GDBiAbdu2Yd26dTh48CDu37+P1q1bK9vT09MRFBSE1NRUHDt2DEuXLkVoaChGjx79f3iJRERE9G9jEBH5P/+xwYBNmzahZcuWyroOHTrAysoKy5cv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ERGRGWICQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZocJDBEREZkdJjBERERkdpjAEBERkdlhAkNERERmhwkMERERmR0mMERERGR2mMAQERGR2WECQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZocJDBEREZkdJjBERERkdpjAEBERkdlhAkNERERmhwkMERERmR0mMERERGR2mMAQERGR2WECQ0RERGaHCQwRERGZHSYwREREZHaYwBAREZHZYQJDREREZudvJzCHDh1Cs2bN4OnpCYPBgM2bNyvb0tLSMGzYMFSqVAn29vbw9PTEp59+ivv37xs9R3x8PIKDg+Ho6AhnZ2eEhIQgOTnZaJ+IiAi89957sLW1hZeXF6ZMmfJ/e4VERET0r/O3E5hnz56hSpUqmDdvXo5tz58/x5kzZzBq1CicOXMGGzduxLVr19C8eXOj/YKDg3Hp0iXs2bMH27dvx6FDh9CjRw9le1JSEho2bIjixYsjPDwc33//PcaOHYuFCxf+H14iERER/dsYRET+z39sMGDTpk1o2bLla/c5deoUatSogaioKHh7e+PKlSvw8/PDqVOn4O/vDwAICwvDhx9+iLt378LT0xM//vgjvv76a8TGxsLa2hoAMHz4cGzevBlXr179S7ElJSXByckJiYmJcHR0zHWfEsN3/L0XnIs7k4L+8XMQERFRpr9y/gY0aAOTmJgIg8EAZ2dnAMDx48fh7OysJC8AEBgYCAsLC5w4cULZp06dOkryAgCNGjXCtWvX8PTpU7VDJiIiIp2zVPPJX7x4gWHDhuHjjz9WsqjY2Fi4ubkZB2FpCVdXV8TGxir7+Pj4GO3j7u6ubHNxcclRVkpKClJSUpTHSUlJefpaiIiISD9UuwKTlpaG9u3bQ0Tw448/qlWMYuLEiXByclIWLy8v1cskIiIi01AlgclKXqKiorBnzx6je1geHh54+PCh0f4vX75EfHw8PDw8lH3i4uKM9sl6nLXPq0aMGIHExERliYmJycuXRERERDqS5wlMVvJy48YN/PrrryhYsKDR9oCAACQkJCA8PFxZt2/fPmRkZOCdd95R9jl06BDS0tKUffbs2YOyZcvmevsIAGxsbODo6Gi0EBER0b/T305gkpOTce7cOZw7dw4AEBkZiXPnziE6OhppaWlo27Yt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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2023-05-10T13:14:28.313923\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.6.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Different categories\n", "df.category.value_counts().plot.bar()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2023-05-10T13:14:32.055009\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.6.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Different EAL levels\n", "df.eal.value_counts().plot.bar()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2023-05-10T13:14:34.942664\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.6.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Number of referenced certificates\n", "df[\"n_referencing\"] = df.directly_referencing.map(lambda x: 0 if pd.isnull(x) else len(x))\n", "df.n_referencing.plot.box()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Take a look at the columns and try to plot an attribute of your interest." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Showcase of complicated plots that can be produced with our dataframe\n", "\n", "![alt text](img/boxplot_validity.png \"Title\") ![alt text](img/cves_n_days_after_certification.png \"Title\")" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }