암호화란 부호와 암호를 사용하는 방법으로 정보의 안전한 전송을 보장해준다.
블록체인과 암호화폐의 근간이 되는 기술이며 A와 B의 통신이 암호화되어있지 않으면 정보를 가로챌 수 있다.
따라서 암호화를 해 안전한 통신을 보장해야 한다.
문자열을 다른 문자열로 열 이동 교체하는 암호
무작위로 보이는 원칙에 따라 문자열 순서를 바꿔 이동한 암호
고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독할 수 있다.
컴퓨터의 등장과 기술 발전으로 인해 고전 암호는 취약한 암호화 방법이 되었다.
현재 암호화 기술의 핵심은 임의의 문자열 값인 ‘암호화 키’이다.
암호화 키는 통계학 입각 기준에 따라 일정 수준 이상의 의사 난수를 난수로 가정해 적절한 암호화 키를 사용하면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 수 없다.
암호화는 크게 단방향 암호화, 비밀키 암호화, 공개키 암호화로 구분된다.
해싱(hashing)을 이용해 암호화하는 방식으로 정확하게는 "암호화/복호화" 와는 다른 개념이다.
평문을 암호화하는 것은 암호문을 복호화하는 것은 불가능한 암호화 방법이다.
복호화가 필요 없는 방식에서 사용하며 주로 "비밀번호"를 암호화할 때 사용한다 개인정보의 안전성 확보 조치기준 제 7조 2항에 따라 일방향 암호화하여 저장해야 한다.
http://www.law.go.kr/행정규칙/개인정보의안전성확보조치기준/(2019-47,20190607)/제7조
패스워드 DB가 유출되더라도 패스워드를 복호화할 수 없고 입력받은 값을 암호화해 비교하므로 비밀번호 암호화 방식에 적합하다.
둘 혹은 그 이상의 사용자 사이에 공유된 "비밀 키"를 기반으로 한다.
즉 대칭 키 암호화는 "같은" 비밀 키를 사용해 "암호화" 하고 "복호화" 하는 알고리즘이다.
암호화 과정은 cipher
라 불리는 암호화 알고리즘에 평문(입력)을 실행해 암호문(결과)을 생성한다. 대칭 암호화 시스템은 대응하는 키를 무작위로 추측해 대입하기가 얼마나 어려운지에 달려있다.
따라서 암호화 알고리즘이 아닌 암호키의 비밀성이 중요하다.
현재 가장 많이 사용되는 대칭 암호화 체계는 블록 사이퍼와 스트림 사이퍼이다.
DES/3DES
는 현재 권장하지 않으며 AES/SEED/ARIA
를 사용한다.대칭 키 알고리즘은 메시지를 빠르게 암호화하고 해독하는 동시에 높은 수준의 보안을 제공한다.
대칭 암호화의 보안은 키 길이를 증가시켜 향상할 수 있다. 대칭 키 길이에 추가되는 하나의 비트는 Brute force
공격을 통한 암호화 해제를 매우 어렵게 만든다.
데이터를 암호화하고 해독하는 데 사용되는 키를 전송하는 본질적인 단점이 있다.
해당 키가 안전하지 않은 접속을 통해 공유되면, 제 3자에 의해 도난당할 수 있다.
인가되지 않은 자가 대칭 키에 접근해 키를 사용하게 된다면 암호화된 모든 데이터의 보안이 흔들린다. 이런 문제를 해결하고자 많은 웹 프로토콜은 대칭 암호화와 비대칭 암호화를 혼합해 사용된다.
대표적인 예는 TLS(Transport Layer Security)
암호화 프로토콜이다.
공개 키 암호화는 공개 키와 개인 키(비밀 키)를 사용해 암호화와 복호화하는 알고리즘이다.
공개 키는 말 그대로 공개된 키로서 다른 이들에게도 공유되지만 키의 보안에 영향을 주지 않는다.
개인 키는 고유한 키로서 개인 키를 소유한 자만이 공개 키를 사용해 암호화된 정보를 읽을 수 있어 안전하게 보관되어야 한다.
대칭 키 알고리즘은 제 3자에 의해 비밀 키를 도난당하면 암호화된 데이터에 접근할 수 있다.
반면 공개 키 알고리즘은 공개 키를 탈취당해도 데이터를 안전하게 보호할 수 있다.
공개 키 알고리즘이 완벽한 알고리즘은 아니다. 공개 키 알고리즘은 개인 키가 안전하게 보호된다는 가정을 전제로 한다. 따라서 개인 키가 공유되거나 유출되었을 경우 공개 키를 통해 암호화된 데이터에 접근할 수 있다. 만약 개인 키를 잃어버렸다면 데이터에 접근할 수가 없다.
해시 함수는 무결성 확인에는 충분하지만 발신자의 신원 확인이 불가능하다.
그래서 메시지 인증 코드(MAC, Message Authentication Code)가 생겼다.
HMAC
값(해시값)을 탈취해 재전송하는 Replay Attack
에 취약하다. Replay Attack
에 대응하기 위해 순서 번호, 타임스탬프, 넌스를 이용할 수 있다.
MAC의 한계를 극복하기 위해 개발된 기술
사용자가 인증서의 공개 키에 대응되는 개인 키를 보유하고 있음을 사용자의 디지털 서명으로 확인할 수 있다. 인증이 확인되면 해당 인증서는 사용자의 공인인증서임이 증명된다.
Arsen
은 개인 키와 공개 키를 생성한다. 이때 개인 키 생성 능력이 없으면 인증기관 or 등록기관에 문의한다.Arsen
에게 전달한다.Arsen
은 개인 키를 PC, 스마트폰, USB 등에 "비밀번호"를 걸어 보관한다.Arsen
은 인증기관 or 등록기관에 자신의 공개 키를 등록해 인증서 작성을 요청한다.Arsen
의 신원을 확인한다.Arsen
의 공인 인증서를 작성하고 해당 기관의 서명을 추가한다.Arsen
에게 전달한다.Arsen
의 공개 키를 사용하려는 금융기관은 Arsen
에게 공인 인증서를 전달받는다.Arsen
의 인증서임이 증명된다.Arsen
의 공개 키로 메시지를 암호화해 Arsen
에게 전송한다.Arsen
은 자신의 개인 키를 사용해 메시지를 복호화한다.본 글은 학과 암호학 강의와 아랫글들을 참조합니다.
https://hack-gogumang.tistory.com/541
https://www.youtube.com/watchv=hgsPinVcvnE
https://www.pentasecurity.co.kr/resource/암호화/암호화/
https://www.binance.vision/ko/security/what-is-public-key-cryptography
https://www.binance.vision/ko/security/symmetric-vs-asymmetric-encryption
https://www.binance.vision/ko/security/what-is-symmetric-key-cryptography
https://www.binance.vision/ko/security/history-of-cryptography
http://www.law.go.kr/행정규칙/개인정보의안전성확보조치기준/(2019-47,20190607)/제7조