FE/cookie&session
비밀번호 암호화
develkbh
2024. 2. 23. 12:30
현재 DB
암호화 종류
암호화 종류
암호화 종류(단방향)
특징
- 데이터 무결성을 검증하는 데 주로 사용되며, 패스워드 저장 등에서도 활용
- 단방향이므로 원본 데이터를 복원할 수 없음
- 동일한 데이터에 대해서는 항상 동일한 해시 값이 생성됨 - 서로 다른 데이터에 대해서도 같은 해시 값이 나올 수 있음(충돌)
- 미세한 데이터 변화에도 해시 값은 완전히 다름
- 주로 해시 함수(MD5, SHA-1, SHA-256 등)를 사용하여 구현
해시(Hash)
- 해시(Hash) : 해시 함수에 의해 얻어지는 값
- 해시 함수 ( Hash Function ) = 해시 알고리즘
- 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수
- 키(key) : 매핑 전 원래 데이터 값
- 해시 값 ( hash value ) : 매핑 후 데이터 값
- 해싱 ( hashing ) : 매핑하는 과정
해시함수(해시알고리즘)
SHA-256 (Secure Hash Algorithm 256-bit)
- 256비트 해시 값, 충돌 저항성 및 보안성 높음
- 많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용
SHA-512 (Secure Hash Algorithm 512-bit)
- 512비트 해시 값, 충돌 저항성 및 보안성 높음
- 더 큰 해시 값을 생성하기 때문에 좀 더 안전한 알고리즘
사용하지 않음
- MD5 (Message Digest Algorithm 5): 128비트 해시 값, 충돌 저항성 약함
- SHA-1 (Secure Hash Algorithm 1): 160비트 해시 값, 충돌 저항성 약함
암호화 종류(양방향)
특징
- 데이터의 기밀성을 유지하거나 안전한 통신을 위해 사용
- 공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리 속도를 향상
- HTTPS와 같은 프로토콜로 클라이언트-서버 통신을 보호하여 안전한 웹 통신 을 제공
양방향1. 대칭키 암호화 알고리즘
대칭키 사용: 암호화와 복호화에 동일한 키를 사용하므로 키 관리가 중요!!!
AES(Advanced Encryption Standard)
- 다양한 키(비밀 값)과 블록(암호화할 데이터)을 제공
- 종류: AES-128, AES-192, AES-256
- 빠른 처리 속도, 다양한 플랫폼에서 구현이 용이 • ECB, CBC, CFB, OFB, CTR 등 다양한 운용 모드를 통해 데이터 블록을 처 리
DES (Data Encryption Standard)
- 초기에 개발된 56비트 키와 64비트 블록 크기를 가지는 대칭키
- Triple DES: 3DES는 DES를 여러 번 적용하여 암호화하므로 보안성은 높아지지만, 처리 속도가 느려짐
AES 블록 암호화 운용 모드
- ECB (Electronic Codebook):
- 각 데이터 블록을 독립적으로 암호화
- 같은 입력 블록에 대해 항상 같은 암호문이 생성되기 때문에 패턴이 누출될 수 있음
- 보안성이 낮아 주로 간단한 암호화 작업에서 사용되며, 중복되는 패턴이 없는 데이터 에 적용될 때 더 안전하게 사용
- CBC (Cipher Block Chaining):
- 이전 블록의 암호문과 현재 블록의 평문을 XOR 연산하여 암호화
- 초기 블록은 초기화 벡터(IV)로 암호화
- 이전 블록의 암호문이 현재 블록에 영향을 주기 때문에 같은 평문에 대해 다른 암호문 이 생성되어 패턴이 누출되지 않음
양방향2. 공개키 암호화 알고리즘
두 개의 키: 공개키와 개인키라는 두 개의 키 쌍을 사용
- RSA(Rivest-Shamir-Adleman)
- 종류: RSA-1024, RSA-2048, RSA-3072, RSA-4096
- ECC(Elliptic Curve Cryptography): 타원 곡선을 기반
- 종류: ECC-192, ECC-256, ECC-384
특징
- 공개키는 다른 사람과 공유되며, 개인키는 오직 소유자만 알고 있어야 함
- ECC는 작은 키 길이로도 강력한 보안성을 제공하며, RSA는 대칭키 암호화보 다 복잡하지만 효율적으로 사용
Crypto
Crypto 암호화
- createHash(algorithm)
- 지정한 해시 알고리즘을 사용하여 해시 객체를 생성
- pbkdf2Sync(password, salt, iterations, keylen, digest)
- 비밀번호 기반 키 도출 함수를 동기적으로 실행
- createCipheriv(algorithm, key, iv) / createDecipheriv(algo rithm, key, iv)
- 대칭키 암호화와 복호화를 위한 객체를 생성
Crypto 암호화
Crypto 암호화
- base64 : 64개의 가능한 문자로 데이터를 인코딩하는 방식 64개의 문자 중 62개는 영문 대소문자와 10진수 숫자로 구성, 나머지 두 개의 문자는 인코딩과 디코딩 과정에서 추가적인 문자로 사용
- hex: 16진수 인코딩 16진수?각 숫자는 0-9까지는 숫자로, 10-15까지는 a부터 f까지의 문자로 구성
해시함수 한계! 레인보우 테이블?
암호화 보완법
- salt
- 입력한 값에 salt라는 특정 값을 붙여 변형시키는 것
- 해시 함수 반복
- 해시 함수를 여러 번 돌려 본래의 값을 예측하기 어렵게 만드는 것
Crypto 암호화:단방향
- 비밀번호 기반 키 도출 함수 (PBKDF: Password-Based Key Derivation Function) : 버퍼반환
- 주로 사용자 비밀번호를 저장할 때 사용
Crypto 검증
Crypto 암호화:양방향
Crypto 복호화:양방향
Bcrypt
- 비밀번호를 암호화하는 알고리즘 중 하나
- Blowfish 암호를 기반으로 설계된 암호화 함수
- 현재까지도 사용 중인 가장 강력한 매커니즘임과 동시에 해싱이 느리고 비 용이 많이 든다.
- 강력한 보안이 필요할 때 적합
Bcrypt 암호화
Bcrypt 암호화