본문 바로가기

SOFTWARE

STRCrypt

Secure Trusted Rust Cryptography

한국·국제 표준 암호 알고리즘을 단일 라이브러리에서 제공합니다.

v0.1.1갱신 2026-04Rust 코어 + Python · Node.js · Java 바인딩 · MIT

Download v0.1.1 준비 중
  • Linux x86_64 · .tar.gz
  • Windows x86_64 · .zip
  • cargo cargo install strcrypt
  • pip pip install strcrypt
  • npm npm install strcrypt
  • Maven com.strcrypt:strcrypt

GitHub 공개와 함께 OS별 CLI 바이너리 · 4개 언어 바인딩 다운로드가 활성화됩니다. 패키지 매니저 명령은 공개 시점 기준 예정 형식입니다.

Architecture

구성도단일 Rust 코어가 모든 알고리즘 구현을 소유하고, 4개 채널(CLI · 3개 언어 바인딩 · RDBMS SQL 함수)로 노출된다. KcmvpApproved 모드는 ARIA/SEED/LEA만 허용하고, NonApproved 모드에서 AEGIS·AES·ASCON을 추가로 사용한다.
핀치/휠로 확대 · 드래그로 이동 · 더블탭/더블클릭으로 리셋

프로젝트 성격

큐비웨어 내부 프로젝트에서 발생하는 평문 데이터 노출 위험을 줄이기 위해 만들었고, 같은 필요가 있는 누구나 쓸 수 있도록 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 경량 암호 표준

복호화 시 알고리즘은 암호문 헤더에서 자동 감지됩니다.

기능

사양 · 측정 환경

버전
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
기술 지원
도입사에 정식 배포 채널을 제공하고, 취약점 패치를 포함한 기술 지원을 함께 운영

도입 · 시작하기

  1. 공식 배포 패키지 수령 및 환경 구성
  2. CLI 또는 바인딩 임포트 — Python · Node.js · Java
  3. 모드 선택 — 한국 KCMVP 적용 환경은 KcmvpApproved, 그 외는 NonApproved
  4. 운영 적용 — 배치 암복호화 · DB 컬럼 결정적 암호화(SIV) · 파일 스트리밍

리소스

  • GitHub 저장소 소스 공개 공개 예정

MIT 라이선스로 누구나 자유롭게 사용·재배포·내장할 수 있습니다. 외부 기여(이슈·PR)도 환영합니다. 실행 패키지 다운로드는 위 Hero의 Download 영역을 참조하세요.

도입을 검토하고 계신가요?

고객 요건과 운영 환경에 맞춰 구성·도입 절차를 안내해 드립니다. 데모·제안 요청은 문의로 받습니다.