본문 바로가기
정보/IT

ActiveX 와 보안

by 키운씨 2012. 7. 14.

1.     암호화 알고리즘의 필요성

1.1.      단방향 SSO 인증 구성도

A서버는 이미 구축되어 있고 B서버는 신규로 구축 할 사이트

     사용자가 A서버에 로그인 한다

     A서버에 저장된 사용자 정보 일부가 B서버로 전송된다

     B서버는 A서버의 사용자 로그인 정보를 처리한다

     사용자는 B서버의 Service를 이용한다

 

1.2.      Server to Client 환경에서의 데이터 인증

Server to Client 인증 데이터 문제는 Server to Server 의 인증 문제로 반드시 암호화를 통해 데이터의 무결성과 사용자의 신원을 보장 받아야 한다

     A서버에서 Hash key 생성하고 Client 에 저장

     A서버에서 B서버로 Hash key 전송

     Client 에 저장된 Hash key B서버에서 확인

 

 

2.     암호화 알고리즘 종류

2.1.      알고리즘 종류

2.1.1.      대칭키 방식

     블록 암호

입력되는 평문을 일정 블록 단위로 암호화

DES,3DES,AES,Rijndael,DSA,ARIA,Blowfish,RC5,SEED,FEAL,IDEA

     스트림 암호

입력되는 평문을 연속적으로 암호화

RC4,SEAL

     Padding

데이터를 일정 크기(64비트)로 나눈 후 마지막 불완전한 블록을 보정하는 암호화

2.1.2.      비대칭키 방식

RSA, KCDSA,EC-KCDSA, ECC

2.1.3.      하이브리드 방식

대칭+비대칭

2.2.      Blowfish (미국)

