전자서명

▶ 배경
종이 문서 사회에서 정보화 사회로의 진전으로 다양한 서비스 요구
데이터 무결성 , 사용자 인증, 부인방지 서비스가 필수적

 

목적
신뢰성 확보 ( 내용의 위·변조 및 신분 확인에 사용)

전자서명 = 사용자 인증 + 메시지 인증

▶ 전자문서의 문제점
• 위,변조가 용이 : 무결성
• 문서작성 사실 입증 곤란 : 부인방지

 

▶ 전자상거래의 문제점
• 거래상대방의 신원확인 곤란 : 사용자 인증
• 전송 내용의 비밀 유지 곤란 : 기밀성

 

▶전자서명으로 알 수 있는 사항

• 서명자 신원확인(User Authentication)
  - 개인키의 소유자가 전자서명 행위자임을 증명
  - 서명자 고유의 표식

• 위조 불가(Not forgeable)
  - 합법적인 서명자 외에는 전자서명 생성 불가 증명

• 변경 불가(Unalterable)
  - 서명한 문서의 내용과 서명의 변경 불가 증명

• 부인 불가(Non-Repudiation)
- 서명은 본인 이외에는 불가능함을 증명

• 재사용 불가(Not Reuseable)
  - 다른 전자문서의 서명으로 사용 불가능함을 증명

 

암호화 방법과 전자서명

전자서명은 전자서명의 조건을 만족하면서 서명방식과 검증 방식이 명확하여야 함


▶ 대칭키 암호 알고리즘에 의한 방법
• 중재된 서명기법
• 서명과 검증을 제 3자에 의해서 행할 수 밖에 없음


▶ 공개키 암호 알고리즘에 의한 방법
• 메시지 복원형 전자서명 방식
• 문서 자체를 이용하는 서명방식
• 메시지 부가형 전자서명 방식
• 문서에 서명메세지를 포함하는 방식

 

공개키 이용 전자서명

공개키 : A의 인감 증명서

개인키 : A의 인감

* 전자서명 : A의 개인크로 데이터의 전자서명 생성, A의 공개키로 전자서명 검증

- 평문(메시지 다이제스트) + 개인키 = 암호문(전자서명)

- 암호문(전자서명) + 공개키 = 평문(다이제스트)

1. 송신자는 보낼 메시지를 해시함수로 다이제스트를 생성한다.

2. 다이제스트와 송신자의 개인키로 암호화한다.

3. 메시지와 서명을 같이 송신한다.

4. 수신받은 서명을 송신자의 공개키로 복호화해 다이제스트를 생성한다.

5. 수신받은 메시지를 해시함수를 통해 다이제스트를 생성한다.

6. 서명을 복호화해 얻은 다이제스트와 메시지를 해시함수를 통해 얻은 다이제스트를 비교한다.

   → 비교해서 같으면 신뢰할 수 있고, 다르면 거래의 신뢰성을 확보할 수 없다.

 

※ 사용자와 메시지 인증은 가능하지만 기밀성 보장이 안된다.

※ 개인키를 잃어버리면 자신이 책임져야 한다.

 

전자서명의 이용 : 전자봉투 (원타임 비밀키)

1. 송신자는 메시지와 암호화하기 위해 난수를 발생해 비밀키를 생성한다.

2. 메시지를 비밀키로 암호화해 암호메시지를 만든다.

3. 비밀키를 수신자의 공개키로 암호화한다.

4. 암호메시지와 공개키로 암호화한 비밀키를 디지털봉투에 담아 전송한다.

5. 수신자는 디지털 봉투에 있는 암호화된 비밀키를 수신자의 개인키로 복호화해 비밀키를 얻는다.

6. 암호화된 메시지를 비밀키로 복호화한다.

 

※ 사용할 때마다 난수를 발생시켜 비밀키로 정한다. 받는 사람의 공개키로 이 비밀키를 암호화한다. 

