본문 바로가기
(필기) 정보보안기사&산업기사

오답노트 및 메모 (암호학) ~66

by IT매니절 2024. 5. 27.

24.
공개키 알고리즘
- 암호화 키는 공개키로, 복호화 키는 비밀키로 한다
- 암호화 키로부터 복호화키를 알 수 없다
- 복호화 키로부터 암호화 키를 알 수 있다
- 대다수가 이산대수 문제의 어려움에 근거한다 (소인수분해 : RSA, Robin)
- 암호화 수행 속도 > 복호화 수행 속도

 

25.
대칭 암호
- 처리 속도가 상대적으로 빨라 대량의 데이터에 적합
- 암복호화시 사용하는 키가 동일하다. 키 배송시 보안이 중요하다
- 공개키 암호와 상호보완적 관계

공개키 암호
- 디지털 서명, 키 교환 등의 용도로 주로 사용된다. 느리기 때문에 데이터 암호화에 잘 쓰지 않음

 

속도 : 대칭키가 빠르다
키의 길이 : 대칭키가 짧다
키의 개수 : 대칭키(n(n-1)/2), 비대칭키(2n)

키 수명 : 대칭키가 짧다

 

26.

https://m.blog.naver.com/tmk0429/222310821240


대칭키 기반 키분배 방식
- 키분배 센터(KDC), 호스트 A, B
- 호스트 A와 B는 미리 저장된 키로 암호화하여 통신한다
- 세션키를 A에게 보낼 때는 A의 공개키로, B에게 보낼때는 B의 공개키로 암호화한다.

+키분배방식
1) 사전공유방식
2) KDC 온라인 키분배센터
3) DH 디피헬만
4) 공개키 암호

 

28.
부인방지 기능을 포함하는 전자서명 : DSA, RSA, ELGamal, ECDSA

 

+ECDH : 타원곡선 디피헬만, 키 합의 프로토콜

+ECDSA : 타원곡선을 이용한 전자서명 알고리즘

 

 

29.
디피헬만 프로토콜의 중간자 공격을 막기 위해 공개키 인증을 추가한 프로토콜
=> Station-To-Station 프로토콜 (STS)

+ 커버러스 프로토콜의 기반이 된 것이 Needham 프로토콜

 

30.

 

디피헬만 키 분배 프로토콜을 이용해 A와 B에게 동인한 비밀키를 분배한다
이 때 비밀키 값을 구한다

조건
- 이산대수: g의 a제곱 mod p
- 송신자 A : g=3, p=7, a=2
- 수신자 B : g=3, p=7, a=3

3의 (2*3)제곱 mod 7
= 3의 6제곱 mod 7
= (3의 2제곱 mod 7 * 3의 2제곱 mod 7 * 3의 2제곱 mod 7) mod 7
= (2 * 2 * 2) mod 7
= 2의 3제곱 mod 7
= 1

 

31.
공개키 암호방식 기반 개인식별 과정
1) 사용자는 서버에 공개키를 등록한다
2) 서버는 난수 r을 사용자에게 전송
3) 사용자는 r을 비밀키로 암호화하여 전송
4) 서버는 암호화된 R을 사용자의 공개키로 복호화한다

+인증모드
송신자 : 개인키로 암호화
수신자 : 공개키로 복호화
+암호모드
송신자 : 공개키로 암호화
수신자 : 비밀키로 복호화

 

32.
RSA를 이용하여 키를 공유할 때
1) A가 자신의 개인키와 공개키를 생성
2) A는 평문으로 A의 공개키를 B에게 전송한다
3) B는 공유 비밀키를 생성하고 A의 공개키로 암호화하여 (공유 비밀키를) A에게 전송
4) A는 개인키로 공유 비밀키를 추출하고 데이터를 암호화하여 B에게 전송한다

* 송신자B의 공개키로 암호화하고, 수신자A의 개인키로 복호화한다

 

33.

RSA 공개키 암호 시스템
수신자의 공개키 : E, N = 3, 15
암호문 C = 7
이 때, N은 두 소수의 곱이다

