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

未關閉
#14 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
5/5
預估耗時
一週以上
新手友好度
35/100
Issue 類型
文件
描述清晰度
基本清楚
活躍度
冷清
技術堆疊
python

研究方向

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.

由索引模型根據 Issue 內容生成。

描述

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
主要語言
Python
星號
2
分支
2
平均合併
11 分鐘
30 天內合併 PR
2

環境準備

  • 沒有 Dockerfile 或 Docker Compose 檔案
  • 沒有 Pull Request 範本
  • 閱讀貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

ossf/python-secure-coding-guide 的其他 Issue

查看 ossf/python-secure-coding-guide 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。