공통 암호화 알고리즘 스크랩

황제낙엽 2012.08.28 21:57 조회 수 : 3076

sitelink1  
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

1. 블럭 암호 알고리즘 (입력되는 평문을 일정 블럭단위로 암호화)
  1) DES, 3DES
  2) AES
  3) Rijndael
  4) DSA
  5) ARIA
2. 스트림 암호 알고리즘
- 입력되는 평문을 연속적으로 암호화(보통 1bit씩, 전형적 스트림암호에서는 1Byte씩)
- 8비트 크기의 2진수열로 된 초기값으로 의사난수바이트 생성기에 의해 생성된 랜덤한 '키스트림' 으로 암호화를 진행
- 의사난수생성기에 의해 출력된 키스트림은 한번에 한 바이트씩 평문 스트림과 비트별로 XOR된다.
- 이 의사난수생성기가 어떻게 설계되느냐가 이 스트림암호의 핵심 되시겠다
- 일회용 패드

======================================================================================================================================================================================
▶ 대칭암호화 알고리즘의 종류

   1. DES & TripleDES : DES(Data Encryption Standard)는 "Lucifer"라는 이름의 IBM에서 최초개발되었다.
    또한 미국에서 최초 국가표준이 되었으며, 56비트키를 가지고 암복호화를 사용했다.
    하지만 컴퓨터가 발전을 함에 있어서 56비트키의 경우 어느정도의 시간만 확보가 된다면 풀어낼수 있기 때문에 좀더 완벽한 보안을 위하여 Triple DES가 고안되어졌다.
   2. TripleDES : 이는 기존의 DES암호화 알고리즘방식을 다른키에 세번 적용시킨것이며, 첫번째 암호화과정, 두번째 복호화과정, 세번째는 또 다른 암호화 과정을 거치도록 하고 있다.
    그래서 이름이 DESede(DES encryption, decryption, encryption)이 되었으며, 각각의 과정에 따라 56비트의 배수로 암호화 복잡도가 증가되게 되어있다.
   3. Blowfish : 1993년 Bruce Schneier에 의해 고안된 블록암호로서 DES보다 빠르고 안전한 기법을 제공한다. 최대 키의 비트수를 448비트까지 확장할수있다는 특징을 가지고 있다.
   4. RC4 : "Civest's Code 4"를 의미하며 1987년 RSA Data Security에서 발표되었다. 보통 이기법으로 TCP/IP연결을 안전하게 하는 SSL을 구현하는 데 많이 쓰인다(키의 길이 40비트 또는 128비트)

위과 같이 대칭암호화의 경우는 모든 알고리즘이 같은 방식으로 동작을 하게 되는데
문제는 메시지를 보내고 받는 사람이 같은 키를 가지게 되며, 중간에 그 키가 노출이 되었을 땐
이미 우리의 메시지는 남에게 읽힐수 있는 문제점을 가지고 된다. 즉 비밀키가 노출되게 되면
암호화된 메시지또한 동시에 노출될 수 있다는 단점을 가지고 있다.

▶ DES방식의 샘플코드

우리는 여기서 간단하게 DES방식을 이용하여 암복호화 프로그램을 하나 예제로 보도록 한다.
기본적으로 자바측에서 제공할수 있는 암호에 관련된 패키지는 JCA(java cryptograhpy arch.)와
JCE(java cryptography extension)을 사용할 수 있다.
JCA는 기본적으로 Java2 Runtime Environment의 일부이며, JCA는 그것의 확장패키지이다.
기본적인 JCA에서는 전자서명, 메시지 다이제스트, 키생성기등의 클래스를 가지고 있으며
그러한 기본적인 클래스들을 우리가 사용하고자 했을 때 new에 의한 생성이 아니라
이미 아키텍쳐가 가지고 있는 암호화 기법에 의하여 factory형태의 클래스에게 생성을
요청하여야 한다.
기본적인JCE같은 경우 당신이 JDK1.3.1을 사용한다면 패키지를 썬에서 다운로드 받을수있으며
jdk1.4버젼을 사용한다면 이미 포함되어져 있으니 그냥 코딩을 해도 무방할 듯 하다.


======================================================================================================================================================================================
현재에는 많은 암호화 알고리즘들이 있는데요.
그 중에 SEED, ARIA, AES, ECC 는 갈대상자에서 사용되는 암호화 알고리즘 종류입니다.

SEED, ARIA, AES 는 대칭키 암호화라고 하며 갈대상자에서는 "암호화"에서 사용되고 ECC는 비대칭키 암호화라고 하며 "파일 공유"에서 사용되는 알고리즘입니다.


SEED: 1999년 2월 한국정보보호진흥원과 국내 암호 전문가들이 개발한 블록 암호 알고리즘입니다.

ARIA: 국내에서 개발되어 2004년 12월 30일 한국산업규격(KS)에 제정된 128 비트 블록 암호 알고리즘입니다.

AES: 미국 정부 표준으로 지정된 블록 암호 형식이구요. 미국 표준 기술 연구소(NIST)가 5년의 표준화 과정을 거쳐 2001년 11월 26일에 연방 정보 처리 표준(FIPS 197)으로 발표 하였습니다..

ECC: (Elliptic curve cryptography)는 1985년 N. Koblitz와 V. Miller에 의해 제안되었습니다.
유한체 위에서 정의된 타원곡선 군에서의 이산대수 문제의 어려움에 기초한 암호 알고리즘입니다.


======================================================================================================================================================================================
chapter 7 암호화
?    암호화의 종류
?    대칭 또는 개인키 : 암복호화에 하나의 개인키를 사용한다.
?    비대칭 또는 공개키 : 개인키로 암호화하고 공개키로 검증한다.
?    하이브리드(hybrid) : 비대칭 암호는 소위 개인키를 교환하기 위해 사용된다. 개인키는 데이터 암호화 및 복호화를 위해 대칭 암호화와 함께 사용된다.
?    대칭암호의 종류
?    블록 암호 : 고정된 크기의 데이터 블록을 암호화 하고 복호화한다.
?    스트림 암호 : 비트나 바이트의 스트림상에 작동한다.(블록암호화의 CFB모드 사용)
?    Padding : 데이터를 일정크기(64비트)로 나눈 후 마지막 불완전한 블록을 보정하는 것 일반적으로 PKCS#5를 일반적으로 사용한다.
?    암호 모드
블럭암호 알고리즘의 모드 설명
ECB    가장 단순 모든 동일한 평문은 동일한 암호문이 된다.   
CBC    ECB의 단점보안 가장 일반적임   
PCBC    CBC와 유사   
CFBn    블록암호가 스트림처럼 동작하도록한다.   
OFBn    CFB모드와 유사   
 
사용예)
Cipher cipher = Cipher.getInstance(“DES/ECB/PKCS5Padding”);
//알고리즘-블록암호화 알고리즘 ? 패딩기법


======================================================================================================================================================================================
3DES - 매우높은 암호화 수준, 매우느린 속도
SEED - 높은 암호화 수준, 느린 속도
DES - 중간 암호화 수준, 중간 속도
AES - 낮은 암호화 수준, 빠른 속도


======================================================================================================================================================================================

