암호화 서비스

암호화 서비스 (Cryptographic Services)

이 장에서 설명하는 모듈들은 암호 성격의 다양한 알고리즘을 구현합니다. 이들은 설비(installation)의 재량에 따라 제공됩니다. Python 표준 라이브러리의 암호화 관련 기능을 모아 놓은 개요 장입니다.

출처: Python documentation

본문

이 장은 Python 표준 라이브러리에서 암호화 서비스를 제공하는 모듈들에 대한 목차(탐색 지침) 역할을 합니다. 항목으로는 다음 모듈들이 있습니다.

hashlib — 보안 해시와 메시지 다이제스트

hashlib 모듈은 다양한 보안 해시와 메시지 다이제스트 알고리즘에 대한 공통 인터페이스를 제공합니다. 주요 내용으로는:

  • 해시 알고리즘(Hash algorithms)
  • 사용법(Usage)
  • 생성자(Constructors)
  • 속성(Attributes)
  • 해시 객체(Hash Objects)
  • SHAKE 가변 길이 다이제스트(SHAKE variable length digests)
  • 파일 해싱(File hashing)
  • 키 유도(Key derivation)
  • BLAKE2 (해시 객체 생성, 상수, 예제 - 단순 해싱, 다른 다이제스트 크기 사용, 키 해싱, 무작위 해싱, 개인화, 트리 모드, 크레딧)

hmac — 메시지 인증용 키 해싱

hmac 모듈은 메시지 인증을 위한 키 해싱(Keyed-Hashing)을 구현합니다. HMAC은 메시지 무결성과 인증을 확인하는 데 사용되는 키 기반 해시입니다.

secrets — 비밀 관리용 보안 난수 생성

secrets 모듈은 비밀번호, 계정 인증, 보안 토큰 등 비밀을 관리하기 위한 보안 난수를 생성합니다. 주요 내용:

  • 난수(Random numbers)
  • 토큰 생성(Generating tokens) — 토큰은 몇 바이트를 사용해야 하는가(How many bytes should tokens use?)
  • 기타 함수(Other functions)
  • 레시피와 모범 사례(Recipes and best practices)

이 모듈들은 각자 설비마다 사용 가능 여부가 다를 수 있습니다. 예를 들어 hashlib는 OpenSSL이 사용 가능할 때 더 많은 알고리즘을 제공합니다. 암호화 요구 사항에 맞는 강력한 난수 생성이 필요한 경우 random 모듈 대신 secrets 모듈을 사용하는 것이 좋습니다. secrets는 암호화에 적합한 보안 난수 소스를 사용합니다.

보안과 관련된 실제 애플리케이션을 만들 때는 단순히 알고리즘을 사용하는 것뿐 아니라 키 관리, 엔트로피 소스, 알고리즘 선택 등 보안 전반을 고려해야 합니다. Python 표준 라이브러리의 암호화 모듈은 이런 기본 구성 요소를 제공하지만, 특정 보안 요구 사항에 대해서는 해당 분야의 표준 지침을 따르는 것이 바람직합니다.

더 알아보기 (Learn more)