※ 기밀성이 가능하지만 인증은 불가능하다.

※ 네트워크에서 빠르게 사용 가능하다.

 

공개키와 대칭키를 이용한 전자서명

공개키를 이용한 전자서명으로 사용자 인증이 가능하다.

대칭키를 이용한 전자서명으로 기밀성이 가능하다.

※ 인증과 기밀성이 가능하다.

 

▶ PKI(Public Key Infrastricture) 구성 요소

- 공개키 소유자 증명

- 인증서는 인감증명서에 해당한다. → 기밀성, 무결성, 인증

인증서

 

▶ 인증서의 정의

- 공개키 소유자 증명

- 인증서라 함은 개인키와 이에 합치하는 공개키에 대하여 이를 소유하는 자연인 또는 법인과의 귀속관계 등을 인증기관이 자신의 개인키로 전자서명하여 확인, 증명하는 전자적 정보

▶ 인증서 : X.509

• 1K바이트 정도의 바이너리 데이터
• RFC 2459(X.509 ver. 3)

 

인증서 항목
• 서명전 인증서
  - tbsCertificate(to be signed certificate)
  - 확장항목 이외의 항목 필수
• 서명 알고리즘
  - 메시지 다이제스트 알고리즘(MD2,MD5..)
  - 공개키 암호 알고리즘
• 인증기관
  - 서명전 인증서 부분을 입력으로 해서 서명
  - 인증기관의 개인키와 인증서로 기재한 알고리즘 이용

 

▶ 인증서 발행과 이용

인증서를 발행하기 위해서는 공개키의 소유주는 인증기관에 공개키를 등록하고 인증기관은 등록된 개인의 공개키를 자신의 개인키로 서명해서 인증서를 발행한다.

▶ 인증 기관과 CRL

• CA (Certificate Authority) : 인증서 발행기관
• RA (Registration Authorities) : 인증서 유저 등록 기관

 

 

• CRL (Certificate Revocation List) : 인증서 폐지 목록

키 관리

비밀키 분배의 어려움

▶ 물리적인 방법으로 전달
 • 링크 암호화에서 적용 가능
 • 단대단 암호화에서 적용 어려움


▶ 이전의 키를 사용하여 암호화된 새로운 키를 전송
 • 링크 암호화나 단대단 암호화 모두 적용 가능
 • 공격자가 어떤 한 키를 안다면 이후의 모든 키가 노출


▶ 제 3자(키 분배 센터)를 통하여 키 분배
 • 단대단 암호화에서 널리 채택
 • 사용자는 키 분배 센터와 유일한 키를 공유

 

▶ KDC를 이용한 키분배 방법 (Kerboros)

전제조건

각 사용자 A, B는 KDC에서 분배한 마스터 키 1개씩 소유하고 있다.

 

1. Request || ID(A), A, B

- 발신자 A는 응답자 B와 통신하기위해 KDC에 Request 보낸다. 

- 요청에는 자신의 신원정보 ID(A)와 B와 통신할 세션키를 요청한다. (*세션키=비밀키)

 

2.Eka[SK, ID(B), T]

- KDC는 발신자 A에게 B와 통신할 세션키, B의 신원정보 ID(B), 난수(T)를 응답한다. 

- 응답시 KDC는 A의 마스터키로 암호화해 A에게 보낸다. (KDC는 A, B의 마스터키를 가지고 있다.)

 

2. Ekb[SK, ID(A), T]

- KDC는 발신자 B에게 세션키와 A의 신원정보 ID(A), 난수(T)를 B의 마스터 키로 암호화해서 보낸다.

 

3. Esk[ID(A), T]

- A가 자신의 신원정보 ID(A)와 난수 (T)를 세션키로 암호화해서 B에게 전송한다.

- B는 A의 난수(T)와 A의 신원정보 ID(A)를 통해 A의 신원을 확인한다.

 

4. Esk[ID(B), T+1]

