최근 포토로그


Block Cipher 운영모드 암호학

    이전에 소개한 다양한 블록 암호 알고리즘들이 전부 128-bit 이나 64-bit 같이 일정한 크기의 블록 단위의 암호화를 진행한다.

    만약 암호 알고리즘에서 제공하는 블록 크기보다 더 크기의 평문을 암호화 하려면 어떻게 해야 할까?

 

    이 때 필요한 것이 블록 암호의 운영 모드입니다.

    블록암호의 모드는 크게 ECB, CBC, OFB, CFB, CTR의 다섯가지 모드로 나뉩니다.

 

    - ECB (Electronic Code Book)
        
ECB 모드는 매우 간단하게 생각해서 평문을 블록 크기로 잘라서 암호화 방식입니다.

          수식으로 표현하면 ... Ci = E(Pi, K) 이렇게 되 ...

          특징이라면 병렬 처리가 쉽다는 장점과 동시에 보안적 측면에서 입력이 랜덤화 되지 않고 평문이 쉽게 조작 될 있다는 단점

 

     -CBC (Cipher Block Chaining)
        
CBC 모드는 첫 블록의 결과가 다음 블록의 암호화에 반영이 되기 때문에 모드보다 보안적 특성이 뛰어납니다.

          다만 한 블록에서 에러가 다음 블록에 영향을 미친다는 단점이 있습니다.

          수식으로 표현하면 Ci = E((Pi xor Ci-1), K) 가 되겠군요

 

    -OFB (Output FeedBack)
        
CBC 모드가 에러가 발생하면 발생한 다음 블록부터 계속 에러가 전파되는 현상이 있었습니다.

          반 OFB 모드는 이런 단점을 보완하여 평문에서 1-bit 에러가 발생하면 암호문에도 1-bit 에러만 발생하게 됩니다.

          OFB 모드를 보면 스트림을 생성하고 평문과 XOR를 하여 암호를 만들어 내는 방법이기에 어떤 의미로는 스트림 암호로 볼 수 있습니다.

  

 

    -CFB (Cipher FeedBack)
        
CFB 모드는 OFB 모드와 구조적으로 비슷해 보이나, 다소 다른 양상을

          우선 한 암호문이 다음 블록의 키로 사용되기 때문에,

          암호문을 알고 있는 상황에서 복호화를 병렬 처리 수 있다는 점이 특징입니다.

          따라서 MISTY와 같이 복호화가 시스템에서 사용하기에 좋겠지요



    - CTR (Counter)

        CTR 모드는 EBC 모드 처럼 병렬 처리가 가능 뿐만 아니라

        EBC 모드 처럼 한 블록에서 생긴 다음 블록으로 전파 되지도 않으며 EBC 모드보다 안전합니다.

        CTR 모드는 간단히 수식으로 표현하면

        C0 P0 xor E(IV, K) (IV : Initial Vector)

         = P1 xor E(IV+1, K)

        C2 = P2 E(IV+2, K)

        이런 식으로 ... 카운터를 이용합니다.

 

 

  

        그림에서 볼 수 각각의 블록이 분리되어 독립적으로 운영되어 병렬처리가 가능 할 뿐만 아니라 평문의 패턴을 유추하기도 어렵습니다.

.



 

정리하면 다음과 같습니다.

 

 

 EBC

CBC

 OFB

 CFB

 Security

- 평문 패턴 유지

- 블록 암호 입력이 랜덤화되지 않음

- 평문 조작이 쉬움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작 어려움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작이 쉬움

- 평문 패턴 없어짐

- 블록 암호 입력이 랜덤화 됨

- 평문 조작 어려움

 Efficiency

- 병렬처리 가능

- 전처리 불가능

- 복호화 병렬처리

- 전처리 불가능

- 병렬처리 불가능

- 전처리 가능

- 복호화 병렬처리

- 전처리 불가능

 Error

 Propagation

- 암호문 에러가 평문의 한 블록에만 영향을 줌- 암호문 에러가 다음 블록에 영향을 줌- 암호문 에러가 평문에 대응하는 비트에만 영향을 줌- 암호문 에러가 현재 블록과 다음 블록에 영향을 줌

Block Cipher 암호학

Block Cipher


    블록암호의 정의


    평문(Plaintext : 암호화 되기 전의 원 정보)이 n 비트일때, 암호문(Ciphertext) n 비트는

 

K 가 고정되면 Ek ) 가 bijective 함수,

