파이썬 암호화 패키지 PyCrypto, PyCryptodome, PyCryptodomex
PyCrypto
PyCrypto
(Python Cryptography Toolkit) 모듈은 2004년에 정식 버전이 배포된 오래된 암호화 모듈이다.
하지만 pip에는 2013년 10월 18일에 마지막 버전인 pycrypto 2.6.1을 배포한 이후 더이상 업데이트되지 않고 있다.
github에는 2014년 6월 20일에 마지막으로 커밋된 코드를 찾아볼 수 있다.
게다가 block_templace.c
의 ALGnew
함수에서 임의 코드 실행 공격이 가능한 힙 버퍼 오버플로우 취약점이 발견되어 CVE-2013-7459에 등록되었다.
이 취약점에 대한 패치를 발표하지 않고 더이상의 업데이트도 찾아 볼 수 없다.
그래서 PyCrypto
를 계승한 PyCryptodome
을 사용하길 권장한다.
PyCryptodome
PyCryptodome
은 PyCrypto를 fork하여 제작된 거의 동일한(drop-in replacement) 모듈이다.
즉 기존 프로그램에서 사용하던 PyCrypto를 정말 그대로 사용할 수 있도록 도와준다.
그래서 파이썬 코드에서 import 할 때도 Crypto
를 import 한다.
PyCryptodomex
PyCryptodome을 사용하다보면 PyCryptodomex
라는 패키지도 찾아볼 수 있다.
PyCryptodomex는 PyCryptodome의 standalone 버전이다.
PyCrypto와 PyCryptodome을 동시에 사용할 때 발생할 수 있는 문제(이름 등) 등을 회피하기 위해 만들어진 패키지다.
PyCryptodomex
를 설치한 경우 Cryptodome
을 import 해야 한다.
pip install
PyCryptodome을 설치하는 경우
pip install pycryptodome
PyCryptodomex를 설치하는 경우
pip install pycryptodomex
import in python
- PyCryptodome을 사용하는 경우
import Crypto
# ex)
from Crypto.Cipher import AES
- PyCryptodomex을 사용하는 경우
import Cryptodom
# ex)
from Cryptodome.Cipher import AES
Usage
솔직히 암호마다 usage를 모두 모아두고 싶지만 변형이 너무 많다.
게다가 같은 암호 기술이라해도 사용할 때마다 그 용법이 조금씩 달라서 별 의미가 없다.
따라서 회사 업무나 CTF, 프로젝트 등 파이썬 암호 패키지를 사용한 코드를 조금씩 모아볼 계획이다.
참고
PyCrypto:
https://www.dlitz.net/software/pycrypto/
PyCrypto pip:
https://github.com/pycrypto/pycrypto
PyCrypto github:
https://pypi.org/project/pycrypto/
CVE-2013-7459:
https://security-tracker.debian.org/tracker/CVE-2013-7459
PyCryptodome vs PyCryptodomex:
https://stackoverflow.com/questions/48155294/what-is-pycryptodomex-and-how-does-it-differ-from-pycryptodome
Uploaded by Notion2Tistory v1.1.0