이전에 RSA 암호 알고리즘에 대해서 작성을 한 게 있었는데,
내용이 너무 빈약하고 정보전달력이나 중요한 내용들이 많이 빠진 것 같아서
이번에 다시 내용정리를 해보려고한다.
RSA 암호 알고리즘이란 공개키 암호시스템으로 암/복호화도 가능하고 전자서명에도 이용된다.
RSA는 공개키(Public -key)와 개인키(Private-key 또는 비밀키) 두 개의 키를 사용하는데
공개키는 말 그대로 누구에게나 다 공개되는 키이며 개인키는 특정 사용자만 사용하는 키를 말한다.
그런데 RSA의 경우 공부하면서 알게 된 건데 특이한 점이 있다
아래 표와 같이
암복호화에서는 공개키를 암호화할 때 사용하고 개인키로 복호화를 하지만
서명검증을 할 때는 개인키로 암호화하고 공개키로 복호화한다.
공개키 | 개인키 | |
암/복호화 | 암호화 | 복호화 |
전자서명/검증 | 복호화(검증) | 암호화(전자서명) |
처음에 공부할 때 블로그들을 찾아보는데 말이 다 다른 것 같아서 혼란스러웠는데
잘 보니 공개키, 개인키의 용도가 암복호화와 서명검증에서 서로 달랐다.
그럼 이어서 RSA의 키 생성 원리와 암복호화 방법에 대해서 알아보자.
1. 큰 소수 p, q를 선택한다.( p와 q는 같아서는 안된다.)
2. N = p x q를 계산
N값을 통상적으로 키 사이즈라고 말하는데 정수 N의 크기가 2^1023~2^1024 라면 키의 길이는 1024이다
3. φ(N) = (p - 1) x (q - 1)를 계산한다
4. φ(N) 보다 작고 서로소인 값 e를 구한다.
e는 통상적으로 65537인 0x10001을 많이 사용한다. 그 뜻은 보통 p와 q를 0x10001보다 큰 값을 사용한다는 뜻이다.
5. e x d를 φ(N)으로 나눈 나머지가 1인 정수 d를 구한다.
이렇게 값을 다 구했을 때 p, q, φ(N) 등의 값은 파기하는 게 좋다. 갖고 있어 봤자 쓸모없고 키유출 위험이 높기 때문이다.
최종족으로 공개키는 {e, N}, 개인키는 {d, N}이다.
이 공개키를 활용해 암/복호화를 할 수 있는데 암복호화 방법은 아래와 같다.
(a mod b는 a ÷ b의 나머지를 의미한다.)
이어서 전자서명에 대해서 알아보자.
전자서명이란 전자문서의 위변조 사실을 알 수 있도록 전자문서에 붙어서 전달되는 디지털 서명이다.
전자서명의 역할은 도장과 같은 역할을 한다고 보면 되는데 무결성, 인증, 부인방지를 목적으로 사용한다.
전자서명 방법
1. 영희에게 보낼 message를 준비한다
2. message의 hash(ex.sha256) 값을 구한다.
3. message의 hash 값을 개인키로 암호화한다.
4. message에 암호화된 hash를 붙여서 영희에게 전달한다.
검증 방법
1. 영수에게 받은 데이터를 message와 서명으로 분리한다
2. 암호화된 hash를 공개키로 복호화한다.
3. message의 hash값을 새로 구한다.
4. 새로 구한 hash값과 복호화된 hash 값을 비교한다.
이렇게 RSA알고리즘과 전자서명에 대해 알아봤는데 서명검증에 대해 알아보면서
hash에 대한 내용이 나왔으니 다음에는 hash에 대해서 공부해 봐야겠다.
'Crypto' 카테고리의 다른 글
Hash function 알고리즘의 종류와 특징 (0) | 2024.04.02 |
---|---|
Hash Function의 특징과 용도 (0) | 2024.04.01 |
AES 알고리즘의 특징 및 Cipher Mode (1) | 2024.03.27 |
AUTOSAR 그리고 표준 암호화 알고리즘 (0) | 2024.03.26 |
TLS의 정의 및 이해와 TLS1.2과 TLS1.3의 차이 (0) | 2022.11.03 |