'NCS보안3기/암호'에 해당되는 글 4건

  1. 2017.03.28 [Encryption] 해쉬 함수
  2. 2017.03.27 [Encryption] 블록암호와 DES
  3. 2017.03.27 [Encryption] 고전 암호 기법
  4. 2017.03.27 [Encryption] 컴퓨터 보안과 암호
NCS보안3기/암호2017. 3. 28. 16:44

1. 해쉬함수


임의의 길이 이진 수열을 입력 받아 고정된 길이의 이진 수열을 출력

압축( Compression ) -> h:D→R, |D|>|R|    many to one => Collision

계산 용이성 h(x)


해쉬함수의 분류


2. 해쉬 함수의 특성

* MDC( Modification Detection Code )의 성질

- Preimage resistance (one-way)

주어진 y에 대하여 h(x) = y가 되는 x를 찾는 것이 어렵다.

- 2nd preimage resistance (weak collision resistance)

주어진 x에 대하여 h(x) = h(x')가 되는 x'≠x 를 찾는 것이 어렵다.

- Collision resistance (strong collision resistance)

h(x) = h(x')이 되는 x≠x'의 쌍을 찾는 것이 어렵다.


OWHF : preimage resistance, 2nd preimage resistance

CRHF : 2nd preimage resistance, collision resistance


* MAC( Message Authentication Code )의 성질

- 계산 저항성 (computation resistance)

(xi, hk(xi)) 쌍이 주어지든, 주어지지 않았든 간에

∀x≠xi 에 대하여 MAC 값 hk(x)를 계산하기 어렵다.


3. MDC 해쉬 함수의 기본 구성법


* 사전 처리

- 메시지를 고정된 길이 n으로 분할 m = m1m2K mr

- padding : mr'=mr||0K 0|| |m| if |mr| ≠ n

   mr' = 100K 0|| |m| if |mr| = n


* 기초함수( 압축함수 )를 이용하여 반복 처리 hi = f(mi, hi-1)

* 사후처리 : H(m) = g(hr) 선택적으로 적용


4. 블록 암호를 기초로 한 해쉬 함수

* Rabin Hash Function

- 메시지를 블록 암호에 적용될 입력의 크기와 동일한 블록으로 나눈다.

- m = m1m2K mt

- IV : 초기 벡터


- Meet-in-the middle attack이 적용된다.

M||H(M)이 관찰되면 M'=m1'm2'을 선택

m1'으로 IV를 암호화하고, m2'으로 H(M)을 복호화하여 그 값이 일치하면 메시지 위조 가능


*Davies-Mejer Hash Function

- Rabin 방식을 개선하여, '중간충돌' 공격으로부터 안전한 해쉬 함수


5. 전용 해쉬 함수

- 소프트웨어로 고속 동작이 가능한 형태로 제안

- MD4 : Rivest가 제안(1990), 취약점이 발견되어 폐기

- MD5 : MD4를 보강(1992)

- SHA : 미국 표준 해쉬 알고리즘(1993, SHA1(1995))

- RIPEMD-128, RIPEMD-160 : 유럽에서 제안

- HAVAL : 호주에서 제안

- HAS : 한국 표준

< MD4를 기준으로 작성된 표 >


6. MD5

* 기본구조


- b 비트 메시지를 512비트 단위로 분할

- 최종적으로 남은 메시지에 1000...을 삽입하여 448비트가 되게 하고 b mod 2⁶⁴를 삽입하여 512비트 생성


* 압축함수



- 각 mi를 32비트씩 분할하여 16개의 소블록 X[j]를 생성하여 압축함수에 입력

- 4라운드로 구성

- 128 비트 A,B,C,D를 메시지 블록으로 변환하여 128비트 출력


* Round 함수


7. MDC 이용 방법

* 무결성 제공



* 메시지 기밀성과 동반한 무결성 제공


* MD 암호화를 통한 무결성 검증



'NCS보안3기 > 암호' 카테고리의 다른 글

[Encryption] 블록암호와 DES  (0) 2017.03.27
[Encryption] 고전 암호 기법  (0) 2017.03.27
[Encryption] 컴퓨터 보안과 암호  (0) 2017.03.27
Posted by Imp3rio
NCS보안3기/암호2017. 3. 27. 23:22

- 블록암호는 평문 블록 전체를 가지고 동일한 길이의 암호문을 블록을 생성하는 암/복호화 방식

- 많은 블록암호가 Feistel 구조를 띄고 있다.

* 동일한 라운드 수로 구성되어 동작

* 각 라운드는 데이터의 절반이 치환으로 수행, 이후 데이터의 두 개의 반을 교환하는 순열 수행

* 원본의 키는 확장되어 각 라운드마다 다르게 사용


1. 스트림 암호

- 한번에 1비트 혹은 1바이트의 디지털 데이터 스트림을 암호화한다.

- 키 스트림은 평문 비트 스트림 만큼의 길이를 갖는다.




2. 블록 암호

- 평문 블록 전체를 가지고 같은 크기의 암호문 블록 생성한다.

- 전형적으로 64비트 또는 128비트를 사용한다.


3. Feistel 암호 구조의 동기

- 블록암호는 n비트 암호문 블록을 생성하기 위해 n비트 평문 블록을 이용하여 연산한다.

- 2ⁿ 가지의 서로 다른 평문 블록이 존재한다.

- n비트-n비트 블록치환 (n = 4인 경우)

  -> 4비트 입력으로 16개 값 중 하나 선택하고, 내부 치환에 의하여 16개 출력 값 중 하나에 대응하여 4비트 출력


4. 블록 암호의 원리

- 두 개이상의 기본 암호 연속적 수행(치환, 순열 번갈아 수행)

- 치환 : 평문의 각 원소 또는 원소의 그룹을 다른 원소에 사상

- 순열 : 평문 원소의 순서는 순열의 순서대로 재배치

- 확산과 혼돈 : 통계적 분석에 기초한 암호 해독 방지

- 확산 : 평문의 통계적 구조가 암호문에 광범위하게 분산(평문과 암호문 관계 복잡)

     각 평문 숫자가 다수의 암호문 숫자 값에 영향

- 혼돈 : 암호문의 통계적 구조와 암호 키 값 사이의 관계 복잡

     키를 이용한 암호문 생성 방법 복잡(키 추론 어려움)


5. Feistel 암호 구조

- 처리구조

* 길이 2w 비트인 평문 블록(L0, R0) 분할처리

* K로부터 유도된 n개의 키(ki) 사용

* n회의 동일한 반복 구조 실행

- 하나의 반복 구조

* 오른쪽 반 R0에 반복함수 F 적용

반복 서브키 K1 적용(K ≠ Ki)

* 왼쪽 반 L0와 XOR(치환 작용)

* 좌우 양쪽 결과를 교환(순열 작용)


* Feistel 암호 설계의 고려사항

- 빠른 소프트웨어 암/복호화

* 어플리케이션 또는 유틸리티 함수에 내재

* 알고리즘의 실행속도가 중요

- 분석의 용이성

* 암호 해독의 취약성에 대한 알고리즘의 분석이 쉬움

* 고도의 신뢰성과 보안 강도를 위한 개발 용이


6. 설계 특성

- 블록 크기(64비트)

* 큰 블록은 보안 강화하지만 암/복호 속도는 저하

* 암/복호 속도를 고려 64비트 일반적

- 키 크기(128비트)

* 큰 키는 보안 강화하지만 암/복호화 속도는 저하

* 암/복호 속도를 고려하여 128비트 일반적(64비트 이하는 해독 용이)

- 반복 수

* 다중 반복과정은 보안성 강화

* 16회 반복이 일반적

- 서브키 생성 알고리즘

* 서브키 생성 방법이 복잡할수록 강력

- 반복함수

* 적용되는 반복함수가 복잡할수록 강력


7. Feistel 복호 알고리즘

- 암호화와 복호화에 같은키 사용을 위하여 서브키 ki를 역순으로 사용


8. DES(Data Encryption Standard)

* 특징

- 1977년 미국 표준국에서 미 연방 정보처리 표준46으로 채택

- 64비트 블록 암호 알고리즘

- 56비트 키를 사용

* 64비트 중 8비트는 parity check로 사용

- 기본구조

* round 수 : 16 round

* 복호화는 암호화의 역순

- 최근에는 DES암호화를 세 개의 키로 세 번 반복함으로써 암호의 강도를 높인 Triple-DES를 사용


9. DES 암호화

- 64비트 순열 입력

- 56비트 키 사용




- 초기 순열


- S-Box



* DES의 복호화 알고리즘

- 암호화 알고리즘을 동일하게 적용

- 부분키 ki는 역으로 적용시킨다.


* 쇄도 효과 (avalanche effect)

- 평문 또는 키 값의 소량의 변화가 암호문에 매우 큰 변화를 가져와야 한다.


10. DES의 운영모드

* ECB 모드

- 특징

* 에러 전이 없음

* 하나의 평문을 한 번 암호화 사용 권고됨

* 세션키 암호화와 강티 애무 특별한 용도로만 사용

* 암호화, 복호화 병렬처리 가능

- 단점

* 동일 암호문은 동일한 평문 생성

* Database 응용에 부적당

- 암호화와 복호화


* CBC 모드

- 특징

* 에러전이 발생

* 초기치는 메시지별로 선택, 비밀일 필요는 없으나 무결성 요구됨

* 암호화시 암호문 블록에 에러가 발생하면 이후의 모든 암호문에 에러 발생

* 복호화 병렬처리 가능

* 인증에 사용


- 암호화와 복호화


* CFB 모드

- 특징

* 문자나 비트 단위 취급( 통신프로토콜 하위계층 )

* 암호화 과정만 필요

* 복호화는 병렬처리 가능

- 암호화와 복호화


* OFB 모드

- 특징

* 에러전이 없음 ( 암호문 1비트 에러는 평문 1비트 에러 )

* 키 수열은 평문과 무관( 사전계산 가능 ), 스트림 암호로 사용

* 키 수열의 동기화 필수적

* 위성과 같은 noisy 채널에 사용

- 암호화와 복호화




'NCS보안3기 > 암호' 카테고리의 다른 글

[Encryption] 해쉬 함수  (0) 2017.03.28
[Encryption] 고전 암호 기법  (0) 2017.03.27
[Encryption] 컴퓨터 보안과 암호  (0) 2017.03.27
Posted by Imp3rio
NCS보안3기/암호2017. 3. 27. 17:46

- 대칭암호 : 암호화와 복호화 과정에 동일한 키를 사용하는 암호 시스템.

- 대칭 암호는 비밀키와 암호화 알고리즘을 사용하여 평문을 암호문으로 바꾼다. 또한 동일한 키와 복호화 알고리즘을 사용하여 암호문으로부터 평문을 얻는다.

- 암호 알고리즘의 두가지 공격혀애

1. 암호 알고리즘의 특성에 기반을 둔 암호 분석학

2. 모든 가능한 키 값을 사용하는 전사적 공격

- 회전자 기계 : 치환 기법을 사용하는 정교하게 미리 계산된 하드웨어 장치

- 스테가노 그래파 : 어떤 규모가 큰 대상에 비밀 메시지를 숨기는 기법


* 대칭 암호 방식의 구성 요소


- 평문( Plaintext )

- 암호 알고리즘( Encryption algorithm )

- 비밀키( Secret key)

- 암호문( Ciphertext )

- 복호 알고리즘( Decryption algorithm )


* 암호문 Y, 메시지( 평문 ) X, 암호키 K 일때:


* 암호 시스템의 특성

- 평문을 암호문으로 변환하는데 사용되는 동작

- 치환

- 전치

- 사용한 키의 수

- Single key : 대칭키/비밀키 암호, 관용 암호

- Two-key : 비대칭키/공개키 암호

- 평문이 처리되는 방법

- 블록 암호

- 스트림 암호


* 암호 해독 및 전사적 공격

- 암호 해독

암호 알고리즘 본질에 대한 공격

평문-암호문쌍에 대한 지식 등을 활용한 평문 혹은 키 값 추론 공격

- 전사적 공격

특정 암호문에 대해 이해할 수 있는 평문으로 전환될 때까지 모든 키에 대해 시도함


* 절대 안전성 vs 계산상 안전성

- 절대 안전성

해당 암호 기법으로 생성된 암호문을 아무리 많이 사용하더라도 해당 암호문에 평문을 알아낼 수 있는 충분한 정보를 포함하지 않을 경우

One-time pad

- 계산상 안전성

아래 두 가지 조건을 만족할 경우

1. 암호 해독 비용이 암호화된 정보의 가치 초과

2. 암호 해독 시간이 정보의 유효 기간 초과


* 치환 기법

- 치환 기법과 전치는 모든 암호 기술의 기초

- 치환 암호 방식

평문의 문자( 비트열 )를 다른 문자( 비트열 ), 숫자 혹은 심벌로 바꿈

Caesar 암호가 대표적


* Caesar 암호

- 각 알파뱃 문자를 두 문자 건너의 알파뱃 문자로 치환

- 각 문자에 대해 아래와 같은 숫자 배정

- caesar 함호의 암호화 알고리즘은 다음 수식으로 표현 가능

C = E(3,p) = (p + 3)mod 26

- 키 값을 일반화 하면 다음과 같음

C = E(k,p) = (p + k)mod 26    1 ≤ k ≤ 25

- 복호화 알고리즘

p = D(k,C) = (C - k)mod 26


- 암호화 및 복호화 알고리즘을 알고 있다.

- 가능한 키는 25개뿐이다.

- 평문의 언어를 알고 있으며 쉽게 인식 가능 --> 전사적 키 해독 기법에 취약


* 단일 문자 치환 암호 기법

- 각 평문 문자를 임의의 문자로 치환하는 경우

- 총 가능한 키의 수: 26! 


* 단일 문자 치환 암호 기법에 대한 공격

- 평문의 특성( 언어의 규칙성 )을 사용한 공격 기법


* Playfair 암호

- 다중문자 치환 암호 기법

- 단일 문자가 아닌 다중 문자를 암호화 함으로써 안전도 높임

- 특정 키워드를 기반으로 하여 5X5 matrix 만듦

- 해당 키워드를 사용하여 matrix를 채우고 해당 키워드를 구성하는 문자가 아닌 다른 문자로 나머지 matrix 공간을 채움

- Ex) 키워드가 MONARCHY 인 경우

* Playfair 암호화 방법

1. 평문을 2개의 알파뱃 묶음으로 나눈다.

2. 묶어진 두개의 알파뱃을 위에 만든 행렬로 치환한다.

 - 묶인 두 개의 알파뱃이 같은 행에 있을 경우, 오른쪽으로 한칸씩 shift한다.

 - 묶인 두 개의 알파뱃이 사각형을 그릴 경우, 그 사각형을 기준으로 왼쪽과 오른쪽에 있는 알파뱃으로 치환한다.

 - 묶인 두 개의 알파뱃이 같은 열에 있을 경우, 아래쪽으로 한칸씩 shift한다.


* Playfair 암호 분석

- 보안수준 : 26 X 26 = 676

- 단일 문자 암호보다 상대적으로 공격하기 어려움


* Hill 암호

- 동작 원리

m개의 평문을 m개의 암호문으로 치환한다.

이때, m개의 선형 방정식에 의해 치환된다.

m = 3인 경우 다음과 같은 선형 방정식을 생각할 수 있다.


이를 matrix로 표현하면 다음과 같다. 즉, C = PK mod 26


* 다중 문자 암호

- 평문에 대해 서로 다른 방식의 단일 문자 치환 기법 사용

- Ex: Vigenere 암호 기법


예 : keyword deceptive



* Vernam 암호

- 암호학적 공격에 안전하기 위해선 평문과 동일한 길이의 키를 가져야 하며, 평문과 통계적 연관성이 없어야 한다.


* One Time Pad 암호

- J.Mauborgne는 random한 key 값을 사용하면서 메시지 길이와 동일한 key를 가정한다.

- One Time Pad는 perfect security를 제공하지만 다음과 같은 문제점을 갖는다.

1. 대용량의 random한 key를 다루기 어렵다.

2. key 분배 및 보호의 문제가 발생한다.


* 전치 기법

* Rail fence 기법

- 평문을 대각선으로 쓰고 열로 읽음


* Row Transposition 기법

- 열 순으로 읽으면서, 열의 순서를 바꿈 ( 열의 순서 : 키 )

'NCS보안3기 > 암호' 카테고리의 다른 글

[Encryption] 해쉬 함수  (0) 2017.03.28
[Encryption] 블록암호와 DES  (0) 2017.03.27
[Encryption] 컴퓨터 보안과 암호  (0) 2017.03.27
Posted by Imp3rio
NCS보안3기/암호2017. 3. 27. 17:26

1. 컴퓨터 보안 개념


* 컴퓨터 보안에 대한 정의(NIST95)

- 정보 시스템 자원( 하드웨어나 소프트웨어, 펌웨어, 정보/데이터, 통신 )에 대한 무결성과 가용성, 기밀성 유지와 같은 목적을 달성을 위해 자동화된 정보시스템에 적용되는 보호


* 컴퓨터 보안의 세가지 주요 목적

1. 기밀성( Confidentiality )

- 데이터 기밀성 : 개인적이거나 비밀스러운 정보를 권한이 없는 자에게 노출되거나 소유할 수 없도록 한다. 


- 프라이버시 : 개인과 관련된 어떤 정보가 수집 및 저장되는지, 그리고 누구에 의해 누구에게 해당.정보가 노출되는지를 통제하거나 영향력을 발휘할 수 있도록 한다.


  --> 권한이 있는 경우에만 개인 프라이버시와 사설 정보보호를 포함하는 정보에 대한 접근과 노출을 허용한다.

기밀성 손실 : 정보에 대한 불법적 노출을 의미한다.


2. 무결성( Integrity )

- 데이터 무결성 : 정보와 프로그램이 오직 특정 인가된 방법에 의해서만 변경될 수 있도록 보장한다.


- 시스템 무결성 : 시스템이 원하는 기능을 손상되지 않은 형태로 수행되거나 고의적 혹은 우연에 의해 시스템에 대한 비인가 조작없이 원하는 기능을 수행할 수 있도록 보장한다.


  --> 정보에 대한 부인방지와 진정성 뿐만 아니라, 부적절한 정보 수정 및 파괴를 방지하는 것을 의미한다.

무결성 손실 : 메시지에 대한 불법적 수정과 파괴를 의미한다. 


3. 가용성( Availability )

- 시스템이 적절한 시점에 동작할 수 있도록 하며, 인가된 사용자에게는 서비스가 잘 제공되도록 보장한다.


  --> 정보를 적시에 그리고 안정된 접근 및 사용을 보장한다.

가용성 손실 : 정보 혹은 정보 시스템에 대한 접근 실패 혹은 사용 실패를 의미한다.


* OSI 보안 구조

- 보안 요구사항에 대한 정의와 요구 사항을 만족하기 위한 체계적인 접근방법이다.

- ITU-Y X.800에서 정의

- 세가지 주요 구성

1. 보안 공격( Security Attack )

- 조직이 소유한 정보의 안정성을 손상시키는 제반 행위


2. 보안 기법( Security Mechanism )

- 보안 공격을 탐지, 예방하고 그로부터 복구하기 위한 제반 기법


3. 보안 서비스( Security Service )

- 조직의 데이터 처리 시스템 및 정보 전송에 대한 보안을 강화하기 위한 제반 서비스


* 보안 공격( Security Attack )

- 소극적 공격( passive attack )

전송 정보에 대한 도청 및 감시를 의미한다.

공격자는 전송중인 정보를 취득한다.

소극적 공격의 유형으로는 메시지 내용 공개와 트래픽 분석이 있다.


- 적극적 공격( active attack )

데이터 스트림의 불법 수정이나 거짓 데이터 스트림 생성

적극적 공격의 유형으로는 신분 위장, 재전송, 메시지 불법 수정, 서비스 거부 공격이 있다.


* 보안 서비스( Security Services )

- X.800은 통신 시스템의 프로토콜 계층에서 제공되는 하나의 서비스로서, 보안 기능을 정의한다.

- 5개 영역

인증, 접근제어, 데이터 기밀성, 데이터 무결성, 부인방지

- 14개 세부 서비스

- 대등개체 인증, 데이터 근원 인증

- 접근 제어

- 연결형 기밀성, 비연결형 기밀성, 선택 영역 기밀성, 트래픽 흐름 기밀성

- 복구 기능이 있는 연결형 무결성, 복구 기능이 없는 연결형 무결성, 선택 영역 연결형 무결성, 비연결형 무결성, 선태 영역 비연결 무결성

- 출발지 부인 방지, 목적지 부인 방지


* 보안 메커니즘( Security Mechanism )

- 특정 프로토콜에 구현되는 보안 메커니즘

- 암호화

- 디지털 서명

- 접근 제어

- 데이터 무결성

- 인증 교환

- 트래픽 패딩

- 라우팅 제어

- 공증

- 특정한 프로토콜 계층이나 보안 서비스에 관련이 없는 메커니즘

- 신뢰할 수 있는 기능

- 보안 레이블

- 이벤트 탐지

- 보안 감사 추적

- 보안 복구


* 네트워크 보안 모델



'NCS보안3기 > 암호' 카테고리의 다른 글

[Encryption] 해쉬 함수  (0) 2017.03.28
[Encryption] 블록암호와 DES  (0) 2017.03.27
[Encryption] 고전 암호 기법  (0) 2017.03.27
Posted by Imp3rio