Data Encryption Standard 알고리즘에 대하여 알아보도록 하겠습니다.

DES 알고리즘은 1977년 미국 NIST 표준으로 공표된 이후
AES 알고리즘이 나오기 전 까지 전 세계적으로 널리 사용된 암호지요 ...

간단한 History를 살펴보면,

1972년 미쿡 상무성에서 공모를 시작하여 IBM이 개발한 알고리즘을 채택합니다.

이 DES의 개발자는 아직도 알려져 있지 않으며, 제작당시 64비트의 키를 갖는 암호 알고리즘 이었지만
미쿡 NSA에서 키 크기를 56비트로 줄이면서
미국 정보기관에서 DES의 백도어를 만들지 않았나 하는 의혹까지 일기도 하였습니다.
(현재까지 많은 학자들의 연구 결과, 백도어는 없을것이다 ... 라는게 지배적인 의견입니다)

아무튼 이 모든 사실이 아직까지 의문으로 남은 채 세상에 나오게 되었습니다.

DES는 기본 사양으로 암호 블록은 64비트, 키는 56비트를 사용하며
전체 16라운드 Feistel 구조에 8개의 비선형 함수인 S-Box를 사용합니다.

일단 만든 사람이 불명인데다 NSA에서 키 비트를 56비트로 만든것도 석연찮다는 의견같은건 배제 하더라도
DES는 실로 굉장히 안전한 암호 알고리즘이라 볼 수 있습니다.
다만 ... 70년대에 나온 알고리즘이다 보니, 당시 56비트의 키는 분석이 불가능했겠지만
근래에 이르러 컴퓨팅 파워가 늘어남에 따라 이 56비트의 키 크기도 그다지 안전하지 않게 되었습니다.

(Differential Cryptanalysis(1990년, Biham & Shamir)와 Linear Cryptanalysis(1993년, Matsui)에 대한 얘기는 일단 논외로 하겠습니다)
일례로 1997년 1차 DES Challenge에서 분산처리를 통해 96일만에 키를 분석 할 수 있었으며
1998년 2차 DES Challenge에서는 분산처리로 41일, 전용칩을 이용하여 56시간만에 키 분석이 가능 했습니다.
1999년 3차 DES Challenge에서는 전용칩과 분산처리를 이용하여 22시간만에 DES의 키를 찾을 수 있엇습니다.

단순하게 키 크기가 작은 이유로 안전하지 않은 까닭에
근래에는 2개의 키로 DES를 3번 암호화 하는 Triple-DES 사용을 권장합니다.
56비트의 키를 2개 사용하면 키 크기가 112비트가 되기 때문에
현재의 컴퓨팅 파워로도 2^112 만큼의 키를 전수키조사 하는 것은 무리가 있습니다.
따라서 보안 측면에서 매우 유리해집니다만 ... 3번 암호화를 하기 때문에 속도는 3배 느려지게 되지요 ;;;
이런 까닭에 AES가 등장하게 됩니다. 

그래도 20년가량 써온 암호이기 때문에 아직까지도 널리 사용되고 있기는 합니다.

아래는 DES의 상세 명세서 ... 

소스코드는 검색창에 DES라고만 쳐도 쏟아지지만 ... ...

http://ubiqx.org/libcifs/source/Auth/DES.c

이 곳의 소스 코드가 이용하기도 편하고, 잘 만들어 진 것 같아 소개합니다.

출처 - http://reinliebe.tistory.com/

'Security > Cryptography' 카테고리의 다른 글

암호학 - Block Cipher :: AES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: AES  (0) 2011.05.07
암호학 - Block Cipher :: DES C# 소스  (0) 2011.05.07
암호학 - Block Cipher  (0) 2011.05.07
암호학 - Introduction  (0) 2011.05.07
앞서 설명드린 현대암호의 범주 안에서도 대칭키암호에 들어가는 블록암호에 대하여 알아보도록 하겠습니다.

블록암호의 정의에 대해 간단히 살펴보면,
평문(Plaintext : 암호화 되기 전의 원 정보)이 n 비트일때, 암호문(Ciphertext) n 비트는

K 가 고정되면 Ek( ) 가 bijective 함수 라던지,
키 사이즈가 log2 |K| = k 라는건 ... 기본(?) 이겠지요 ;;


어때요 ... 참 쉽죠 ?

텍스트큐브에서도 그랬지만 ... 티스토리도 수식은 안써지니 ...
(뭐 그래서 예전 블로그 그림을 그냥 그대로 가져왔지만서도요 ;;)


그림으로 간단히 표현하면 ... 이렇습니다 ...
(이것도 이전 블로그 포스트에 있던 그림입니다 ... 투철한 재활용 정신이랄까요 ;;)



블록암호는 그 구조에 따라 Feistel 구조와 SPN 구조 ... 으로 나뉩니다
(... 등에 신경쓰시면 안됩니다 ;; 사실 두 구조를 가장 많이 쓰지요 ...)

