▣ 전자서명_비대칭키 암호 PKI(Public Key Infrastructure) 공개키_RSA
■ RSA 암호 알고리즘
Rivet, Shamir, Adelman 세사람의 첫이름을 따 RSA라고 만든 암호 알고리즘
미국 MIT에서 개발한 공개키 암호 시스템
큰 정수의 소인수 분해가 어렵다는 점을 이용
전자상거래에서 가장 흔히 쓰고있는 공개키 알고리즘
최소 1,024 bit 암호화 권장
모듈러 연산, 오일러 함수 활용
■ RSA 암호 알고리즘 방식
1. A가 B에게 정보를 안전하게 보내고 싶어한다. 이때 RSA 알고리즘을 이용하고자 한다.
2. B가 공개키와 개인키를 만들어 A에게 공개키를 보낸다. (개인키는 B만 가지고 있다.)
3. A가 B로부터 받은 공개키를 이용하여 보낼 정보를 암호화한다.
4. A가 암호화된 정보를 B에게 보낸다.
5. B가 암호화된 정보를 받고 개인키를 이용하여 암호를 해독한다.
■ RSA 암호 알고리즘 원리
STEP 1. 개인키와 공개키 만들기
RSA 암호 알고리즘 첫 단계는 공개키와 개인키를 만드는 것이다.
공개키는 (n, e) 라는 두 정수로 이루어져있고 개인키는 (n, d)라는 두 정수로 이루어져있다.
n 구하기
임의의 두 소수 p와 q를 정하고 n = p * q를 해주면 n을 구할 수 있다.
e 구하기
Φ(n) = (p - 1) * (q - 1)식을 이용하여 Φ(n)을 구한다.
e는 1 < e < Φ(n)로써 1과 Φ(n) 사이에 있고 Φ(n)와 서로소인 e를 정해주면 된다.
(gcd(e, Φ(n))=1,1 < e < Φ(n)인 e선택)
이러한 e는 공개키에 이용이 될 것이다.
** 서로소란 1 이외에 공약수를 가지지 않는 수를 의미한다.
d 구하기
(e * d) mod Φ(n) = 1
즉, e*d를 Φ(n)으로 나누었을 때 나머지가 1인 d를 구하면 된다. 이때 d는 개인키에 사용될 숫자이다.
( de ≡ 1 mod φ(N) ) , 유클리드 호제법 이용
이제 공개키에 이용될 (n, e)와 개인키에 이용될 (n, d)를 모두 구하였다. 즉, 개인키와 공개키가 생성되었다.
STEP 2. 암호화하기
정보를 M이라 하고 암호화된 정보를 C
STEP 3. 복호화하기(해독하기)
페르마의 소정리에 의해 1번식이 성립하면 2번식도 성립하게 된다.
■ RSA 알고리즘 예시
1. 소수 p와 q의 값을 p = 5, q = 7
2. n = p*q = 5*7 = 35
3. 오일러 파이 함수 Φ(n) = (p - 1) * (q - 1)
Φ(n) = (5-1)*(7-1) = 4*6 = 24
4. e는 1 < e < Φ(n)로써 1과 Φ(n) 사이에 있고 Φ(n)와 서로소인 e
2부터 24까지의 수 중 서로 소인 임의의 수 7 선택
-> e = 7
5. (e * d) mod Φ(n) = 1, e=7, Φ(n) =24 이므로
(7*d) mod 24 = 1을 만족하며, d < 24의 범위에 있는 정수중의 하나
-> d = 7
6. 공개키 (n, e) = (35, 7)
개인키 (n, d) = (35, 7)
■ PKI(Public Key Interface)
인증 기관의 전자 서명된 인증서 분배를 통해 공중망 상호인증 기반 전자 거래 인터페이스
목적 | 요소기술 | 내용 |
인증 | Certificate, X.509 | 사용자 확인, 검증 |
기밀성 | AES, SEED, 3DES | 송수신 정보 암호화 |
무결성 | SHA, MD5 | 송수신 정보 위/변조 방지 |
부인봉쇄 | 전자서명 | 송수신 사실 부인방지 |
접근제어 | MAC, DAC, RBAC | 허가된 수신자 접근 가능 |
키 관리 | LDAP | 공개키 발급/등록/관리 |
구성요소 | 설명 |
정책승인기관 (PAA, Policy Approving Authority) |
PKI의 Root CA 역할을 하며, PKI 전반에 사용되는 정책과 절차를 생성 |
정책인증기관 (PCA, Policy Certification Authority) |
PAA의 하부 계층으로서 자신의 도메인 내의 사용자 및 인증기관, 인증서 관리 |
인증기관 (CA, Certification Authority) |
인증서를 발급/관리하고, 사용자에게 인증서를 전달하고, 인증서 및 인증서 취소목록 등을 보관 최상위인증기관: KISA 공인인증기관: 한국정보인증, 코스콤, 금융결제원, 한국전자인증, 한국무역정보통신 |
등록기관 (RA, Registration Authority) |
신원확인, 고객데이터 유지 등 인증기관의 입증을 대행하는 기관으로, 사용자의 인증서 발급 요청을 받아 CA에 등록하고, 신원확인 기능을 수행 |
저장소(Repository, Directory) 디렉터리서비스(DS) |
인증서 및 인증서 취소목록(CRL, Certificate Revocation List)의 저장 및 서비스 LDAP를 주로 이용하여 디렉터리 서비스 수행 *LDAP(Lightweight Directory Access Protocol) : 네트워크 상의 파일, 장치와 같은 자원의 위치를 찾을 수 있게 해주는 SW protocol *OCSP(Online Certificate Status Protocol) : 실시간으로 인증서의 유효성을 검증할 수 있는 프로토콜, CRL 을 대신하거나 보조하는 용도로 사용 *SCVP(Simple Certificate Validation Protocol) : 인증서의 유효성 여부와 특정 인증서까지의 인증서 체인을 제공 |
사용자 | 인증서를 신청하고 인증서를 사용하는 주체 |
인증서(X 509) | X509 인증서 : 인증서 고유번호, 유효기간, 사용자 정보, 공개키 사본 등 보관 |



