2013-04-23 2 views
1

내 데스크탑 Java 앱은 사람들이 열어 볼 수없는 여러 개의 읽기 전용 SQLite 데이터베이스를 사용합니다. 일반적으로 이것은 암호화를 통해 수행 될 수 있지만 현재 암호화를 지원하지 않으며 다른 SQLite 암호화 라이브러리 (예 : SEE)를 사용하는 것을 허용하지 않는 sqlite4java 라이브러리를 사용하고 있습니다. 내가 할 노력하고있어SQLite 데이터베이스 암호화에 대한 대안

는 이러한 데이터베이스 파일 중 하나를 발견하고 그들을 열 수있는 '캐주얼 해커 "에 대한 가능한 한 어렵게 만들 것입니다. 예를 들어 누군가 암호로 보호 된 ZIP 파일에 그들을 찔러 넣은 다음 here과 같은 라이브러리를 사용하여 InputStream 또는 임시 파일로 즉시 암호를 해독한다는 아이디어를 던졌습니다.

이것은 가치있는 일입니까?

편집 : 이것은 완벽하게 안전하지 않을 것이며, 충분히 헌신 된 해커가 여전히 키를 찾고 해독 할 수 있음을 알았습니다. (이는 그러한 프로그램의 취약점처럼 보입니다).

+0

http://stackoverflow.com/a/5877130/1296660 – Supericy

+0

경우 프로그램에서 암호를 얻을 수 있습니까? 데이터베이스와 함께 배송됩니까? – Thilo

+0

데이터베이스의 크기는 어느 정도입니까? 그들을 메모리에 완전히로드 할 수 있습니까? – Thilo

답변

3

"가능한 한 어렵게 만드는 것입니다."

당신은 아마 자신 가능한 등이 어려운하고 있습니다.

일반 사용자는 응용 프로그램 바이너리를 열지 않습니다. 애플리케이션 바이너리를 여는 사람들은 암호화 키를 찾을 수있는 도구를 가지고 있습니다.

방금 ​​데이터베이스 파일 "공유지-IO-3.2.1.jar"대신 "mydb.sqlite3을"이름, 무명을 통해 보안에 종사하려는 경우

. 아무런 문제가 없지만 여전히 "캐주얼 해커"를 던졌습니다.

+0

사용자가 의미하는 바가 APK를 열지 못했습니다. 인증 된 공개 키의 핵심은 사람들이 파일을 열지 못하게하는 것입니다. – Thunderforge

+0

죄송합니다. Android 패키지 (APK)에 대해 이야기하고 있다고 생각했습니다. EXE 또는 JAR로 바꾸거나 프로그램을 발송하십시오. – Thilo

+0

맞아, 나는 누군가가 응용 프로그램 바이너리를 열지 못하게한다는 것을 알고있다. 나는 파일의 이름을 바꾸는 것보다 조금 더 안전한 것을 원했다. 그것을 EXE로 묶는 것은 이것을 만족시킬 것입니다, 그러나 그것은 관리하기위한 고통처럼 보입니다. – Thunderforge

0

SQLite DB를 암호로 보호하는 대신 응용 프로그램 APK와 함께 제공하지 않고 첫 번째 실행시 콘텐츠를 다운로드하여 암호화하고 해독 할 필요가 없으며 APK가 더 가볍습니다.

은 또한 당신의 DB는 여전히 강렬한 해커에 의해 해킹 할 수있다, 기억하십시오.

+0

데이터베이스를 즉시 다운로드하는 것은 옵션이 아닙니다 (사용자가 인터넷에 연결되어 있지 않을 수도 있음). 이는 데스크탑 응용 프로그램에서 사용되며 전화 (적어도 현재는)에서 사용되지는 않습니다. 또한 필자는 일단 파일을 열면 컴퓨터에있는 사람과 더 관련이 있습니다. – Thunderforge

+1

또한 사람들은 java를 디 컴파일하여 수행 한 작업과 수행 방법을 볼 수 있으므로 모호함을 통해 보안에 의존하지 마십시오. –

+0

sqlite3 명령에서 데이터베이스 파일을 열고보기 만하면 자바 코드를 디 컴파일하고 키를 검색하는 데 더 많은 노력을 기울이지 않겠습니까? – Thunderforge