diff --git a/008. KeyStore System and Security/uhkwak-part0.md b/008. KeyStore System and Security/uhkwak-part0.md new file mode 100644 index 0000000..765e995 --- /dev/null +++ b/008. KeyStore System and Security/uhkwak-part0.md @@ -0,0 +1,90 @@ +# Part0 Keyword + +### 암호화/복호화 + +암호화는 적절한 지식(키 정보)을 가지고는 해독되지만, 그렇지 않으면 읽을 수 없는 형태로 데이털르 변환시키는 과정이다.이것의 목적은 전달하고자 하는 사람이외에는 암호화된 데이터를 획득한 사람에게조차도 해당 정보를 감춤으로서 프라이버시를 보장하자는 것이다. + +복호화는 암호화의 역처리로서 암호화된 데이터를 다시 해독 가능한 형태로 되돌리는 변환 과정이다. + +### 키 + +암호화와 복호화는 일반적으로 키라 불리는 몇 가지 비밀정보의 사용을 요구한다. 어떤 암호 메커니즘에서는 동일한 키를 암호화와 복호화 모두에 사용하지만, 또 다른 메커니즘에는 그들 처리과정에 사용하는 키를 서로 다르게 한다. 전자의 경우를 대칭키(Symmetric) 혹은 비밀키 암호 메커니즘이라 하며, 후자를 비대칭키(Asymmetric) 혹은 공개키 암호 메커니즘이라 한다. + +### 비밀키 암호 시스템(블록암호) + +Caesar 암호로부터 DES에 이르기까지 2천여 년 이상 사용한 블록암호는 고정된 길이의 블록 평문(plainText) 데이터를 같은 길이의 암호문(ciphertext)데이터로 변환시키는 비밀키 암호 알고리즘의 형태이다. 이때 복호화는 암호화에 사용된 것과 같은 비밀키를 이용하여 암호문 불록에 역변환을 적용하여 처리된다. (대칭) + +수학적인 이론을 근거로 하여 여러 평문 블록은 이에 대응되는 여러 암호문 블록으로 맵핑 되므로 블록암호는 모든 가능한 메시지의 집합 중에서 한 번의 치환을 효율적으로 제공한다. + +반복적인 연산을 수행하는 블록암호는 몇 히ㅗ의 라운드를 갖는 처리 과정에 이ㅡ하여 하나의 평문 블록을 암호화 한다. 각 라운드마다, 동일한 변환(라운드 함수)이 하나이ㅡ 서브키를 이용하여 특정 데이터에 적용된다. 서브키들의 집합은 특별한 함수에 의하여 사용자가 사용하는 비밀키로부터 보통 생성되고, 이러한 서브키의 집합을 키 스케쥴이라 한다. + +### DES(Data Encryption Standard) + +DES는 암호 알고리즘을 규정한 미국 연방 정보처리표준 FIPS 46-1의 명칭이다. DES는 원래 Lucifer로 알려진 IBM에서 개발된 것을 수정한 것으로 전 세계적으로 가장 널리 알려져서 사용되고 있다. + +DES는 64비트의 평문을 64비트의 암호문으로 만드는 블록암호 시스템으로 64비트의 키를 사용한다. 64비트의 키(외부 키)중 56비트는 실제의 키(내부 키)가 되고 나머지 8비트는 검사용 비트로 사용된다. 또한 DES의 안전성을 증가시키기 위하여 키의 길이를 두 배,즉 128비트, 십진수 16개를 키로 선택한 변형된 알고리즘도 있다. DES는 블록 크기가 64비트이며 처리과정 동안 56비트의 키를 이용한다. 통신용으로 사용할 때에는 송신측과 수신측 양측 모두가 같은 비밀키를 알고 있어야 하며, 이 키는 메세지의 암호와와 복호와에 이용되며 또한 메시지 인증 코드(MAC: Message Authetication Code)를 생성하거나 검증하기 위하여 이용되기도 한다. + +또한 파일 비밀성을 유지하기 위하여 하드디스크에 암호화된 형태로 저장하는 경우에도 단일 사용자의 암호화를 이ㅜ하여 이 알고리즘이 이용될 수도 있다. 다만, 많은 아용자가 있는 환경에서, 안전한 키의 분배는 어려운 문제로 부각된다. 이를 위하여 공개키 암호기법이 이러한 문제의 하나의 해결 방안으로 제시된다. + +DES는 16 라운드의 반복적인 암호화 과정을 갖고 있으며, 각 라운드마다 전치(transposition), 및 대치(substitution)의 과정을 거친 평문과 56비트의 내부키에서 나온 48비트의 키가 섞여 암호문을 만든다. 복호화는 암호화 과정과 동일하나 사용되는 키만 역순으로 작용되는 것. + +DES는 64비트를 입력으로 받아들이므로 블록화 과정이 필요하다. 하나의 문자, 기호, 혹은 숫자는 아스키 코드로 변환될 때 8비트가 되므로 평문을 8문자씩 나누는 과정이 블록화 과정이다. 블록화 과정 이후, DES에서는 대치 및 전치를 표에 의하여 행하게 된다. 그 다음으로 DES를 확장(extension)을 사용하게 디ㅗ는데, 이는 주어진 규칙에 의해 비트를 삽입하여 입력의 크기를 늘리는 것이다. 마지막으로 압축을 사용하여 비트를 일정한 규칙에 이ㅡ해 크기를 줄인다. DES에서는 이러한 방법을 혼합해서 사용한다. + +### AES(Advanced Encryption Standard) + +DES보다 안전하고 고속처리를 위한 차세대 블록암호 알고리즘의 요구에 대하여 전 세계 공모를 통해 차세대 블록암호화 표준인 AES선정하기 위해 검토 결과, 5개를 후보 알고리즘으로 평가하여 이들 중 Rijndael을 AES로 선정하였다. + +128비트, 192비트, 256비트의 블록 크기와 키의 크기를 갖는 블록암호 알고리즘으로 ISO-IEC 18033-3 128비트급 알고리즘으로 표준화 되었다. + +AES는 Nb를 평문 워드(32비트)의 개수라 하고, Nk를 키의 워드의 개수라 하면 Nb와 Nk의 값에 따라 특정 표와 같은 라운드 수 Nr을 갖는다. + +AES의 각 라운드는 마지막 라운드를 제외하고는 다음의 4단계로 이루어져 있다. 마지막 라운드는 열 조합 단계가 생략된다. + +1.바이트 대치 단계 + +2.행 쉬프트 단계 + +3.열 조합 단계 + +4.부분키 덧셈 단계 + +### 공개키 암호 시스템 + +중요한 정보를 안전하게 보호하기 위해 고대로부터 사용되어 온 암호의 최대 난제는 암호화 과정에서 사용되는 키를 안전하게 분배시키는 일이다. 이의 해결방안은 Diffie와 Hellman에 의해 제안된 공개키 암호기법의 개념을 이요하는 것이다. 이는 키에 과한 정보를 공개함으로써 키 관리의 어려움을 해결하고자 하는 방식이다. + +암호화할 때 사용하는 키(공개키, public key)와 복호화 할 때 사용하는 키(개인키, private key)를 다르게 생성하여 공개키는 공개하고 개인키만 안전하게 유지하는 방식이다. 이는 비밀키 암호 시스템에서 전제로 하였던 키의 안전한 분배는 필요 없게 된다. + +예를 들어 A와 비밀통신을 하고자 하면, 누구라도 A가 공개한 공개키로 송신 내용을 암호화하여 전송하면, A는 자신이 가진 개인키를 이용하여 암호문을 복호화 할 수 있게 된다. + +공개키 암호기법의 주요 특징으로는 + +1.안전성은 물론 편의성이 대폭 개선되었다는 것 + +2.메시지 내용 또는 발신원에 대한 부인을 방지할 수 있는 전자서명 기능을 제공한다는 것 + + - 비밀키 시스템을 이용한 인증은 약간의 비밀정보를 요구하며 가끔은 제3자의 신뢰적인 개입을 요구하기도 한다. 따라서 송신측은 공유한 비밀정보가 훼손되었음을 주장하여 이전에 인증된 메시지를 부인할 수 있다. 그러나 공개키 방식은, 모든 사용자는 오직 자신의 비공개 개인키를 잘 보관하는 책임을 짐으로서 이러한 형태의 부인을 원천적으로 막을 수 있다. + +3.암호화의 처리 속도가 비밀키 기법에 비하여 비교적 느리다는 것. + +- 그러나 공개키 암호기법은 이 두 기법들의 장점을 이용하기 위해 비밀키 압호기법도 함께 사용함으로서 공개키 시스템의 안정성 + 비밀키 시스템의 속도를 얻기 위해 혼용할 수 있다. + +4.공개키 암호기법은 비록 사용자의 개인키 자체를 이용할 수 없다 할지라도 위장 공격에 취약하다. + +결론적으로 공개키 방식은 비밀키 방식을 대체한다기 보다는 오히려 전체 보안 환경을 보다 안전하기 위한 보완적으로 사용할 수 있다. + +### 해쉬 함수 + +해쉬 함수 h는 입력 m을 해쉬 값이라 하는 고정된 길이의 비트 열인 H(=h(m))로 변환하는 과정으로, 이러한 성질을 갖는 해쉬 함수는 ㅇ일반적인 계산용으로 다양하게 사용된다. 보통 암호기법에서의 적용을 위하여 이러한 해쉬 함수는 보통 다음과 같은 부가적인 성질을 갖도록 선정된다. + +- 출력 길이가 입력 길이보다 작아야 함 +- 입력 데이터의 열의 길이는 임의로 설정 가능하나 출력 데이터의 길이는 고정된다. +- 함수계산용 기본 연산이 효율적으로 구성되어야 하며, 연산 속도가 빨라야 한다. +- + + + + + + + + \ No newline at end of file