
오늘은 알아두면 좋을 개념인 단방향/양방향 암호화에 대해 알아보도록 하겠다!
일단 암호화란? 평문을 특정 키를 사용하여 해독할 수 없는 형태로 변경하는 것을 뜻한다.
단방향 암호화 : 평문을 암호화하는 것은 가능하지만 암호문을 평문으로 복호화할 수 없는 기법이다.
대표적으로 Hash와 MAC이 있다.
1. Hash : 임이의 길이 메시지로부터 고정길이의 Hash 값을 계산한다. 단방향 암호화이므로 Hash값으로부터 역산할 순 없으며 이를 일방향성을 갖는다라고 말한다.
메시지가 다르면 Hash값도 달라지는 특성으로 인해 Hash함수를 무결성 확인의 용도로 사용하기도 한다.
메시지가 1비트라도 변화했다면 해시값은 높은 확률로 다른 값이어야 하기 때문이다. 만약, 각각 다른 메시지가 같은 Hash값을 갖게 된다면 이것을 충돌이라고 한다.
대표적인 알고리즘으로 MD5, SHA-256/512등이 있다.
약점
- Rainbow Table Attack : 미리 Hash값들을 계산해 놓은 테이블을 통해 역산한다.
- 처리속도가 최대한 빠르도록 설계된 Hash함수의 속성 때문에 공격자는 매우 빠른 속도로 임의 문자열의 다이제스트와 해킹할 다이제스트를 비교할 수 있다. 이 말은 공격자가 패스워드를 알아내는데 긴 시간이 소모되지 않는다는 말이다.
보완법
- Salting : 실제 비밀번호 이외에 추가적으로 랜덤 데이터들을 더해서 Hash값을 계산한다.
- Key Stretching : 단방향 Hash값을 계산한 후 그 Hash값을 계속 Hash해나간다. 해킹이 힘들도록 시간을 끄는 것이다.
2. MAC : 임이 길이의 메시지와 송수신자가 공유하는 키를 기반으로 하는 고정 길이의 출력값을 계산하는 함수로 출력한 값을 MAC이라고 한다. 메시지 인증 코드는 메시지의 무결성을 확인하고 메시지에 대한 인증을 할 때 사용된다.
MAC 알고리즘은 메시지와 키를 이용해 MAC값을 구하고 송신자는 메시지에 MAC값을 끼워 보낸다. 수신자는 받은 메시지와 본인의 키로 MAC 알고리즘을 통해 MAC값을 구하고 송신자가 보낸 MAC값과 일치하는지 확인한다.
이를 통해 메시지의 데이터 인증과 더불어 무결성을 보호한다.
양방향 암호화 : 암호화된 데이터에 대한 복호화가 가능한 암호화 방식으로, 대표적으로 대칭키, 공개키 암호화 방식이 있다.
1. 대칭키 : 암복호화키가 동일하며 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있게 한다. 대표적인 알고리즘으로 DES, 3DES, AES, SEED, ARIA 등이 있다.
장점
- 공개키 암호화 방식에 비해 속도가 빠르다.
단점
- 키를 교환해야 하는 문제가 발생한다.
- 키를 교환하는 중에 탈취될 수 있다.
- 사람이 증가할수록 관리해야 할 키가 방대해진다.
2. 공개키 : 키가 공개되어 있으므로 키를 교환할 필요가 없어지며 공개키는 모든 사람이 접근 가능한 키이고, 개인키는 각 사용자만이 가지고 있는 키이다.
장점
- 공개키는 공개되어 있으므로 키 교환이나 분배를 할 필요가 없다.
- 개인키를 가지고 있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로 일종의 인증기능도 제공한다.
단점
- 대칭키 암호화 방식에 비해 속도가 느리다.
참고
[Security] 단방향 암호화 / 양방향 암호화
암호화된 데이터에 대한 복호화가 불가능한 암호화 방식.대표적으로 Hash와 MAC이 있다.임의의 길이 메시지로부터 고정길이의 해시값을 계산한다.단방향 암호화이기 때문에 해시값으로부터 메시
velog.io