키 사이즈가log |K| = k  

 

    
    간단히 그림으로 표현

 

 

 


    블록암호의 종류

        국제 : DES, AES
            

      DES(Data Encryption Standard) : 블럭암호 의 일종으로, 미국 NBS (National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호이다. 
        DES는 대칭키암호이며, 56비트의 키를 사용한다.

 

        DES는 현재 취약한 함
            56비트의 키 길이는 현재 컴퓨터 환경에 비해 너무 짧음
            백도어가 포함되어 있어 특수한 방법을 사용하면 정부 기관에서 쉽게 해독할 수 있을 것이라는 주장도 제기
                                                               


                                                      


                                            DES를 세 번 반복해서 사용하는 Triple-DES는 DES에 비해 안전함
                                (현재는 DES 대신 AES(Advanced Encryption Standard)가 새 표준으로 정해져 사용)

        AES(고급 암호 표준, AES, Advanced Encryption Standard)
            미국 정부 표준으로 지정된 블록 암호 형식
            이전의 DES를 대체하는 방식 

            키의 크기(블록의 크기)로 128, 160, 192, 224, 256비트를 사용
            미국 표준 : 128비트이다.

        국내 : ARIA, SEED
            
            ARIA :

                ARIA 상세 명세서 : ARIA-specification.pdf

                ARIA 테스트벡터 : ARIA-testvector.pdf

                국정원표 ARIA Sample Code : JAVA / C(32Bit) / C ARIA.zip

                자료 출처 : ARIA 공식 홈페이지 - http://210.104.33.10/ARIA/index.html
                                국가정보원 - http://service2.nis.go.kr/


            SEED : AES의 한국판

    블록암호의 구조
 

    ▶ Feistel 구조

 

        Feistel 구조는 아래 같이 평문의 좌우를 나누어 키와 조합한 뒤, XOR 연산을 거쳐 좌우를 뒤집어주는 구조

 

 

        반복 통하여 Confusion과 Diffusion을 만족시킴
        좌우를 뒤집어가면서 연산해야 병렬연산이 어려움
        SPN 구조에 비교하여 동일한 Confusion/Diffuison을 만 SPN 구조의 두 배에 해당하는 반복연산이 필요 

        성능 측면에서는 효율적
        암호화와 복호화 과정이 동일 (ex. A xor B = C 일때, C B = A)

 
    ▶ SPN 구조

 

        SPN은 - Permutation Network의 약자

         Substitution Permuation Layer를 이용하여 Confusion과 Diffusion을 만족시켜주는 암호 

 

 

 


        장점 : Feistel 구조와 반대로 병렬연산이 가능 

        단점 : 복호화시 별도의 복호화 구현 


Stream Cipher 암호학

    현대암호는 크게 2가지로 분류

 

    
    대칭키암호(Symmetric Key Cipher)와 비대칭키암호(Asymmetric Key Cipher)


 

    대칭키암호 :  말 그대로 주고 받는 사람들 사이에 암호키와 복호키가 오직 하나만 존재하여 키를 있는 사람만이 암호문을 열어 볼 수 있는 방식

 

    비대칭키암호 : 암호 알고리즘과 복호 사용되는 키가 각기 다른 암호 시스템입니다.

 



대칭키암호 두 분류


 

    블록암호와 스트림암호

    Stram Cipher는 우리나라에서 많이 사용하지 않는 암호 시스템이며 스트림암호를 가장 많이 유럽에서도 공개하지 않은 알고리즘들이 많아 사실상 스트림 관련된 자료는 생각보다 많지 않다.


 

암호의 특징 

    우선 무조건적인 안전성(Unconditionally Secure)을 제공

    적은양의 키를 가지고 긴 난수열을 생성하여 암호화를 진행하기 때문에 안전성 대비 비교적 빠른 속도로 암호화가 가능

 

현실적으로 사용하기는 조금 힘들며, 용도가 기밀성 제공으로 제한되다보니 앞서 공개되지 않은 알고리즘들이 많다.

 

    스트림 암호는 대부분 (Linear Feedback Shift Register)을 이용하여 하드웨어로 구현되며, 간 그림으로 표현하면 ...

 

여기에서 XOR를 이용한 암호화가 핵심

 

    One Time Pad : C = P xor K 가 무조건적인 안정성을 제공하지만 현실적으로 어렵다.

    키스트림 생성으로 비트별 암호화가 이루어진다.



    LFSR을 간단히 그림으로 표현하면

 

 


    작동 방식

        k개의 단을 (S0, S1, ... , Sk-1)로 초기화 한 뒤, Sk = a0S0 xor a1S1 xor ... xor ak-1Sk-1을 계산하여 S0를 출력하고 Si-1을 Si로 대치


 

    LFSR의 특징
    
    특성 다항식이 원시 다항식(Primitive polynomial)인 LFSR을 Maximum-length LFSR이라 하며 이를 스트림 기본 소자로 사용
    생성 가능한 LFSR의 특정  중 최소의 차수를 선형복잡도(Linear Complexity)라고 함. 
    선형복잡도가 k이면 연속된 수열만 있으면 다음 수열을 예측할 수 있기 때문에 선형복잡도는 암호의 안전도를 측정하는 척도로 활용됨.

     LFSR은 주기 좋지만, 선형복잡도가 작으므로 단독으로 사용되지는 않지만 난수성만 필요한 분야에서 사용되기도 함.

 


    LFSR 기반 스트림 암호의 방식

     결합 논리와 시각제어 논리, Summation Generator


    비선형 논리는 Filter Generator와 Nonlinear Combination Generation으로 분류

    시각제어 논리는 Cascade Altemating Step Generator, Shirinking Generator 분류

 

(참고. http://en.wikipedia.org/wiki/Linear_feedback_shift_register에 애니메이션으로 설명이 되어있음)

 


결합 논리

    
    Nonlinear Filter Generation

    Nonlinear Combination Generator

 

  시각 제어 논리


    Cascade Generator

   
    Alternating Step Generator

    
    Shrinking Generator

 


  Summation Generator

 


 

일부의 암호 알고리즘은 공개가 되어 있음.

    대표적인 알고리즘이 A5/1 과 RC4


        A5/1 알고리즘은 2세대 표준중의 하나인 GSM(Global System for Mobile Comm.)에 사용
        RC4 알고리즘은 Sokets Layer)에 사용


Physical Layer CCNA

>> TCP/IP Layer

 

 - Physical Layer


 *Cable 종류 확인


  UTP Cable 성능
  속도 : 100/10mbps(ethernet:10mbps , fastethernet:100mbps)
  신호 : 디지털신호 => 디지털신호(시분할다중화), 아날로그(주파수분할다중화)
  데이터사이즈조절 => 최소:64byte, 최대:1518byte
  거리 : 100m
 

 Connector : RJ-45
 

 Cable색 : 통신(주황(백)색,녹(백)색) 접지선,전화선(청(백)색) 파워(갈(백)색)

 

   Straight Cable                            Cross Cable
 

  1.Transmit  <->  1.Recive           1.Transmit  <->  3.Recive
  2.Transmit  <->  2.Recive           2.Transmit  <->  6.Recive
  3.Recive    <->  3.Transmit         3.Recive    <->  1.Transmit
  6.Recive    <->  6.Transmit         6.Recive    <->  2.Transmit

 

  Router/PC(Server)  Switch/Hub

  1.Transmit  1.Recive
  2.Transmit  2.Recive
  3.Recive   3.Transmit
  6.Recive   6.Transmit

  PC ----- Switch : Straight
  Router ----- Server : Cross

 

 *Connected상태 확인

 

 *속도설정
 

Speed : 10/100/auto
  => Default로 "auto"가 설정되어있어 협상을 통해 자동으로 속도를 맞춘다
  
 *통신타입설정
 

Duplex : half/full/auto
  => Default로 "auto"가 설정되어있어 통신타입을 자동으로 맞춘다.

 

 *전기신호 동기화


  맨체스터 인코딩방식 => 디지털신호+클락신호

 

 * 이슈 : Collision Domain : Ethernet --> CSMA/CD

 

 *Physical Layer Device : HUB


 - DataLink Layer

 * LLC와 MAC 두개의 부계층으로 나눠어진다.


   LLC(Logical Link Control) : Network Layer와의 연결
   Data Encapsulation 및 De-encapsulation을통한 연결과 상위계층으로의
   안전한 데이터 전송을 위한 확인

 

   MAC(Media Access Control) : Physical Layer와의 연결
   신호변화으로 통한 Physical과의 연결과 MAC Address를 통해 목적지를 확인

   DataLink PDU : Frame
   EthernetⅡ Frame구조
   Preamble   Destination MAC   Source MAC   Type            DATA          FCS
     8byte             6byte                     6byte         2byte     46~1500byte     4byte

   Preamble : 시작을 나타내는 필드
   10101010 10101010 10101010 10101010 10101010 10101010 10101010:준비
   10101011:시작

   Destination MAC : 수신지 MAC Address

   Source MAC : 송신지 MAC Address

   Type : 상위계층 프로토콜 타입("IPv4" => IPv4,IPv6,IPX,Appletalk)

   DATA : 상위계층 Encapsulation정보(Network Layer PDU : Packet)

   FCS : 오류검출용필드


  >> ARP (Address Resolution Protocol)
       상대방 목적지 IP Address를 통해서 MAC Address를 알아내는 프로토콜


VLSM, CIDR CCNA

Subneting으로 네트워크 부분을 더 많이 나누게 될경우 Classfull 일때 보다
네트워크 주소 손실이 더 많아 지게 된다.
0으로 시작하는 모든 네트워크 자체가 사용할 수 없게 되어 진다.

 

- IP Subnet-zero

Subneting시 Network ID전체가 0인 Subnet Network에 포함되어 있는 주소를 사용할 수 있도록 한다. 요즘 모든 라우터에 IP Subnet-zero 기능이 포함되어 있다.
 

문제> 192.168.1.0  255.255.255.0  C Class Network를 IP Subnet-zero가 Disable 되어있는 상태에서 Network 4개를 만족하는 Subneting을 하고

물음에 답하시오

 

4개를 만족하는 Subneting을 하려는데 IP Subnet-zero가 Disable

되어있다. 이말은 Network ID전체가 0인 Subnet network 주소를 사용할수 없다는것이다 따라서 Network주소가 5개를 만족해야 한다는 말이다.

만족할수 있는 수는 2^3 = 8 이 나오게 된다.

그럼 마지막 4옥텟의 8비트의 왼쪽에서부터 세자리 111 00000

이 서브넷 마스크가 되는것이다. 이를 10진수로 바꾸면 224

즉 255.255.255.224 가 서브넷 마스크이다.

 

000 00000 ~ 000 11111  0 ~ 31
001 00000 ~ 001 11111 32 ~ 63
010 00000 ~ 010 11111 64 ~ 95
011 00000 ~ 011 11111 96 ~ 127
100 00000 ~ 100 11111 128 ~ 159
101 00000 ~ 101 11111 160 ~ 191
110 00000 ~ 110 11111 192 ~ 223
111 00000 ~ 111 11111 224 ~ 225

 

Subnetmask :255.255.255.224
Subnet개수 : 8개
Host개수 : 32이고 사용가능한 Host개수는 30
사용가능한 네번째 Subnet에서 Subnet Address : 192.168.1.128
사용가능한 세번째 Subnet에서 Broadcast Address : 192.168.1.127
사용가능한 첫번째 Subnet에서 사용가능한 주소범위 : 192.168.1.33 ~ 192.168.1.62

 

- VLSM : 가변길이 서브넷마스크( Variable Length Subnet Mask)

 

Ex> 192.168.1.0  255.255.255.0 Network에서 1개 부서에는 100Host를 2개의 부서에는 50Host를 만족하는 VLSM을 하시오

 

1Network  100Host : 192.168.1.0 ~ 127  255.255.255.128
N    H
1 0000000
0 0000000 ~ 0 1111111 0~127
1 0000000 ~ 1 1111111 128~255
255.255.255.128

 

2Network  50Host : 192.168.1.128 ~ 191  255.255.255.192
                                 192.168.1.192 ~ 255  255.255.255.192

N N   H
1 1 000000
1 0 000000 ~ 1 0 111111 128 ~ 191
1 1 000000 ~ 1 1 111111 192 ~ 255
255.255.255.192

 

문제> 210.16.199.0   255.255.255.0을 사용하는 ITSTAR에서 마케팅 부서에는 100Host 강의장 1,2에는 30Host를 강사부와 관리부에는 10 Host를 경리부에는 5Host를 만족하는 VLSM을 하시오

 

마케팅부서  : 210.16.199.0 ~ 127 255.255.255.128
N    H
1 0000000
0 0000000 ~ 0 1111111 0~127
1 0000000 ~ 1 1111111 128~255

강의장 : 210.16.199.128 ~ 191  255.255.255.224
N N    H
1 11 00000
1 00 00000 ~ 1 00 11111
1 01 00000 ~ 1 01 11111
1 10 00000 ~ 1 10 11111
1 11 00000 ~ 1 11 11111

강사부,관리부 : 210.16.199.192 ~ 223    255.255.255.240
N N  N   H
1 10 0 0000
1 10 0 0000 ~ 1 10 0 1111  192~207
1 10 1 0000 ~ 1 10 1 1111 208~223

              .

              .


255.255.255.240
경리부 : 210.16.199.224 ~ 2 255.255.255.248
N N N N   H

1 11 1 1 000

 

※참고

IPv4 = 32bit 이기 때문에 계산할때 뒤의 호스트개수만 계산한다음 32-호스트수 이렇게계산하는게빠름

 

서브넷주소와 브로드캐스트 주소 구분하는 계산법


 : 서브넷은 각 사용가능한 호스트 개수(bit수로계산)로 나누어 나머지가 0이 나오고
브로드캐스트는 사용가능한 호스트 개수로 나누어 나머지가 호스트수 -1이 나온다.

 

 ★ CIDR 이란(Classless Inter Domain Routing)

 

 

CIDR 표기법 = /bit
써머리 = 여러네트워크를 하나로 만드는것


1 2 3