2013년 4월 23일 화요일

RSA 및 암호화


RSA 및 암호화


RSA - http://blog.naver.com/nttkak/20130244201
Kerberos - http://blog.naver.com/nttkak/20130244201
공개키 인증서 구조 - http://blog.naver.com/nttkak/20130244201


출처: 로그님의 노트(http://hiddenviewer.springnote.com)
HMAC
송신자와 수신자가 비밀 키를 공유할 경우 서로 주고받은 메시지의 훼손여부를 확인하는데 사용하는 메시지 인증방식이다.
송신자가 원데이터의 해시값을 계산하여 원데이터와 해시값 모두 단일 메시지로 보내면, 수신자가 받은 메시지에 대해 해시값을 
다시 계산하여 계산된 HMAC과  전송된  HMAC의 일치여부를 확인한다. 


SHA-1(Secure Hash Algorithm)
 미국 정부에서 공개한 암호화 해시 알고리즘으로, 임의 길이의 문자열에서 160비트 해시값을 생성
 SHS 및 Secure Hash Standard라고도 함.


HMACSHA1
SHA1 해시함수를 사용하여, HMAC 을 구현하는 키 지정 해시 알고리즘이다. 다음과 같은 HMAC 프로세스를 따른다.  
1) 비밀 키를 메시지 데이터와 혼합한다
2) 해시 함수를 통해 결과를 해시한다
3) 해시값을 비밀키와 다시 혼합한다 
4) 그런 다음 해시함수를 다시 적용한다 


Base64 Encoding이란? 


Base64는 바이너리 데이터를  64진수 표현으로 변환하여 아스키 문자열로 인코딩하는 방법이다.
Bae64 encoding은 텍스트 데이터를 전송하기 위해 설계된 매체상에서 바이너리 데이터를 전송하거나 
저장하기 위해 사용되는 방식이다. 전송중에 데이터가 변경되지 않고, 파괴되지 않았음을 보장해준다. 
MIME를 사용하는 이메일을 포함한 많은 애플리케이션에서 사용된다.


3바이트 단위로 인코딩을 수행하며, 3으로 나누어 떨어지지 않는 데이터는 =문자로 패딩바이트를 삽입한다. 
(즉 3으로 나누어 떨어지지 않으면, =문자 1개, 또는 2개가 패딩된다.)
3바이트 데이터는 가장 상위비트부터 64진수로 표현하기 위해 6 비트씩 구분하여, 4개의 아스키 문자로 변환한다.
이 때 사용하는 64개의 문자는  A~Z (26개) , a~z(26개), 0~9(10개), +. / (2개) 이다.  0은   A로 인코딩되며,
63은 /로 인코딩이 된다. Base64Encoding 된 데이터는 원래 데이터보다 약 37% 증가한다. 

다음은 name 이라는 데이터가 Base64 Encoding 된후, 결과를 나타낸다. 

스크린샷_2010-10-04_오후_9.59.27.png
먼저 nam 이 가장 상위비트부터 6개의 비트씩 추출이 되어진다. e는 6개의 비트가 추출되어 인코딩이 되면
2개의 비트가 남게되는데, 여기에 4개의 0비트를 패딩하여 인코딩이 된다. 3바이트의 데이터는 인코딩된 
4개의 문자로 출력되는데,  위에서는 ZQ에 2개의 = 문자가 패딩이 된다. 

Base64 인코딩된 결과를 디코딩 할 때는 반대의 과정을 거치면 된다. 
인코딩 결과에서,  4개의 문자로부터 6개의 비트씩 추출하여 3바이트로 조합을 하여 한 바이트를 온전한 데이터로
읽으면 된다. 나누어 떨어지지 않는 문자는 =문자가 2개이면, 1개의 바이트(8비트)만을 추출하고 =문자가 1개이면,  
2개의 바이트(8비트씩 2개)를 추출하여 읽어내면 디코딩을 수행할 수 가 있다. 

MD5(Message-Digest algorithm 5)
임의의 길이의 메시지를 입력받아, 128비트 짜리 고정길이의 출력값을 내는 암호화 해시함수.
역함수가 존재하지 않는 함수이다. 역함수가 존재하지 않는 함수라는 것은, 동일한 키를 알지 못한다면,
해싱된 결과로 키를 유추해 낼수 없다는 의미이다.  주로 파일의 내용이 변경됐지는 여부를 검사하기 위해
사용된다고 한다.

댓글 없음:

댓글 쓰기