가. SEED
SEED는 민간부문에서의 정보와 개인 프라이버시 등을 보호하기 위하여 한국정보보호센터와 ETRI 주도하에 개발된 대칭키 방식의 128비트 블럭암호화 알고리즘으로, '99년 국내 단체표준화 (TTA.KO-12.0004, '99. 9)를 완료하였습니다. SEED는 크게 다음과 같은 특성을 가진 블록암호입니다.
? 16 라운드 DES(Feistel)와 비슷한 구조
? 128비트 입, 출력 데이터 블록 크기
? 128비트의 고정된 키의 길이
? 4개의 8 × 8 S-boxes
? Xor 연산과 Modular 232 연산

나. ARIA
아리아(ARIA)는 대한민국의 국가보안기술연구소에서 개발한 블록 암호 체계입니다. ARIA라는 이름은 학계(Academy), 연구소(Research Institute), 정부 기관(Agency)이 공동으로 개발한 특징을 함축적으로 표현한 것입니다. 초고속 네트워크 기반의 전자정부 시스템을 비롯해 앞으로 다가올 다양한 정보보호 환경을 대비하여 개발된 차세대 국가 암호화 알고리즘 아리아(ARIA)가 지난 2004년 12월 30일 한국산업규격 KS 표준으로 제정되었습니다.(기술표준원고시 제2004-1149호) 아리아(ARIA)는 전자정부 구현 등으로 다양한 환경에 적합한 암호화 알고리즘이 필요함에 따라 국가보안기술연구소(NSRI) 주도로 학계, 국가정보원 등의 암호기술 전문가들이 힘을 모아 개발한 국가 암호화 알고리즘이다. 아리아(ARIA)는 민간 암호화 알고리즘 시드(SEED)와 함께 전자정부의 대국민행정서비스용으로 보급되고 있으며, 스마트 카드 등의 초경량 환경 및 고성능 서버 환경 등에서 시드에 비하여 상대적인 장점을 가지고 있다.

다. KCDSA/ECKCDSA
KCDSA(Korea Certification-based Digital Signature Algorithm)는 이산대수 문제의 어려움에 기반을 둔 전자서명 알고리즘으로서, 한국통신정보보호학회의 주관 하에 우리 나라의 주요 암호학자들이 주축이 되어 1996년 11월에 개발하였으며, 이후 지속적인 수정 및 보완 작업을 거쳐 1998년 10월 TTA에서 단체 표준으로 제정되었습니다. 2000년 7월부터 구현시의 모호성을 배제하고 최소한의 보안강도를 강화하는 내용의 개정작업이 진행중입니다. ECKCDSA(Certificate-based Digital Signature Algorithm using Elliptic Curves)는 KCDSA 전자서명을 타원곡선을 이용한 전자서명 알고리즘으로 변형한 것으로, 다른 공개키 시스템의 키 길이에 비해서 훨씬 짧은 키를 사용하여도 동일한 안전도를 제공하므로 스마트 카드, 무선 통신 등과 같이 메모리와 처리능력이 제한된 분야에서 매우 효과적일 수 있습니다. ECKCDSA는 2001년 12월 19일, 국내 정보통신 단체표준(TTAS.KO-12.0015)으로 정식 제정되었습니다.

라. HAS160
HAS160은 한국형 디지탈 서명 표준인 KCDSA에서 사용할 목적으로 개발되었으며, 메시지를 512비트 블럭단위로 처리하여 160비트의 해쉬 코드를 출력하는 Little endian 구조의 32비트 마이크로프로세서를 기본으로 설계된 충돌저항성의 해쉬함수입니다.


======================================================================================================================================================================================
   이번에는 Triple DES란 어떤 것인지를 알아본다. 그리고 DES 외에 어떠한 블럭암호시스템들이 개발되어 있는지에 대해서 간략히 알아보고, AES에 대해서도 살펴본다.
1. Triple DES
   그러면 과연 DES는 안전한 알고리즘일까? 안타깝게도 그에 대한 대답은 '예'가 될 수 없다. DES에 대한 안전성이 증명되어 있는 것은 아니다. 다만 아직까지도 효율적인 해독 방법이 발표되어 있지 않다는 것이 안전성에 대한 대답이다. 일일이 키를 대입하는 exhaustive attack을 하면 어떻게 될까? 만약 DES의 키 하나를 조사하는데 1 마이크로초(100만분의 1초)가 걸리는 칩이 있다면 이 칩을 이용해서 모든 키를 조사하는데에 2^55초가 걸린다. 2^55초? 얼마인지 감이 잡히는가? 약 1000년이다. 훨씬더 빠른 칩이 개발된다하더라도 DES는 어느 정도 안전한 것으로 간주할 수 있다.

   그런데 병렬처리기술을 이용하면 말이 좀 달라질 수 있다. 위에서 말했던 칩을 1000개 나열해서 병렬처리를 한다면 약 1년이면 모든 키를 조사해낼 수 있다는 것이다. 단순히 숫자를 곱하는 것은 의미가 없겠지만 병렬처리의 강력함을 생각해볼 때 더욱 빨리 키를 알아낼 가능성을 배제할 수도 없는 것이다. 현실적으로 그렇게 많은 수의 병렬처리를 해낼 능력과 자금력을 가진 사람이 얼마나 될 지 알 수는 없지만 이런 식으로 해서 누군가가 암호 해독을 시도하고 있는지도 모른다.

   대안으로 제시된 것이 바로 Multiple Encryption이다. 여러번 암호화를 해서 그 해독을 더욱 어렵게 하는 것이다. 이럴 경우 암호화와 복호화에도 몇배의 시간이 더 걸리지만 해독에는 훨씬 더 많은 시간이 필요하게 된다. 56bit의 키가 112bit의 키로 늘어난다면 필요한 시간은 제곱으로 늘어난다.

Double Encryption  one method of improving the security of a block cipher, i.e.
let K1 and K2 denote two keys of block cipher, then
Encryption  C = E(K2,E(K1,P))

   먼저 생각해 볼 수 있는 것이 두 개의 키를 이용한 암호화이다. 이렇게 하면 해독은 더욱 어려워진다. 위의 계산에서 우리가 생각했던 것은 제곱으로 해독시간이 걸리는 것인데 안타깝게도 이 경우 그렇게 되지 않는다. 기껏해야 2배의 시간이 증가하는 linear한 증가를 보일 뿐이다. 어떻게 된 것일까?
   평문 - 일차암호문 - 이차암호문

   위의 상황에서 우리는 모든 키를 이용하여 exhaustive attack을 한다. 그것은 이차암호문에서 일차암호문으로 가는 과정이다. 그리고 평문에서 모든 키를 이용하여 암호화를 수행한다. 감이 잡히는가? 그러면 이것은 평문에서 일차암호문이 되는 과정이다. 눈치빠른 사람은 알아챘으리라. 먄약에 우리에게 2^56개 정도의 암호문을 기억할 수 있는 메모리가 있다면 결국 평문에서 암호화한 것과 최종암호문에서 복호화한 것이 같아야 하기 때문에 그 둘을 exhaustive attack으로 모두 조사하여 같은 것을 비교하면 된다. 이렇게 하면 결국 암호화할 때 사용했던 키를 찾아낼 수 있게 된다. 평문 하나만 알려지게 되면 결국 모든 암호가 해독되어 버리는 일이 생기게 되는 것이다. 이것을 바로 Diffie와 Hellman이 발표한 중간 일치 공격(meet-in-the-middle attack)이다. Double encryption이 결정적인 단점이다.

   이러한 이유로 multiple encryption은 적어도 세번 이상의 암호화가 사용된다. Hoffman은 세 가지 서로 다른 키를 이용한 E-E-E 방식의 triple encryption을 제안했고 Tuchman에 의해서 E-D-E 방식의 triple encryption이 제안되었다. 결국 E-D-E 방식은 ANSI 표준으로 지정되고 우리가 쓰는 Triple-DES는 E-D-E 방식을 이용한 것이라고 보면 된다. 이 경우에는 앞에서 설명했던 중간 일치 공격을 할 수가 없다.