미국의 암호수출 규제( http://www.bis.doc.gov/encryption )로 암호화 솔루션에서 128bit key가 제공되지 않던 때에 Blowfish 128bit key 제공하며 다음과 같은 특징을 가지고 있다.

     대칭키 방식의 블록 암호화 알고리즘

     개발년도 : 1993 (Bruce Schneier)

     64bit block, 128bit key(최대 448bit)

     동일한 키 길이의 국산 알고리즘

- SEED : 128bit block, 128bit key

- ARIA : 128bit block, 128~256bit key

     충분히 긴 길이의 키를 지원하고 안전성에 큰 문제가 없는 것으로 알려져 있으나, 키가 자주 바뀌는 응용에서는 Key setup time이 길어 불리한 면도 있다.

     제공되는 소스 : C, C++, C#, Java, Perl, VB ( http://www.schneier.com/blowfish-download.html )

2.3.      DES, 3DES (미국)

     대칭키 방식의 블록 암호화 알고리즘

     DES(Data Encryption Standard) "Lucifer"라는 이름의 IBM에서 최초개발

     DES (64bit key), 3DES (128bit key)

     기존의 DES암호화 알고리즘방식을 다른키에 세번 적용시킨것이며, 첫번째 암호화과정, 두번째 복호화과정, 세번째는 또 다른 암호화 과정을 거친다.

2.4.      RC2 (미국)

     대칭키 방식의 블록 암호화 알고리즘

     Ron Rivest가 설계하여 RSA사의 소프트웨어 보안제품에 주로 사용되다가 이제는 거의 업계 표준으로 널리 사용되는 알고리즘 중의 하나사용자의 비밀키에 무관하게 키 전수검색에 필요한 계산 복잡도를 제한할 수 있는 Effective key size파라미터로 설정함으로써 미국이 암호제품 수출 규제를 피할 수 있도록 설계됨

(사용자가 아무리 긴 비밀키를 사용하더라도 Effective key size T로 설정된 프로그램에서는 키 전수검색에 필요한 복잡도는 2 T승으로 제한된다)

2.5.      RC4 (미국)

     대칭키 방식의 스트림 암호화 알고리즘

     1987 Rivest에 의해 설계되어 RSA Data Security에서 발표

     키 길이 : 40bit 또는 128비트

     보통 TCP/IP연결을 안전하게 하는 SSL을 구현하는 데 많이 쓰인다

     Netscape Navigator데이타 보호용으로 사용되고 있으며, 다른 인터넷 응용들에서도 널리 사용되는 스트림 암호이다.

     애초에 미 공개 암호였으나 1994년 인터넷 뉴스그룹에 익명으로 공개된 알고리즘

2.6.      RC5 (미국)

     대칭키 방식의 블록 암호화 알고리즘

     Rivest에 의해 설계되어 널리 사용되는 알고리즘

     블럭길이(워드 사이즈의 두배) 및 라운드 수 등을 파라미터로 설정할 수 있는 Parameterized block cipher이다

(암호분석가들은 블럭길이가 64비트(워드사이즈=32)일 때 12라운드이면 충분하다고 보고 있으나, 실제 응용에서는 대부분 16라운드 버전을 주로 사용하고 있다. 128비트(워드사이즈=64) 블럭암호로는 거의 사용되지 않는다)

2.7.      RC6

     대칭키 방식의 블록 암호화 알고리즘

     Rivest RSA사가 공동 개발한 AES 2차 후보 알고리즘

     RC5와 마찬가지로 가변길이의 블럭 길이 , 키 길이 및 라운드 수를 갖는 Parameterized block cipher이다.

     128비트 블럭길이(워드사이즈=32)에 대해 권고되는 라운드 수는 20라운드이나 학계에서는 Security margin이 비교적 작아 라운드 수를 좀 더 증가시킬 것을 권고하고 있다.

2.8.      TWOFISH

     16라운드의 Feistel 구조로 된 128비트 블럭암호이다

     Schneier 등이 개발한 AES 2차 후보 알고리즘으로 BLOWFISH와 마찬가지로 Key-dependent S-box 사용하고 있다

     블럭암호에서 사용하는 우수한 연산들을 잘 결합시켜 설계한 알고리즘으로, 특히 응용에 따라서 유연성 있게 Key scheduling을 할 수 있도록 한 것이 특징

2.9.      IDEA

     대칭키 방식의 블록 암호화 알고리즘

     Lai 등이 설계한 16비트 모듈라 곱셉을 주 비선형 연산으로 사용하는 64비트 알고리즘

     DES를 대체할 수 있는 가장 강력한 후보의 하나

     64비트 블럭암호 중에서는 가장 안전한 알고리즘의 하나로 꼽히며 128비트의 고정길이 키를 사용

     PGP에서 사용되며 또한 각종 인터넷 표준들에서도 후보 알고리즘으로 올라 있으나, 미국과 유럽에서 특허 문제가 걸려있다.

     기존의 Feistel-type cipher들과 다른 새로운 구조의 라운드 함수를 사용하고 있어 학계의 주요 분석 대상이 되어 온 알고리즘이다.

2.10.    AES (미국)

     대칭키 방식의 블록 암호화 알고리즘

     미국 표준 기술 연구소(NIST) 5년의 표준화 과정을 거쳐 2001 11 26일에 연방 정보 처리 표준(FIPS 197)으로 발표

2.11.    SEAL

     빠른 소프트웨어 구현을 목표로 설계된 스트림 암호로 160비트 키를 사용한다.

     소프트웨어적인 대용량의 암/복호화에 적당한 알고리즘이나 인터넷 응용에서는 별로 사용되지 않는다.

2.12.    ECC (미국)

     비대칭키 방식의 암호화 알고리즘

     Elliptic curve cryptography

     1985 N. Koblitz V. Miller에 의해 제안됨

     유한체 위에서 정의된 타원곡선 군에서의 이산대수 문제의 어려움에 기초한 암호 알고리즘

2.13.    SEED (한국)

     대칭키 방식의 블록 암호화 알고리즘

     민간부문에서의 정보와 개인 프라이버시 등을 보호하기 위하여 한국정보보호진흥원과 ETRI 주도하에 개발됨

     1999 2월 국내 단체표준화 (TTA.KO-12.0004, '99. 9)를 완료
16
라운드 DES(Feistel)와 비슷한 구조

     128bit block , 128bit key length

     소프트웨어나 하드웨어 구현 모두에서 효율성은 좀 떨어지나 안전성은 우수한 것으로 보임

     민수부문용 국내 표준 블럭암호호 개발되어 현재 다양한 응용에서 사용되고 있음

2.14.    ARIA (한국)

     대칭키 방식의 블록 암호화 알고리즘

     국가보안기술연구소에서 개발되어 2004 12 30한국산업규격(KS)에 제정

     ARIA라는 이름은 학계(Academy), 연구소(Research Institute), 정부 기관(Agency)이 공동으로 개발한 특징을 함축적으로 표현

     키 길이 : 128bit

     민간 암호화 알고리즘 시드(SEED)와 함께 전자정부의 대국민행정서비스용으로 보급되고 있으며, 스마트 카드 등의 초경량 환경 및 고성능 서버 환경 등에서 시드에 비하여 상대적인 장점을 가짐

2.15.    KCDSA (한국)

     비대칭키 방식의 암호화 알고리즘

     Korea Certification-based Digital Signature Algorithm

     1996 11월에 개발, 1998 10 TTA에서 단체 표준으로 제정

     이산대수 문제의 어려움에 기반을 둔 전자서명 알고리즘

     한국통신정보보호학회의 주관 하에 우리 나라의 주요 암호학자들이 주축이 되어 개발

2.16.    ECKCDSA (한국)

     비대칭키 방식의 암호화 알고리즘

     Certificate-based Digital Signature Algorithm using Elliptic Curves

     2001 12 19, 국내 정보통신 단체표준(TTAS.KO-12.0015)으로 정식 제정

     KCDSA 전자서명을 타원곡선을 이용한 전자서명 알고리즘으로 변형

     다른 공개키 시스템의 키 길이에 비해서 훨씬 짧은 키를 사용하여도 동일한 안전도를 제공

     스마트 카드, 무선 통신 등과 같이 메모리와 처리능력이 제한된 분야에서 매우 효과적

2.17.    FEAL (일본)

     대칭키 방식의 블록 암호화 알고리즘

     1987년 일본 NTT에서 기존의 DES를 대신하기 위해 만듬

     64bit block / 64bit key length

     8비트 프로세서에 구현이 적합하도록 256을 법으로 하는 정수 덧셈과 비트 쉬프트 연산을 기본으로 구성

     DES보다 암호화 시간이 더 빠르고, 더 값싸게 구현하기 위하여 만들어졌는데 안타깝게도 발표 후 얼마 되지 않아서 선택 평문 공격에 약하다는 것이 발표되어 수정 보완되어짐

 

 

3.     인터넷 뱅킹 XecureWeb (ActiveX)

3.1.      미국의 암호수출 규제

1996년도암호키의 길이와 보안성정도논문이 발표될 때 까지만 해도 미국에서 수출 가능한 암호화 제품은 40bit 또는 56bit 제한되어 있었다.

이 당시 우리나라는 인터넷 뱅킹이 막 활성화 되는 시점이어서 보안에 대한 이슈가 매우 뜨거웠던 상태였다.

하지만 당시의 컴퓨팅 기술로 봤을 때 대칭키 방식의 경우 최소 100bit 이상의 키 길이를 가지고 있어야 안전했다.

최근에서야 규제가 풀려서 128bit 길이에 대해서도 허용하고 있지만 그 당시 설치된 ActiveX 보안 모듈을 제거하기엔 위험부담이 크다.

3.2.      ActiveX 보안 프로그램들

     보안 모듈

암호화 알고리즘 제품을 설치하는 단계 (공개키, 개인키, 비밀키 등을 주고 받음

     키보드 보안 관련 프로그램

인증서의 암호가 해킹당하는 것을 방지하기 위한 프로그램, 하지만 바이러스 등으로 컴터등이 해킹되면 무용지물

     피싱 사이트 억제 프로그램

국산 암호화 알고리즘을 사용하다보니 서버 인증서가 해외에서는 인증 받지 못해서 웹사이트를 신뢰할 수 없는 문제가 발생해서 설치되는 프로그램

     클라이언트 키퍼

위에 열거한키보드보안, 피싱방지, 안티피싱, 바이러스 및 악성코드 차단등을 한꺼번엔 해결하는 보안 프로그램이지만 최근 이 프로그램에 악성 코드가 포함되어 배포된 사건이 발생했었음







암호화 알고리즘.docx


'정보 > IT' 카테고리의 다른 글

Javascript parseInt 함수  (0) 2014.06.27
VisualSVN 서버로 Subversion 서버 구동하기  (0) 2013.04.09
Javascript Preprocessor(2)  (0) 2012.07.13
[javascript/HexToDec]unsigned 와 음수  (0) 2012.05.31
제7회 공감세미나 동영상  (0) 2012.05.07