본문 바로가기
반응형

IT 이론236

RSA 키 분배 알고리즘(Rivest-Shamir-Adleman method) 앞서 설명한 Diffie-Hellman과 같은 대칭키 방식을 토대로 더 강력한 알고리즘을 만들어 보겠다고 MIT의 Rivest, Shamir, Adleman 3명이 의기투합하여 만들었다. 3명의 이름을 따서 RSA법이라고 부른다. 디피-헬만법과 구분되는 점은 RSA에선 아예 암호화 키와 복호화 키가 다르다는 점이다. 큰 숫자를 소인수 분해하는 것이 어렵다는 것에 기반을 두고 디피-헬만법보다 훨씬 복잡한 공식을 사용한다. (디피-헬만법은 이산대수기반) 140자리 이상의 큰 소수의 곱과 추가적인 복잡한 연산을 통해 공개키와 개인키를 구성한다. 암호화/복호화 하는 데 있어서 대칭키보다 상대적으로 오랜 시간이 소요된다. 참고 - 가장 처음 나온 공개키기반 알고리즘 : 디피-헬만 - 디피 헬만과 같은 이산대수기반.. 2016. 10. 11.
디피-헬만 키 교환 알고리즘(Diffie-Hellman key exchange) 디피라는 사람과 헬만 이라는 사람이 공동 개발했다고 해서 디피-헬만법이다. 경우에 따라 디피-헬만 프로토콜이라고도 한다. - 비대칭키(공개키) 알고리즘에서 사용되는 키 교환 방식이다. - 상대방의 공개키와 나의 비밀키를 이용하여 비밀키를 생성한다. - A의 공개키와 B의 개인키를 DH연산하면 B의 비밀키가 되고 - B의 공개키와 A의 개인키를 DH연산하면 A의 비밀키가 된다. - 이산대수법에 의거한 수학적 공식에 의해 A의 비밀키와 B의 비밀키는 같아진다. - 송신자와 수신자는 이 비밀키를 사용하여 데이터를 암호화한 후 전달한다. 최초의 공개키 교환 알고리즘으로 IPSec, S-HTTP, SSL등 많은 프로토콜에서 기본적으로 사용하는 중요한 알고리즘이다. RSA또한 이 디피-헬만법에서 아이디어를 얻었다... 2016. 10. 11.
보안의 요건과 보안유지 기법 보안의 요건 기밀성(Confidentiality) : 시스템내의 정보와 자원은 인가된 사용자에게만 접근이 허용되며, 정보가 노출되더라도 읽을 수 없도록 함 무결성(Integrity) : 시스템 내의 정보는 오로지 인가된 사용자만 수정 할 수 있음 가용성(Availability) : 인가 받은 사용자에 데해서는 사용이 용이해야 함 인증(Authentication) : 시스템 내의 정보와 자원을 사용하려는 사용자가 인가된 사용자인지 확인하는 행위 부인 방지(Non Repudiation) : 시스템에 접근하고 데이터를 송•수신한 자가 그 사실을 숨기거나 부인할 수 없도록 증기를 기록•관리 보안유지 기법 외부 보안 시설 보안 : 천채지변이나 외부 침입로부터의 보안 운영 보안 : 전산소 관리 및 경영자들의 정책과.. 2016. 10. 10.
반가산기(Half-adder)와 전가산기(Full-adder) 반가산기란 두 개의 비트를 더하여 합(sum)과 올림자(carry)를 구하는 것이다. 머리 속으로 구현해 보자. 0+0=0 0+1=1 1+0=1 이까지만 보면 마치 OR연산자로 처리될 것 같지만 문제는 이거다. 1+1=0 두 비트가 모두 1일 때 결과는 10이 되어야 한다. 올림자(Carry)가 1이 되고 합(sum)은 0이 돼야 하는 것이다. 기초를 제대로 공부 했다면 아래와 같은 연산 결과를 가지는 연산자를 바로 알아챌 수 있을 것이다. 0 0 → 0 0 1 → 1 1 0 → 1 1 1 → 0 바로 XOR 이다. XOR이 있기 때문에 합(sum)은 의외로 간단하게 구현된다. 올림자(carry)는 더 쉽다. 위에서 보았듯이 둘다 1일 때만 1을 반환하면 된다. 그냥 AND연산자 하나면 쉽게 해결되는 것.. 2016. 10. 9.
인터럽트(Interrupt)의 개념과 종류 인터럽트는 컴퓨터 구조에서 CPU의 활동에 많은 영향을 끼치는 중요한 개념이다. 어느 전산 시험, 어느 회차에서도 관련 문제가 꼭 등장하므로 인터럽트에 대해서만 확실히 이해하고 가도 몇 문제는 더 풀 수 있을 정도이다. 인터럽트란 사전적 의미로는 '끼어들다', '중단시키다' 정도의 의미를 가진 말로 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다. 인터럽트의 종류인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉠 수 있다. 외부 인터럽트전원 이상 인터럽트(Power fail interrupt) : 말그대로 정전, 파워 이상 등기계 착오 인터럽트(Machine check .. 2016. 10. 9.
명령어의 형식과 주소 지정방식 CPU구조는 기준에 따라 다양하게 분류될 수 있지만 명령어 처리방식을 기준으로 나누면 '단일누산기구조', '범용레지스터구조', '스택구조' 로 나눌 수 있다. 이런 분류는 명령어의 형태에 따라 나뉜다. CPU에게 있어서 명령어란 마이크로 오퍼레이션에 의해 수행되는 하나의 명령을 말한다. 명령어는 아래와 같이 4가지 형식으로 나뉜다. 명령어의 형식(구조) 1) 0-주소 구조 연산코드(Operation code)부 명령어는 보통 연산코드(OP-code)부와 자료(Operand)부(주소부라고도 한다)로 나뉘나 0-명령어 형식에선 자료가 없고 오로지 연산코드 밖에 없다. 이런 명령어는 스택구조에서 사용된다. 우리가 알고 있는 후위식으로 된 연산대상을 하나씩 Push, Pop해가며 연산이 이루어지는 것이다. 스택.. 2016. 10. 8.
마이크로 오퍼레이션 사이클 타임(Micro operation cycle time) 마이크로 사이클 타임과 CPU클럭 주기의 관계에 따라 3가지로 구분 된다. 1. 동기 고정식(Synchronous Fixed)CPU clock 주기를 Micro cycle time과 같도록 맞춘다. 실제 Micro operation의 수행 시간은 다르므로 CPU clock과 같도록 맞추려면 Micro operation 중 가장 수행시간이 긴 것과 맞춰야 한다.예를 들어 여러 Micro operation의 수행시간이 1, 5, 2, 4, 6, 3 등으로 서로 다르다면 Cycle time은 6으로 맞추어야 한다. 최소값이 1이나 평균값인 3정도로 맞춘다면 수행시간이 6인 Micro operation은 수행될 수 없기 때문이다. 보다 시피 구현은 무척이나 간단하다. 그리고 Micro operation의 수행시.. 2016. 10. 8.
프로세스(Process)와 프로세스 제어 블록(PCB) Process : 실행되고 있는 프로그램(주 기억장치에 올라가 있는 프로그램) Process in memory Stack : Call stack, Local variables in function Heap : 포인터를 위한 메모리 저장공간 (Heap과 Stack은 동적으로 크기가 변하기 때문에 메모리 상에서 멀리 떨어져 있다.) Data : 전역 변수(바뀌지 않는 값) Code : 프로그램 코드 PCB(Process control block : 프로세스 제어 블록) structure that contain information associated with each process- 프로세스가 생성될때 만들어진다.- 모든 프로세스는 고유한 PCB를 갖는다. 프로세스의 현재 상태(Process state, r.. 2016. 10. 3.
IEEE 802의 주요 표준 규격 802.1 : 전체의 구성, OSI 참조 모델과의 관계, 표준 규약 등 802.2 : LLC에 관한 규약 802.3 : CSMA/CD에 관한 규약 802.4 : 토큰 버스에 관한 규약 802.5 : 토큰 링에 관한 규약 802.6 : 도시형 통신망(MAN)에 관한 규약 802.11 : 무선 LAN(Wifi등)에 관한 규약 802.15 : 블루투스에 관한 규약 2016. 10. 2.
전위 순회(Preorder), 후위 순회(Postorder), 중위 순회(Inorder) A B C 위와 같을때 전위 순회(Preorder)Root - Left - Right위 앞 뒤 (A - B - C) 중위 순회(Inorder)Left - Root - Right앞 위 뒤 (B - A - C) 후위 순회(Postorder)Left - Right - Root앞 뒤 위 (B - C - A) 전위와 중위가 헷갈릴 수 있다. 후위는 명확하다.중위가 왼쪽에서 오른쪽으로 순서대로 가는 것이라고 위우자.중위가 Left - Root - Right이다.중위가 중간(Root)이 중간(순서상의 중간)에 있다. 2016. 10. 1.
소프트웨어 재공학(Reengeneering) 재공학은 기존 프로그램의 개선이나 유지보수의 관점에서 작게 볼 수도 있으나 실제로 그보다 큰 규모의 구조적 재설계를 의미하는 경우가 많다. 어찌보면 미묘한 차이일수도 있지만 굳이 구분을 해 보자면 아래와 같다. 오류 투성이의 프로그램을 쓰면서 새로운 기능이 좀 필요하면 추가도 하고 틈틈이 시간이 나면 오류를 수정해 나간다. 이는 유지보수이다.도서히 안되겠다 싶어 프로그램을 갖다 버리고 새로 도입하려다 보니 금전적으로 부담이 되기도 하고 새롭게 개발된 프로그램이 사용성이나 안정성 면에서 더 나을거란 보장이 없다. 그래서 지금 있는 프로그램을 뒤집어 엎어서 구조적인 부분부터 다시 점검해서 오류가 없도록 전면적인 수정을 한 뒤 리뉴얼을 하여 다시 오픈했다. 이는 재공학이다. 물론 재공학은 유지보수의 범주에 포.. 2016. 9. 19.
소프트웨어 재사용(Reuse) 재사용이라고 하면 단순히 예전에 만들어 놨던 것을 다시 또 사용한다는 단순한 느낌이지만, 실제로는 표준화된 솔루션, 라이브러리, 오픈소스 등이 모두 재사용의 범주에 들어간다고 할 수 있다. 개요 : 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지보수에 사용하는 것재사용 요소 : 전체 프로그램, 부분 코드, 응용된 지식, 데이터 모형, 구조, 테스트 계획, 문서화 방법 등 즉, 웹페이지 레이아웃을 비슷하게 구현했다면, 다른 개발건에서 나왔던 메뉴얼이 양식을 그대로 차용했다면 이 또한 재사용이다. 정말 포괄적인 범위의 재사용을 말하는 것이다. 재사용의 이점 - 개발 시간과 비용을 단축시킨다. - 소프트웨어 품질을 향상시킨다. - 프로젝트 실패의 위험을 감소시킨다. - 시.. 2016. 9. 19.
소프트웨어 검사(Test) 전략 순서는 다음과 같다 1. 단위(코드) 검사 - 코딩이 이루어 진 후 모듈 단위로 테스트 - 주로 화이트박스 테스트 2. 통합(설계) 검사 - 단위 검사가 완료된 모듈들을 결합하는 과정에서 수행하는 테스트 - 모듈간의 인터페이스와 연관된 오류를 찾는다. - 하향식 통합 검사 : 상위 모듈에서 하위 모듈 방향으로 통합하여 테스트 한다. Stub가 필요하다. - 상향식 통합 검사 : 하위 모듈에서 올라가며 테스트한다. Stub가 필요 없다. * Stub는 모듈을 대체하는 더미용 출력값, 또는 임시 모듈을 의미한다. * A와 B가 결합된 C모듈이 있을때 하향식 검사는 A와 B에서 옳은 값이 들어온다는 가정 하에 C가 잘 동작 하는 것인지 보는 것이므로, A와 B로부터 와야할 값을 임의로 설정해 두는 것이다. *.. 2016. 9. 18.
소프트웨어 품질관리 활동 품질 관리 = 품질 통제 + 품질 보증 품질이란? 설계 품질 : 얼마나 잘 설계했는가 일치 품질 : 얼마나 설계한대로 잘 만들었는가 품질 통제 : 소프트웨어 개발, 운영, 유지보수 과정에서 품질을 유지하기 위해 조직 내에서 행해지는 품질관리 품질 보증 : 소프트웨어의 신뢰성을 보장해주기 위해 제 3자의 입장에서 수행하는 품질관리 2016. 9. 18.
분산처리 시스템의 투명성과 구조 분류 분산 처리 시스템의 목적과 장단점 여러 자원을 공유하고 속도 및 용량 등의 효율을 높이기 위한 시스템이다.자원 사용 관점에는 모든 면에서 장점을 가지지만구축의 난이도나 비용적인 측면은 단점이다 분산 처리 시스템의 투명성 투명성(Transparency) : 사용자가 분산된 여러 자원의 위치 정보를 알지 못하고 마치 하나의 커다란 시스템을 사용하는 것처럼 인식하도록 하는 것 위치 투명성 : 분산된 시스템이 어디 있는지는 알 필요 없다. 시스템적으로 알아서 통신해서 돌아가니깐이주 투명성 : 내부적으로 데이터가 이동하는걸 사용자는 알 필요가 없다. 그냥 필요한걸 불러다 사용만 할 뿐복제 투명성 : 내부적으로 데이터가 복제 되는걸 사용자는 알 필요가 없다. 그냥 필요한걸 불러다 사용만 할 뿐병행 투명성 : 병행제.. 2015. 10. 21.
RAID-0, RAID-1, RAID-5, RAID-0+1, RAID-1+0 ※ 이 포스팅은 주로 많이 쓰는 레이드 구성에 대해서만 언급하였다. 거의 모든 구성에 대해 포스팅 된거는 여기를 클릭하면 된다. RAID는 여러개의 하드디스크를 함께 사용하는 방식을 말한다. 속도를 위해 함께 사용 할 수도 있고 안정선을 위해 함께 사용 할 수도 있고 둘다를 추구할 수도 있다. 정말 많은 방식의 RAID가 있지만 대표적으로 쓰이는 몇가지만 알아보자 RAID-0속도 추구만을 위한 레이드 구성이다. 단순히 하드 여러개에 데이터를 분산시켜서 한꺼번에 입출력을 수행하는 것이다. 예를 들면 1~10까지의 숫자를 저장하는데, 하드1에는 1 3 5 7 9, 하드2에는 2 4 6 8 10을 저장한다. 1~10까지의 숫자를 읽고자 한다면 두개의 하드에서 동시에 읽게 되므로 이론적으론 하드가 한개 있는 것.. 2015. 10. 20.
Instruction Set Architecture : RISC와 CISC RISC와 CISC는 개념만 알면 쉽게 구분할 수 있다. RISC의 R은 Reduced이고 CISC의 C는 Complex이다. RISC는 간단한 명령어를 많이 사용해서 명령을 처리하는 프로세서이고 CISC는 복잡한 명령어를 조금 사용해서 명령을 처리하는 프로세서이다. 장단점이 있을 수 있다. 아래 비교 내용을 보면서 그 장단점을 파악해 보자. Reduced Instruction Set Computer (RISC)- 간단한 명령어의 집합으로 이루어져 있다.- 명령어들의 동작이 간단하다- 프로그램을 작성하는데 많은 명령어 사용- 모든 CISC명령은 RISC 명령 조합으로 만들어 낼 수 있다.- CISC명령어 하나 수행할 시간에 몇배의 명령을 실행 할 수 있다.- 호환성이 떨어진다.- 명령어 하나당 하나의 연.. 2015. 10. 20.
BCD코드와 3초과(Excess-3) 코드 BCD 코드는 Binary-coded decimal code라는 뜻이다. 뜻을 보면 알겠지만 BCD는 그냥 BCD이지 BCD 코드라는 말은 쓰지 않는다. 여튼 BCD는 말 그대로 2진수로 표현한 10진수라는 말이다. 11을 2진수로 표기 하려면 1011이라고 표현하는게 일반적인 2진수이지만, 11을 BCD로 표현하면 0001 0001 이다. 이렇게 각 자리의 10진수를 각각 4bit의 2진수로 표현하는게 BCD인 것이다. 8, 4, 2, 1로 이루어진 4bit의 2진수열을 사용하므로 8421코드라도로 불린다. 28192을 BCD로 표현하면? 0010 1000 0001 1001 0010 이 될것이다. 이렇게 10진수를 표현 하는데는 최고다. 아주 옛날 컴퓨터에서 10진수를 편하게 입출력 하기 위해 쓰였다... 2015. 10. 20.
반응형