Triple Encryption  Use of three stage of encryption with two or three different key

Use two keys K1 and K2 C = E(K1,D(K2,E(K1,P)))
Use three keys K1, K2, K3 C = E(K3,D(K2,E(K1,P)))

2. 다른 블럭 암호 시스템
   FEAL

   FEAL(Fast data Encipherment Algorithm)은 1987년 일본 NTT에서 기존의 DES를 대신하기 위해 만든 블럭 암호 시스템이다. 기본적인 구성은 Feistel 알고리즘에 바탕을 두고 있지만 DES와 같은 Table Look-up 방식을 사용하지 않는데 의의가 있다. 라운드 수에 따라 FEAL-N으로 나타내는데 여기서는 FEAL-8에 대해 알아보기로 한다.

   FEAL은 DES와 마찬가지로 64bit 비밀키를 사용하여 64bit 평문을 64bit 암호문으로 바꾸는 블럭 암호 시스템이다. FEAL의 처리부는 키 생성부와 데이타 암호화부의 두 부분으로 구성되는데, 키 생성부는 64bit의 키를 256bit의 키로 확장시키는 일을 하고 데이타 암호화부는 이들 확장된 키를 이용하여 64bit 암호문을 만들어내는 일을 한다.

   FEAL은 DES보다 암호화 시간이 더 빠르고, 더 값싸게 구현하기 위하여 만들어졌는데 안타깝게도 발표후 얼마되지 않아서 선택평문 공격에 약하다는 것이 발표되었고 그리고 차분공격에 의해 해독되어지는 모습을 보여주었다. 이후 개량된 FEAL은 이런 공격에 대해 강해졌지만 한번 깨어진 암호화 방법에 대한 불신은 그리 쉽게 회복되지 않았다.
    ?1987년 일본의 NTT(Nippon Telegraph and Telephone)에서 개발
    ?고속 동작이 가능하도록 설계
    ?FEAL은 DES와 유사한 구조로 64비트 블럭 암호
        - 키의 길이는 64비트
        - 8비트 프로세서에 구현이 적합하도록 256을 법으로 하는 정수 덧셈과 비트 쉬프트 연산을 기본으로 구성
        - 키 스케쥴은 DES에 비해서 복잡
        - 암호화 방식은 DES의 f 함수를 변형시켜 설계
        - DES의 주 논쟁 대상인 S-Box를 사용하지 않고 산술 연산을 이용하여 고속의 구현에 목표를 두고 개발

   RC5
   가변 워드 크기 방식에 기반한 암호화 방식이다. 워드 크기는 16, 32, 64비트가 가능하다. 또한 라운드의 수도 가변적이고 키의 바이트 길이도 가변으로 지정가능하다. RC5-w/r/b로 표현 가능한데 이 경우 16비트 키가 사용된 12라운드 32워드이면 RC5-32/12/16으로 표현한다. RC5-32의 경우 12라운드가, RC5-64의 경우 16라운드가 권장된다.    아래 알고리즘에서 田는 addition mod 2^w를 나타내고, 꺾어진 화살표는 rotation을 나타낸다. 왼쪽으로 향하는 화살표는 left-rotation이다.

   IDEA
   스위스에서 만들어진 IDEA(International Data Encryption Algorithm)은 초당 177Mbit의 처리가 가능한 빠른 암호화 방법이다. IDEA은 128-bit key, 8-round, 64-bit block cipher이며 주된 연산은 XOR, add mod 216, multiply mod 216+1이다. RSA와 더불어 PGP에 사용되는 방식이기도 하다.

   Blowfish
   아직까지 유효한 공격법이 발표되지 않은 Blowfish도 있다. Blowfish의 특징은 variable length key (up to 448 bits), 16-round, 64-bit block cipher로 요약되며 주된 연산은 XOR, add, table lookup 4 8*32 S-boxes이다.

3. AES
   DES 이후의 새로운 암호화 방법으로 여러 가지가 제안되었다. Advanced Encryption Standard가 새로운 표준을 제정하려는 노력인데 현재 5개의 후보작을 뽑고는 final round를 진행하고 있다.
   1998년에 캘리포니아의 벤츄라에서 열린 첫번째 라운드에서는 15개의 후보작이 발표되었다. CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, RIJNDAEL, SAFER+, SERPENT, TWOFISH이 그것인데 이 중에서 CRYPTON은 우리 나라에서 발표한 것이다.
   1999년 8월 9일에 제2라운드가 발표되었는데 MARS, RC6, Rijndael, Serpent, Twofish가 새로운 후보작이다. 이 중에서 IBM의 MARS와 RSA의 RC6가 유력해 보인다.
   AES에 대해서 더 알고 싶은 사람은 아래의 홈페이지를 참고하기 바란다.
   http://www.nist.gov/aes
======================================================================================================================================================================================

 MD5

 

암호학에서 MD5(Message-Digest algorithm 5)는 128비트 해시를 제공하는 암호화 해시 함수이다.

RFC 1321로 지정되어 있으며 수많은 프로그램과 파일의 무결성 검사에 사용된다.

 

MD5는 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했다.

1996년에는 MD5의 설계상 결함이 발견되었다. 매우 치명적인 결함은 아니었지만, 암호학자들은 SHA-1 같은 다른 알고리즘을 사용할 것을 권장하기 시작했다.

2004년에는 더욱 심한 암호화 결함이 발견되었고 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표되기도 하였다.

MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있다.

2008년 12월에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되기도 했다

 

해시 함수 (Hash Function)
해싱(Hashing)은 하나의 문자열을 원래의 것을 상징하는 더 짧은 길이의 값이나 키로
변환하는 것이다. 짧은 해시키를 사용하여 항목을 찾으면 원래의 값을 이용하여 찾는
것보다 더 빠르기 때문에, 해싱은 데이터베이스 내의 항목들을 색인하고 검색하는데
사용된다. 또한 해싱은 빠른 속도의 데이터 색인 및 검색 외에도, 전자서명을 암호화
하고 복호화하는 데에도 사용된다. 전자서명은 해시 함수를 이용하여 변환된 다음, 해
시 값(=요약 메시지)과 전자서명이 별도로 전송된다. 수신자는 송신자가 사용한 해시
함수와 같은 것을 사용하여, 서명으로부터 요약 메시지를 뽑아내어 그것을 이미 수신
한 요약 메시지와 비교한다. 그리고 그 비교 결과가 같아야 전자서명을 유효한 것으
로 판단한다.

