Open longlivedrgn opened 2 months ago
장점 | 단점 |
---|---|
비대칭키 암호화 방식에 비해 연산 속도가 빠르다. | - 키를 교환해야 한다. 키를 교환하는 도중 키 탈취 위험이 있다. |
대칭키 | 비대칭키 | |
---|---|---|
제공 | 기밀성 | 기밀성, 인증, 부인방지 |
제공 X | 무결성, 인증, 부인방지 | 무결성 |
해시, 해시값
이다.메세지 인증 코드(MAC / Message Authentication Code)
원본 메세지 M
과 비밀키 K
를 병합하여 해시 함수를 수행한다.MAC
과 메세지 M
을 안전이 보장되지 않은 채널로 밥에게 전송한다.수신한 메세지 M
과 비밀키 K
를 해시 함수를 수행해 MAC
을 생성한다.수신한 MAC
과 자신이 생성한 MAC
을 비교한다.대칭키 암호화와 비대칭키 암호와에 앞서, 암호화를 먼저 이야기를 하면 좋을 것 같은데요. 암호화란 사람이 읽을 수 있는 문자열을 사람이 읽을 수 없는 문자열로 맵핑하는 과정을 말합니다. 이 때 각각의 문자열을 평문과 암호문이라 하는데, 여기서 암호문을 다시 평문으로 맵핑하는 과정을 복호화라 합니다. 이러한 과정이 있는 것은, 당연하게도 발신자와 수신자를 제외하고는 해당 문자열을 이해할 수 없도록 하기 위함입니다. 즉 보안의 일환이라 할 수 있겠습니다. 조금 돌아가는 이야기로 이런 암호화와 복호화는 꼭 컴퓨터 과학이 아니더라도 사용이 되어왔습니다. 당장 생각나는 건 스키테일이네요. 이는 원통이라고 하는 도구를 이용하여 암호화를 한 것인데, 컴퓨터 과학에서는 이런 사물이 아니라 특히 수학적인 방법으로 암호화를 하게 됩니다. 대칭키 암호화와 비대칭키 암호화는 이와 관련되어있습니다. 대칭키를 먼저 이야기하면, 암호화에 사용되는 키와 복호화에 사용되는 키가 같은 방법입니다. 마치 스키테일이 수신자와 발신자가 똑같은 둘레의 원통을 사용해야하는 것과 같습니다. 만약 누가 어떤 암호문이 스키테일 방식으로 암호화가 된 것을 알고, 원통의 둘레를 알고 있다면, 진짜 수신자가 아니더라도 복호화를 할 수 있는 것처럼, 대칭키 방식에서 만약 누군가가 키를 탈취한다면 암호를 해독할 수 있는 이슈가 있습니다. 이런 큰 이슈를 가지고 있지만, 정형화된 방법으로 구현도 용이하고 암호화와 복호화 속도가 빠르며 예측가능하다는 장점이 있습니다. 비대칭키 암호화는 암호화에 사용되는 키와 복호화에 사용되는 키가 다른 방법을 말합니다. 어떻게 다른가 하니, 메시지를 수신하는 사람이 키를 2개를 가지고 있습니다. 하나는 공개키이고, 하나는 개인키입니다. 공개키는 암호화에 사용되는데 그 이름처럼 모두에게 보여줄 수 있고, 개인키는 복호화에 사용되며 오직 본인만이 알고 있어야 합니다. 이러한 점에서 비대칭키 암호화를 공개키 암호화라고도 합니다. 이러한 점에서 누군가가 공개키를 탈취한다고 하더라도 이를 통해 복호화를 할 수 없으므로 암호문은 지켜질 수 있습니다. 다만 이러한 방식을 이용하기 위해서 비교적 비싼 연산을 처리해야 하므로 대칭키보다는 상대적으로 느립니다.
해시란 가변 길이의 데이터를 고정 길이의 데이터로 맵핑하는 함수를 말합니다. 당장 생각나기로 iOS에서 볼 수 있는 해시함수는 패키지 버전 관리에 사용되는 checksum입니다. 아마도 저장소의 위치와 브랜치, 커밋 등을 조합할텐데 이를 통해 불러오는 모듈의 버전을 적합하게 관리할 수 있습니다. 이 외에도 보안을 목적으로 해시함수가 사용되는 것으로 알고 있는데 이쪽은 제대로 공부를 한 적이 없어서 잘 모르겠네요~