암호학) 대칭키와 비대칭키 차이와 메커니즘Structure

Karinnovation🦄
7 min readDec 5, 2022

--

이은지(Karin) | researcher of CURG | karin.blockdev@gmail.com | Karinnovation🦄

​이 주제는 이번주 CURG에 참석했을때 헷갈려하는 주제중 하나였습니다. B가 저한테 질문했고, 저는 ‘공인인증서’와 ‘OTP’로 예를 들긴했는데요. 저 또한 설명하기 어려운 부분이 있어 한번 더 정리해보았습니다.

암호학 기초 퍼먹기 시리즈

1) 대칭키와 비대칭키

오늘 목차는 ‘대칭키’와 ‘비대칭키’ 의 차이 입니다.

컴공, 핀테크나 보안쪽을 모르면 엄청 생소한 단어죠 사실.

보안 시초인 암호학에서 비롯된게 키라는 암호키 개념이라, 암호화부터 얘기해보겠습니다.​

암호화란?

암호화(Encryption)은 암호학(Cryptography)의 주된 응용이다. 암호화는 이해할 수없는 시각적 형태로 매핑돼 자료의 ‘기밀성’을 보장한다. 평문을 암호문으로 변환하는 과정을 의미한다.​

암호화(Encryption)의 필요?

[과거] 전쟁에서 아군에게 메세지를 보낼 때 중간에 편지를 훔쳐도 못알아보게하려면 메세지 내용을 암호화해야했다. 그래야 암호문을 아군만이 읽을 수 있었다.

[현재] Https(네트워크 보안) / SSH(시큐어셀-암호문 사용)를 통해 네트워크로 메세지를 안전하게 전송한다.

기본적으로 암호화를 위해 ‘알고리즘’과 ‘비밀 값(키)’ 필요하다.​ 그럼 키란 뭘 의미하는 걸까?

키(Key) = ‘암호키’의 줄임말?

암호화에 쓰이는 비밀 값을 ‘키’ = Key =열쇠로 부른다. 즉 암호문을 평문으로 해독하기 위해 사용된 방법이 ‘암호키’로 줄여서 ‘키’라고 부른다.

당연한거지만 누구나 ‘비밀키’를 모르면 암호문을 볼 수도, 정보를 빼낼 수도 없다.

​대칭키와 비대칭키?​

대칭키와 비대칭키의 정확한 차이를 모르는 분들이 많다. 공통점 먼저 얘기하면 대칭키&비대칭키는’양방향 암호화 방식’이다.

참고로 키(암호키)를 ‘계좌 비밀번호나 공인인증서 비밀번호’로 생각하면 쉽다. 뒤에 이 암호키가 개인키 공개키로 또 나뉘니 정신줄 똑바로 잡아야한다.

대칭 암호화(Symmetric encryption) 이용한 ‘대칭키’

‘대칭키’: 암호화, 복호화 키가 동일하다. 대칭키 암호 알고리즘을 사용한 암호화방식이다.

암호화에 사용하는 키와 복호화에 사용하는 키가 동일하다. 따라서 해당 키를 아는 모두는 다 해독이 가능하여, 내용을 볼 수 있다.

-즉, 대칭키는 간단한 암호 방식을 이용한다. 대칭 암호화의 가장 약한 형태에 해당하는 고전암호는 아무 공격자들이 공격할 수 있을정도로 약하다.

알고리즘 종류: Des, 3Des, Aes, Seed, Aria 등이 속한다.

장점: 비대칭 키인 공개키 알고리즘에 비해 빠르다.

단점: 키 교환 문제가 발생한다. 이용자가 증가할수록 키를 전부 따로 관리해야한다. (관리키 방대해짐) 또한 키가 탈취되면 복호화키도 같기때문에 키를 가진 사람은 평문까지 다 탈취가 가능하다.

해결방법: 공개키 암호로 해결, 키 사전 공유로 해결, 키 배포 센터에 의한 해결, Diffi-hellman키 교환에 의한 해결이 존재한다.

대칭키의 해결책! ‘비대칭 키'

비대칭 암호화(asymmetric encryption)=공개키: 암호화, 복호화 키가 다르다. (두개: 공개키와 개인키) 대칭하지 않다고 해서, 비대칭 기법을 쓰느 암호화다라고 말한다. 공개키 암호 알고리즘을 사용한 공개키는 말그대로 공개적인 키라 교환할 필요없이 모두가 가질 수 있는 키다. 명시적으로 남한테 공유 가능한 비밀번호라 생각하자.​

장점: 키분배 안해도 됨. 이미 상대방한테도 복사돼서 주어짐. (기밀성(비밀) , 이중 인증방식, 부인 방지 제공)

단점: 대칭키 암호화 방식에 비해 느림.

종류 RSA(Rivest, Shamir and Adleman)

ElGamal

ECC(Elliptic Curve Cryptosystem, 타원 곡선 암호 시스템)