·데이터의 키 값을 입력받아 데이터가 저장되어 있는 주소를 결과로 알려주는 색인
함수이다.
·해시 함수는 원래의 값이나 키를 색인하는데 사용되며, 그 값이 관련된 데이터가 검
색될 때마다 다시 사용된다. ·해싱은 항상 한 쪽 방향으로만 연산된다. 따라서, 해시
된 값을 분석함으로써 해시 함수를 추출해내는 역방향 공학은 필요가 없다.
·우수한 해시 함수는 서로 다른 두 개의 입력에 대해, 동일한 해시 값을 생산해서는
안된다. 왜냐하면 동일한 해시 값 사이에 충돌이 생기기 때문이다. 따라서 충돌 위험
성이 매우 적은 해시 함수라야 훌륭한 해시 함수로 평가된다.
·정보의 무결성(Integrity)에도 활용 가능하다.

출처 :

http://ko.wikipedia.org/wiki/Md5

http://leeminwoo.pe.kr/bbs/view.php?id=2007_01_bbs7&no=13

 

 

DES

DES(Data Encryption Standard)는 블록 암호의 일종이다.

메시지를 보내려는 사람과 받는 사람이 56비트의 동일한 열쇠를 가지고 있어야 한다.

보내려는 사람은 열쇠를 이용하여 데이터를 암호화하여 안전하지 않은 채널로 전송하면, 받는 사람은 암호화된 데이터를 받아 보낸 사람의 열쇠와 동일한 열쇠를 이용하여 데이터를 복호화한다.

DES는 상당히 널리 쓰이고 있으나, 상당히 복잡하여 많은 부분이 알려져있지 않다.

심지어는 미국안전보안국(NSA)이 DES로 암호화된 정보를 모두 해독하여 볼 수 있도록 하는 백도어(backdoor)의 역할을 하고 있다는 설도 있다.

그러나 어느 정도의 보안은 보장하는 편이라 널리 사용되어왔으며, 최근에는 AES (Advanced Encryption Standard)라는 보완된 암호체계로 대체되었다.

 

출처 : http://ko.wikipedia.org/wiki/DES_(%EC%95%94%ED%98%B8)

 

Triple DES

Triple DES란 말 그대로 DES를 3번 적용하는 방식을 말한다.

 

출처 : http://devday.tistory.com/196

 

RSA

RSA는 공개키 암호시스템의 하나로, 현재 전자 상거래 등에 광범위하게 이용되고 있다.

1977년 로널드 라이베스트, 아디 샤미르, 레오널드 애들먼이 발명하였으며, RSA라는 이름은 이 3명의 이름 앞글자를 딴 것이다.

이 세 발명자는 이 공로로 2002년 튜링상을 수상했다.

RSA 암호체계의 안정성은 큰 숫자를 소인수분해하는 것이 어렵다는 것에 기반을 두고 있다.

만약 큰 수의 소인수분해를 획기적으로 빠르게 할 수 있는 알고리즘이 발견된다면 이 암호 체계는 가치가 떨어질 것이다.

1993년 피터 쇼어는 쇼어 알고리즘을 발표하여, 양자 컴퓨터를 이용하여 임의의 정수를 다항 시간 안에 소인수분해하는 방법을 보였다.

따라서 양자 컴퓨터가 본격적으로 실용화되면 RSA 알고리즘은 무용지물이 될 것이다. 그러나 양자 컴퓨터가 이 정도 수준으로 실용화되려면 아직 여러 해가 더 필요할 것으로 보인다.

RSA 암호화 알고리즘은 1983년에 발명자들이 소속되어 있던 매사추세츠 공과대학교에 의해 미국에 특허로 등록되었고, 2000년 9월 21일에 그 특허가 만료되었다.

RSA는 두 개의 키를 사용한다. 여기서 키란 메시지를 열고 잠그는 상수(constant)를 의미한다.

이 중 공개키(public key)는 모두에게 알려져 있으며, 메시지를 암호화(encrypt)하는데 쓰인다.

 이렇게 암호화된 메시지는 개인키(private key)를 가진 자만이 복호화(decrypt)하여 열어볼 수 있다.

다시 말하면, 누구나 어떤 메시지를 암호화할 수 있지만, 그것을 해독하여 열람할 수 있는 사람은 개인키를 지닌 단 한 사람 뿐인 것이다.

RSA는 소인수분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다.

보다 이해하기 쉬운 예를 들자면, A라는 사람에게 B라는 사람이 메시지를 전하고자 할 때 B는 A의 열린 자물쇠를 들고 와 그의 메시지를 봉인하고,

그런 다음 A에게 전해 주면, 자물쇠의 열쇠를 가지고 있는 A가 그 메시지를 열어보는 식이 된다.

중간에 그 메시지를 가로채는 사람은 그 열쇠를 가지고 있지 않으므로 메시지를 열람할 수 없다.

그리고 RSA의 디자인 상, 그 열쇠는 자물쇠의 형태만 보고서는 쉽게 제작할 수가 없게 되어 있다



======================================================================================================================================================================================
Firefox에서 국산 암호화 알고리즘 SEED vs 일본산 알고리즘 Camellia
http://godyang.battlearea.net/116?srchid=BR1http%3A%2F%2Fgodyang.battlearea.net%2F116


======================================================================================================================================================================================
암호화 방법중 대표적인 DES, SEED, RSA, ECC, 한국형방식 요약 자료
 
ㅇ DES(Data Encryption Standard)  
1. DES(Data Encryption Standard)의 정의 및 특징        
           가. DES 정의 
              -  56Bit의 키를 이용하여 64Bit의 평문 블록을 64bit의 암호문 블록으로 만드는
                  블록 암호방식의 미국표준
              -  3500년간의 암호역사에 있어 혁신 중에 하나
              -  평문을 8개의 문자 단위로 나누어 각 블럭에 확산과 혼돈을  16번(round) 반복
                  
           나. DES의 특징
              - 견고성
                 · 통계적 암호해독에 견딜 수 있도록 충분히 견고하게 제작
                 · DES의 암호분석방법은 모든 키를 다 적용하는 것 임(brute force attack)
              - 활용 : Top Secret의 비밀보호 보다는 상업적인 자료보호 활용에는 가능
 
           다. DES의 한계점 
              - 최근 반도체 칩 기술의 발달로 초기 DES 알고리즘은 쉽게 해독 가능함
              - 보안성을 강화한 2중 DES, 3중 DES 사용을 권고
              - DES의 한계점을 개선한 AES (Advance Encryption Standard)가 새로운 미국 표준
 
 2. DES의 알고리즘 (개념도)
    (그림 및 상세 자료 - 자료실의 설명 자료 참고)
 
 3. 이중  DES의 처리 (단일 DES의 개선)
     -  키 2개의 서로 다른 키(K 1, K 2 )로 2번 암호화 및 복호화 하는 것
   v 2 중 DES 암호화  : c =  Ek 2  (E k1  (m))
        v 2 중 DES 복호화  : m = Dk 1 (D k 2 (c))
        v 2 중 DES 의 키 길이는 112 비트(56 I 2)
       ? 암호키를 찾는데 2    번의 작업이 필요
 4. 이중  DES의 안정성
