암호 알고리즘은 되돌릴 수 있는가로 먼저 나뉜다. 암호문을 원문으로 되돌릴 수 있으면 양방향(암호화), 되돌릴 수 없으면 단방향(해시)이다. 양방향은 다시 키가 하나인 대칭키와 키가 둘인 비대칭키로 나뉜다. 실제 프로토콜(TLS · SSH · VPN)은 이 셋을 조합한다 — 비대칭키로 상대를 확인하고 세션 키를 합의한 뒤, 대칭키로 데이터를 암호화하고, 해시(MAC)로 위변조를 잡는다.
어떤 알고리즘을 골라야 하는지는 TLS 1.3 이 허용하는 목록[1]이 좋은 기준이다. 거기서 빠진 것(RC4 · 3DES · MD5 · SHA-1 서명 · RSA 키 교환)은 새로 쓰지 않는다.
암호화한 데이터를 복호화할 수 있다. 통신 · 저장 데이터의 기밀성에 쓴다.
암호화 키와 복호화 키가 같다. 빠르고 큰 데이터에 알맞지만, 키를 상대와 안전하게 나눠 갖는 문제가 남는다 — 그것을 푸는 것이 비대칭키와 키 교환이다.
| 알고리즘 | 상태 | 비고 |
|---|---|---|
| AES (128 · 256) | 현행 표준 | GCM 모드(AES-GCM)가 암호화와 인증을 함께 한다. TLS 1.3 · OpenVPN · 디스크 암호화 |
| ChaCha20-Poly1305 | 현행 | AES 하드웨어 가속이 없는 장치에서 빠르다. TLS 1.3 · WireGuard · OpenVPN 2.5+ |
| 3DES · DES | 쓰지 않는다 | 블록이 64비트라 취약(Sweet32). TLS 1.3 에서 제외 |
| RC4 | 쓰지 않는다 | RFC 7465 로 TLS 에서 금지 |
암호화 키(공개키)와 복호화 키(개인키)가 다르다. 공개키는 누구에게나 주고 개인키만 지키면 되므로 키 배포 문제가 없다. 대신 느려서 세션 키 합의 · 전자서명에만 쓰고 본문 암호화에는 쓰지 않는다.
| 알고리즘 | 용도 | 비고 |
|---|---|---|
| RSA[2] | 서명 · (구식) 키 교환 | 2048비트 이상. 인증서 서명에 아직 가장 흔하다. 키 교환 용도는 TLS 1.3 에서 제외 |
| ECDSA · EdDSA(Ed25519) | 서명 | 같은 강도에 키가 짧고 빠르다. SSH 키 · 최신 인증서 |
| Diffie-Hellman · ECDHE | 키 교환 | 세션마다 새 키(ephemeral)를 합의해 전방 비밀성(PFS)을 준다. 아래 하위 문서 |
한 번 계산하면 원본을 되돌릴 수 없다. 데이터 무결성 검증, 비밀번호 저장, 전자서명의 입력에 쓴다.
| 알고리즘 | 상태 | 비고 |
|---|---|---|
| SHA-256 · SHA-384 · SHA-512 (SHA-2) | 현행 | 인증서 서명 · TLS · 파일 검증. RHEL 9 는 서명에 SHA-1 을 거부한다 |
| SHA-3 | 현행 | SHA-2 의 대안. 아직 널리 쓰이지는 않는다 |
| BLAKE2 · BLAKE3 | 현행 | 빠르다. WireGuard(BLAKE2s) |
| SHA-1 | 서명에 쓰지 않는다 | 충돌 공격이 실증됐다. git 의 내부 식별자처럼 무결성 확인 용도만 남아 있다 |
| MD5 | 쓰지 않는다 | 충돌이 쉽다. 파일 체크섬 정도만 |
전송 · 저장 중 우연한 손상을 잡기 위한 짧은 값이다. CRC32 처럼 암호학적 강도가 없는 것도 포함한다. 배포 파일의 sha256sum 은 체크섬으로도, 해시로도 부른다.
sha256sum openldap-2.7.1.tgz
# 배포처가 공개한 값과 같은지 본다
비밀번호 저장에는 일반 해시가 아니라 느리게 설계된 KDF 를 쓴다 — Argon2id · bcrypt · scrypt · PBKDF2. OpenLDAP 의 slappasswd 는 기본으로 salted SHA({SSHA})를 만들지만 -h '{ARGON2}' 로 바꿀 수 있다.
RFC 8446 — TLS 1.3, Appendix B.4 Cipher Suites. 2026-09-20 확인. https://www.rfc-editor.org/rfc/rfc8446.html ↩︎
RFC 8017 — PKCS #1: RSA Cryptography Specifications v2.2. 2026-09-20 확인. https://www.rfc-editor.org/rfc/rfc8017.html ↩︎