단방향/양방향
1. 단방향
암호화 O / 복호화 X
ex) 비밀번호 등
- MD5: 보안에 취약해서 사용하지 X
- SHA: hash로 만든는 것
- HMACSHA (기존 SHA + key를 통해 해시값 도출)
- SALT: 복호화 불가 (다른 해시값을 뽑을 수는 있다.)
- 키 관리가 어렵다
- 데이터 관리를 잘해야하는데 DB가 제거되면 데이터 무의미 해짐 그래서 여러개의 db에 백업해서 관리해야하는데 비용과 유지보수가 어렵다.
2. 양방향
암호화 O / 복호화 O
ex) 핸드폰 번호, 이메일, 평문의 데이터가 필요한 경우
AES/CBC(블럭 암호화 방식) /PKCS5Padding(padding기법) 방식 -> vi 벡터 방식이다.
대칭키
: 암/복호화 할 때 키가 동일하다. (키 관리가 어려움)
속도가 빠른대신 보안이 약하다
- DES: 뚤려서 사용 X
- AES: DES의 향상된 버전으로 숫자가 높을수록 라운드를 많이 돌려 보안향상
ex) 휴대폰, 이메일, 장비 계정 pw 등 장비 복호화를 하기 때문에
- 128(10)
- 152(12)
- 256(14) JAVA8부터 사용 가능
- SEED
- ARIA
비대칭키
: 암/복호화 할 때 키가 다르다.
속도가 대칭키보다 느리지만 보안에 강하다
- RSA (현재 SSL이 RSA 형태로 만들어졌다)
좋은 정보 얻어갑니다, 감사합니다.