오늘 체크인 미팅을 진행하였다

 

아침 10시부터 열렸는데

Zoom 으로 1:1 이였다

 

미팅 내용은 간단한 신원확인

 

10시 15분 링크 메일이 왔다 오자마자 클릭! 을 했지만

4시간이 지난 2시 20분쯤 내 차례가됐다

 

4시간동안 아무것도 못하고 대기만  정말 짜증났지만 어쩔수 없으니

 

그러고 나서는 교육 영상과 QnA 시간을 갖게 되었다

 

사실 42서울을 추천해준 형의 도움과 같이 신청한 친구때문에 그냥 한번 해볼까?

라는 마음이였지만

 

QnA 시간을 갖게된후 너무나 간절한 마음이 생겼다

 

꼭 본과정까지 통과해서 IOS 개발 동아리에 들어가 이것저것 개발해보고 많은것을 배워봐야지

 

아 그전에 라피신 신청부터 신경쓰자

 

1) 구조체 선언

struct BasicInformation {
    let name: String
    var age: Int
}

Swift 에서 변수와 상수의 선언은 let 과 var 로 구성한다.

var 는 나중에 바뀔수도 있는 값!

let 은 나중에 바꿀수 없는 값!

 

예를들어..

let a: Int = 5
var b: Int = 5

a = 6		// 상수(let)기 때문에 오류가 발생한다

b = 6		// 변수(var) 이기 때문에 b 의 값은 6이 된다!

위와 같이 된다

 

앞서 선언한 BasicInformation 구조체를 사용해보자!

var hongInfo: BasicInformation = BasicInformation(name: "hong", age: 27)

// print 는 단순 데이터의 값만 출력!
print(hongInfo)
/*
BasicInformation(name: "hong", age: 27)
*/

// dump 는 데이터의 자세한 정보까지 출력해준다!
dump(hongInfo)
/*
▿ BasicInformation
  - name: "hong"
  - age: 27
*/

 

2) Class (클래스) 선언

class Person {
    var height: Float = 0.0 // 키 의 정보
    var weight: Float = 0.0 // 몸무게 의 정보
}

Person 이라는 클래스는 키 와 몸무게의 정보를 가지고 있다

 

Person 클래스를 사용해보자

let hong: Person = Person()
hong.height = 175.1
hong.weight = 95.3

print("hong : \(hong)")
/*
hong : Person
*/

dump(hong)
/*
▿ Person #0
  - height: 175.1
  - weight: 95.3
*/

 

기본적인 Swift 의 방향만 파악했다.

앞으로 공부하면서 더욱 자세히 알아보자!

2020년 2월 대학교를 졸업

 

졸업작품으로 인공지능 관련 서비스를 개발하고

 

인공지능에 관심이 생겨 한참 공부를 하다가 장벽을 넘지 못하고 졸업을 했다

 

내가 정말 나가고자 하는 방향이 뭘까 생각하다

 

해킹이 멋있고 재밌어 보였다

 

그렇게 KITRI 학원에 보안교육을 수강했다

 

재밌었다 즐거웠고

5월까지 그렇게 다니다가 지쳤다

 

재밌어 보이는 거랑 흥미랑은 다른문제 같았다

 

그렇게 학원을 중도포기 하였다 

 

2020년 5월까지 새로운 내용에 대한 글을 쓰던 나는 블로그 운영을 중단하였다

 

그러고나서 7-8개월 방황만 했다

 

정신을 차려보니 2021년 졸업한지 1년이 되어가는데 제대로 해놓은게 없다

 

요즘은 IOS 개발에 흥미를 가졌다

그래서 FastCampus 강의를 사고 완강을 했지만

 

머릿속에 남아있는것은 없다

 

역시 공부는 책으로 해야하나

야곰님의 문법책과 재은씨의 기본, 실전편을 구매했다

 

3월까지 APP STORE 에 ToyProject 를 올려야지

다짐해본다

 

+) 42seuol 이란것을 신청했다 왠지 공부에 흥미를 가질거 같아서 게임좀 줄이고 공부해야지ㅋ 올해는 반드시 취업해야한다

 

SSH 서버 IP 주소 : 192.168.10.197

windows  IP 주소 : 192.168.10.196

 

1) SFTP 접속 허용 / 거부

Subsystem sftp /usr/libexec/openssh/sftp-server

해당 부분이 주석처리 되어 있으면 SFTP 로 접속이 불가능 하고, 주석처리가 되어 있지 않은 상태면 SFTP 접속이 허용된다.

 

일단 주석처리가 되어 있지 않은 상태에서 SFTP 로 접속을 확인해 본다.

접속이 허용된다.

 

이제 해당 부분을 주석처리하고 접속을 시도해 보자

 

 

이렇게 '#' 을 붙여 주석처리를 수행하고 접속을 시도해본다

( systemctl restart sshd-service ) 를 수행 해야함

 

 

단지 주석처리만 했을뿐이지만 sftp 접속이 허용되지 않는다.

 

2) root 계정으로 로그인 허용 / 거부 설정

 

해당부분의

#PermitRootLogin yes

부분이 주석처리 되어있으나,

 

이부분의 설정이 기본적으로 yes 로 동작하며,

yes면 root 접속 허용 / no 면 root접속 거부가 된다.

 

먼저 주석을 제거하고 수행해본다.

 