- B는 자신의 신원정보 ID(B)와 난수(T+1)를 연산하여 세션키로 암호화해 A에게 전송한다.

- A는 난수(T+1)에 연산된 것을 확인해 B의 신원을 확인한다.

 

통신 종료

- 통신이 종료되면 발급받은 세션키는 폐기된다.

- 다시 통신하려면 세션키를 KDC에 요청한다.

 

▶ 공개키 기관에 의한 세션키 분배 (SESAME) 

전제 조건

- A는 자신의 공개키(KUa)와 개인키(KRa)를 각각 소유한다.

  A는 공개키 기관에 자신의 공개키(KUa)를 등록한다.

  공개키 기관은 공개키 기관의 공개키인 (KUau)를 나눠준다.

- B는 자신의 공개키(KUb)와 개인키(KRb)를 각각 소유한다.

  B는 공개키 기관에 자신의 공개키 (KUb)를 등록한다.

  공개키 가관은 공개키 기관의 공개키인 (KUau)를 나눠준다.

 

1. Request || Time1

- A가 B와 통신하기 위해 B의 공개키를 공개키 기관에 요청한다.

- 이때 Request를 구분하기 위한 난수(Time1)를 같이 보낸다. (공개키 기관인지 알기 위해)

 

2. E(KRau)[KUb||Request||Time1]

- 공개키 가관은 요청 메시지와 공개키 기관에 등록된 B의 공개키(KUb)를 공개키 기관의 개인키 (KRau)로 암호화해 A에게 응답한다.  -  A는 공개키 기관이 보낸 것을 공개키 기관의 공개키(KUau)로 복호화해 확인하여 B의 공개키 (KUb)를 얻는다.

→ A는 B의 공개키를 얻게 된다.

 

3. E(KUb)[ID(A)||N1]

- A가 자신의 신원정보 ID(A)와 N1(난수)를 B의 공개키(KUb)로 암호화해 B에게 전송한다.

  (ID(A): 자신이 누군지 알리기 위함 / N1: B인지 확인하기 위함)

- A가 B의 공개키로 암호화하여 전송한 것을 B가 개인키로 복호화하기에 기밀성이 보장된다.

 

4. Request||Time2

B는 자신의 개인키로 복호화하고 A의 공개키가 없으므로 공개키 기관에 Time2와 함께 요청한다.

 

5. E(KRau)[KUa||Request||Time2]

- 공개키 기관은 요청 메시지와 A의 공개키를 공개키 기관의 개인키로 암호화해 응답한다.

- 공개키 기관이 공개키 기관의 개인키(E(KRau))로 암호화하여 전송한 것을 B가 공개키 기관의 공개키로 복호화해 A의 공개키라는 것을 확인하고 얻는다.

→ B는 A의 공개키를 얻게 된다.

 

6. E(KUa)[N1||N2]

- B는 N1, N2 난수를 A의 공개키(KUa)로 암호화하여 전송한다. 

  (N1: B인것을 확인하기 위해 A가 전송, N2: A인지 확인하기 위해 B가 전송)

- B가 A의 공개키로 암호화하여 전송한 것을 A가 개인키로 복호화해 기밀성이 보장된다.

 

7. E(KUb)[N2]

- A는 N2라는 응답을 보내 자신이 A라고 응답한다.

- A가 B의 공개키로 암호화하혀 전송한 것을 B가 자신의 개인키로 복호화해 기밀성이 보장된다.

 

8. E(KUb)[E(KRa)[Ks]]

- A는 세션키(Ks)를 자신의 개인키로 암호화해 B의 공개키로 암호화하여 B에게 전송한다.

- B는 자신의 개인키로 복호화하고 A의 공개키로 복호화해 세션키를 획득한다. (기밀성 보장)

 

통신 종료

- 통신이 종료되면 세션키는 버려진다.

- 다시 통신하려면 8번 과정이 진행된다. (1-7 과정 진행X)

