Searchable Encryption

Suppose user Alice wishes to read her email on a number of devices: laptop, desktop, pager, etc. Alice's mail gateway is supposed to route email to the appropriate device based on the keywords in the email. For example, when Bob sends email with the keyword "urgent" the mail is routed to Alice's pager. When Bob sends email with the keyword "lunch" the mail is routed to Alice's desktop for reading later. One expects each email to contain a small number of keywords. For example, all words on the subject line as well as the sender's email address could be used as keywords. The mobile people project provides this email processing capability. Now, suppose Bob sends encrypted email to Alice using Alice's public key. Both the contents of the email and the keywords are encrypted. In this case the mail gateway cannot see the keywords and hence cannot make routing decisions. As a result, the mobile people project is unable to process secure email without violating user privacy. Our goal is to enable Alice to give the gateway the ability to test whether "urgent" is a keyword in the email, but the gateway should learn nothing else about the email. More generally, Alice should be able to specify a few keywords that the mail gateway can search for, but learn nothing else about incoming mail.

'Computer Science > Terminology' 카테고리의 다른 글

Timing Attack  (0) 2018.04.02
Side-Channel Attack  (0) 2018.04.02
Syskey  (0) 2018.03.30
High Performance File System (HPFS)  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30

Timing Attack

In cryptography, a timing attack is a side channel attack in which the attacker attempts to compromise a cryptosystem by analyzing the time taken to execute cryptographic algorithms. Every logical operation in a computer takes time to execure, and the time can differ based on the input; with precise measurements of the time for each operation, an attacker can work backwards to the input.


Information can leak from a system through measurement of the time it takes to respond to certain queries. How much this information can help an attacker depends on many variables: crypto system design, the CPU running the system, teh algorithms used, assorted implementation details, timing attack countermeasures, the accuracy of the timing measurements, etc.


'Computer Science > Terminology' 카테고리의 다른 글

Searchable Encryption  (0) 2018.04.02
Side-Channel Attack  (0) 2018.04.02
Syskey  (0) 2018.03.30
High Performance File System (HPFS)  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30

Side-Channel Attack

In computer security, a side-channel attack is any attack based on information gained from the implementation of a computer system, rather then weaknesses in the implemented algorithm itself (e.g. cryptanalysis and software bugs).


Timing information, power consumption, eletromagnetic leaks or even sound can provide an extra source of information, which can be exploited to break the system. Some side-channel attacks require technical knowledge of the internal opeartion of the system, although others such as differential power analysis are effective as black-box attacks.


Attempts to break a cryptosystem by deceiving or coerching people with legitimate access are not typically considered side-channel attacks.


General

General classes of side channel attack include:

- Cache attack - attacks based on attacker's ability to monitor cache accesses made by the victim in a shared physical system as in virtualized environment or a type of cloud service.

- Timing attack - attacks based on measuring how much time various computations (such as, say, comparing an attacker's given password with the victim's unknown one) take to perform.

- Power-monitoring attack - attacks that make use of varying power consumption by the hardware duting computation.

- Electromagnetic attack - attacks based on leaked electromagnetic radiation, which can directly provide plaintexts and other information. Such measurements can be used to infer cryptographic keys using techniques equivalent to those in power analysis or can be used in non-cryptographic attack.

In all cases, the underlying principle is that physical effects caused by the operation of a cryptosystem (on the side) can provide useful extra information about secrets in the system, for example, teh cryptographic key, partial state infomation, full or partial plaintexts and so forth.

'Computer Science > Terminology' 카테고리의 다른 글

Searchable Encryption  (0) 2018.04.02
Timing Attack  (0) 2018.04.02
Syskey  (0) 2018.03.30
High Performance File System (HPFS)  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30


안녕하세요, C 프로그래밍 언어 세번째 강의입니다.

오늘은 프로젝트를 생성하고, 소스파일을 만들어 실행해보겠습니다.

아주 간단하고 쉬운 작업이지만, 모든 프로그래밍의 시작입니다.


