D-08: 안전한 암호화 알고리즘 사용
분류: DBMS
중요도: 상
개요
점검 내용
해시 알고리즘 SHA-256 이상의 암호화 알고리즘을 사용하는지 점검
점검 목적
안전한 해시 알고리즘 사용으로 데이터의 기밀성 및 무결성을 보장하고, 사용자 인증을 강화하기 위함
보안 위협
SHA-1이나 MD5와 같은 오래된 알고리즘 사용 시 공격자의 무차별 대입 공격 등으로 비밀번호 유추가 가능하며, 데이터 변조 및 유출의 위험이 존재함
참고
-
점검 대상 및 판단 기준
대상
Oracle DB, MSSQL, MySQL, Tibero, PostgreSQL 등
판단 기준
✅ 양호: 해시 알고리즘 SHA-256 이상의 암호화 알고리즘을 사용하고 있는 경우
❌ 취약: 해시 알고리즘 SHA-256 미만의 암호화 알고리즘을 사용하고 있는 경우
조치 방법
SHA-256 이상의 암호화 알고리즘 적용
조치 시 영향
일반적인 경우 영향 없음
점검 및 조치 사례
Oracle DB
Step 1) SQL*Plus 쿼리를 통한 암호화 알고리즘 확인
Step 2) sqlnet.ora 파일 수정
sqlnet.ora 파일 기본 경로
- Unix/Linux :
$ORACLE_HOME/network/admin/sqlnet.ora - Windows :
%ORACLE_HOME%\network\admin\sqlnet.ora
Oracle DB 알고리즘
- 10G (MD5)
- 11G (SHA-1)
- 12C (SHA-512, AES)
MSSQL
Step 1) 저장된 비밀번호 해시 값 확인
참고
MSSQL 2012이상에서 사용자 계정의 비밀번호는 32bit Salt를 적용한 SHA-512 해시 알고리즘을 사용
[일반 이용자 패스워드 해시 알고리즘 변경]
Step 1) 데이터베이스 접속
Step 1) 열 추가
Step 2) 새로운 열에 암호화 된 데이터 저장
Step 3) 기존 열 제거
MySQL
Step 1) 계정별 암호화 알고리즘 확인
[mysql 5.7]
mysql> SELECT user, host, plugin FROM mysql.user;
-- 또는
mysql> SELECT host, user, plugin, password AS authentication_string FROM mysql.user;
[mysql 8.0]
mysql> SELECT user, host, plugin FROM mysql.user;
-- 또는
mysql> SELECT host, user, plugin, authentication_string FROM mysql.user;
Step 2) 비밀번호 및 암호화 알고리즘 설정
[mysql 5.7]
- user 생성 시 적용
- 기존 user 적용
참고
mysql 5.7에서는 기본적으로 mysql_native_password 플러그인이 사용되므로 별도의 지정이 필요하지 않음
[mysql 8.0]
- user 생성 시 적용
- 기존 user 적용
참고
- mysql v8.0 이상부터 암호화 알고리즘으로
caching_sha2_password(SHA-256)가 적용됨 - mysql v5.7 버전에서 사용하던 데이터베이스를 8.0으로 업그레이드하여
mysql_native_password플러그인이 유지되는 경우 위와 같이caching_sha2_password알고리즘을 지정하여 적용할 수 있음
Tibero
Step 1) 쿼리문을 통한 암호화 알고리즘 확인
Step 2) 암호화 알고리즘 적용
PostgreSQL
Step 1) psql 접속 후 계정별 암호화 알고리즘 확인
Step 2) 명령어를 통한 알고리즘 적용
- user 생성 시 적용
- 기존 user 적용
참고
default 설정으로 SCRAM-SHA-256 암호화 알고리즘이 적용
peer 인증 방식
로컬에서만 연결이 가능하며 OS에서 클라이언트의 OS 사용자 이름을 얻고 요청한 데이터베이스 사용자 이름과 일치하는지 확인하는 인증 방식