- A, B는 서로 공개키 기관으로부터 받은 안전한 공개키를 소유하고 있다고 생각하기 때문이다.


해시함수

- 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수

- 메시지 인증 코드에 대한 변형

- 메지시의 모든 비트들에 대한 함수

- 임의의 길이(M)을취해 정해진 크기 h의 메시지 Digest를 만드는 일방향 함수

- 해시의 목적 : 무결성 확보

▶ 해시함수의 요구조건

• 어떤 크기의 메시지 M에도 적용 가능
• H는 고정된 크기의 hash code를 만듦
• H(M)은 어떤 주어진 M에 대해서도 계산하는 것이 쉽다. (해시함수는 비밀키 암호 시스템보다 빠름
• 주어진 hash code h에 대해, H(M) = h인 M을 찾는 것이 계산적으로 실행불가능(one-way)

  → 해시코드 사용 이유: 계산방법이 없고 무작위로 대입하기때문(생일공격)
• 어떤 주어진 블록 M에 대해서, H(M’) = H(M) 인 M과 M’가서로 다른 것을 찾는 것이 계산적으로 실행 불가능
• H(M’) = H(M)인 어떤 (M, M’) 쌍을 찾는 것이 계산적으로 실행 불가능(collision-free)

 

 

단순 해시 함수

: 메시지를 n 비트 블록으로 m개로 나누어 블록끼리 XOR하여 출력되는 블록을 해쉬로 함

▶ 해시함수의 종류

 

공개키 알고리즘
• 두 개의 다른 키 사용


공개키 : 모든 사람이 접근 가능한 키 (공개)

개인키 : 각 사용자 자신만이 소유 (비밀)


관용 암호에 사용되는 키는 비밀키라고 함


공개키 알고리즘의 특징
• 암호 알고리즘과 암호키를 알아도 복호키 계산 불가능
• 두 개의 키 중 하나는 암호에 다른 하나는 복호에 사용

 

1. 공개키와 개인키 생성
2. 공개키는 공개하고 개인키는 개인이 소유
3. A는 B의 공개키로 메시지를 암호화
4. B는 자신의 개인키로 메시지 복호화
(B의 개인키를 모르는 제 3자는 메시지 복호 불가능)

 

- 암호 사양
  암호알고리즘 : mod 7에서 곱셈
  공개키 : 3, 개인키 : 5
  원문 : 4

- 암호화
 4 * (3 mod 7) = 5 (암호문)

- 복호화
 5 * (5 mod 7) = 4 (원문)

>> mod 7 에서 3, 5는 서로 역원 (mod에서는 정수 내에 곱셈에 대한 역원이 존재한다.)

 

mod 소수에서는 잉여계가 다 나온다.

 

원문 : WE WISH YOU A MERRY CHRISTMAS AND A HAPPY NEW YEAR
 W E  W  I  S  H  Y  O  U  A  M  E  R  R  Y  C  H  R  I  S  T  M  A  S  A  N  D  A  H  A  P  P  Y  N  E  W  Y  E  A  R
23 5  23 9  19 8  25 15 21 1  13 5  18 18 25 3  8  18 9  19 20 13 1  19 1  14 4  1  8  1  16 16 25 14 5  23 25 5  1  18
4  25 4  8  21 3  14 1  31 5  28 25 16 16 14 15 3  16 8  21 26 28 5  21 5  33 20 5  3  5  6  6  14 33 25 4  14 25 5  16
D  Y  D  H  U  C  N  A  %  E  @  Y  P  P  N  O  C  P  H  U  Z  @  E  U  E  &  T  E  C  E  F  F  N  &  Y  D  N  Y  E  P
^암호

개인키 : 5
공개키 : 15

암호화 : (개인키*원문 키맵매칭 값) mod 37 = 암호문 값

암호 알고리즘 : mod37 에서 곱셈
공개키 : 15
키맵
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
0 A B C D E F G H I J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  !  @  #  $  %  ^  &  *  (  )

서명문 : DYDHUCNA%E@YPPNOCPHUZ@EUE&TECEFFN&YDNYEP

복호화 : (공개키*암호문 키맵매칭 값) mod 37 = 원문 값

 

▶ 공개키 암호의 기밀성

▶ 공개키를 이용한 인증 (부인 방지)

- 기밀 통신시 공개키로 암호화한다.

- 사용자 인증시 개인키로 암호화한다.

 

▶ 공개키를 이용한 기밀통신과 서명

▶ 공개키 암호 시스템의 사용
• 암호/복호 (수신자의 공개키로 메시지 암호)
• 디지털 서명 (송신자의 개인키로 메시지 서명)
• 키 교환 (세션키를 교환하기 위해 사용)

▶ 공개키 암호는 수학적인 난제를 이용 암호화를 수행한다.


▶ 소인수 분해의 어려움
• RSA


▶ 이산대수문제
• 엘가말(El Gamal)
• 디퍼헬만(Diffie-Hellman)
• 타원 곡선 (Elliptic Curve)

 

▶ 공개키 알고리즘의 조건 (Diffie와 Hellman)
• 키 쌍(공개키 KU, 개인키 KR)의 생성이 쉽다.
• 다음 식과 같은 암호문의 생성이 쉽다.

• 다음식과 같은 암호문의 복구화가 쉽다.

• 공개키 KUb로부터 개인키 KRb를 결정하는 것은 어렵다.
• 공개키 KUb와 암호문 C로부터 메시지 M의 복구가 어렵다.
• 암호와 복호 기능이 다음과 같이 적용 가능하다. (추가 사항)

 

▶ 공격 유형
• 전사적 공격에 취약
  → 키의 크기를 크게 함으로써 방지
(상대적으로 속도가 느려짐)
• 공개키로부터 개인키를 계산하는 방법
  → 수학적으로 계산이 불가능함을 증명하지 못함
• 가능한 메시지 공격
: 모든 가능한 메시지를 공개키로 암호화하여 암호문과 비교
  → 메시지에 임의의 비트를 추가함으로써 방지

 

▶ RSA의 개발
: 1977년에 개발되어 1978년에 공포 (Rivest, Shamir, Adleman)


▶ 알고리즘
• 평문은 블록으로 암호화
• 암호화

• 복호화

공개키 : KU = {e, n}, 개인키 : KR = { d, n }

 

▶ e,d,n 값 생성
• p, q 선택 : p와 q는 10¹ 정도의 소수
• n = p * q
• e : GCD(e, ф(n)) = 1인 값을 선택
• d : e * d = 1 mod ф(n) 인 값을 계산

 

▶ 복호화 과정의 증명

 

DES (Data Encryption Standard)

암호화 키(Encryption key) = 복호화 키(Decryption key)

대칭키 암호 시스템

혼합(confusion), 확산(Diffusion)을 이용 원문과 암호문간에 통계적 연관이 없다.

 

64비트 블록 암호 알고리즘
• 입력 메시지를 64비트씩 나누어 처리


56비트 키를 사용
• 64비트 중 8비트는 parity check로 사용 (** parity bit : 에러 검출하기 위한 bit)


기본 구조
• round 수 : 16 round
• 복호화는 암호화의 역순

 

▶ 진리표

- 치환 : 문자를 다른 문자로 바꾸는 것

- 전치 : 문자 위치 바꾸는 것

1 라운드

위 라운드를 16번 반복한 것이 아래와 같다.

▶ 초기 전치

초기 전치

역전치는 전치를 반대로 하는 것이다.

▶ 확장 순열

확장 순열

▶ 치환 선택

▶ S-box

 

<S1>

 

▶ 순열(P)

 

▶ KEY

64비트의 키를 이용
• 64비트를 56비트로 축약하여 서브키를 생성
• 8번째 비트마다 패리트비트를 포함하여 64비트를 키로 이용
• 패리트비트를 제거하여 56비트로 이용

 

암호화 과정에 맞추어 16라운드를 실행
• 각 라운드마다 서브키를 생성

 

오버플로우 - 좌측 이동 : 1010 > 0100 > 1000 > 0000 > 0000

와퍼라운드 - 좌측 이동 : 1010 > 0101 > 1010 > 0101 > 1010  (뒤로 붙임)

이것을 16번 반복해 키를 16개 생성

 

▶ PC-1

▶ PC-2 (축약전치)

▶ 좌측 이동 횟수

 

▶ DES 작동 모드

- ECB (Electronic Codebook) 모드

 

- CBC (Cipher Block Chaining)

 

- CFB (Cipher Feedback)

 

- OFB (Output Feedback) : 링크암호

* CFB와 OFB는 같은 것이다. (데이터 추출 위치만 다르다.)

* 단대단 암호와 링크 암호는 사용 용도만 다르고 구별하는 의미가 없다.

 

▶ DES 작동 모드 - 3중 DES

DES의 brute-force공격에 대한 취약성을 보완
 • 새로운 알고리즘 개발 : IDEA (128 bit 키 사용)
 • DES의 응용 : 3중 DES, 2중 DES


3중 DES
 • 2개의 키를 사용 (DES 3번 사용)
 • 암호화 : 암호화, 복호화, 암호화
 • 복호화 : 복호화, 암호화, 복호화
 • brute-force 공격에 DES보다 강함

 • 암호화 복호화 과정

 

 

 

 

비밀키 암호의 원리

평문 : 주고 받는 메시지

- 보통 암호알고리즘 = 복호알고리즘 같은 것을 사용

- 논리적으로 간단한 알고리즘을 사용

 

대칭키 방식 특징
• 암호 알고리즘의 비도는 키의 비밀성에 의존
• = 관용 암호, 대칭키 암호, 공유키 암호


장점
• 다양한 알고리즘 개발, 알고리즘 수행속도가 빠름

 

 단점 

• 키 분배가 어려움. (키를 나눠가져야해서 만나야함)

• 책임 추적성이 없음 ( 누가 잘못했는지 밝혀내는 것 ) → 인증을 못함 (전자 서명 어려움)

 

 

Feistel 암호

• 별도의 복호화 과정이 불필요
• 블록 암호의 대표적인 구조
• Li=Ri-1, Ri=Li-1 XOR F(Ri-1)
• 라운드 함수(=반복)와 무관하게 복호화가 됨 (짝수 라운드만 함)
• 구조적인 취약점이 발견되지 않음
• 취약한 라운드 함수를 반복적으로 사용함으로 강한 암호를 설계
• 암호화와 복호화가 동일

Feistel

대칭키암호의 종류
• DES, AES, IDEA, SEED, RC4, 등 (현재 DES, SEED는 사용하지 않는다.)

 

 

DES (Data Encryption Standard)

암호화 키(Encryption key) = 복호화 키(Decryption key)

대칭키 암호 시스템

혼합(confusion), 확산(Diffusion)을 이용 원문과 암호문간에 통계적 연관이 없다.

 

64비트 블록 암호 알고리즘
• 입력 메시지를 64비트씩 나누어 처리


56비트 키를 사용
• 64비트 중 8비트는 parity check로 사용 (** parity bit : 에러 검출하기 위한 bit)


기본 구조
• round 수 : 16 round
• 복호화는 암호화의 역순

 

진리표

 

치환 기법 - 시저암호

예제 (Key : 3)
• 평 문 :    meet    me    after    the    toga   party
• 암호문 : phhw   ph    diwhu  wkh   wrjd  sduwd


암호화 방식 (문자 p를 암호화)
• C = E(p) = (p+3) mod (26)
• 일반화 : C = E(p) = (p+k) mod (26)
• 문자 p는 C로 암호화

 

복호화
• p = D(C) = (C -3) mod (26)
• 일반화 : p = D(C) = (C - k) mod (26)
• 문자 C는 p로 복호화


단점
• 암호화 및 해독 알고리즘을 알고 있다.
• 가능한 키가 25개 뿐이다.
• Brute-force attack이 가능
• 평문의 언어를 알고 있으며 쉽게 인식할 수 있다.

 

치환 기법-단일치환

각 문자에 26자의 치환 가능
• 시이저 암호의 키 공간을 급격히 증가
• 시이지 암호 : 25
• 단일 치환 암호법 : 26!


단점
• 출현 빈도수를 이용해 평문 유추가능
ex) 영어 문장에는 t, e, a, h 등이 많이 나타남
암호문에서도 그에 상응하는 문자가 같은 빈도로 나타남

 