잘 따라오시길 바랍니다.



Chapter 2에서 설명해드렸듯이 저희는 개발을 보다 쉽게하기 위해서 통합 개발 환경(IDE)를 사용합니다.

해당 강의의 모든 프로그래밍 실습은 비주얼 스튜디오 2017를 통해 이루어집니다.



지난 Chapter 2에서 설치한 비주얼 스튜디오 2017의 화면입니다.




좌측 상단의 '파일' 메뉴를 눌러주세요.



'새로 만들기(N)' 버튼을 눌러주시고, '프로젝트(P)...'를 선택해주세요.



'새 프로젝트'라는 새로운 창이 생겼습니다. 좌측 목록 중에 'Windows 데스크톱'을 선택해주세요.



좌측 목록 'Windows 데스크톱'을 선택해주시면 중앙의 선택지가 변합니다.

'Windows 데스크톱 마법사'를 선택해주세요.



선택을 하셨다면 하단의 '이름(N)'이 Project1으로 바뀜을 알 수 있습니다.



'이름(N)' 부분에 원하시는 프로젝트 명을 입력하세요.

저는 Practice 라고 명했습니다. 그리고 '확인' 버튼을 눌러주세요.



새로운 창이 생겼습니다.

중앙의 '빈 프로젝트(E)' 를 체크 표시해주세요.

글자 앞의 빈 박스를 선택하세요.



위와 같이 선택이 되셨으면 '확인'을 선택하세요.



자, 여기까지 프로젝트를 생성해보았습니다.

이제 소스파일을 생성하겠습니다.

우측 메뉴 중에 '소스 파일'이라는 항목을 오른쪽 클릭해주세요.



'소스 파일' 항목을 오른쪽 클릭하시고 '추가(D)'를 선택하세요.

그리고 '새 항목(W)를 선택하세요.




새로운 창이 생겼습니다.

중앙의 목록에서 'C++ 파일(cpp)'을 선택하세요.

현재 하단의 '이름(N)'은 소스.cpp로 되어있을겁니다. 


**파일명을 반드시 Hello.c 로 바꾸어주세요.**


Chapter 1에서 설명하였던 여러 종류의 프로그래밍 언어를 기억하시나요?

그중 C++이라는 언어가 C와 별개로 존재했습니다.

이 둘은 엄연히 다른 언어임으로 서로 다른 규칙을 가지고 있습니다.

현재 설정은 C++이 기본으로 설정이 되어있기 때문에, 이번 C언어 강의에서는 C언어를 위한 소스파일을 만들어야합니다.

C언어를 위한 소스파일은 '파일명.c'으로 파일 이름 뒤에 점(.)과 c를 반드시 붙여서 생성해야합니다.



**파일명을 반드시 Hello.c 로 바꾸어주세요.**

앞으로 C언어 강의에서의 실습 소스 파일은 동일한 규칙으로 파일 이름 뒤에서 .c를 붙여주세요.



자, 그러면 비주얼 스튜디오의 텍스트 편집기가 생성 되었습니다.



이곳에서 사용자는 직접 언어를 입력하여 프로그래밍을 시작할 수 있습니다.



그러면 프로그램을 작성해볼까요?

하지만 아직 배운것이 없습니다.

프로그래밍을 배울때에 가장 기본은 배껴쓰기입니다.


아직은 많은 각 단어가 무엇을 의미하는 지, 어떤 동작을 하지는 전혀 이해하지 못해도 됩니다.

일단은 따라 써보고 천천히 이해하는 것이 프로그래밍 학습에 가장 큰 지름길입니다.


영어를 전혀 몰라도, PPT의 내용이 무슨 말인지 전혀 몰라도 됩니다.

일단 따라서 써보세요.


(5번째 줄의 '\' 표시는 한글 키보드에서의 '\'입니다.

한글전용 폰트에서는 원화표시(\)가 나오며, 영문전용 폰트에서는 역슬래시(\)가 나옵니다.

둘다 같은 기능을 하기때문에 상관없습니다.)