C에 대응하는 평문 M은 무엇인가?


해설
N이 15로 주어졌으므로,  p와 q는 각각 3과 5이다.
∮(n) = 2 * 4 = 8
공개키 e는 3이므로
d*3 mod 8 = 1
d은 3이 되고 복호화 알고리즘을 이용하면
암호문 7의 3제곱(343) mod 15가 평문값이다
답은 13

+ RSA 키 생성 알고리즘
1) p, q, n=p*q
2) ∮(n) = (p-1)(q-1)
3) 공개키 e를 선택 ( 문제에서 제시됨 )
4) d*e = 1 mod ∮(n)
5) (d*e) mod ∮(n) = 1
이 때 공개키를 (n, e) 개인키를 (n, d)로 사용한다.

암호화 : 평문 m의 e 제곱 mod n
복호화 : 암호문의 d제곱 mod n

 

 

34.
RSA 알고리즘에 발생할 수 있는 공격
수학적 공격 : 두 개의 소수 곱을 인수분해 하고자 하는 개인키의 비트가 클수록 안전
시간 공격 : 복호화 알고리즘의 실행 시간에 의존하며, 랜덤 딜레이로 방어한다
선택 암호문 공격 : RSA가 임의의 데이터 송신시 암호문으로 간주하여 회신하는 기능을 이용한 것으로, OAEP 알고리즘으로 방어한다
재생 공격 : 암호화하여 송신한 데이터를 보관하여 일정 시간이 지난 후 재전송하는 공격으로 시퀀스넘버, 타임스탬프, 넌스, 시도응답 등으로 방어한다.

+ 암호문 단독COA, 알려진평문KPA, 선택평문CPA(암호기접근), 선택암호문CCA(복호기접근)

 

35.
RSA 암호 시스템의 안전성
- (q-1)(p-1)에서 각각 커다란 소인수를 가져야 좋다
- (p-1)과 (q-1)의 최대공약수는 작은 수인것이 좋다
- 두 소수 p와 q는 사용자마다 각각 다른 소수를 지정한다
- 비밀키는 d, n이고 공개키는 e, n이다.

- 소수 p, q와 ∮(n), 비밀키 d는 공개하지 않는다.

 

 

36.
대칭키 암호시스템
- 블록 암호방식, 스트림 암호방식
- 동작속도가 빠른 장점, 대칭키를 안전하게 공유하는 데에 한계점
- 사용자가 n명일 때 n(n-1)/2개의 키가 사용된다

공개키 암호시스템
- 암호모드와 인증모드
- 인증모드 : 송신자-송신자의 비밀키로 암호화 / 수신자-송신자의 공개키로 복호화
- 암호모드 : 송신자-수신자의 공개키로 암호화 / 수신자-송신자의 비밀키로 복호화

- 사용자가 n명일 때 2n개의 키 사용
- RSA는 암호모드와 인증모드를 둘 다 지원하지만, DSA는 인증모드만 지원한다

 

 

37.
대칭키 암호 시스템의 장점
- 키의 크기가 작다
- 알고리즘 내부 구조가 비교적 간단 (키, 블록, 라운드수)
- 암복호화 속도가 빠르다
- 대량의 데이터 암호화(기밀성)에 유리

비대칭키 암호 시스템의 장점
- 인증과 부인방지 제공 가능

 

38.
해시함수
- 메시지들에 대한 해시값의 길이는 고정된다
- 해시값은 일관성이 보장되어야 한다
- 메시지와 해시값은 따로 분리, 보관하여도 상관없다
- 메시지와 해시값은 N:1 대응이며 해시값의 역상은 구하기 어렵다

 

39.
해시함수
- 무결성 확인 목적
- 일방향성, 충돌 회피, 효율성의 특징
- SHA-1 함수는 MD5보다 느리지만 보안상 더 안전하다 ( 최근 기준으로 둘 다 취약하지만 )

전자서명
- 인증의 증명 용도로 사용할 수 있다 (+부인방지)

 

