대칭 vs 비대칭 암호화: 핵심 차이점 설명
대칭 암호화와 비대칭 암호화를 쉬운 말로 비교합니다. 각각의 작동 원리와 현대 파일 전송에서의 조합 방법.
대칭 암호화는 암호화와 복호화에 하나의 키를 사용합니다 — 파일 전송 중 파일을 보호하는 AES-256-GCM이 대표적입니다. 비대칭 암호화는 키 쌍을 사용합니다: 누구나 볼 수 있는 공개 키와 본인만 보유하는 개인 키, RSA-4096과 Curve25519 같은 알고리즘이 여기에 해당합니다. 대칭은 빠르지만(현대 CPU에서 초당 기가바이트) 양측이 같은 비밀을 공유해야 합니다. 비대칭은 키 교환 문제를 해결하지만 1,000배 느립니다. HexaTransfer, Tresorit, Proton Drive, SwissTransfer 같은 현대 파일 전송 서비스는 모두 두 가지를 함께 사용합니다: 비대칭으로 대칭 키를 교환하고, 대칭으로 실제 파일을 암호화합니다.
단일 키의 세계: 대칭 암호화
대칭 암호는 양방향에 같은 키를 사용합니다. 키 K로 파일을 암호화하면 상대방도 키 K가 있어야 복호화할 수 있습니다. 현재 사용 중인 주요 대칭 알고리즘은 다음과 같습니다.
- AES(Rijndael): 128, 192, 256비트 키, FIPS 197로 표준화.
- ChaCha20: 256비트 키, AES-NI 하드웨어 가속이 없는 기기에서 선호.
- 3DES: 2023년 NIST가 폐기, 사용 금지.
처리량이 큰 장점입니다. AES-256-GCM은 Intel AES-NI에서 코어당 약 3~5 GB/s, ChaCha20-Poly1305는 ARM 스마트폰에서 1.5~3 GB/s로 실행됩니다. 10 GB 파일 암호화가 수 초 안에 완료됩니다.
문제점: 상대방에게 키를 어떻게 전달할까요? 이메일로 보내면 목적이 무의미해집니다. 이것이 키 배포 문제이며, 비대칭 암호화가 존재하는 이유입니다.
두 키의 세계: 비대칭 암호화
1976년 Diffie와 Hellman이 발명하고, 1977년 Rivest, Shamir, Adleman이 RSA로 구현했습니다. 각 사용자는 키 쌍을 갖습니다: 공개적으로 배포하는 공개 키와 비밀로 유지하는 개인 키. 공개 키로 암호화된 것은 개인 키로만 복호화할 수 있고, 그 반대도 마찬가지입니다.
비밀 파일을 전송하려면 수신자의 공개 키로 암호화하면 됩니다. 수신자의 개인 키만이 열 수 있으며, 발신자는 어떤 비밀도 미리 공유할 필요가 없습니다. 키 배포 문제가 해결됩니다.
현재 비대칭 알고리즘:
- RSA-2048 또는 RSA-4096: 느리지만 범용 지원, TLS 인증서에 사용.
- 타원 곡선(ECDH, ECDSA): P-256, P-384, Curve25519 곡선 사용. 256비트 EC 키가 3072비트 RSA 키와 동등한 보안성.
- Ed25519: 서명의 현대 기본값, SSH와 Signal이 사용.
비대칭 암호화가 파일에 너무 느린 이유
비대칭 수학 연산은 비쌉니다. RSA-4096 암호화는 현대 CPU에서 초당 약 100~500회 연산을 처리합니다. 각 연산은 약 470바이트(RSA 블록 크기에서 패딩 제외)를 처리합니다. 이는 초당 약 200 KB — AES-256-GCM보다 약 50,000배 느립니다. 10 GB 파일을 RSA로 암호화하려면 약 14시간이 걸립니다. AES-256-GCM으로는 약 3초면 됩니다.
하이브리드 암호화: 실제 세계의 접근법
속도와 보안이 모두 필요한 모든 프로토콜은 두 가지를 결합합니다. TLS 1.3, PGP, Signal, Age, 그리고 모든 신뢰할 수 있는 파일 전송 서비스가 이 패턴을 사용합니다.
- 발신자가 무작위 256비트 AES 키("세션 키" 또는 "파일 키")를 생성합니다.
- 파일을 해당 키로 AES-256-GCM 암호화합니다.
- AES 키 자체를 수신자의 공개 키로 암호화합니다(RSA-OAEP 또는 ECIES).
- 암호문과 암호화된 키 모두 수신자에게 전달됩니다.
- 수신자가 개인 키로 AES 키를 복호화한 뒤 파일을 복호화합니다.
비대칭 비용은 수신자당 한 번, 256비트 키에 대해서만 지불합니다. 대용량 파일은 전속력으로 대칭 처리됩니다.
파일 전송 서비스의 차이점
브라우저 기반 전송 서비스는 수신자가 키 쌍이 없을 수 있다는 문제가 있습니다. 세 가지 패턴이 이를 처리합니다.
- 공유 링크 대칭만 사용: SwissTransfer, HexaTransfer, Firefox Send 계승자. 발신자 브라우저에서 무작위 AES-256 키를 생성하여 URL fragment에 삽입하고, 수신자 브라우저가 fragment에서 읽습니다. 비대칭 암호화 불필요 — fragment가 채널입니다.
- 계정 간 비대칭: Tresorit, Proton Drive. 가입 시 사용자에게 RSA 또는 ECC 키 쌍을 생성합니다. 특정 수신자에게 공유되는 파일은 수신자의 공개 키로 래핑됩니다.
- 패스워드를 이용한 하이브리드: 많은 서비스. URL fragment에 솔트가 포함되고, 사용자가 패스워드를 입력하면 PBKDF2 또는 Argon2id가 대칭 키를 파생합니다.
공유 링크 방식은 가장 단순하고 계정 없는 수신자에게도 작동합니다. 계정 기반 비대칭은 링크를 잃어도 키가 유출되지 않으므로 더 강력합니다.
디지털 서명: 비대칭 암호화의 또 다른 역할
비대칭 암호화는 대칭이 할 수 없는 것을 합니다: 작성자 증명. 개인 키로 파일에 서명하면 공개 키를 가진 누구나 서명을 검증할 수 있으며, 서명 이후 변조되지 않았음을 알 수 있습니다.
사용 중인 서명 알고리즘:
- RSA-PSS with SHA-256: 레거시이지만 광범위하게 지원.
- ECDSA on P-256 or P-384: NIST 승인, 미국 연방 시스템에 사용.
- Ed25519: 빠르고 결정론적, 불량 RNG에 저항. 현대적 선택.
키 크기와 보안 수준
고전 컴퓨터에 대한 동등 보안 수준 변환표:
- 128비트 대칭 = 3072비트 RSA = 256비트 EC(P-256 또는 Curve25519)
- 192비트 대칭 = 7680비트 RSA = 384비트 EC(P-384)
- 256비트 대칭 = 15360비트 RSA = 512비트 EC(P-521)
미래 양자 컴퓨터에 대해 대칭 키는 Grover 알고리즘으로 강도가 절반으로 감소하지만, RSA와 ECC는 Shor 알고리즘으로 완전히 깨집니다. NIST는 2024년 FIPS 203~205에서 후양자 대안(ML-KEM, ML-DSA)을 표준화했습니다.
언제 어떤 것을 사용할까
실용적인 결정 가이드:
- 개인 파일 암호화(백업, 보관): Argon2id를 통한 강력한 패스워드의 대칭 AES-256-GCM. 비대칭 불필요.
- 알려진 수신자에게 파일 전송: 하이브리드 — 파일에 AES-256-GCM, 세션 키 래핑에 공개 키.
- 다수의 수신자에게 전송: 파일을 AES로 한 번 암호화하고, 각 수신자의 공개 키로 키를 별도 래핑.
- 발신자 증명: 암호문에 대한 Ed25519 서명.
- 링크를 통한 일회성 공유: URL fragment에 키가 있는 대칭.
hexatransfer.com에서 사용해 보세요 — 무료, 계정 불필요, 최대 10GB.
엔드투엔드 암호화로 대용량 파일을 안전하게 전송
엔드투엔드 암호화로 최대 10GB의 파일을 무료로 전송하세요. 계정이 필요하지 않습니다. 업로드 전에 브라우저에서 파일이 암호화되어 다른 사람은 읽을 수 없습니다.
파일 보내기