치환 기법 - 다중치환

2자기씩 암호화

playfair 알고리즘은 5 * 5 행렬에 기초
키워드가 monarchy인 행렬

난수표

•키워드 중복 문자를 제외하고 좌에서 우로, 상에서 하로 문자를 채운다.
•I와 J는 한 문자로 취급

 

암호화 방법
• 반복되는 평문은 X와 같은 채움문자로 분리
- balloon : ba lx lo on
• 같은 행에 두문자가 있을 경우 우측에 있는 문자와 치환
- ar은 RM으로 치환
• 같은 열에 두문자가 있을 경우 바로 밑에 문자와 치환
- mu는 CM으로 치환
• 그 외에 평문자쌍는 대각선에 위치한 문자와 치환
- hs는 BP로, ea는 IM(또는 JM)

 

치환 기법 - 다중단일문자치환

단순 단일 문자 치환 방법을 개량


다중 단일 문자 치환 암호방법의 공통점
• 하나의 단일 문자 치환 규칙 집합을 사용
• 주어진 변환에 사용될 규칙은 키에 의해 결정


Vigenere 방법 (표참조)
• 키워드 : Infinitive
• 평문 : I see him drive

Vigenere 표

특징
• 평문자에 대한 암호문자가 유일한 키워드에 각 문자에 대하여 여러 개 존재
• 문자 빈도수에 대한 정보가 불분명해진다