+ 키가 없는 해시함수는 인증의 용도로 사용하지 않는다.

+ MAC : 인증

+ SHA-1 : MD: 160비트, MD4 해시함수 기반

+ MD5 : MD값 128비트

 

40.

SHA-512
- Markle-Damagard 구조 기반
- 일방향 해시 알고리즘
1024비트의 배수가 되도록 패딩 과정 수행
- 80라운드 과정 수행
512 비트의 메시지 다이제스트
무결성 검증 과정에 사용 (키 값은 사용되지 않음)

 

+ MD5 : MD-128비트, 64라운드
+ SHA-1 : MD-160비트
+ SHA-224 : 512블록, 64라운드
+ SHA-384 : 1024블록, 80라운드
+ SHA-256과 SHA-384 사이에 많은 변화가 있음

 

 

41.
SHA-1을 이용하여 7바이트 데이터의 해시값을 출력한다
패딩되는 마지막 8비트의 값은?
=> 00111000

마지막 블록에 원래 메시지의 길이를 삽입한다
7바이트 데이터이므로 7*8 = 56비트

 

42.
메시지에 대한 충돌저항성을 갖는 해시함수를 설계한다
공격자가 초당 2의 32제곱개의 해시값을 계산할 수 있는 능력이 있고,
정보의 가치가 1.024초 이후에는 위조가 되어도 된다고 하면
공격자가 충돌쌍을 찾지 못하도록 하는 최소 해시값의 비트수를 구하시오
=> 84

*계산
정보의 가치 = 1.024 = 2의 10제곱

N비트 해시코드에 대한 공격의 난이도
역상 저항성 : 2의 n제곱
두번째 역상저항성 : 2의 n제곱
충돌저항성 : 2의 (n/2)제곱

2의 32제곱(공격자의 능력) * 2의 10제곱 (정보의 가치) <= 2의 (n/2)제곱
= 2의 42제곱 <= 2의 (n/2)제곱

즉, n은 84 이상이 되어야 한다.

 

 

43.
메시지 인증MAC
- 데이터에 수정, 삭제 등 변조가 발생되었는지 확인하기 위해 데이터에 덧붙인다 (무결성 보장)
- 생성과 검증은 반드시 당사자들만이 알 수 있는 비밀키를 사용한다
- MAC은 기밀성을 보장하지 않는다

- HMAC은 해시 값을 기반으로 메시지 인증코드를 생성한다

 

+ MDC, MAC, 전자서명 : 무결성 보장

+ 기밀성을 제공하기 위해서는 암호화 기법이 필요하다 (ex) HMAC)

 

44.
해시값과 메시지 인증코드MAC
- 해시값만을 사용하면 MITM 중간자 공격이 발생할 수 있다
- 해시값에 암호개념을 도입한 것이 HMAC이며 이 때 송수신자는 비밀키 또는 세션키를 사전에 공유한다
- 메시지 인증을 위해 사용되는 메시지 다이제스트(해시값)는 위변조되지 않았음을 보장한다
- 메시지 크기는 MAC의 속도에 영향을 미친다.
- 전자서명 속도 < MAC 속도

 

45.
Encrypt-then-Mac(암호화후 MAC 계산) 방법으로 얻은 MAC으로 해결 가능한 검증
- 무결성, 인증, 기밀성 검증

* MAC에는 부인방지 기능이 없다

+ 기밀성과 무결성을 제공하는 방식 (Encrypt)
: HtE , MtE(SSL/TLS), EtM(IPSec), EaM(SSH)

 

46.
메시지 인증코드MAC 순서
1) 송신자A, 수신자B는 사전에 키를 공유하고 메시지의 MAC값을 계산한다
2) 송신자 A는 수신자 B에게 메시지와 메시지MAC값 전송
3) 수신자 B는 A로부터 수신한 값과 직접 계산한 값을 비교한다
4) 수신자 B는 2개의 MAC 값이 동일하면 A로부터 온 메시지라고 판단한다

 

