Notice
Recent Posts
Recent Comments
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

topcue

Python PyCryptodome - Crypto Packages 본문

Python

Python PyCryptodome - Crypto Packages

topcue 2021. 1. 14. 09:22

파이썬 암호화 패키지 PyCrypto, PyCryptodome, PyCryptodomex


PyCrypto

PyCrypto(Python Cryptography Toolkit) 모듈은 2004년에 정식 버전이 배포된 오래된 암호화 모듈이다.

하지만 pip에는 2013년 10월 18일에 마지막 버전인 pycrypto 2.6.1을 배포한 이후 더이상 업데이트되지 않고 있다.

github에는 2014년 6월 20일에 마지막으로 커밋된 코드를 찾아볼 수 있다.

게다가 block_templace.cALGnew 함수에서 임의 코드 실행 공격이 가능한 힙 버퍼 오버플로우 취약점이 발견되어 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



'Python' 카테고리의 다른 글

Python Yacht-Dice  (0) 2021.01.15
Python Curve25519 generate shared secret  (0) 2021.01.15
Python AES CTR Set IV  (0) 2021.01.14
파이썬 가상 실행 환경  (0) 2019.12.06
Comments