XE 공식 자료실

제작자
기진곰
등록일
2015-06-05
다운로드 수
94
링크2
kijin/xe-encryption

XE 모듈이나 애드온 개발자가 편리하고 안전하게 사용할 수 있는 대칭키(AES) 및 비대칭키(RSA) 암호화 루틴을 제공하는 모듈입니다. 모듈 설정 페이지에서 암호화 키를 생성한 후, 암호화 기능이 필요한 모듈이나 애드온에서 직접 호출하면 됩니다.

라이선스
LGPL v2
설치경로
./modules/encryption
최초 등록일
2015-03-14
전체 다운로드
944
체험하기

쉬운설치로 바로 체험할 수 있습니다

상세 설명

주의: XE 추가기능 개발자들을 위한 모듈입니다. 암호화 기능이 필요한 소스코드에서 호출하여 쓸 수 있습니다. 이 모듈을 설치하는 것만으로 자동으로 암호화가 되지는 않습니다.

대칭키 암호화를 사용하려면 mcrypt 모듈이 필요하며, 비대칭키 암호화를 사용하려면 openssl 모듈이 설치되어 있어야 합니다. 키는 서버의 난수 생성기를 사용하여 자동으로 생성되며, DB 또는 별도의 파일에 저장하도록 설정할 수 있습니다.

 

AES 암호화 예제

    $plaintext = '내일 오후 3시에 아지트에서 만나자';
    $oEncryption = getModel('encryption');
    $ciphertext = $oEncryption->aesEncrypt($plaintext);

    $ciphertext = '암호화된 문자열';
    $oEncryption = getModel('encryption');
    $plaintext = $oEncryption->aesDecrypt($ciphertext);

그 밖의 예제 및 주의사항은 GitHub 페이지의 README.md 파일을 참고하시기 바랍니다.

 

업데이트 내역

버전 1.1에서는 mcrypt 모듈의 잘못된 블록 크기 선택 및 널바이트 패딩 버그를 우회하는 코드를 적용하였으며, 평문을 불필요하게 압축하지 않도록 변경하였습니다.

1.0 버전에서 암호화한 데이터는 1.1 버전에서도 아무 문제 없이 복호화가 가능하나, 1.1 버전에서 암호화한 데이터는 1.0 버전에서 복호화할 수 없으니 주의하시기 바랍니다.

여러 사이트 사이에 데이터를 공유하는 경우, 모두 1.1 버전으로 업데이트해야 합니다.

 

포럼 2

로그인 후 작성할 수 있습니다.
  • 2015-06-05 15:49:03 제작자 기진곰

    @뽁쓰베베 base64 인코딩에 사용되는 특수문자는 +, /, = 이렇게 3가지밖에 없습니다. 3가지 모두 xss와는 전혀 무관하고, 심지어 인젝션 공격 방어를 위한 escape 처리조차 해줄 필요가 없는 안전한 문자들입니다. 만약 에러가 난다면 어딘가 다른 모듈에서 특수문자를 거부하고 있거나, 해당 테이블이 암호화한 데이터를 저장하기에 부적합한 형태로 되어 있는 듯 합니다. 그러나 이런 문제는 어떤 정보를 암호화해서 어느 테이블에 저장하고 어느 모듈과 연동하느냐에 따라 달라질 수 있으므로 제가 도와드릴 수 있는 부분이 아닙니다.

  • 2015-06-05 15:41:24 뽁쓰뻬베

    안녕하세요. 먼저 좋은 자료 감사드립니다.
    다름이 아니라 해당건 적용해서 사용해보니 암호화된 문자열에서
    AECA0m1EtTtSDO1mSowkNTy7nwpmxK0LzfPKT4+jiteiSR+2HLVJwDNby2kdxL5Dr8RM
    등의 특수문자가 사용되다보니 암호화이후 실제 db insert에서 xss로 인식되어 에러가 납니다.
    base64_encode도 해보았는데 맨뒤에 '=='가 붙어서 마찬가지구요.
    다른 방법이 있을까요?