47.
HMAC 설계 목적
- 내장된 해시함수를 쉽게 교체할 수 있어야 한다
- 사용되는 해시함수를 쉽게 구할 수 있어야 한다
- 해시함수의 원래 성능을 거의 유지할 수 있어야 한다

 

 

48.
전자서명의 조건
- 위조 불가 : 합법적 서명자만이 생성
- 서명자 인증 조건 : 서명자를 누구든지 검증
- 재사용 불가 조건 : 다른 전자서명에 사용될 수 없음

- 변경 불가 : 메시지(문서) 변경 불가

 

+ 전자서명 부인방지(개인키), 서명자인증(공개키)

 

 

49.
공개키 암호를 이용한 전자서명
서명자의 [개인키]로 메시지를 암호화하고
서명자의 [공개키]로 메시지를 복호화한다 (인증모드)
서명 생성은 [합법적인 서명자]만이 할 수 있고
서명 검증은 [누구나] 할 수 있다.

 

 

50.
공개키 암호를 이용한 전자서명 (인증모드)
1) A는 공개키와 개인키로 이루어진 한 쌍의 키를 만든다
2) A는 [개인키]를 써서 메시지 서명값을 생성한다
3) A는 B에게 [공개키]와 함께 메시지, 서명값을 전송
4) B는 [A의 공개키]를 사용해 서명값 검증을 한다

 

( 근데 서명 보내기 전에 사전에 키를 공유하는게 보안상 낫지 않나 생각했다... )

 

 

51.
전자서명 생성과정, 검증과정 및 특징
- 메시지에 대한 해시값을 계산하고, 그 결과를 전자서명 생성자의 개인키로 암호화한다
- 검증시 전자서명 생성자의 공개키를 이용해 복호화하고 이를 메시지에 대한 해시값과 비교한다
- 검증과정에 사용되는 공개키는 무결성과 신뢰성이 중요하므로 CA 인증기관에서 발행한 것으로 사용한다
- 검증과정이 성공적으로 끝나면 메시지 출처 인증, 무결성 및 송신사실등을 확인할 수 있다

+ 굳이 최상위 인증기관CA에서 발행할 필요는 없다 (오히려 오버헤드를 유발한다)

 

 

52.
부가형 메시지 인증 절차
- 송신자가 메시지 생성
- 해시함수를 통해 메시지 해시값을 생성하고 이를 [송신자]의 [비밀키(개인키)]로 암호화
- 암호화된 해시값을 메시지에 추가하여 압축하고 전송
- 수신자가 압축을 풀고 전자서명 부분을 분리하여 [송신자]의 [공개키]로 복호화한다
- 해시함수를 통해 메시지 부분에 대한 해시값을 얻는다
- 전송된 해시값과 계산한 해시값을 비교검증

 

 

53.
전자 투표 시스템
- 완전성 : 정확하게 집계함
- 건전성 : 부정한 투표자에 의해 방해되지 않도록 한다
- 익명성 : 결과로부터 투표자를 구별할 수 없음
- 검증가능 : 누구라도 투표결과를 확인하여 검증가능

 

 

54.
전자투표 시스템
- 공개키/개인키를 이용한 암복호화
- 전자 서명
- 은닉 암호 (전자 투표등에서 행위자의 행동노출이 되지 않도록 함)

 

+ 포그 컴퓨팅 : 데이터를 원거리 데이터 센터로 보내는 대신, 주변에서 선별적으로 분석 활용 가능한 컴퓨팅 아키텍처 (클라우드 컴퓨팅보다 근접한 환경에서 서비스를 제공, 짧은 대기시간과 서비스 품질 향상. IoT와 5G 서비스 등 관련.)

 

 

55.

전자서명의 특수서명
- 부인 방지, 의뢰 부인 방지, 수신자 지정

- 은닉 서명, 다중 서명, 위임 서명

 

복호형 전자서명 : 일반서명으로, 검증자를 제한할 수 있다

 