7줄을 모두 작성하셨으면, 'Ctrl + S'를 눌러 저장해주세요.



이제 프로그램을 실행해 볼까요. 상단의 '디버그(D)'를 선택해서, '디버그하지 않고 시작(H)'를 눌러주세요.

혹은 'Ctrl + F5'를 눌러주세요.



짜잔.

드디어 첫 프로그램을 만드셨습니다.


아직은 화면에 'Hello, C world !' 라는 문장밖에 출력하지 못하였으나, 이것이 모든 프로그래밍의 기초라는 거 알아두세요!

고생하셨습니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03
Chapter 2. IDE 설치하기  (0) 2018.04.01
Chapter 1. C 언어란  (0) 2018.03.31


안녕하세요, C 프로그래밍 언어 두번째 강의입니다.

오늘은 프로그래밍을 하기 위한 환경을 만들겠습니다.

앞으로 프로그래밍 실습을 하기위한 필수적인 단계가 되겠습니다.




통합 개발 환경, IDE란 프로그램 개발에 관련된 모든 작업을 단 하나의 프로그램에서 할 수 있는 소프트웨어를 말합니다.

전에는 프로그래밍 언어를 입력하는 프로그램,

그것을 컴파일(Compile)해주는 프로그램,

디버거(debugger)해주는 프로그램 등등 프로그램을 만들기 위해서는 많은 개발 프로그램들이 필요했습니다.


하지만 편의를 위해 이들을 하나로 묶어 제공하는 것을 통합 개발 환경이라고 합니다.



프로그래밍 언어에도 다양한 종류가 존재하듯이 통합 개발 환경, IDE도 많은 종류가 존재합니다.


그 중 C언어를 공부하는 입문자에게 가장 편리하고 무료로 구할 수 있는 통합 개발 환경은 마이크로소프트의 비주얼 스튜디오(Visual Studio)입니다.

마이크로소프트(Microsoft)에서 일반 사용자들에게 무료로 배포하는 비주얼 스튜디오는 윈도우에서 지원하는 거의 모든 프로그램을 만들 수 있습니다.

이 뿐만 아니라, 이미 전세계 많은 사람들이 이 프로그램을 이용하고 있기 때문에 추후에 정보를 얻기도 편합니다.


그렇다면 이젠 비주얼 스튜디오를 설치하겠습니다.



구글 검색창에 'visual studio'를 입력해주시고, https://www.visualstudio.com/ 에 접속해주세요.



PPT와 같은 화면이 나온다면 왼쪽 화면의 'Windows 용 다운로드'를 클릭해주세요.



'Community 2017'를 클릭해주세요.



화면이 전환이 되고, 설치파일을 저장해주세요.



저장된 폴더로 들어가, 설치를 진행해주세요.



설치 준비 중 입니다.



수십 초의 시간이 지나면..



설치 준비가 끝나고 위와 같은 화면이 뜹니다.

저희는 많은 프로그램이 필요하지 않고 C언어를 학습하기 때문에 'Windows 항목' 중 'C++를 사용한 데스크탑 개발' 항목을 선택해주세요.



PPT 그림과 같이 체크표시해주세요.



그리고 오른쪽 아래 '설치'를 누르시면, 설치가 진행됩니다.



설치가 완료되면, 새로운 창이 뜹니다. 마이크로소프트 계정이 있다면 입력해주세요.

마이크로소프트 계정이 없다면 가입 후 입력하여도 좋습니다.

혹시 계정도 없고, 가입하기 싫으신 분들은 '나중에 로그인'을 눌러주세요.


색 테마 선택에서 저는 '어둡게'를 선택하였습니다.

자주 화면을 보아야하는 입장에서 어두운 계열의 테마는 눈을 덜 자극합니다.

테마는 개발에 직접적인 영향을 주지 않으니, 개인의 취향에 따라 선택해주세요.