단점
• 평문 구조에 대한 정보가 모두 은폐되지는 않는다.
• 단일 문자나 다중문자로 암호화 되었는지 아는 것은 쉽다.
• 빈도수에 따라
• 키워드의 길이를 유추가능

 

전치암호

평문자의 순서를 바꿈
rail fence 기법
깊이 : 3
평문 : To have dinner in the restaurant is expensive

암호문 : tntotihhsaeevrxeepdseitnnasnuiervraeina

 

 

사각형 행렬 사용

암호문 : atstsvutex…
전치 암호기법은 두 단계 이상의 전치를 행함으로써 더 안전성을 높일 수 있다.

▷ 암호 개념

통신 당사자들끼리만 아는 비밀스러운 신호나 부호
암호화와 복호화하기 위한 원리, 수단, 방법 등을 취급하는 기술이나 과학

암호 시스템에서 기밀성, 무결성 확인

** plain text : 주고받는 메시지

- 암호 알고르즘, 복호 알고리즘은 같은 것을 사용한다. 

- 문제가 없는 알고리즘만 사용한다.

- 메시지를 보낼 때 평문으로 보내든 암호문으로 보내든 속도 저하가 없다.

 

평문을 암호화하기 위한 연산자의 유형

• 치환 (Substitution) : 평문의 각 원소를 다른 원소로 사상
• 전치 (Transpostion) : 평문의 각 원소를 재배열 (글자 재배열)
• 혼합 (Confusion) : 평문의 원소를 치환 선택(bit) (치환, 전치 혼합 사용)
• 확산 (Duffusion) : 평문의 원소를 확대(bit) (비트 수 확대)

 