■ 전자서명의 종류
전자서명 종류 | 설명 |
은닉 서명 (Blind Signature) |
서명자에게 자신이 송신한 메시지를 보여주지 않고 서명을 얻는 방법 메시지의 비밀성을 보장하면서 타인의 인증가능 전자투표나 전자화폐에 사용하는 서명방식 |
이중 서명 (Dual Signature) |
전자상거래(주로 SET 프로토콜)에서 구매자의 결제정보, 주문정보에 각각 전자 서명을 생성하여 판매자와 결제기관에서 검증 가능하면서도 결제정보가 판매자에게, 주문정보가 결제기관에 노출되지 않도록 구현 |
대리(위임) 서명 | 다른 사용자에게 권한을 위임하여 대신 서명을 수행. 전자서명을 검증 할 수 겨우 검증자가 위임한 사용자의 동의가 있었는지를 확인 |
다중서명 | 하나의 메시지(문서)에 여러 사람이 서명을 수행 |
그룹서명 | 특정 그룹에 소속된 사용자가 대표로 메시지(문서)에 서명. 해당 그룹의 서명인 것은 확인 가능 하지만, 어느 사용자가 서명했는지는 알 수 없음 |
■ 전자서명 요구사항
구분 | 설명 |
위조 불가 (Unforgeable) |
합법적인 서명자만이 전자서명을 생성 가능 생성키를 소유하지 않는 자는 전자서명 생성이 불가 |
서명자 인증 (Authentication) |
전자서명의 서명자를 불특정 다수가 검증할 수 있어야 함 |
부인 방지 (Non Repudiation) |
서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 함 |
변경 불가 (unalterable) |
서명한 문서의 내용을 변경할 수 없어야 함 생성키를 소유하지 않는 자는 서명한 문서의 내용을 변경할 수 없음 |
재사용 불가 | 전자문서의 서명을 다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함 |
분쟁해결가능 | 제3자에 의해 정당성을 검증받을 수 있어야 함 |
■ 전자서명의 구조
구분 | 설명 | 기반이론 |
RSA | RSA 암호 방식의 안전도와 일치 해시 알고리즘의 강도에 따라 위험성이 좌우됨 d는 개인키이고 e와 n은 공개 |
소인수분해 |
ElGamal | ElGamal 암호시스템과 동일한 키를 사용하지만 알고리즘은 전혀 다름 실제로 거의 사용되지 않으며 변형인 DSA를 사용함 RSA 서명 길이의 2배, 거듭제곱의 계산량은 거의 4배에 이름 랜덤성도 제공해야 하기 때문에 더 느려짐 |
이산대수 |
DSA | 미국의 전자서명 표준 ElGamal 전자서명방식과 유사하지만 서명과 검증에 소요되는 계산량을 획기적으로 줄임 Schnorr는 이산대수를 이용하는 전자서명의 효율성을 높이기 위해 q(p−1)인 소수의 p,q의 사용을 처음 제안함 Schnorr는 위수 p−1을 갖는 원시원소를 사용하는 대신, p−1의 소인수 q를 위수로 갖는 생성원을 사용 |
이산대수 |
DSS | Schnorr 구조에서 빌려온 아이디어를 ElGamal에 더하여 수립한 디지털 서명 알고리즘 서명과 검증에 소유되는 계산량을 획기적으로 줄임 |
이산대수 |
ECDSA | 타원곡선상에서 이산대수 문제를 이용하는 방식 다른 공개키 방식에 비해 키 길이가 짧지만 높은 안전성을 제공 |
타원곡선상의 이산대수 |
■ 대칭키 vs 비대칭키 암호화
구분 | 대칭키 암호화 | 비대칭키 암호화 |
키 개수 | 1 | 2 |
키 보관 | 개인이 비밀리에 보관 | 개인키는 비밀리에 보관하지만, 공개키는 외부에 공개 |
키 교환 | 키 교환이 어렵고 위험함 | 공개키를 교환하는 것은 매우 쉬움 |
키 길이 | 64, 128등 비교적 작은 길이 | 512, 1024, 2048 등 큰 길이 |
암, 복화화 속도 | 매우 빠름 | 매우 느림 |
평문의 길이 | 제한 없음(대용량의 평문 암호화) | 제한, 대용량의 평문은 시간, 연산의 제약으로 어려움 |
알고리즘 | DES, AES, IDEA, SEED, RCS, SKIPJACK, ARIA 등 | RSA, DSA, ECC, ElGamal 등 |
2019년 102번
정답 : 2번
공개정보 n과 e를 이용하여 메시지 작성자가 메시지 m에 대해 mod 계산 결과값을 서명자에게 전달 후 서명자는 해당 값에 RSA 알고리즘을 이용하여 서명을 수행함
서명자에게 메시지 m이 공개되지 않고 메시지 작성자가 mod 연산을 수행한 mk^e mod n 결과값만 전달된다는 점임
서명자는 메시지 내용은 알 수 없는 상태에서 전자서명만 수행하는 '은닉서명'의 특징임
2020년 111번
정답 : 4번
인증서는 발급자(CA)의 '공개키'가 아닌 '개인키'를 이용하여 전자서명을 생성함
* 인증은 송개송공
2020년 119번
정답 : 2번
1) 부인방지(Non Repudiation) : 서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 함
2) 정답
3) 위조불가(Unforgeable) : 생성키를 소유하지 않는 자는 전자서명 생성이 불가
4) 전자서명은 공개키(비대칭키)암호화 방식을 사용하며, 일반적으로 사용되는 알고리즘은
다음과 같다.
RSA 전자서명, ELGamal 전자서명, DSA(DSS, Digital signature Standards) 전자서명
2020년 120번
정답 : 3번
하이브리드 암호 시스템은 두 가지 이상의 암호화 기법을 조합한 것임
암호화는 수공수개
인증은 송개송공
공개키 암호화의 경우 인증, 부인방지, 기밀성 등 다양한 보안 서비스를 제공하지만 성능이 낮음
대칭키 암호화의 경우 기밀성만을 제공, 키 관리에 어려움이 많지만 상대적으로 성능이 높음
실제 연산량이 많은 메시지 암호화에는 성능이 좋은 대칭키 암호화 방식을 사용하고,
암호화에서 사용된 비밀키(세션키)를 안전하게 전달하는데는 공개키 암호화 방식을 사용함
세션키는 수신자만 복호화 가능해야 하므로, 수진자의 공개키를 이용해 암호화 함
2018년 102번
정답 : 3번, 4번
전자서명은 불특정 다수가 손쉽게 서명을 검증할 수 있어야 함(서명자 인증)
다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함(재사용 불가)
2021년 103번
정답 : 4번
구분 | 설명 |
위조 불가 (Unforgeable) |
합법적인 서명자만이 전자서명을 생성 가능 생성키를 소유하지 않는 자는 전자서명 생성이 불가 |
서명자 인증 (Authentication) |
전자서명의 서명자를 불특정 다수가 검증할 수 있어야 함 |
부인 방지 (Non Repudiation) |
서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 함 |
변경 불가 (unalterable) |
서명한 문서의 내용을 변경할 수 없어야 함 생성키를 소유하지 않는 자는 서명한 문서의 내용을 변경할 수 없음 |
재사용 불가 | 전자문서의 서명을 다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함 |
분쟁해결가능 | 제3자에 의해 정당성을 검증받을 수 있어야 함 |
2011년 115번
정답 : 3번
기밀성은 전자서명이 지원하는 서비스가 아닌 대칭키 또는 비대칭키 암호화 알고리즘이 지원하는 서비스임
구분 | 설명 |
위조 불가 (Unforgeable) |
합법적인 서명자만이 전자서명을 생성 가능 생성키를 소유하지 않는 자는 전자서명 생성이 불가 |
서명자 인증 (Authentication) |
전자서명의 서명자를 불특정 다수가 검증할 수 있어야 함 |
부인 방지 (Non Repudiation) |
서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 함 |
변경 불가 (unalterable) |
서명한 문서의 내용을 변경할 수 없어야 함 생성키를 소유하지 않는 자는 서명한 문서의 내용을 변경할 수 없음 |
재사용 불가 | 전자문서의 서명을 다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함 |
분쟁해결가능 | 제3자에 의해 정당성을 검증받을 수 있어야 함 |
2011년 119번
정답 : 3번, 4번
3) 대칭키 암호화 시스템의 키 분배가 어려움
4) 비대칭키 암호화 알고리즘은 RSA, ElGamal 등이 있음
구분 | 대칭키 암호화 | 비대칭키 암호화 |
키 개수 | 1 | 2 |
키 보관 | 개인이 비밀리에 보관 | 개인키는 비밀리에 보관하지만, 공개키는 외부에 공개 |
키 교환 | 키 교환이 어렵고 위험함 | 공개키를 교환하는 것은 매우 쉬움 |
키 길이 | 64, 128등 비교적 작은 길이 | 512, 1024, 2048 등 큰 길이 |
암, 복화화 속도 | 매우 빠름 | 매우 느림 |
평문의 길이 | 제한 없음(대용량의 평문 암호화) | 제한, 대용량의 평문은 시간, 연산의 제약으로 어려움 |
알고리즘 | DES, AES, IDEA, SEED, RCS, SKIPJACK, ARIA 등 | RSA, DSA, ECC, ElGamal 등 |
2011년 101번
정답 : 4번
평문 공격은 공격자가 일부 평문에 대한 정보를 아는 경우 가능함
RSA 암호 알고리즘
Rivet, Shamir, Adelman 세사람의 첫이름을 따 RSA라고 만든 암호 알고리즘
미국 MIT에서 개발한 공개키 암호 시스템
큰 정수의 소인수 분해가 어렵다는 점을 이용
전자상거래에서 가장 흔히 쓰고있는 공개키 알고리즘
최소 1,024 bit 암호화 권장
모듈러 연산, 오일러 함수 활용
암호문 단독 공격 | 상대방에 대한 정보가 전혀 없는 상태에서 암호문만으로 평문과 암호키를 알아내는 공격으로 이 방법은 일반적으로 불가능함. 많은 암호문이 필요하고 시간도 많이 걸림 |
알려진 평문 공격 | 평문에 대한 암호문을 일부 알고 있는 상황에서 평문을 알아내는 공격으로 암호문 단독 공격보다 정보가 어느 정도 있는 상태에서 해독을 하기 때문에 좋은 방법 |
선택 평문 공격 | 공격자가 적의 암호기에 접근할 수 있어 공격자가 선택한 평문을 암호기에 입력했을 때 나온 암호문을 알고서 전체 암호문을 해독하는 공격 |
선택 암호문 공격 | 공격자가 선택한 암호문들에 대한 평문이 주어진다는 가정하에 복호화 키를 찾는 공격 |
2013년 117번
정답 : 4번
대칭키 암호시스템, 초기벡터, 대치는 대칭키 암호 알고리즘에서 주로 쓰임
RSA 암호 알고리즘
Rivet, Shamir, Adelman 세사람의 첫이름을 따 RSA라고 만든 암호 알고리즘
미국 MIT에서 개발한 공개키 암호 시스템
큰 정수의 소인수 분해가 어렵다는 점을 이용
전자상거래에서 가장 흔히 쓰고있는 공개키 알고리즘
최소 1,024 bit 암호화 권장
모듈러 연산, 오일러 함수 활용
2017년 107번
정답 : 4번
기밀성은 전자서명이 지원하는 서비스가 아닌 대칭키 또는 비대칭키 암호화 알고리즘이 지원하는 서비스임
전자서명은 메시지에 대한 기밀성(비밀성, confidentiality)은 제공하지 않음
전자서명은 사용하는 암호화 키는 송신자의 비밀키를 사용하므로 복호화 시 송신자의 공개키를 사용함
송신자의 공개키는 누구나 접근 가능하므로 기밀성 보장을 할 수 없음.
* 인증은 송개송공
구분 | 설명 |
위조 불가 (Unforgeable) |
합법적인 서명자만이 전자서명을 생성 가능 생성키를 소유하지 않는 자는 전자서명 생성이 불가 |
서명자 인증 (Authentication) |
전자서명의 서명자를 불특정 다수가 검증할 수 있어야 함 |
부인 방지 (Non Repudiation) |
서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 함 |
변경 불가 (unalterable) |
서명한 문서의 내용을 변경할 수 없어야 함 생성키를 소유하지 않는 자는 서명한 문서의 내용을 변경할 수 없음 |
재사용 불가 | 전자문서의 서명을 다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함 |
분쟁해결가능 | 제3자에 의해 정당성을 검증받을 수 있어야 함 |