'Visual Studio 시작'을 눌러주세요.



이제 모두 완료하였습니다.

이대로 개발을 시작하여도 좋지만, 저는 글꼴마저 바꾸겠습니다.



상단의 메뉴 중 '도구'를 누르고, '옵션'을 누릅니다.



새로운 창이 뜹니다.

'글꼴 및 색'을 눌러줍니다.



대표적인 개발자 폰트 중 하나인 'Consolas'를 선택해주시고, '확인'을 눌러줍니다.



자, 이제 모든 설치를 완료하고, 다음 장에서는 본격적으로 개발을 시작하겠습니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03
Chapter 3. 프로젝트 생성하기  (0) 2018.04.02
Chapter 1. C 언어란  (0) 2018.03.31


안녕하세요, C 프로그래밍 언어 첫 강의입니다.

오늘은 프로그래밍 언어가 무엇인지, C 프로그래밍 언어란 무엇인지에 대해 알아보도록 하겠습니다.



프로그래밍 언어(Programming Language)란, 컴퓨터와 사람이 대화를 할 수 있는 여러 수단 중 하나입니다.


컴퓨터는 기본적으로 기계어로 동작이 됩니다.

기계어란 0과 1로 이루어진 언어를 말하며, 컴퓨터가 직접 읽을 수 있습니다.

하지만 사람의 입장에서 기계어를 이해하기 어렵고 컴퓨터 구조에 대한 충분한 지식이 없다면 기게어를 직접 사용하기 힘듭니다.


프로그래밍 언어란, 사람이 컴파일러를 이용하여 컴퓨터와 대화할 수 있는 하나의 수단입니다.

컴파일러에 대한 자세한 이야기는 추후에 하도록 하겠습니다.

지금은 컴파일러는 사람과 컴퓨터 사이에서 둘의 언어(프로그래밍 언어와 기계어)를 번역해주는 매개체라고 생각하시면 됩니다.


프로그래밍 언어 덕분에 사람들은 기계어를 직접 배우지 않아도, 인간의 언어와 가까운 프로그래밍 언어를 통해 컴퓨터와 대화가 가능해졌습니다.



인간의 언어(한국어, 영어, 중국어, 독일어 등등)가 다양하듯이 프로그래밍 언어 또한 매우 다양합니다.

그 중 대표적인 프로그래밍 언어로써 JAVA(자바), C(씨), Python(파이썬)이 있습니다.

PPT의 프로그래밍 언어 순서는 현재 세계에서 가장 많이 쓰이는 프로그래밍 언어 순서입니다.


한국어와 영어가 각기 다른 장점과 단점을 가졌듯이, 모든 프로그래밍 언어는 각기 다른 장단점을 가지고 있습니다.

그중에서 우리가 배우게 될 C언어에 대해 자세히 알아보도록 하겠습니다.



PPT에 나온 C언어의 장점들은 사실 다른 인기 프로그래밍 언어에도 적용이 가능합니다.

하지만 몇몇 구 시대의 프로그래밍 언어와 소수의 프로그래밍 언어와 비교하였을 때에 큰 특징을 가집니다.

이식성이란 어떠한 종류의 컴퓨터여도 C언어로 작성된 프로그램이 원할히 작동 가능함을 말합니다.

절차지향적 언어이란 '순서'가 정해져 있는 언어입니다.

사용자가 A, B, C 라는 명령을 순서대로 지시하였다면, C언어는 변칙없이 A, B, C 순서대로 명령을 이행할 것입니다.

이는 처음 프로그래밍을 접하는 사용자에게 혼란을 가져다 주지 않습니다.


이러한 장점으로 많은 프로그래밍 입문자들이 C언어를 선택하고 학습합니다.



간략한 C 프로그래밍 언어(C 언어)에 대해 알아보았습니다.

마지막으로 앞으로 하게 될 프로그램 실습에 대해 간략하게 보여드리겠습니다.


