안녕하세요. 복사장🍗입니다.
오늘은 RDB중 무료로 사용할 수 있는 MariaDB의 암호화에 대해서 알아보겠습니다.
가입된 사용자의 개인정보를 보호하기 위해 개인정보인 고유식별정보(주민등록번호, 여권번호, 운전면허번호, 외국인등록번호), 비밀번호, 바이오정보를 DB에 저장하는 경우에는 반드시 암호화하여 저장해야 합니다.
암호화 하는 알고리즘도 여러 종류가 있는데 정부에서는 안전한 알고리즘을 권고하고 있습니다.
개인정보 암호화 관련하여 아래 파일을 참조하세요.
👇👇👇개인정보의 암호화 조치 안내서 by 한국인터넷진흥원👇👇👇
그외 기타 개인정보 이름, 이메일, 전화번호, 주소등의 정보도 필요할 경우 암호화하여 저장해서 사용합니다. 이 경우에는 복호화가 필요하므로 양방향 알고리즘(SHA)을 사용합니다.
어떤 정보가 개인정보인지는 아래 사이트에서 정확히 확인할 수 있습니다.
개인정보보호 > 개인정보보호 개관 > 개인정보보호제도 알아보기 > 개인정보보호의 개념 (본문) |
개인정보, 개인정보의 유형, 개인정보보호 원칙, 정보주체, 개인정보처리자, 공공기관
easylaw.go.kr
MariaDB에서는 단방향 알고리즘은 SHA1에서 512까지 지원하고 있으며
양방향 알고리즘은 AES128을 지원하고 있습니다.
단방향이라는 말은 암호화하면 복호화할 수 없다는 의미이고요, 양방향은 키를 이용해 암호화한 후 다시 키로 복호화할 수 있다는 의미입니다.
그럼 실제 어떻게 사용하는지 알아보겠습니다.
1. 양방향(대칭키) 알고리즘 - 암호화
AES_ENCRYPT
Encrypts a string with the AES algorithm.
mariadb.com
AES_ENCRYPT 함수를 사용하면 됩니다.
select AES_ENCRYPT(str,key_str);
* str : 암호화할 문자열
* key_str : 암호화 키
암호화 실행 예제
select AES_ENCRYPT('암호화 컬럼 텍스트','doit1_key');
결과)SQa�a�oO|筶�u�'bh�ukCk�
select HEX(AES_ENCRYPT('암호화 컬럼 텍스트','doit1_key'));
결과)531B5161E3B602610BE26F4F7CE7ADB6DE75BF270C626818F1756B436BE90311
AES_ENCRYPT함수만 호출하면 깨진 문자열로 보여서 보통 HEX함수로 한번 더 감싸서 변환해서 DB에 저장합니다.
2. 양방향(대칭키) 알고리즘 - 복호화
AES_DECRYPT
Decryption data encrypted with AES_ENCRYPT
mariadb.com
AES_DECRYPT 함수를 사용하면 됩니다.
AES_DECRYPT(crypt_str,key_str)
* crypt_str : 암호화 문자열
* key_str : 암호화 키
복호화 실행 예제
select AES_DECRYPT('SQa�a�oO|筶�u�bh�ukCk�', 'doit1_key');
결과)암호화 컬럼 텍스트
select AES_DECRYPT(UNHEX('531B5161E3B602610BE26F4F7CE7ADB6DE75BF270C626818F1756B436BE90311'), 'doit1_key');
결과)암호화 컬럼 텍스트
UNHEX함수로 감싼 후 복호화 실행합니다.
3. 단(일)방향 알고리즘
SHA2
Calculates an SHA-2 checksum.
mariadb.com
SHA2 함수를 사용합니다.
SHA2(str, hash_len)
* str : 암호화할 문자열
* hash_len : 해쉬 길이 224, 256, 384 또는 512, 0은 256에 해당
SHA1이나 PASSWORD함수도 단방향 암호화를 지원하나 정부에서 권하는 알고리즘 방식이 아니라 사용하지 않는게 좋겠습니다.
보통 256이 속도나 안정성에서 좋다고 하지만 성능이슈가 없을 경우엔 512로 하셔도 무방할 듯 합니다.
SELECT SHA2('Maria',224);
+----------------------------------------------------------+
| SHA2('Maria',224) |
+----------------------------------------------------------+
| 6cc67add32286412efcab9d0e1675a43a5c2ef3cec8879f81516ff83 |
+----------------------------------------------------------+
SELECT SHA2('Maria',256);
+------------------------------------------------------------------+
| SHA2('Maria',256) |
+------------------------------------------------------------------+
| 9ff18ebe7449349f358e3af0b57cf7a032c1c6b2272cb2656ff85eb112232f16 |
+------------------------------------------------------------------+
SELECT SHA2('Maria',0);
+------------------------------------------------------------------+
| SHA2('Maria',0) |
+------------------------------------------------------------------+
| 9ff18ebe7449349f358e3af0b57cf7a032c1c6b2272cb2656ff85eb112232f16 |
+------------------------------------------------------------------+
4. 결론
개인정보인 고유식별정보는 SHA2사용, 그외 개인정보는 AES_ENCRYPT, AES_DECRYPT를 사용하세요.
도움이 되셨다면 아래 공감, 구독 한번 눌러주세요. 궁금한 점은 댓글로 남겨주세요.
감사합니다.
😄
'프로그래밍' 카테고리의 다른 글
GIT 다운로드 / 설치 방법 / 개념 (6) | 2020.10.27 |
---|---|
Spring Boot Gradle 시작하기 - 1. 개발환경 구성, 서버 시작 (17) | 2020.10.24 |
vs code 설치 / 한글 / 한글깨짐 / 단축키 (7) | 2020.10.19 |
Gradle 사용법 / 설치 / 기본 개념 (2) | 2020.10.17 |
[JAVA-openJDK]자바 다운로드 설치방법 / 버전확인 (1) | 2020.10.14 |