어쩌다보니

블로그 이미지

Jay Two

'알고리즘'에 해당되는 글 2건

제목 날짜
  • 디피 헬만(Diffe-Hellman) 알고리즘 이해하기 2007.09.14
  • 과연 정렬 알고리즘을 몇 가지 이상 알아야 훌륭한 개발자인가?(2) 2007.09.04

디피 헬만(Diffe-Hellman) 알고리즘 이해하기

정보기술 2007. 9. 14. 10:10

Diffie& Hellman & Merkle


디피-헬만(
Diffie–Hellman) 알고리즘은 왠지 호감이 가는(?) 인상의

아저씨들이 1976년에 만든 알고리즘입니다.

(사진은 1977년의 것입니다. 왼쪽부터 Ralph Merkle, Martin Hellman, Whitfield Diffie)

원리는 간단히 이야기하자면,

 --- 아주 큰 2 개의 소수를 양쪽(peer)에서 공유하면서 시작합니다. ---

 소수(prime number)는 자신과 1 로만 나누어 지는 수를 말합니다. (2, 3, 5, 7, ...)

 일단 소수 1개(N)를 정의하여 두 노드간에 값을 공유합니다.

 소수 N의 크기가 매우 클수록 암호화 수준이 올라갑니다.

 G는 1부터 N-1 사이의 자연수입니다.

-- 여기까지는 이해가 물론 가시죠? --

 그러면 이상태에서, 

 한쪽(1번측이라고 봅시다)에서 공개키(public key)인 R1을 생성합니다.

 R1 = G^x mod N 입니다.

  (^는 승수를 의미하고, mod는 나머지를 의미합니다. 2^3=8 이고 10 mod 3 = 1 입니다.)

  이 때,  x 는 물론 1번측의 비밀키(private key)입니다. 

  비밀키(private key)는 공개키와 다르게 외부에 노출되면 안되는 값입니다.

  그리고 이 공개키인 R1 을 다른측(2번측)으로 전송합니다.

  R1은 통신(전송)을 할 경우 값이 외부로 값이 노출 될 수 있습니다.

  --- 여기까지는 이해가 가시죠? ---

   그리고 다른쪽(=2번측)에서도 마찬가지로 2번측의 공개키인 R2를 만듭니다.

   R2 = G^y mod N 입니다.

   이 때, y 는 2번측의 비밀키(private key)입니다. 당연히 y는 공개되면 안되죠.

   그리고 R2를 2번측에서 1번측으로 전송합니다.

   이제 양쪽은 다른 쪽이 전송한 수(R1,R2)를 서로서로 알고 있습니다.

   즉, 1번측에서는 2번측이 전송한 R2 를 알고 있고요, 

   반대로, 2번측에서는 1번측이 전송한 R1 을 알고 있습니다.

   단, 상대방의 비밀키(x, y)는 모릅니다. 비밀키는 자신만이 알고 있습니다.

  --- 여기까지도 이해가시리라 믿고요 ---

   그 상태에서 1번측은 

   전송받은 수 R2 를 가지고 K1 = R2^x mod N 값을 계산합니다.

   그리고 마찬가지로, 

   2번측도 전송받은 수 R1 으로 K2 = R1^y mod N 값을 계산합니다.

   그러면, 이때 K1 = K2 은 관계가 성립합니다!

  (둘은 수학적으로 동일하게 증명됩니다.)

   그리고, K1 = K2 = K = G^(xy) mod N 의 관계도 성립하게 됩니다.

   K는 1번측과 2번측 모두가 알 수 있는 키값입니다.

   --- 이제 서로 키 교환과 연산은 끝났습니다. ---

   마지막으로 생성된 키 K 를 이용하여서

  일반적인 세션키 알고리즘(AES, SEED 등)의 키로

  이용하는 것이 일반적인 사용방법입니다.

  --- 이해되시나요? 설명이 별로죠. 죄송합니다. ㅋ ---

   예전에는 귀찮아서 대충 라이브러리 함수로 대충 코딩했는데

   지금 정리해보니까 대충 이런 내용이군요 ㅎ





저작자표시비영리동일조건
  • 카카오스토리
  • 트위터
  • 페이스북

'정보기술' 카테고리의 다른 글

Open Project  (0) 2007.09.17
문자열(string)에 관하여…  (0) 2007.09.14
디피 헬만(Diffe-Hellman) 알고리즘 이해하기  (0) 2007.09.14
[Short article & essay] 컴퓨터 언어 배우기  (0) 2007.09.12
Acrobat 최대 파일 관리 pdf 파일 개수는??  (0) 2007.09.12
[팁] 윈도우즈에서 Tomcat 6 와 JRE/JDK 1.6 설치 시의 문제점  (2) 2007.09.06
Posted by 어쩌다보니 Jay Two
Algorithm, Diffe, Diffe-Hellman, Hellman, 디피, 디피헬만, 알고리즘, 암호, 헬만

트랙백

※ 스팸 트랙백 차단중 ...{ ? }

과연 정렬 알고리즘을 몇 가지 이상 알아야 훌륭한 개발자인가?

