728x90
반응형
- 데이터베이스는 많은 애플리케이션에서 핵심 역할을 하지만, 민감한 정보를 담고 있을 경우 무단 접근 시 치명적인 문제가 발생할 수 있습니다.
- 특히 모바일 앱, IoT 기기, 또는 로컬 파일로 저장되는 데이터베이스는 물리적 복제나 탈취 위험이 큽니다.
SQLCipher
는 이러한 위험을 해결해 주는SQLite
기반 데이터베이스 전체 암호화 솔루션 입니다.SQLite
의 가벼움과 투명성을 유지하면서,AES-256
암호화 기술을 적용하여 저장 데이터를 보호합니다.
AES-256
비트 암호화 : 데이터베이스 전체 파일을 암호화합니다.SQLite API
와 완벽 호환 : 기존SQLite
프로젝트에 손쉽게 적용 가능합니다.PBKDF2
키 스트레칭 : 무차별 대입 공격에 강한 암호화 키 파생 기법 적용.- 멀티 플랫폼 지원 :
iOS
,Android
,Windows
,macOS
,Linux
환경에서 사용 가능. - 가벼운 설치 및 유연한 빌드 : 다양한 환경에서 쉽게 컴파일 및 적용 가능.
SQLCipher
는 BSD-3-Clause 라이선스 로 배포됩니다.- 기업 및 상업 프로젝트에서도 무료로 사용 및 배포가 가능합니다만, 다음 조건을 지켜야 합니다:
- 저작권 및 라이선스 고지 포함
- 저작권 표시 유지
- 보증 면책 조항 포함
- 다만, 법적 확약이 필요하거나 상업용 지원, 기술 컨설팅, SLA 서비스 등이 필요한 경우,
- Zetetic (
SQLCipher
개발사)에서 유료 라이선스 및 지원 계약(연간 약$6,000 USD
부터)을 체결할 수 있습니다.
- Zetetic (
-
bash
# 빌드 도구 준비 (Ubuntu 인 경우) sudo apt-get install tcl autoconf automake libtool # SQLCipher 소스 코드 얻기 git clone https://github.com/sqlcipher/sqlcipher.git # 빌드 및 설치 cd sqlcipher ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" make sudo make install
- A. 준비
Visual Studio
(C++
개발 도구 포함)ActiveState Tcl
(또는 다른Tcl
배포판)OpenSSL
빌드 또는prebuilt
라이브러리SQLCipher
소스
- B. 빌드 순서
-
- 필요한 라이브러리 준비
OpenSSL Windows prebuilt
버전을 다운로드하여lib
와include
경로 준비
-
SQLCipher
소스 다운로드
-
bash
git clone https://github.com/sqlcipher/sqlcipher.git
-
- 명령 프롬프트(또는
PowerShell
)에서nmake
사용 준비
Visual Studio
개발자 명령 프롬프트 실행
- 명령 프롬프트(또는
-
- 환경 변수 설정
-
cmd
set PATH=C:\Path\To\OpenSSL\bin;%PATH% set INCLUDE=C:\Path\To\OpenSSL\include;%INCLUDE% set LIB=C:\Path\To\OpenSSL\lib;%LIB%
-
- 빌드 실행
-
cmd
cd sqlcipher nmake -f Makefile.msc
-
- 빌드 결과
sqlcipher.exe
실행 파일 및 관련 라이브러리(sqlite3.dll
,sqlite3.lib
) 생성
-
- C.
Visual Studio IDE
로 빌드sqlite3.c
와sqlite3.h
(sqlcipher
소스코드 포함)를Visual Studio
프로젝트에 추가C/C++ > Preprocessor
설정에SQLITE_HAS_CODEC
추가C/C++ > Additional Include Directories
에 OpenSSLinclude
경로 추가Linker > Additional Library Directories
에 OpenSSLlib
경로 추가Linker > Input > Additional Dependencies
에libcrypto.lib
추가- 빌드 실행 후 생성된
.dll
과.lib
및exe
파일 사용
- 초기 암호 설정
-
sql
PRAGMA key = '암호';
-
- 암호 변경
-
sql
PRAGMA rekey = '새로운암호';
-
주의:
rekey
는 기존 암호가 올바르게 적용된 상태에서만 성공합니다.
-
ruby
pod 'SQLCipher', '~> 4.5'
-
bash
pod install
-
swift
import SQLite3 var db: OpaquePointer? if sqlite3_open("경로/데이터베이스.db", &db) == SQLITE_OK { let key = "암호" sqlite3_key(db, key, Int32(key.utf8.count)) if sqlite3_exec(db, "SELECT count(*) FROM sqlite_master;", nil, nil, nil) == SQLITE_OK { print("암호 적용 및 열기 성공") } }
-
gradle
dependencies { implementation 'net.zetetic:android-database-sqlcipher:4.5.6@aar' }
-
proguard
-keep class net.sqlcipher.** { *; }
-
java
SQLiteDatabase.loadLibs(context); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databaseFile, "암호", null); db.execSQL("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT);"); db.close();
SQLCipher
는 민감한 데이터를 안전하게 보호하면서도 SQLite의 장점을 그대로 가져올 수 있는 강력한 도구입니다.- 기업 및 개인 개발자 모두 자유롭게 사용할 수 있으며, 필요 시 상업용 라이선스를 통한 안정적인 지원도 가능합니다.
- 직접 빌드와 적용 과정도 비교적 간단하며,
iOS
및Android
에서의 통합 또한 공식 라이브러리로 잘 지원됩니다.
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
728x90
반응형
'DB' 카테고리의 다른 글
Oracle Trigger (1) | 2024.11.13 |
---|---|
Oracle INNER JOIN, OUTER JOIN (0) | 2024.11.13 |
DBCLI (0) | 2019.11.05 |
NoSQL 주요 DB 비교: CouchDB와 MongoDB의 차이점과 활용성 (0) | 2011.08.04 |
Membase 서버의 기본 네트워크 소켓 포트 (0) | 2011.07.19 |