프로그래밍은 수정의 연속입니다. 특히 첫 입문자들은 프로그램 작성시 매번 실수를 할것입니다.

만약 프로그램 작성시 사용자가 실수한 곳이 있다면 컴파일러는 기계어로 번역을 할 수 없습니다.

이 때마다 컴파일러는 오류 문구를 보낼 것이고, 매번 사용자는 자신의 프로그램을 수정하고 수정해야합니다.

원인모를 오류에 지겹고 화나는 과정일 수 있습니다.

하지만 이 과정 자체가 배움으로 연결되어 보다 높은 수준의 프로그래밍으로 도달할 수 있습니다.


**끈기와 인내를 가지고 끝까지 완주해봅시다.**



# PPT 자료는 다른 게시판에 업로드 하겠습니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03
Chapter 3. 프로젝트 생성하기  (0) 2018.04.02
Chapter 2. IDE 설치하기  (0) 2018.04.01

Syskey

Syskey is a utility that encrypts the hashed password information in a SAM database in a Windows system using a 128-bit RC4 encryption key that, by default, is stored in the Windows registry. Syskey can optionally be configured to require the user to enter the key at boot time as a startup password or load it on removable storage media.


'Computer Science > Terminology' 카테고리의 다른 글

Timing Attack  (0) 2018.04.02
Side-Channel Attack  (0) 2018.04.02
High Performance File System (HPFS)  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30
Wi-Fi Protected Access (WPA)  (0) 2018.03.30

HPFS (High Performance File System)

HPFS (High Performance File System) is the file system introduced with IBM’s OS/2 version 1.2. HPFS is noted for handling large file (2 gigabytes) across multiple hard disk volumes (addressable up to 2 terabytes) and long file names (up to 256 bytes). HPFS was designed to get around several limitations at the time in MS-DOS, among them its eight-character name restriction. HPFS uses a centrally-located root directory and B-tree lookup to speed access. HPFS can coexist with the MS-DOS file system, File Allocation Table (FAT), or run independently.


'Computer Science > Terminology' 카테고리의 다른 글

Side-Channel Attack  (0) 2018.04.02
Syskey  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30
Wi-Fi Protected Access (WPA)  (0) 2018.03.30
Temporal Key Integrity Protocol (TKIP)  (0) 2018.03.30

Access control list

An access control list (ACL), with respect to a computer file system, is a list of permissions attached to an object. An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on given objects. Each entry in a typical ACL specifies a subject and an operation. For instance, if a file object has an ACL that contains (Alice: read, write; Bob: real), this would give Alice permission to read and write the file and Bob to only read it.


'Computer Science > Terminology' 카테고리의 다른 글

Syskey  (0) 2018.03.30
High Performance File System (HPFS)  (0) 2018.03.30
Wi-Fi Protected Access (WPA)  (0) 2018.03.30
Temporal Key Integrity Protocol (TKIP)  (0) 2018.03.30
CCMP  (0) 2018.03.30

Wi-Fi Protected Access

Wi-Fi Protected Access (WPA) and Wi-Fi Protected Access 2 (WPA2) are two security protocols and security certification programs developed by the Wi-Fi Alliance to secure wireless computer networks. The Alliance defined these in response to serious weaknesses researchers had found in the previous system, Wired Equivalent Privacy (WEP).

WPA (sometimes referred to as the draft IEEE 802.11i standard) became available I 2003. The Wi-Fi Alliance intended it as an intermediate measure in anticipation of the availability of the more secure and complex WPA2. WPA2 became available in 2004 and is common shorthand for the full IEEE 802.11i standard.


'Computer Science > Terminology' 카테고리의 다른 글

High Performance File System (HPFS)  (0) 2018.03.30
Access Control List (ACL)  (0) 2018.03.30
Temporal Key Integrity Protocol (TKIP)  (0) 2018.03.30
CCMP  (0) 2018.03.30
Replay attack  (0) 2018.03.30

+ Recent posts