? 관측된 평문과 암호문이 주어지고 중간충돌 공격(meet-in-the-
    middle attack) 을 하면 2중 DES가 단일 DES에 비하여 안전성이
    증대하지 않음을 알 수 있음 (암호 해독 시간이 단일 DES의 2배가 안됨)
 
 5. 삼중  DES (Triple DES)의 구성
? 2개의 서로 다른 키(K1 ,  K 2 ) 로 암호화시 암호-복호-암호순으로 반복함
? 복호화시 복호-암호-복호순으로 반복함
    v 3중 DES 암호화  : C = EK1 (DK2  (EK1 (m) ) )
                             Encrypt-Decrypt-Encrypt
    v 3중 DES 복호화  : m = D K 1 (E K 2  (D K1 (C) ) )
                             Decrypt-Encrypt- Decrypt
? 3중 DES의 유효한 암호공격은 아직 발표되지 않음
 
 6. 삼중  DES의 처리 구성도
    (그림 및 상세 자료 - 자료실의 설명 자료 참고)
 
 -----------------------------------------------------------------------------
ㅇ SEED
 
  1. SEED의 정의 및 특징 
          가. SEED의 정의 
              -  한국 정보보호센터;KISA(Koream Information Security Agency)가 1998년에 개발
              -  한국형 표준 대칭키 128 비트 블럭 암호 알고리즘
              -  SEED의 원어를 알려고 하면 다침                
           나. SEED의 특징
              - 입출력 처리 기본 단위(블록크기) : 128 bit
              - 한국에서 개발되어 로열티와 무관 a 민간에서 사용시 제약사항 없음
              - 안정성, 신뢰성이 우수, SW 구현시 3중 DES보다 처리속도 고속
           다. SEED의 표준화
              - 1998. 9. 28 TTA(한국정보통신기술협회) 표준제정
              - 제28차 ISO/IEC 국제표준화회의에서 FCD(위원회 최종 초안)에 포함
                 (2004년 4월 싱가포르)
              - 국제표준 선정에 필요한 최종 심의단계를 통과, 사실상 국제표준으로 채택
              - 2005년 상반기 ISO/IEC 국제표준으로 등록
2. SEED의 구조 
 - 데이터 처리 단위: 8,16,32비트 모두 가능
 - 방식: 블록 암호 방식
 - 입출력문의 크기:128비트
 - 키의 크기-128비트
 - 구조:Feistel 구조
 - 라운드수: 16라운드
 - 키 생성 알고리즘: 암복호화 라운드키가 동시에 생성 가능
  3. SEED의 특성
안전성 - 안전성이 분석 가능한 구조임
- 현재까지 분석된 바에 의하면 알려진 공격에 안전
효율성 - S/W로 구현 시 3중 DES보다 고속임

 
  4. SEED의 이용 현황
- 구현물 형태: SW, HW, IC 칩
- 제품화 형태: 전자화폐, 인증 시스템, VPN, 무선단말기 보안, PC저장 데이터 보호, 웹메일, K-cash 처리, 사이버 트레이딩, SW불법복제 방지.
-----------------------------------------------------------------
 
ㅇ RSA (Rivest Shamir Adleman)
 
u 1. RSA (Rivest Shamir Adleman)의 정의 및 특징
   가. 정의
        - 1977년 3명의 MIT 수학 교수가 고안한 암호화 알고리즘
        - 큰 소인수의 곱을 인수분해 하는 수학적 알고리즘 이용
   나. 특징
        - 안정성, 신뢰성이 높은 것이 검증되어, 전자서명, PKI에 사용됨
        - 기밀성, 무결성, 인증 기능 수행가능하나, 수행시간이 상대적으로 과다 소요됨
        - 각 사용자는 자신의 개인키 소유, 공개키 배포
        - 일방향 함수기반이며 부인봉쇄는 공개키로만 가능
    (그림 및 상세 자료 - 자료실의 설명 자료 참고)
-------------------------------------------------------
 
ㅇ ECC(타원곡선 암호)
 
Ⅰ. 타원곡선암호 기술의 개요
    가. 개념
       - Elliptic Curve Cryptosystems의 약어로서 1985년 밀러와 코블리츠가 제안한
          타원곡선 암호시스템 임
       - 이산대수에서 사용하는 유한체의 곱셈군을 타원곡선군으로 대치한 암호체계로서 다른
          암호체계에 비하여 짧은 키 사이즈로 대등한 안전도를 가짐  
    나. 타원곡선 암호기술의 구성도
    (그림 및 상세 자료 - 자료실의 설명 자료 참고)
 
Ⅱ. 타원곡선암호 기술의 특징
    가. 다양한 타원곡선을 활용할 수 있음에 따라 다양한 암호시스템 설계가 가능
    나. 안전한 암호시스템을 설계하는 것이 용이
    다. 다른 공개키 암호 시스템과 같은 안전도를 제공하는 데에 더 작은 키 길이로 가능
         - RSA 1024비트 키와 ECC 160비트 키를 갖는 암호 시스템은 안전도가 같음
    라. H/W와 S/W로 구현하기가 용이
Ⅲ. 시장현황
    가. 유선통신 시장 현황
         - 유선에서는 대표적인 공개키 알고리즘인 RSA방식이 ECC보다 시장점유율이 높음
    나. 무선통신 시장현황
         - 국내 상용예정인 이동통신사업자의 무선 전자서명 방식에는 ECC가 적용 예정 임
    다. 국내 개발현황
         - 드림시큐리티와 시큐어소프트는 자체적인 ECC알고리즘 개발을 끝내고 WAP기반의
            WPKI 구축에 활용 중임
         - 고려대학교 정보보호기술센터도 자체 개발한 ECC알고리즘을 이용 STI사와 함께
            ECC전용 보안암호칩 개발 완료  
Ⅳ. ECC발전전망
    가. 무선환경에서 RSA를 사용해 공개키 생성시 소요되는 시간이 3∼10분이 필요한 반면
         ECC를 활용할 경우 1초 이내로 단축시킬 수 있음에 따라 저전력의 무선환경에서는
         ECC도입이 필수 적인 사항으로 부각되고 있음
    나. 모든 통신분야에서 암호알고리즘은 필수 불가결한 원천기술 임에 따라 안전하고 빠른
         속도를 가진 ECC가 IMT2000서비스를 비롯하여 스마트카드, PDA 등에 표준으로 적용될 전망임 
 ---------------------------------------------------------------------
ㅇ 한국형 암호화 알고리즘
 
1. 한국형 암호화 알고리즘의 분류
    가. 대칭형 : SEED
    나. 비대칭형 : KCDSA
    다. 무선 기반에서 사용 : EC-KCDSA
2. SEED 
    -  한국 정보보호센터;KISA (Koream Information Security Agency)가 1998년에 개발
    -  128 비트의 대칭형 키 블럭 암호 알고리즘
3. KCDSA (Korean Certificate based Digital Signature Algorithm)
    - 이산 대수 문제의 어려움에 기반을 둔 전자서명 알고리즘
    - 1998. 10월 TTA(한국정보통신기술협회)에서 표준 제정