전자서명(Digital signature)

즉, 내가 만든 오픈 채팅방의 비밀번호는 공개키다.

남한테 공유 가능하다. 은행 앱의 비밀번호가 은행과 공유가능한 비밀번호다. 그리고 앱 속 공동 인증서를 푸는 비밀번호도 은행이란 기업과 공유했기에 둘 다 내 공개키를 주었다고 할 수 있다.

하지만 계좌의 OTP번호는 나만 아는 ‘프라이빗한 개인적인 비밀번호’다. 이것을 개인키라 생각하면 쉽다. 디지털OTP는 은행 직원도 모른다. 즉 사용자만 아는 난수 비밀번호인 ‘개인키’기때문이다.​ 은행이 아무리 공개키를 가지고 있고, 은행이 2차 암호화를 시킨다해도 개인키가 있는 사람만 원문을 열람가능하다.

다른 예로, 회원가입시 만든 비밀번호를 공개키라고하면, 2차 비밀번호를 개인키라 생각해도 될거 같다.​

정리하면, 비대칭키에는 두가지 암호 알고리즘 방식을 쓴다. 공개와 개인만 보게하는 알고리즘.

즉 공개키는 남에게 공유 가능한 키

개인키는 남에게 공유 불가한, 나만 소유하는 키

비대칭키=공개키 알고리즘 원리가 뭔지보자.​

문제) 캐린이가 춘식이에게 머니 데이터(돈거래)를 보내야한다. 캐린이는 춘식이의 공개키로 암호화한 머니 데이터를 보내고 춘식이는 자기만의 개인키로 암호화된 머니 데이터를 복호화해 보기 때문에, 머니 데이터의 원문은 춘식이의 공개키에 대응되는 개인키를 갖고있는 춘식이만이 보게 되는 것이다. 그래서 춘식이의 원문 데이터는 공개키가 해킹 당하더라도 개인키가 없기때문에 안전하단 것이다.

비대칭키 매커니즘 구조를 보자.

완전 쉽게 설명 해보겠다.

​캐린이는 A 춘식이는 B라하자.

춘식(B)에개 공개키와 개인키 한쌍이 주어진다.

춘식이는 공개키를 공개적으로 등록한다.그리고 개인키는 본인이 소유한다. 캐린(A)가 춘식(B)의 공개키를 받아오고, 이를 사용해 데이터에 비밀번호를 건다. 그러고 암호화된 데이터를 춘식(B)에게 다시 전송한다.

암호화된 데이터를 받은 춘식(B)이는 개인키로 복호화한다.

즉, 개인키를 가진 춘식(B)’S만 프라이빗하게 원 데이터를 볼 수 있다.

장점을 정리하면,

비대칭키인 공개키 알고리즘 장점은 이미 춘식(B)이가 여러개의 공개키를 뿌린 상태라 키 교환이나 분배를 이중적으로 할 필요가 없어졌단 것이다. 공격자가 춘식(B)이의 공개키를 얻어도, 춘식(B)이의 개인키가 없으면 ‘일치’가 안돼서 원문을 볼 수 없다. 즉.기밀성이 유지 된다.

꼭 알아두자 개인키를 가진 수신자만이 암호화된 데이터를 복호화하여 원문을 볼 수 있으므로, 의도치않게 인증기능도 제공한다는 장점이 있다. 반면, 검증과정이 필요한 만큼 속도가 느리다는 것이다.

출저: 짠테크 은지의 블록체인 @karinnovation

비대칭 키는 블록체인안의 비트코인에서 쓰인 RSA알고리즘을 예로 들 수 있다. 해시 함수를 통해 해시값을 입혀 해시값으로 상대가 맞는지아닌지 판단하는 것을 공개키 암호원리라고 한다면, 논스값을 계속 돌려 본래 해시값을 찾아내 원문으로 복원가능한 키가 있다하면 논스값(정수)을 개인키로도 비유할 수 있겠다.

마무리

비대칭 키와 대칭키의 차이가 뭔지, 실제 어떤 프로세스 구조를 그리며 작동하는지 알아봤다. 대칭키는 쉽지만 비대칭키는 상이한 키가 두개라 이해하기 어려울 수 있다. 최대한 쉽게 예를 들으려 생각을 많이 했다.

비대칭키에 대한 이해가 부족하면 아래 영상 6분부터 보길 바래요.

오늘도 글 읽어주셔서 감사합니다. — 카린 개발자 올림.

이은지(Karin) | researcher of CURG | karin.blockdev@gmail.com | Karinnovation🦄

--

--

Karinnovation🦄

블록체인 개발 냉장고 파먹기 연재 (Blockchain Dev Eating Series) Interaction dev(fe)에서 암호학 전문 개발자로 성장중입니다. 관심: 비트코인, 이더리움, ZK (미술,역학 12년째 ing)