사용된 키의 수

 대칭키 

: 송수신자가 같은 키를 사용

대칭키 : 암호키 = 복호키

키를 나눠가져야 해서 만나서 키를 나눠가져야 한다.

 

• 공개키 

: 송수신자가 다른 키를 사용

공개키 : 암호키 ≠ 복호키

공개키와 개인키가 있어야 암호화, 복호화를 할 수 있다.

송신자와 수신자가 각각 자신만의 공개키와 개인키를 만든다.

네트워크상에 공개키만 공개한다.

송신자는 수신자의 공개키를 가져와 암호화해 암호문을 수신자에게 보낸다. 

수신자는 수신된 암호문을 자신의 개인키로 복호화한다.

  * 단점은 너무 느림.

 

평문 처리 방법

• 블록 암호화 (Block cipher) : 연산을 블록단위로 처리
• 스트림 암호화 (Stream cipher) : 입력을 연속적으로 처리

 

 

▷ 암호 원리

단대단 암호 (End-to-End Encryption)

• OSI 참조모델에서 가장 높은 계층(7,6)에서 이루어진다.
• 네트워크에서 보안유지에 실패하더라도 데이터의 비밀성은 위협받지 않는다.
• 암호화는 송수신 프로세서가 담당한다.


링크 암호 (Link Encyption)

