본문 바로가기
Database

H2 암호화 데이터베이스 연결하기

by jayden-lee 2019. 4. 22.
728x90

데이터베이스 파일 암호화

H2는 데이터베이스 파일을 암호화 할 수 있는 기능을 제공한다. 암호화 알고리즘은 총 3가지이다.

 

  • AES : also known as Rijndael, only AES-128 is implemented.
  • XTEA : the 32 round version.
  • FOG : pseudo-encryption only useful for hiding data from a text editor.

데이터베이스 파일 암호화를 사용하기 위해서는 데이터베이스에 연결할 때, 암호화 알고리즘 설정파일 암호를 지정해야 한다.

암호화 된 데이터베이스 생성

URL에 지정한 데이터베이스가 없으면 기본적으로 자동으로 데이터베이스를 새로 생성한다. 암호화 된 데이터베이스를 생성하기 위해서는 이미 로컬에 존재하는 것처럼 URL에 설정하고 사용하면 된다.

암호화 된 데이터베이스 연결

데이터베이스 접속 URL에 암호화 알고리즘을 설정하고, 파일 암호는 암호 필드에 지정한다. 파일 암호는 사용자 암호 앞에 설정하는 것을 유의해야 한다. 그리고 두 암호 사이에 공백은 필수적으로 있어야 한다. 공백을 기준으로 파일 암호화 사용자 암호를 구분하기 때문이다. 그래서 파일 암호 자체에는 공백이 있으면 안된다.

String url = "jdbc:h2:~/test;CIPHER=AES";
String user = "sa";
String pwds = "filepwd userpwd";
conn = DriverManager.getConnection(url, user, pwds);

데이터베이스 암호화 or 복호화

앞에서 살펴본 암호화는 처음 데이터베이스를 생성하는 시점에 암호화를 적용했다. 기존에 있는 데이터베이스를 암호화 하기 위해서는 ChangeFileEncryption 툴을 사용해야 한다. 이 툴을 이용하면 데이터베이스를 암호화 및 복호화를 할 수 있으며, 파일 암호화 키를 변경할 수 있다. 커맨드 환경 또는 자바 코드에서 다음과 같은 코드를 실행하면 된다.

 

다음 코드는 유저 홈 디렉토리에서 파일 암호 filepwd와 암호화 알고리즘 AES를 사용해서 test 데이터베이스를 암호화 한다.

java -cp h2*.jar org.h2.tools.ChangeFileEncryption -dir ~ -db test -cipher AES -encrypt filepwd
ChangeFileEncryption.execute("~", "test", "AES", decryptPassword, encryptPassword, false);

댓글