▶ Feistel 구조

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



암호학에 있어 Shannon의 Confusion과 Diffusion 이 중요한데 ... (이건 다음에 다루기로 하지요 ...)
아무튼 반복 연산을 통하여 Confusion과 Diffusion을 만족시킵니다.

좌우를 뒤집어가면서 연산해야 하므로 병렬연산이 어렵고,

SPN 구조에 비교하여 동일한 Confusion/Diffuison을 만족시키려면,
SPN 구조의 두 배에 해당하는 반복연산이 필요하기 때문에
성능 측면에서는 효율적이지 못할지도 모르지만

암호화와 복호화 과정이 동일하기 때문에 별도의 복호화기가 필요 없습니다 ...

그게 매우 큰 장점이지요 ...
A xor B = C 일때, C xor B = A 라는 것을 생각해보시면 쉽개 아실 수 있을겁니다.


▶ SPN 구조

SPN은 .. Substitution - Permutation Network의 약자로

말 그대로 Substitution Layer와 Permuation Layer를 이용하여 Confusion과 Diffusion을 만족시켜주는 암호입니다.

간단하게 밑의 그림과 같이 단순합니다 ...


장점이라면, Feistel 구조와 반대로 병렬연산이 가능하며

단점이라면 복호화시 별도의 복호화 모듈을 구현해줘야 한다는 것이지요


▶  블록 암호의 종류

전 세계적으로 매우 많은 종류의 블록 암호가 있고, 많은 암호들이 사용중/ 혹은 보류(?) 상태 입니다.

우리나라의 경우 AES DES(T-DES) SEED ARIA 가 주로 사용되고
그 외의 알고리즘은 별로 사용되지 않는다고 보시는게 좋을 듯 싶습니다.

서론이 조금 길었지만 다시 ... 간단하게 블록암호의 종류에 대해 살펴보면,
블록암호는 앞서 Feistel 구조와 SPN 구조 등으로 나뉜다 볼 수 있다 하였습니다.
일반적인 경우 Feistel 구조와 SPN 구조를 가장 많이 쓰긴 합니다만,
경우에 따라 두 구조의 혼합 구조나 새로운 구조를 만들어 사용하기도 합니다.

▷ Feistel 구조
  - DES
  - SEED
  - FEAL
  - LOKI
  - BLOWFISH
  - KASUMI

▷ SPN 구조
  - AES
  - ARIA
  - SHARK
  - SAFER
  - SERPENT
  - CRYPTON
▷ 기타 구조

  - SKIPJACK
  - BEAR
  - LION
  - IDEA

간단하게 제가 알거나 가지고 있는 자료는 이정도 뿐이라 ...이정도 밖에 기술하지 못하지만
세상에는 이보다 더 많은 수의 블록암호가 존재합니다.

아직 언급하지 않은 알고리즘에 대해서는 다음에 기회가 되는대로 다시 언급하도록 하겠습니다.

출처 - http://reinliebe.tistory.com/

'Security > Cryptography' 카테고리의 다른 글

암호학 - Block Cipher :: AES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: AES  (0) 2011.05.07
암호학 - Block Cipher :: DES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: DES  (0) 2011.05.07
암호학 - Introduction  (0) 2011.05.07
암호학개론과 관련된 서적을 보면 암호학의 역사부터 언급을 합니다.
(물론 책마다 차이는 있지만 대부분의 개론 서적은 그런 듯 했습니다)

그래서 고대 로마시대의 율리우스 시저가 썼던 치환 암호부터 설명이 나오지만 ... ... ...

저는 깔끔하게 현대 암호만 포스팅 합니다...
(뭐 ... 제 암호 포스트라 해 봐야 ... ... 프로그램 언어 소스나, 논문 및 서적 요약, 상세 기술 표준 문서 정도 뿐입니다만)

아무튼 간단하게 암호학의 범주를 보면 ...

  - 고전암호
  - 현대암호 ┬ 대칭키암호(Symmetric Key Cipher) ┬ 블록암호(Block Cipher)
  - 현대암호 대칭키암호(Symmetric Key Cipher) └ 스트림암호(Stream Cipher)
  - 현대암호 └ 비대칭키암호(Asymmetric Key Cipher)

와 같이 나눌 수 있습니다.

우선 현대암호가 대칭키암호와 비대칭키 암호로 나뉜다 하였는데,
대칭키 암호와 비대칭키 암호의 가장 큰 차이는
암호화 할 때 쓴 키와 복호화 할 때 쓰는 키가 서로 같으냐 틀리냐에 따라서 구분된다 보면 됩니다.

다시 말해, 암호화 할 때 쓴 키와 복호화 할 때 쓴 키가 서로 같으면 대칭키
암호화 할 때 쓴 키와 복호화 할 때 쓴 키가 서로 다르면 비대칭키 지요 ...

