본 글은 생활코딩의 암호학1 강의를 듣고 정리한 내용입니다.
암호학(cryptography)이란?
crypto
(기밀) + graphy
(방법)암호학의 요소
암호법의 분류
단방향 암호화는 다른 말로 hash
라고도 불린다.
hash
의 사전적 의미 ➔ 다지다
즉, 한번 다지면 되돌릴 수 없다.
예시 :
hash
를 사용하는 이유 ➔ 무결성
무결성(Integrity)
hash algorithm
hash를 어떻게 사용하는가
integrity
of messages and files)signature
generation and verification)identifier
)password
verification)proof-of-work
)
평문을 암호문으로 바꿀 때 사용했던 key를 복호화할 때도 그대로 사용
대칭키 방식의 암호화를 구현하는 알고리즘
가장 유명한 대칭키 방식의 알고리즘 ➔ AES
암호화 하고싶은 text와 key값을 적은 뒤 키의 복잡성(128bit 숫자가 높을 수록 더 복잡해지지만 더 많은 컴퓨터 자원을 더 많이 잡아먹는다)를 정하고 encrypt 하면 암호값이 생성된다. 암호값과 key값을 넣고 decrypt하면 원래의 text를 얻을 수 있다.
비대칭키 방식은 공개키로 암호화한 암호문은 비공개키로만 복호화할 수 있다.
반대로 비공개키로 암호화했으면 공개키로만 복호화할 수 있다.
대칭키 방식의 한계
key가 원하지 않는 사람에게도 노출되는 배달사고로 인해서 보안이 뚫릴 수 있다.
비대칭키 방식의 해결
공개키를 공개해두고 누군가 암호문을 보내면 나만 가지고 있던 개인키로 복호화한다.
개인키를 이용해서 text를 암호화 시키면 전자서명이 된다. 그리고 공개키와 전자셔명을 배포한다. 사람들이 이 공개키와 전자셔명을 가지고 복호화한 내용과 text가 동일하면 공개키를 가지고 있는 사람이 자신의 개인키로 만든 것임을 확신할 수 있다. (RSA 방식
)
비대칭키 방식에서는 개인키를 잘 관리해야 한다. 이것은 보안의 영역이다. 키를 보관하고 있는 컴퓨터가 안전해야 키가 유출되지 않는다. 따라서 암호화의 핵심은 단지 어떤 암호화 알고리즘을 쓰느냐를 넘어서 암호를 보관하고 있는 컴퓨터가 안전하게 지켜져야 한다. 암호화를 통해서 보안이 완성되지만 보안을 통해서 암호화가 지켜지기도 한다. 누가 먼저라고 할 수 없다.
암호의 보안을 높이는 방법은 간단하다. 키값을 길게하거나 hash값이 긴 알고리즘을 사용하는 것이다. 하지만 키값이 길어지면 그만큼 암호화나 복호화를 하는데 더 많은 컴퓨터 자원을 사용해야 한다. 적정 수준의 알고리즘을 선택하는 것은 쉬운 일이 아니다. 그래서 국가에서는 그 시대에 어울리는 적당한 암호화 방법을 권고하고 있다.
다음 표는 한국인터넷지능원에서 2018년에 발간한 암호 알고리즘 및 키 길이 이용 안내서 이다. 이러한 자료를 통해 권고안에 맞는 암호를 선택해서 사용하면 된다. 수학적 관념과 컴퓨터 성능이 발전함에 따라서 안전한 암호화 방식은 달라지기 때문에 최신 동향을 살펴보는 것이 중요하다.