정보기술 2007. 9. 4. 08:49
 인터넷에서 사원 면접 시 정렬 알고리즘에 대한 인터뷰를 하는 내용을 본 적이 있습니다.

 주 내용은 버블 소팅 정도의 내용만 알면 면접을 통과하기 어렵고, 

 알고 있는 알고리즘 갯수가 많으면 합격 공산이 커진다는 내용이었습니다. 


       그.런.데...


 과연 그런 것이 현실에서 얼마나 영향을 미치게 될 지 궁금합니다.

 항상 그렇듯 최적의 정렬이란 없습니다. 

 늑대인간을 한방에 날리는 은으로 만든 총알은 없어요.

 자료의 분포가 같은 자료는 우주에서 동일 번째의 수소 원자를 만나는 확률만큼 드물 것입니다. 


 그리고 현실적으로 업무의 특석상 최적보다는 빠른 공수의 결과를 원하는 프로젝트가 대다수입니다.

 최상의 결과가 나오는데 일년, 

 상업용으로 판매가능한 수준이 되는데 반년, 

 그럭저럭 돌아는 가는(?) 결과물이 나오는데 한달이 걸리는 업무를 생각해 봅시다.

 귀하가 경영진 또는 프로젝트 관리자라면 과연 항상 최적의 결과만을 선택할 수 있겠습니까?


 일년이 지나면 해당 개발 파트가 없어지거나, 회사가 망할 수도 있습니다.


 버블 소트로라도 데모 버전을 만들어 대주주나 투자자를 기쁘게 만들어야 할 수 도 있습니다.


  초기의 상용 인공지능 서비스는 갑갑할 정도로 저수준의 제품이 많았습니다. 하지만 기업들은 일단 만듭니다. 만들고 또 만들지언정 최적의 결과를 위하여 기다리지 않아요.


 

 물론 정렬에 대한 질문 등이 지원자의 소양 분석이라는 점을 크게 이해하는 바입니다. 

 하지만 X를 잘하는 사람을 찾으면 X만 잘하는 사람만 모입니다.

 (비슷한 이야기를 인터넷에서 본 적이 있을 수도 있습니다.)


fixed 18.4.13

  • 카카오스토리
  • 트위터
  • 페이스북

'정보기술' 카테고리의 다른 글

[팁] 윈도우즈에서 Tomcat 6 와 JRE/JDK 1.6 설치 시의 문제점  (2) 2007.09.06
.net 과 XBOX  (0) 2007.09.05
과연 정렬 알고리즘을 몇 가지 이상 알아야 훌륭한 개발자인가?  (2) 2007.09.04
최근 소프트웨어 개발 하청업체들에 관한 글을 보면서...  (0) 2007.08.22
XML 예약 문자  (0) 2007.08.17
[TiP] 비스타(Vista) 에서 컨트롤 선택 시, 비프(Beep) 소리 안 듣기  (0) 2007.08.16
Posted by 어쩌다보니 Jay Two
개발자, 과연 정렬 알고리즘을 몇 가지 이상 알아야 훌륭한 개발자인가, 면접, 알고리즘
  • Favicon of http://www.withdev.com BlogIcon 낚시광준초리
    2007.09.05 16:28

    하나 첨언 하자면 정렬알고리즘을 알아도 그것을 처움부터 만들진 않죠 생산성이 떨어지니깐요 널리고 널린게 정렬알고리즘 코드들인데 ^^* 알고리즘 뿐만 아니겠죠???
    공감이 되네요. 저도 솔직히 고민을 좀 한적이 있는데 정말 어떤 개발자가 훌륭한 개발자일까요???
    아주 예전에 쓴글 트랙백 겁니다 ^^*

    • Favicon of https://j2doll.tistory.com BlogIcon 어쩌다보니 Jay Two
      2007.09.06 15:46 신고

      단순한 것처럼 보이는 문제가 항상 어려운 것 같습니다.

트랙백

※ 스팸 트랙백 차단중 ...{ ? }
이전페이지 다음페이지
블로그 이미지

by Jay Two

공지사항

  • 공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • DBCLI
  • Screen.orientation : Qt::ScreenOr..
  • any C++17
  • Qt for Python을 위한 기술 비전 (T..
  • [파일 다운로더] json-downloader..
  • libcurl 빌드 하기 (Visual Sutdio)
  • 정규식 쉽게 배우기
  • 더 보기
  • 소스 공개합니다. 필요하신 분은 사..
    Jay Two ㆍ 08.23
  • 교보문고에서 판매합니다. http://b..
    어쩌다가...휴식중... goshujin ㆍ 2016
  • 혹시 이책 파실 생각 없으세요? 제..
    안현수 ㆍ 2016
  • 노트북 사양때문에 icloud는 사용해..
    apmer ㆍ 2013
  • 반가운 정보를 만나서 두근거리는..
    반가운 사람 ㆍ 2012

태그

  • GitHub
  • command
  • wireshark
  • 인구
  • Xlnt
  • JavaScript
  • JIT
  • Excel
  • 순위
  • QT
  • font
  • TIOBE
  • Python
  • ruby
  • 자작프로그램
  • curl
  • STL
  • xlsx
  • luajit
  • gcc
  • 깃허브
  • Windows
  • Git
  • install
  • C++
  • 언어
  • LUA
  • Java
  • 설치
  • 프로그래밍

글 보관함


  • 2019/11
    (1)

  • 2019/10
    (1)

  • 2019/08
    (7)
방명록 : 관리자 : 글쓰기
Jay Two's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

어쩌다보니

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (440)
    • 정보기술 (155)
    • 일반 (103)
    • C, C++ (96)
    • Javascript (15)
    • Go (1)
    • Python (12)
    • DB (12)
    • Java (6)
    • C# (5)
    • Ruby (3)
    • Wireshark (4)
    • Linux (5)
    • VCS (4)
    • Interpret (1)
    • Build (1)
    • My Program and Code (16)
    • 비공개 (0)
    • 일기 (0)

카테고리

PC화면 보기 티스토리 Daum