4. EC-KCDSA (Elliptic Curve KCDSA)
    - KCDSA를 타원곡선을 이용한 전자서명으로 변환


======================================================================================================================================================================================
OpenSSL 의 장점과 포함된 암호화 알고리즘
http://rubyhack.tistory.com/61?srchid=BR1http%3A%2F%2Frubyhack.tistory.com%2F61

OpenSSL은 네트워크를 통한 데이터 통신에서 사용되는 프로토콜인 TLS와 SSL의 오픈 소스 구현판이다. C 언어로 작성되어 있는 중심 라이브러리 안에는, 기본적인 암호화 기능 및 여러 유틸리티 함수들이 구현되어 있다.
OpenSSL은 Eric A. Young과 Tim Hudson이 만든 SSLeay에 그 근거를 두고 있다. 개발자가 RAS Security로 적을 옮긴 1998년 12월 이래 현재 개발은 비공식적으로 중단되어 있다.
거의 모든 버전의 유닉스 계 운영체제(Solaris, Mac OS X, Linux, BSD 포함) 및 OpenVMS, Windows에서 OpenSSL이 이용가능하다.
OpenSSL의 현재 최신 버전은 2009년 3월 25일 발표된 0.9.8k 판이다.


======================================================================================================================================================================================
얼마전 미국은 128비트 암호화 알고리듬 수출을 허용한다고 발표했지만(현재 국내에서 주로 쓰이는 암호화 알고리듬은 40비트급이다) 이는 미 국가안보국이 그만큼의 키복구시스템을 통제할 수 있는 기술을 보유하고 있기 때문이다.
- 2003년 2월 기준

참고 URL :  http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=031&aid=0000018412 


======================================================================================================================================================================================
표준 대칭키 알고리즘의 종류
알고리즘        특징            소유국가
DES            64bit block        미국
            56bit key
Triple DES        64bit block        미국
            112~168bit key
BlowFish        64bit block        미국
            128bit key
RC2            64bit block        미국
            128bit key
RC4            Stream Cipher        미국
AES            128bit block        벨기에
            128~256 bit key
SEED            128bit block        한국
            128bit key
ARIA            128bit block        한국
            128~256bit key


======================================================================================================================================================================================
우리나라에서는 액티브X의 천국이라고 할 정도로 액티브X 천지이지요. -ㅅ-
인터넷 익스플로러로 웬만한 규모의 사이트 들어가면 자동으로 삐릭~ 하면서 뜨는 액티브X 경고문구...-ㅅ-

특히, 금융관련 사이트에 가면 꼭 빠지지 않고 나타나는게 XecureWeb 액티브X 컨트롤입니다. -ㅅ-;;;

보안이 중요한 은행업무에 필요한, SSL지원 ActiveX모듈이죠.

그런데, 이 XecureWeb이 원래 없어도 되는 놈입니다. -ㅅ-;;; 그럼에도 불구하고 XecureWeb이 우리나라에만 널리 퍼지게 된 이유는 약간 기가 막힙니다. -ㅅ-;;;

요새는 웹브라우저에 기본적으로 SSL지원이 포함되어 있습니다. 웹브라우저 자체만으로도 인증서를 다운받고 처리가 가능하게 되어 있습니다. 즉, 128비트 암호화를 웹브라우저만으로도 처리가 가능합니다.

그런데...문제는 우리나라에서 웹뱅킹이 찬란히 꽃필 무렵에는 미국의 농간으로(...) 미국 업체가 "강력한 암호화 알고리즘이 엉뚱한 악의 축의 손에 들어가는 것을 막기 위해" 128비트 SSL을 지원하는 프로그램을 미국 외의 국가에 수출하는것이 금지되었습니다. -.-a;;

따라서, 우리의 마이크로소프트 역시 미국 회사인 만큼, 미국의 법을 따라야 했었기에, 미국판 외의 다국어판의 윈도우에는 128비트 SSL지원이 빠져버렸다고 전해집니다. -.-;;;

그래서 웹뱅킹에 필요한 128비트급 SSL 암호화를 쓰려면 ActiveX로 Add-on을 써야 했었지요. -ㅅ-;

그런데...하도 ActiveX SSL기능에 의존하다보니, 미국에서 몇년전부터 그 바보같던 말도 안되는 수출 제한 규정을 완화했음에도 불구하고...우리나라 금융권에서는 여전히 ActiveX를 사용해오고 있습니다. -.-a;

한편, 미군의 보안 적용 사이트에 들어가면 다 128비트 SSL이 적용된 https프로토콜로 작성되어 있더군요...벌도의 ActiveX따위는 필요가 없습니다. 이걸 보면서 우리나라 금융 업계도 https 프로토콜로 웹뱅킹 사이트를 만들면 모든 웹브라우저에서 사용이 가능할텐데...하고 생각해 봅니다. -ㅅ-


======================================================================================================================================================================================