56.
은닉서명
- 서명문의 내용을 숨기는 방식으로 익명성 유지
- 전자서명 이용시 프라이버시 노출 방지
- 전자화폐 사용시 신원 노출 방지

 

57.

공개키 기반 구조 인증서
- 이용자의 공개키를 인증기관의 개인키로 전자서명한 것
공개키 검증에는 인증기관의 공개키가 필요하다
- 인증서에는 일련번호, 유효기한, 전자서명 알고리즘 등이 포함된다
- 인증서에 포함된 공개키 정보 무결성은 누구나 확인 가능

 

 

58.
공개키 기반 구조PKI 인증서의 검증 절차
1) 유효기간을 확인하고 인증서 취소목록CRL에 있는지 확인
2) 인증서 발행자와 자신의 인증서 발행자 일치여부 확인
3) 같다면 공개키로 인증서 서명을 검증하고, 다르다면 디렉터리에서 검색(LDAP)
4) 검색하여 발견한다면 신뢰받는 발행자의 공개키를 이용하여 검증

요약
유효기간과 취소목록 확인
-> 발행자 일치여부 확인
-> 공개키로 검증 또는 디렉터리 검색
-> 신뢰받는 발행자의 공개키로 검증

 

 

59.
전자서명 인증서
- 사용자원 신원정보가 기록된다
- 발행일시, 발생자 신원정보가 기록된다
- 인증기관이 서명한 주체와 인증서 관리정보에 대한 전자서명 값이 기록된다

- CA의 개인키(비밀키)로 서명된 값(전자서명값)이 기록된다

 

 

60.
공인인증서의 기본 영역
- 버전, 발급자, 유효기간

 

공인인증서의 확장 영역 : 키와 정책정보(기관키 식별자, 사용자 키식별자, 키용도 등), 사용자/발행자 속성, 인증경로 제약조건

 

 

61.
인증서 폐지 사유
- 인증서 발행 조직에서 탈퇴
- 개인키 손상
- 개인키 유출 의심

- 인증기관CA가 더 이상 사용자를 인증할 수 없는 경우

- 인증기관CA 인증서가 훼손, 노출됨

+ 인증서 유효기간 만료 ≠ 폐지

 

 

62.
OCSP
- 실시간 인증서 상태 프로토콜
- 인증서 유효성 검증 프로토콜
- 클라이언트가 인증서 취소상태인지 확인 가능

- OCSP클라이언트는 OCSP 서버에 인증서 상태확인을 요청하고, OCSP 서버는 CA 서버에 정보를 요청한다.

 

 

63.
OCSP
- X.509를 이용한 전자서명 인증서의 폐지 상태를 확인하는 프로토콜
- RFC 6960으로 묘사된다. 인터넷 표준의 경로.
- 기본적으로 암호화되지 않으며 HTTP로 주고받는다
- 도입 이유 중 하나는 데이터 트랜잭션의 중요성이 매우 높은 경우 실시간으로 인증서 유효성 검증이 필요하기 때문

 

+ CRL은 주기가 길기 때문에 실시간으로 확인하기 어렵다

 

 

64.
공개키 기반 구조PKI 인증서 관리구조 중 네트워크 구조(그래프 구조)
- 상업적 상호 신뢰 관계 반영
- CA 개인키 손상에 대한 복구 용이
- CA간 직접적 상호 인증 허용

트리 구조
- 경로 탐색이 용이함

 

65.
세션키의 설정 또는 저장 단계에서 세션키를 보호하기 위한 암호화 과정에 적용되는 키
=> 키-암호화 키 Key encryption key (KEK)

+ 세션키 : 일회성
+ 마스터키 : 반복하여 사용

+ CEK : 컨텐츠 암호화에 사용

 

 

66.
KDC (Key Distribution Center)
- 사용자는 암호 통신에 사용될 키를 생성할 필요가 없다
- 키의 관리는 KDC에서 이루어진다
- KDC는 많은 키를 보유하므로 해커에 의한 공격 위험이 높다
- 사용자수만큼 관리해야 할 키가 증가함