pySCG section 09 Cryptography: providing building blocks in context with sign, encrypt, key-handling

Ouverte
#14 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Documentation
Clarté
Plutôt claire
Activité
Calme
Stack technique
python

Piste de recherche

Read the existing section 08 rule pyscg-0056 and the linked 07 Concurrency introduction for the guide’s structure. The issue proposes a new 09 Cryptography introduction and individual rules, including moving pyscg-0053 and adding several cryptography topics, but does not identify files or define the final scope. Done means the section provides shared concepts and building-block guidance for sign, encrypt, key handling, and the related rules.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

The write up of new rule pyscg-0056: Verify Downloaded Code Before Running It currently in section 08_coding_standard showed us that

  • new designers don't understand some of the key concepts such as 'payload' and 'digest'.
  • complexity of using signed software as per 0056 is actually to impractical without additional python modules.

So we need to explain cryptographic basic concepts in 09_Cryptography and also unload complexity from 0056 and move 0053 under section 09.

Historically we have seen similar need for crypto blocks during pyscg-0023: Secure Deserialization we decided that we don't want partial explanations for an overall solution to sign, encrypt, key-handling in individual rules. Instead we want to create of find a introduction to how security can work in Python explaining 'building block' on the road to overall security solutions in the new 09 Cryptography section consisting of:

  • A introduction page explaining common concepts across all rules in the section similar to what we do in 07 Concurrency
  • Details and examples on 'building blocks' in individual rules

Related issues:

On how to create a learning resource consider:

Suggested Building blocks for rules in 09 Cryptography:

Building block / rule Stdlib? + Refs
09 Cryptography - Introduction
Introduces the security goals and mental model for the section: confidentiality, integrity, authenticity, trust anchoring, safe composition, and why the rules build from primitives toward signed software and provenance.
No

- If It Ain't Broken, Do Fix It
- Security and Cryptography Algorithms in Python
pyscg-0038: Use Sufficiently Random Values
Cryptographically secure randomness for tokens, nonces, and secret material
Yes

- PEP 506
- secrets
TODO — pyscg-0057: Use Cryptographic Hashes for Integrity Checks
Digest computation, file integrity checks, and pinned-digest verification as a minimal integrity mechanism
Yes

- hashlib
TODO — pyscg-0058: Compare Security-Critical Values in Constant Time
Constant-time comparison during verification; this is comparison hygiene, not HMAC itself
Yes

- hmac
TODO — pyscg-0059: Use Keyed Message Authentication for Shared-Secret Integrity
MAC/HMAC, shared-secret authenticity and integrity, and why this does not solve publisher provenance or public software distribution
Yes

- hmac
- hashlib
TODO — pyscg-0060: Derive Keys Securely from Passwords
PBKDF2 / scrypt, salts, work factors, and deriving keys from passwords instead of using raw passwords directly
Yes

- hashlib
TODO — pyscg-0061: Use TLS with Certificate Validation on Network Interfaces
Normal TLS client/server use on application interfaces: CA trust, hostname validation, presenting certificates on service interfaces, and basic mutual TLS concepts
Yes

- ssl
TODO — pyscg-0062: Use Authenticated Encryption Instead of Ad-Hoc Encryption Plus Integrity
AEAD and why confidentiality and integrity should be combined in a single construction instead of assembled ad hoc
No

- cryptography AEAD
TODO — pyscg-0063: Use Digital Signatures for Publisher-Verifiable Authenticity
Signatures vs HMAC, public/private key model, and authenticity for software distributed to many consumers
No

- cryptography asymmetric algorithms
TODO — pyscg-0064: Validate X.509 Certificates and Chains Outside TLS Handshakes
Standalone certificate parsing, certificate-chain inspection, path validation, trust anchors, and policy checks outside a live TLS handshake
No

- cryptography X.509 tutorial
- cryptography X.509 verification
TODO — pyscg-0065: Verify Package Provenance and Publisher Identity with Index-Hosted Attestations
PEP 740, PyPI attestations, publisher identity, provenance objects, and package-index-level verification of signed software
No

- PEP 740
- PyPI attestations docs
- pypi-attestations
TODO — pyscg-0066: Verify Attestation Signatures and Transparency Evidence
DSSE envelopes, signing certificates, transparency log entries, trust roots, and verification policy underlying attestation systems
No

- PEP 740
- PyPI attestations docs
- Sigstore
Langage dominant
Python
Étoiles
2
Forks
2
Merge moyen
11 min
PR mergées (30 j)
2

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ossf/python-secure-coding-guide

Toutes les issues de ossf/python-secure-coding-guide

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.