좋아, 나는 다음과 같은 과정을 지금 내 문제를 해결 :
내가 HSQLDB를 사용하는 지금의 내장 (복어 같은 등) AES-128 암호화를 지원합니다. HSQLDB는 열린 연결이 존재하는 동안 다른 파일을 생성합니다.
HSQLDB의 암호화 메커니즘이 사용되면 파일은 생성 된 개인 키로 암호화됩니다. 생성은 각 실행시 개별 32 자 너비의 키를 만듭니다.
이 키와 파일을 보호하기 위해 전체 폴더를 데이터베이스 파일과 함께 zip 파일로 압축합니다. 다음 단계에서는 사용자가 로그인 화면에 입력 한 비밀번호로이 파일을 암호화합니다. 이 암호는 물리적으로 저장되지 않습니다. 암호화/복호화를 위해서는 Bouncy Castle Java Cryptography API의 AES 구현을 사용합니다.
암호화 세부 설명 : 1. AES 용 KeyGenerator로 SecureRandom-Class 및 데이터 암호화 키 (DEK, 16 바이트)를 사용하여 무작위 초기화 벡터 (IV; 16 바이트), 소금 (8 바이트)을 생성하십시오. 2. 입력 된 암호와 소금을 사용하여 32 바이트 길이의 PBKDF2 키를 생성하고 확인 키 (VK; 16 바이트)와 키 암호화 키 (KEK; 16 바이트)로 분할합니다. 3. 데이터베이스 파일을 저장하는 폴더를 zip 파일로 압축하고이 파일의 바이트를 DEK 및 AES 공급자로 암호화합니다. 4. AES 공급자가 KEK 및 IV를 사용하여 DEK를 암호화합니다. 5. 암호화 된 zip 파일의 시작 부분에 IV, Salt, DEK 및 VK를 저장하십시오. 데이터베이스 내부 암호화를 추가로 사용하면 zip 파일에도 저장되는 CRYPT_KEY가 발생합니다.
결국 나는 응용 프로그램이 종료 될 때마다 데이터베이스 파일을 삭제합니다.
이 프로세스의 취약성을 줄이기위한 제안 사항이 있으면 제발 hestitate로 작성하십시오. 설명 된 프로세스의 보안 측면을 개선하는 방법에 대한 아이디어를 얻으 려한다면 정말 대단합니다!