SOFTWARE
STRCrypt
Secure Trusted Rust Cryptography
한국·국제 표준 암호 알고리즘을 단일 라이브러리에서 제공합니다.
- Linux
- Windows
- cargo
cargo install strcrypt - pip
pip install strcrypt - npm
npm install strcrypt - Maven
com.strcrypt:strcrypt
GitHub 공개와 함께 OS별 CLI 바이너리 · 4개 언어 바인딩 다운로드가 활성화됩니다. 패키지 매니저 명령은 공개 시점 기준 예정 형식입니다.
Architecture
프로젝트 성격
큐비웨어 내부 프로젝트에서 발생하는 평문 데이터 노출 위험을 줄이기 위해 만들었고, 같은 필요가 있는 누구나 쓸 수 있도록 MIT 라이선스로 공개합니다. KCMVP 모듈 인증을 별도로 신청하는 대신 GitHub 소스 공개로 검증 경로를 열어 둡니다. 사용·재배포·내장에 제약이 없으며, 외부 기여(이슈·PR)를 환영하는 OSS 프로젝트로 운영합니다.
해결하려는 문제
한국 정부·공공 환경은 KCMVP 표준(SEED · ARIA · LEA)과 국제 표준 (AES · AEGIS · ASCON)을 함께 다뤄야 합니다. 알고리즘별 라이브러리를 각각 통합·검증하는 비용이 크고, Python · Node.js · Java가 섞인 다언어 환경에서 일관 동작을 보장하기 어렵습니다.
사용법
Rust 코어 라이브러리(libstrcrypt.so·strcrypt.dll)
위에 CLI 바이너리와 3개 언어 바인딩이 같은 API 모양으로 올라갑니다.
모든 바인딩은 동일한 8종 알고리즘과 AAD · 배치 · 병렬 배치 · 파일
스트리밍을 지원합니다.
CLI
# 32바이트 키를 환경 변수에 등록 (릴리스 빌드 필수)
export STRCRYPT_KEY="your-32-byte-secret-key"
# 하드웨어·지원 알고리즘·키 상태 확인
strcrypt info
# 알고리즘 지정 암호화 (기본 출력 파일 strcrypt_enc.bin)
strcrypt -a aria256gcm encrypt "Hello"
# 파일에서 복호화 (알고리즘 자동 감지)
strcrypt decrypt --from-file -i strcrypt_enc.bin Python
import strcrypt
# 기본 암복호화 (AEGIS-128L 기본 알고리즘)
ct = strcrypt.encrypt("안녕하세요")
pt = strcrypt.decrypt(ct)
# 알고리즘 · AAD 지정
ct = strcrypt.encrypt_with_algorithm_and_aad(
"Hello", "aria256gcm", b"context"
)
# 배치 / 병렬 배치
enc = strcrypt.encrypt_batch(["msg1", "msg2"])
enc = strcrypt.encrypt_batch_parallel(["msg1", "msg2"]) Node.js
const strcrypt = require('strcrypt');
// 기본 암복호화
const ct = strcrypt.encrypt("안녕하세요"); // Buffer
const pt = strcrypt.decrypt(ct); // string
// 알고리즘 · AAD 지정
const enc = strcrypt.encryptWithAlgorithmAndAad(
"Hello", "aria256gcm", Buffer.from("ctx")
);
// 배치 / 병렬 배치
const arr = strcrypt.encryptBatch(["msg1", "msg2"]);
const par = strcrypt.encryptBatchParallel(["msg1", "msg2"]); Java
import com.strcrypt.StrCrypt;
import java.util.Arrays;
// 기본 암복호화
byte[] ct = StrCrypt.encrypt("안녕하세요");
String pt = StrCrypt.decrypt(ct);
// 알고리즘 · AAD 지정
byte[] enc = StrCrypt.encryptWithAlgorithmAndAad(
"Hello", "aria256gcm", "ctx".getBytes()
);
// 배치 / 병렬 배치
List<byte[]> arr = StrCrypt.encryptBatch(
Arrays.asList("msg1", "msg2")
); 위는 핵심 호출 패턴 발췌입니다. 알고리즘 자동 감지·AAD·키 래핑(RFC 3394 · 5649)·파일 스트리밍 등 전체 API는 README와 동봉 문서를 참조하세요.
지원 알고리즘 (8종)
KCMVP 검증대상 (3)
- ARIA-256-GCM 한국 KCMVP 표준 블록 암호 + GCM AEAD (라이브러리 기본 검증대상)
- SEED-128-GCM TTAS.KO-12.0004/R1 한국 표준 블록 암호 + GCM
- LEA-128-GCM TTAK.KO-12.0223 한국 경량 블록 암호 (ARX) + GCM
국제 표준 (5)
- AEGIS-128L IETF CFRG, AES-NI 가속 (라이브러리 기본값)
- AEGIS-256 IETF CFRG, 256비트 키 강도
- AES-256-GCM NIST/FIPS 표준, 하드웨어 가속
- AES-256-GCM-SIV Nonce 재사용 안전성
- ASCON-128 NIST SP 800-232 경량 암호 표준
복호화 시 알고리즘은 암호문 헤더에서 자동 감지됩니다.
기능
- 두 운영 모드 — KcmvpApproved · NonApproved (정책에 맞춘 알고리즘 선택 강제)
- 자가시험 게이트 — HASH_DRBG · PBKDF2 · KBKDF
- HMAC-SHA256 모듈 무결성 검증
- 메모리 자동 소거 (Zeroize)
- AAD · 배치 · 병렬 배치 · 파일 스트리밍
- 키 래핑 (RFC 3394 · 5649)
- AES-NI 미지원 CPU에서도 단일 바이너리 동작
사양 · 측정 환경
- 버전
- v0.1.1
- 라이선스
- MIT
- 플랫폼
- Linux · Windows (x86_64)
- 언어 바인딩
- Python · Node.js · Java (네이티브 바인딩)
- 마지막 갱신
- 2026-04
- 처리 성능
- 하드웨어 가속 여부와 데이터 크기에 맞춰 처리 경로를 선택해 암복호화
- 바인딩 호환성
- 단일 Rust 코어를 공유해 Python·Node.js·Java 어디에서 암호화해도 100% 동일한 암호문이 나오고 서로 교차 복호화
보안 · 컴플라이언스
- 라이선스
- MIT (외부 공개 가능 · 상업 이용·재배포 자유)
- 한국 표준
- KCMVP 검증대상 — ARIA-256-GCM · SEED-128-GCM · LEA-128-GCM (TTAS.KO/TTAK.KO)
- 국제 표준
- NIST/FIPS · IETF CFRG · NIST SP 800-232 · RFC 8452
- 동작 모드
- KcmvpApproved (한국 표준 전용) · NonApproved (국제 표준)
- 모듈 인증
- KCMVP 모듈 인증 미취득 — GitHub 소스 공개로 검증 경로 제공 (인증 필수 환경은 도입사 자체 신청 필요)
- 검증
- 통합 테스트 190+ · Criterion 벤치 · cargo-fuzz
- 기술 지원
- 도입사에 정식 배포 채널을 제공하고, 취약점 패치를 포함한 기술 지원을 함께 운영
도입 · 시작하기
- 공식 배포 패키지 수령 및 환경 구성
- CLI 또는 바인딩 임포트 — Python · Node.js · Java
- 모드 선택 — 한국 KCMVP 적용 환경은
KcmvpApproved, 그 외는NonApproved - 운영 적용 — 배치 암복호화 · DB 컬럼 결정적 암호화(SIV) · 파일 스트리밍
리소스
- GitHub 저장소 공개 예정
MIT 라이선스로 누구나 자유롭게 사용·재배포·내장할 수 있습니다. 외부 기여(이슈·PR)도 환영합니다. 실행 패키지 다운로드는 위 Hero의 Download 영역을 참조하세요.
도입을 검토하고 계신가요?
고객 요건과 운영 환경에 맞춰 구성·도입 절차를 안내해 드립니다. 데모·제안 요청은 문의로 받습니다.