즉 대칭키의 경우 암호문을 서로 주고받는 사람들 사이에 같은 키를 사용해야기 때문에
키 분배 문제가 있고, 이를 해결 한 것이 비대칭키 암호 알고리즘이라고 보시면 됩니다


▶ 대칭키 암호의 특징

   - 장점

     데이터 처리 속도가 빠름
     구현이 용이 (적은 비용으로 구현이 가능)
     키의 길이가 상대적으로 짧음
     다양한 암호 메커니즘의 원천(primitive)으로 사용 가능
     역사가 길어 다양한 이론이 수용되어 있음

   - 단점

     키는 두 사용자 모두 반드시 비밀로 간직해야 함
     여러 사용자를 위해서 관리해야 할 키의 개수가 많음
     강한 안전성을 위해서 빈번한 키의 교체가 요구됨
     디지털 서명등의 기법에 적용하기 곤란
     안전성을 수학적으로 표현하기 어려움
 

▶ 비대칭키 암호의 특징

   - 장점

     개인키만을 비밀로 간직하기 때문에 키 분배의 문제가 해결 가능
     여러 사용자를 위한 키의 개수가 상대적으로 적음
     사용 모드에 따라 상당 기간 동안 키 교체가 불필요
     효율적인 디지털 서명 메커니즘을 제공

   - 단점

     데이터 처리 속도가 상당히 느림
     일반적으로 키의 길이가 김
     공개키 인증 절차가 필요함
     대부분 안전성이 수학적 난제에 의존함
     역사가 짧아 안전성에 대한 논란의 여지가 남아있음


일단 일반적으로 암호에 대한 기초적인 설명이 나와있는 서적이나 참고 문헌에 나온걸 정리하면
이렇습니다만 ...

다소 테클이 들어올 만한 (?) 내용들이 있지요 ...
가령 ... 비대칭키 암호가 키분배 문제가 해결되었다던가 ... 등은
PKI, 즉... 키 관리를 위한 제 3의 신뢰할만한 기관이 필요 하다던가 ... 그런 문제는 깔끔하게 배제한 채
그냥 교과서적으로 말하면 그렇다는거니 ... 넘어가도록 합시다 ...

출처 - http://reinliebe.tistory.com/

'Security > Cryptography' 카테고리의 다른 글

암호학 - Block Cipher :: AES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: AES  (0) 2011.05.07
암호학 - Block Cipher :: DES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: DES  (0) 2011.05.07
암호학 - Block Cipher  (0) 2011.05.07

안녕하세요. SecurityPlus입니다.

OWASP Top 10 2010 한글판을 공개합니다.

지난 2010년 4월 19일에 OWASP에서 발표한 OWASP Top 10 2010 영문판에 대한 한글 번역입니다.

금번 한글 번역을 발표하면서, 지금까지 간과되었던 OWASP Top 10 2007 대비
2010년도에서 달라진 점을 다시 한 번 강조합니다.

기존 OWASP Top 10 2007년판을 포함한 이전 버젼은 취약점과 취약점에 대한 대응을 중심으로 한 정보
전달이 위주였으나, 금번 2010년판에서는 취약점이 아닌 위험 및 영향 평가 개념 도입으로 Top 10
항목과 순위를 결정한 점이 가장 큰 차이점입니다.

즉, 기존에는 단순한 취약점을 중심으로 얘기하다 보니, 각 비즈니스와 어플리케이션의 특성에 따른
보안 위험과는 다소 차이가 있었습니다. 2010년 판에서는 그러한 차이를 논의하면서, 일반적인 관점에서
가장 중요한 열 가지 웹 어플리케이션 보안 위험을 논의하면서 실제 적용 시에는 비즈니스와
어플리케이션의 특성을 고려하여 커스터마이징할 것을 말하고 있는 점이 2010년도판의 가장 큰 특징이며,
인식의 전환이라고 하겠습니다.

Top 10 문서를 접하는 이의 인식의 전환을 함께 유도하기 위해 OWASP Top10 2010년도판에서는
열 가지 주요 웹 어플리케이션 보안 위험에 대한 설명 이외에도 개발자, 검증자, 경영층을 위한 다음
단계에 대한 가이드와 위험과 위험 평가 방법론 등 풍부한 부록을 함께 싣고 있으며, 이 역시 한글
번역본에 이에 대한 번역도 포함되었다.

본 문서를 통해 국내 보안 수준 향상에 도움 되었으면 합니다.

아울러, 이 자리를 빌어 다시 한 번 번역에 도움을 주신 많은 분들께 감사의 말씀 드립니다.

그럼, 안녕히 계세요.

* 관련 보도자료

'Security' 카테고리의 다른 글

WebKnight 설치/설정 가이드(설치중심)  (0) 2011.05.17
WebKnight Rule 매뉴얼  (0) 2011.05.17

+ Recent posts