암호기술에서 가장 논란이 되고 있는 것은 바로 암호기술의 강함과 약함에 대한 이야기이다. 암호기술의 안전함은 주로 암호화를 할 때 사용하는 암호알고리즘의 키의 길이를 가지고 이야기한다.  40bit키를 가지는 암호기술(RC4-40)이 과연 안전한가? 56bit키를 가지는 DES암호알고리즘은 안전한가? 128bit키를 가지는 IDEA알고리즘은 과연 얼마나 안전한가? 하는 질문을 던질수 있다. 여기서 중요한 포인트하나를 짚고 넘어가자. 암호알고리즘의 키의 길이와 안전도에 대해서는 절대로 미국사람들의 말을 믿지 말라는 것이다. 왜냐하면 미국정부의 규제로 미국에서 특별한 처리없이 그냥 수출이 되는 암호제품은 40bit 혹은 56bit로 제한되어 있기 때문에 미국기업가들은 외국에 나와서 56bit암호기술이 절대로 안전하다고 말할 수 밖에 없게된다. 그래야 자신들의 제품을 외국에 팔 수가 있으니까. 전세계적으로 암호학의 대가들이 모여서 96년에 쓴 “암호키의 길이와 보안성정도”에 대한 논문(http://theory.lcs.mit.edu/~rivest/bsa-final-report.ascii)으로는 40bit암호정보를 현재ASIC기술로 보드를 만들면 0.0002초만에 전부 깰수 있다는 계산이 나왔다. 동일한 기술로 56bit암호화기술은12초면 모든 암호를 풀수 있다는 계산이 나왔다. 대칭형암호기술의 경우 적어도 100bit이상의 키의 길이를 갖는 암호기술을 사용해야한다

======================================================================================================================================================================================
http://kr.blog.yahoo.com/netpose/36.html

비밀키 암호 알고리즘은 크게 블럭 암호 알고리즘과 스트림 암호 알고리즘으로 나눌 수 있다. 블럭 암호 알고리즘은 주어진 평문을 암호 알고리즘에서 정해진 길이의 블럭(64 혹은 128 비트)으로 나누어 블럭단위로 암호화를 수행하는 알고리즘이다. 따라서 평문은 블럭 암호에 맞는 블럭의 크기의 배수가 되거나, 그렇지 않으면 적당한 방법으로 평문을 블럭의 크기의 배수가 되도록 평문에 패딩(덧붙이기)을 하여야 한다. (예 : DES, RC2는 64비트 암호이고, SEED는 128비트 암호이다.)

스트림 암호 알고리즘은 평문을 블럭으로 나누지 않고 평문과 비밀키로부터 유도된 키 스트림(Key stream)을 서로 XOR(exclusive or)하여 암호문을 생성하는 알고리즘이다. 따라서 평문에 패딩을 하지 않고, 비밀키로부터 평문의 길이만큼의 키 스트림을 유도하는 함수가 필요하다. (예 : RC4, SEAL) 일반적으로 스트림 암호는 블럭 암호에 비해 그 속도가 매우 빠르다.

64비트 블럭 암호
DES
현재 DES는 56비트라는 짧은 키 길이로 인해 더 이상 안전하지 않다고 보는 것이 일반적인 견해이며, 따라서 기존의 응용 외에는 더 이상 사용하지 말도록 권고되고 있으며, 대신 Triple DES를 DEFAULT 블럭암호 알고리즘으로 권고하고 있다.
Three-key Triple DES는 메세지 M에 대해 3개의 키, K1, K2, K3를 사용하여 다음과 같이 암/복호화를 한다.(C는 암호문)
C = Ek3(Dk2(Ek1(M)))
M = DK1(Dk2(Dk3(C)))

RC2
RC2는 Ron Rivest가 설계하여 RSA사의 소프트웨어 보안제품에 주로 사용되다가 이제는 거의 업계 표준으로 널리 사용되는 알고리즘 중의 하나이다. RC2는 16비트 연산을 주로 사용하는 블럭암호로, 사용자의 비밀키에 무관하게 키 전수검색에 필요한 계산 복잡도를 제한할 수 있는 Effective key size를 파라미터로 설정함으로써 미국이 암호제품 수출 규제를 피할 수 있도록 설계되었다. 즉 사용자가 아무리 긴 비밀키를 사용하더라도 Effective key size가 T로 설정된 프로그램에서는 키 전수검색에 필요한 복잡도는 2의 T승으로 제한된다.

RC5
RC5 역시 Rivest에 의해 설계되어 널리 사용되는 알고리즘으로 키길이, 블럭길이(워드 사이즈의 두배) 및 라운드 수 등을 파라미터로 설정할 수 있는 Parameterized block cipher이다. 암호분석가들은 블럭길이가 64비트(워드사이즈=32)일 때 12라운드이면 충분하다고 보고 있으나, 실제 응용에서는 대부분 16라운드 버전을 주로 사용하고 있다. 128비트(워드사이즈=64) 블럭암호로는 거의 사용되지 않는다.

BLOWFISH
Bruce Schneier에 의해 설계된 블럭 암호로 DES와 같은 전형적인 Feistel 구조의 암호이나, 사용자 비밀키에 의존하는 S-box를 사용하는 것이 특징이다.(Key-dependent S-box) 충분히 긴 길이의 키를 지원하고 안전성에 큰 문제가 없는 것으로 알려져있으나, 키가 자주 바뀌는 응용에서는 Key setup time이 길어 불리한 면도 있다.

IDEA
Lai 등이 설계한 16비트 모듈라 곱셉을 주 비선형 연산으로 사용하는 64비트 블럭암호이다. DES를 대체할 수 있는 가장 강력한 후보의 하나로 꼽혀왔고, 기존의 Feistel-type cipher들과 다른 새로운 구조의 라운드 함수를 사용하고 있어 학계의 주요 분석 대상이 되 어 온 알고리즘이다. 현존 64비트 블럭암호 중에서는 가장 안전한 알고리즘의 하나로 꼽히며 128비트의 고정길이 키를 사용한다.
PGP에서 사용되는 블럭암호이며 또한 각종 인터넷 표준들에서도 후보 알고리즘으로 올라 있으나, 미국과 유럽에서 특허 문제가 걸려있다.

128비트 블럭 암호
SEED
SEED는 한국정보보호센타 주관으로 개발되어 현재 TTA 표준으로 제정절차를 밟고 있는 블럭암호로 128비트의 블럭 길이와 키 길이를 지원한다. Nested Feistel 구조로 설계되어 소프트웨어나 하드웨어 구현 모두에서 효율성은 좀 떨어지나 안전성은 우수한 것으로 보인다. 민수부문용 국내 표준 블럭암호호 개발되어 현재 다양한 응용에서 사용되고 있다.

RC6
Rivest와 RSA사가 공동 개발한 AES 2차 후보 알고리즘으로 RC5와 마찬가지로 가변길이의 블럭 길이 , 키 길이 및 라운드 수를 갖는 Parameterized block cipher이다. 128비트 블럭길이(워드사이즈=32)에 대해 권고되는 라운드 수는 20라운드이나 학계에서는 Security margin이 비교적 작아 라운드 수를 좀 더 증가시킬 것을 권고하고 있다. 256비트 블럭길이에 대해서는 거의 분석이 이루어지지 않아 당분간은 128비트 블럭암호로만 사용될 것으로 보인다.

TWOFISH
Schneier 등이 개발한 AES 2차 후보 알고리즘으로 BLOWFISH와 마찬가지로 Key-dependent S-box를 사용하며, 16라운드의 Feistel 구조로 된 128비트 블럭암호이다. 기존 블럭암호에서 사용하는 우수한 연산들을 잘 결합시켜 설계한 알고리즘으로, 특히 응용에 따라서 유연성 있게 Key scheduling을 할 수 있도록 한 것이 특징이다.

스트림 암호
RC4
1987년 Rivest에 의해 설계된 가변 키 길이를 지워하는 스트림 암호로 미 공개 암호였으나 1994년 인터넷 뉴스그룹에 익면으로 공개된 알고리즘이다. Netscape Navigator의 데이타 보호용으로 사용되고 있으며, 다른 인터넷 응용들에서도 널리 사용되는 스트림 암호이다.

SEAL
빠른 소프트웨어 구현을 목표로 설계된 스트림 암호로 160비트 키를 사용한다. 소프트웨어적인 대용량의 암/복호화에 적당한 알고리즘이나 인터넷 응용에서는 별로 사용되지 않는다.

======================================================================================================================================================================================

 http://naramoksu.tistory.com/2143330?srchid=BR1http%3A%2F%2Fnaramoksu.tistory.com%2F2143330

 

인터넷을 쓰면서 http는 많이 사용하는 것이고 https도 gmail이나 많은 사이트에서 보안을 위해서 사용되고 있는데, 두개의 차이가 뭔지 한번 살펴 보면 왜 우리나라에는 은행같은 사이트들이 그렇게 Active-X로 범벅이 되어서 난리인지 조금 이해할 수 있을 것 같아.

 

우선 이것들이 어떤 말의 약자인지를 살펴보는 것이 차이를 이해하는 첫번째 단계이겠지.

  • http : HyperText Transfer Protocol (위키백과사전 HTTP 참조)
  • https : Hypertext Transfer Protocol over Secure Socket Layer (위키백과사전 HTTPS 참조)

 

약자를 보면 두개는 모두 html 같은 HyperText 문서를 전송하기 위한 통신 규약(Protocol)이고, 차이는 SSL(Secure Socket Layer)를 쓰냐 아니냐의 차이네. 이 부분에 대하여는 HTTP 대 HTTPS : 뭐가 다른가?에 잘 언급되어 있음.

 

SSL은 요즘 트랜스포트 레이어 보안 (위키)로 통합되었다고 하는데, 공개키 방식의 암호화 방식이라고 알려져 있고, 암호화시 공개키(Pubilc Key)와 개인키(Private Key)라는 두가지 키를 이용하는 방법이라고 해. 공개키(Public Key)는 인터넷 상에 공개되어 있는 키로 서버에서 자동으로 사용자의 브라우져로 보내고, 사용자가 입력한 정보는 이것을 이용하여 암호화되어 다시 서버까지 전달됨. 이 공개키(Public Key)로 암호화된 정보는 서버만이 유일하게 소유하고 있는 개인키(Private Key)로만 해독이 가능하다고 함. 1

 

공개키나 개인키를 아무 사이트나 만들어서 쓸 수 있는 것은 아닌 것 같고, https를 쓰기 위해서는 해당 서버의 인증서(개인키)를 Verisign 같은 업체에서 사야한다고 함. 이건 개인의 공인인증서를 내가 맘대로 만들지 못하고, 공인된 기관에서 발급받아야 하는 것과 같은 상황임.

 

많이 알려진 것처럼 1990년대에 미국애들이 40bit짜리 공개키 기술만 수출할 수 있게 하다보니 영 불안해서 국내에서는 한국정보보호진흥원(KISA)이 독자적으로 SEED(한글 위키)라는 암호화 알고리즘을 만들었다고 함. 이것이 국제적인 표준이 되지 않다보니 IE를 비롯한 브라우저 업체에서 여기에 대한 지원을 하지 않았고, 실제 브라우징에 암호화 방식을 적용하기 위해서 부득이하게 Active X를 사용한 플러그인이 만들어 적용했다고 함.2

 

SEED를 사용하다보니 KISA의 인증서는 국제적으로는 공인 인증서로 인정받지도 못하고 있는 상황이라고 하며, 대안으로 사용할 플러그인(Active x)는 iE에서만 돌아가고 있으니 그동안 불여우나 크롬 같은 브라우저에서는 인터넷 뱅킹이나 전자 상거래를 사용할 수 없었던 것임.

 

그러나 이젠 세월이 달라져서 128bit 암호화 기술에 대한 제약이 없어진 상태이기에, Open Web 에서는 이런식으로 SEED와 같은 특정한 기술만을 쓰도록 강제하는 인증서 ‘사용 강제’의 문제점을 지적하고, 실제 사용자들이 SSL이나 다른 방식을 사용할 수 있도록 허용해 달라고 주장하였고, 최근에 인터넷 금융거래시 ‘공인인증서 의무사용’ 규제 풀기로 했다는 반가운 소식도 들리고 있는 것임.

 

조금 더 가서 액티브엑수를 사용해서 인터넷 뱅킹을 할 때 뭐가 있는지 한번 생각해 보면,

  1. 맨처음 보안 모듈인가를 깔지. 아마도 이것은 https와 같은 방식의 암호화를 위한 것이 아닌가 싶어. SSL에서 공개키와 개인키를 사용하는 것과 비교하면, 서버에 있어야 하는 인증서(개인키, Private Key)는 공인인증서 만들어주는 기관에서 부여했을 것이고, 공개키로는 개인의 공인인증서를 사용하는 것이 아닌가 싶어.
  2. 키보드 보안 관련한 프로그램을 또 깔지. 이거는 인증서의 암호가 해킹당하는 것을 방지하기 위한 것이라고 하는데, 인터넷 뱅킹을 하는 동안에는 효과가 있으나, 개인의 컴퓨터가 해킹당했다는 것을 전제로 보면 사실상 무용지물이라고 하더군.
  3. 피슁 사이트를 막기위한 것들이 또 있었던 것 같아. 이것은 위에서 이야기한 것처럼 KISA에서 발행하는 서버 인증서가 해외에서는 인증받지 못하니 인증서 만으로 웹사이트를 신뢰할 수 없는 문제가 생겨서 또 추가되는 것이 아닌가 싶어.

 

오늘 보니 은행쪽에서 배포하는 클라이언트 키퍼라는 프로그램에 악성 코드가 포함되어 있었다는 소식도 있네.

======================================================================================================================================================================================

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의   황제낙엽 2025.04.10 52
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의   황제낙엽 2024.02.02 631
45 무료 SSL/TLS 인증서 Let's Encrypt(Linux+Apache) secret https://letsencrypt.org/docs/rate-limits/  황제낙엽 2020.04.05 17
44 SNI 기반 HTTPS 사이트 차단 file https://blog.naver.com/aepkoreanet/221465526990  황제낙엽 2020.03.04 170
43 사설인증서 공인인증서 구분 방법 file   황제낙엽 2019.07.16 186
42 Convert Certificate Format SSL 인증서 변환 가이드 https://www.securesign.kr/guides/SSL-Cer...ert-Format  황제낙엽 2019.03.29 199
41 *.key와 *.crt를 PKCS#12(*.pfx, *.p12)로 형식으로 변환하기 https://www.eznbiz.co.kr/help/qna/content/3  황제낙엽 2019.03.29 213
40 HOWTO: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them http://info.ssl.com/article.aspx?id=12149  황제낙엽 2019.03.29 869
39 How to convert a certificate file from .crt to .cer? file https://www.sonicwall.com/support/knowle...597576961/  황제낙엽 2019.03.29 678
38 국내(KOREA) IP 사용 대역 file http://www.domain.kr  황제낙엽 2019.02.21 360
37 서버 보안 관리를 위한 백업과 점검 절차   황제낙엽 2017.05.30 201
36 정보 보안 개론 : 네이버 지식백과 http://terms.naver.com/list.nhn?cid=5843...ryId=58437  황제낙엽 2017.05.19 191
35 개발용 tomcat 운용시 tomcat-users.xml 의 관리 주의   황제낙엽 2017.04.07 391
34 윈도우 원격데스크톱(RDP) 접근 이력 조회 file http://skylit.tistory.com/196  황제낙엽 2017.04.06 243
33 SSL, TLS, OpenSSL 관련 http://kin.naver.com/qna/detail.nhn?d1id...K9fw%3D%3D  황제낙엽 2015.12.31 217
32 운영 모드 ( Mode of Operation )   황제낙엽 2013.03.07 347
» 암호화 알고리즘 스크랩   황제낙엽 2012.08.28 3076
30 미연방 표준 암호 알고리즘 http://rustican.com/board/zboard.php?id=paper&no=140  황제낙엽 2010.05.21 285
29 blowfish java source file http://www.angelfire.com/moon/dmp/  황제낙엽 2010.05.16 507
28 파일 해쉬 알고리즘 CRC   황제낙엽 2009.12.01 409
27 해쉬 알고리즘의 종류   황제낙엽 2009.12.01 406
26 Ajax 보안 관련 문서 (Attacking AJAX Web Applications) file   황제낙엽 2009.02.12 176