yes 로 설정되어 있기 때문에 root로의 접속이 허용된다.

 

이번엔 해당 설정을 no 로 하고 접속을 시도해 보자

 

 

root 로의 접속이 허용되지 않는것을 확인할수 있다.

 

3) 특정 유저의 접속을 거부

 

위와같이 수정한후, hong 계정이 접속 불가능하게 해보자

 

 

위와같이 Access 가 거부됨을 확인할수 있다.

 

4) hosts.deny 파일을 이용한 ip차단

 

해당 파일에

sshd : 192.168.10.196 ( 윈도우 ip주소 ) 를 적고 sshd 를 재시작한다.

 

해당 주소의 ip를 거부하니 접속 자체가 차단됨을 알수있다

 

* 주의 할것! *

 

이미 세션 연결설정이 된후, ip를 차단한다던가, ssh의 구성설정을 바뀌면,

 

이미 연결된 세션은 연결이 유지가 된다.

위와같이 IP 를 차단했음에도, 차단하기전에 세션연결이 완료되었기 때문에 접속이 끊기지 않는다.

리눅스에서 ps 명령어를 수행해도 살아있음을 알수있다.

이럴경우 kill 명령어로 연결을 강제 종료 해야한다

 

kill 로 해당 프로세스를 죽이니 바로 연결이 끊겼다.

 

1. 비밀키 분배의 어려움

1) 물리적 방법으로 전달

- 링크 암호화에서 적용 가능 ( 물리적 장치로 이루어져 있기 때문에 )

- 단대단 암호화에서의 적용 어려움

 

2) 이전의 키를 사용해 암호화된 새로운 키 전송

- 링크 암호화나 단대단 암호화 모두 적용 가능

- 공격자가 어떤 한 키를 안다면 이후의 모든 키가 노출

 

3) 제 3자(키 분배 센터)를 통해 키 분배

- 단대단 암호화에서 널리 채택

- 사용자는 키 분배 센터와 유일한 키를 공유

 

2. 키배포센터(KDC)를 이용한 분배방법

1) A가 자신의 신원정보를 보내면서 B에 대한 통신시 사용되는 세션키 요청

2) KDC는 A와 B에게 서로의 세션키와 통신하려는 주체들간의 신원정보를 각자의 master key로 암호화 하여 배포한다,

   신원 정보인 ID(A)를 통해 B는 A가 통신하기를 원한다는것을 확인

3) A는 세션키를 이용해 B에게 전송하고, B는 A의 신원을 확인

4) B는 세션키를 이용해 A에게 전송하고, A는 B의 신원을 확인 ( T+1과 ID(B))

 

* 세션키

- 종단 시스템간의 통신을 암호화하는데 사용되는 임시키

- 보통 논리적인 연결에 사용된후 폐기

- 키 배포 센터로부터 획득(각자의 마스터키로 암호화되어 전송)

- 개체가 N일 경우 필요한 세션키 = N(N-1)/2

 

* 마스터키

- 키 배포 센터와 사용자가 공유하는 유일한 키

- 개체가 n일 경우 필요한 마스터키 = N개

 

3. 공개키 유효성

1) 공개키의 공개 발표

- 자신의 공개키를 다른 사용자에게 전송 등의 방법으로 공개

- 공개키를 항상 신뢰할수 없는 문제 발생

 

2) 공개적 사용 가능한 디렉토리

- 기관은 각 가입자에 대한 [ 이름, 공개키 ] 의 디렉토리 유지

- 각 가입자는 디렉토리 기관에 공개키 등록

- 가입자는 필요시 새로운 것으로 교체

- 기관은 디렉토리 공포

- 가입자는 전자적으로 디렉토리 접근 가능

==> 디렉토리 정보를 수정하거나 위조된 공개키로 임의의 가입자로 위장할수있는 문제 발생

 

4. 공개키 기관에 의한 세션키 분배

1) 공개키 기관에 A가 B에 대한 공개키를 요구하며 타임스템프(T)와 함께 전송 ( 위조 방지 )

2) KUb 는 B의 공개키를 의미하며, 공개키 기관의 개인키로 A가 요청한 메세지와 B의 공개키를 암호화하여 A에게 전송

3) A는 B의 공개키를 저장하고, A의 신원확인(ID(A))와 임시의 수 N을 B의 공개키로 암호화하여 전송

4) B가 공개키 기관에 A의 공개키를 요청

5) 공개키 기관의 개인키로 B가 요청한 메세지와 A의 공개키를 암호화하여 B에게 전송

6) B는 A의 진위여부 확인을 위해 A의 공개키로 N2를 생성후 A에게 N1과 N2를 전송 ( A만 복호 가능 )

7) A는 B의 공개키로 N2를 암호화 한후 B에게 전송 (B만 복호 가능 )

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

위 과정만으로는 통신을 할수 없음 세션키를 사용해야함

1) A의 식별자와 임시난수(N1)을 B의 공개키로 암호화하여 B에게 전송

2) B는 새로운 임시난수(N2)와 N1을 A의 공개키로 암호화하여 전송 A에게 전송

3) A는 보증을 위해 B의 공개키로 암호화한 N2를 B에게 전송 ( A 신원 확인 )

4) A는 비밀키 Ks를 선택하여 M=Era[Ekra[ks]]를 B에게 전송

 

+ Recent posts