• OSI 참조모델에서 가장 낮은 계층(1,2)에서 암호화된다.
• 송수신 호스트나 중간 노드에서 노출된다.
• 신뢰적인 호스트 사이에 비신뢰적인 매체를 사용할 때 유리하다.
• 암호화는 송수신 호스트에서 담당한다.

• 유선 전화에서 음성을 암호화할 경우 사용한다.

 

** 단대단 암호와 링크 암호는 사용용도만 다르다.

 

관용 암호 ( = 대칭키 암호 )

• 암호/복호에 동일한 키 와 동일한 알고리즘 사용
• 수신자와 송신자는 키를 교환해야 함
• 공유한 키(비밀키)는 비밀로 유지
• 키 분배의 어려움
• 디지털 서명 불가능
• 속도가 빠름


공개키 암호

• 암호/복호에 각각 서로 다른 키 와 동일한 알고리즘 사용
• 수신자와 송신자는 연관된 키쌍 중 하나를 알아야 함
• 키 쌍중 하나(개인키)를 비밀로 유지
• 공개키를 공개
• 디지털 서명 가능
• 속도가 느림

 

 

고전적 암호 기술 (손으로 하는 암호 기법)

암호 방법
• 다양한 원문의 변환에 의해 외부인이 그 의미를 알지 못하도록 메시지를 변형
• 치환, 전치를 이용 원문을 숨김

 

1) Steganograhpy

: 메시지를 특정 메시지 위치에 숨기는 방법

특징

• 전송 내용을 숨기는 방법

• 메시지의 존재 자체를 은폐
• 원문 내의 단어나 문자를 적당히 배열 함으로써 실제 메시지를 나타냄

 

예제

• 문자 마킹 (Character marking)
  - 원문의 문자에 연필로 덧써서 표시를 해 빛을 적당한 각도로 비춰어야만 보임
• 보이지 않는 잉크 (Invisible ink)
  - 종이에 열이나 화학 처리를 해야만 보이는 잉크를 사용
• 핀 구멍 (Pin punctures)
  - 빛을 비춰야만 보이는 작은 구멍을 원문에 넣는 방법

 

Steganography의 장점

• 생성이 쉽다.


Steganography의 단점

• 상대적으로 적은 정보 비트를 은닉하는데 많은 오버헤드 요구
• 방법 노출 시 재사용 불가능
• 비밀통신에 대한 사실이 발견되면 타인에 의해 이용될 수 있다.

• 위치만 알고 있으면 확인 가능


최근 경향

• 동영상, 이미지 파일을 이용 원문을 숨기는 방법이 인터넷 등의 네트워크에서 이용됨
• 테러, 범죄에 이용되는 경우가 나타남

 

+ Recent posts