2020년 5월 29일 금요일

파이썬 list 멤버들의 복사 - copy

파이썬 list 멤버를 다른 list로 복사하는 방법은 아래 코드와 같이 할 수 있을 것인데요.

list1 = [1, 2, 3, 4, 5]
list2 = list1

print (list1)
print (list2)


그러면 아래와 같이 결과가 나옵니다.

list1 :  [1, 2, 3, 4, 5]
list2 :  [1, 2, 3, 4, 5]


그런데 아래 코드를 실행하면

list2[2] = 0

print ("list1 : ", list1)


아래와 같이 나옵니다.

list1 :  [1, 2, 0, 4, 5]

분명 list2의 3번째 멤버의 값을 변경했는데, list1의 3번째 멤버의 값도 같이 바뀝니다.

이유는 list를 저장하는 변수는 실제 값을 가지고 있는게 아니라 list 구조체에 대한 포인터 (주소)를 가지고 있기 때문에 list1이나 list2 모두 같은 구조체의 주소를 가지고 있으므로 list2 구조체 멤버를 변경하면 list1 멤버도 같이 변경되기 때문이죠.

그렇다면 list1과 list2의 주소를 달리하면서 멤버들을 복사하는 방법이 있죠. 바로 copy를 이용하면 되는데요.

다시 코드를 아래와 같이 변경했습니다.

list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()

print ("list1 : ", list1)
print ("list2 : ", list2)

print ("\n")

list2[2] = 0

print ("list1 : ", list1)
print ("list2 : ", list2)


그러면 아래와 같이 완벽히 다른 주소를 가진 list2에 list1의 멤버가 복사되었음을 볼 수 있습니다.

list1 :  [1, 2, 3, 4, 5]
list2 :  [1, 2, 3, 4, 5]

list1 :  [1, 2, 3, 4, 5]
list2 :  [1, 2, 0, 4, 5]

2020년 5월 28일 목요일

mmWave (millimeter Wave)

"밀리미터파"라고 하는 mmWave는 5G가 할 수 있는 것을 실제로 보여주는 단거리 고주파 네트워크 기술입니다. 더 많은 사람들을 위해 더 많은 데이터를 네트워크를 통해 전달할 수 있도록 더 새롭고 더 넓은 통로를 준비하기 위해 필요한 것인 mmWave입니다.

4G LTE 기술은 고속으로 데이터를 전달하며, 이를 통해 통신, 미디어 소비, 생활 관리, 심지어는 타고 다니는 방식을 크게 바꿔 놓았습니다. 그러나 기술이 발전함에 따라 기술을 활용하고 사용할 방법에 대한 기대도 높아졌습니다. 사회가 점점 더 디지털에 의존하게 됨에 따라 가상 현실이든 실시간 설계 프로그램이든 관계없이 미래의 더욱 데이터 집약적인 응용 프로그램의 요구는 데이터 흐름 방식을 근본적으로 재구성해야 합니다.

이를 위해 5G 네트워크는 더 높은 주파수, 특히 밀리미터파 스펙트럼으로 알려진 28 및 39GHz 주파수를 기반으로서비스를 준비해야 합니다. 이러한 주파수는 매우 빠른 속도로 지연 시간이나 지연이 거의없이 대량의 데이터를 전달할 수 있습니다. 따라서 모바일 우선 사용자, 커넥티드 홈, AR / VR 장치, 클라우드 게임 시스템, 자율 주행 차량, IoT 센서 및 기타 클라우드 연결 장치의 데이터 수요가 크게 증가하는데 적합합니다.

mmWave는 더 많은 대역폭을 제공합니다. 초고속 및 더 많은 용량으로 5G의 잠재력을 실현하기 위한 또 다른 단계입니다.

mmWave는 휴대 전화가 모바일 기지국과 통신하여 전화를 걸고 문자를 보내며 데이터를 빠르고 원활하게 실행하는 데 사용하는 주파수 유형에서 잘 알려진 이름에서 유래되었습니다.

mmWave 고주파수는 단거리에 걸쳐 많은 용량과 대역폭을 제공할 수 있는데, mmWave 셀은 기지국에서 수백 미터까지 신호를 전달합니다. 이는 쇼핑 센터와 같은 많은 사용자가 집중된 지역에 가장 적합합니다. 붐비는 도심 기차역과 경기장까지 모두 mmWave의 기능을 활용할 수 있습니다.

현재 5G에서 사용하는 주파수 대역은 Sub-6GHz 밴드로 한국의 경우 SKT는 3.6~3.7 GHz, KT는 3.5~3.6GHz, U+는 3.42~3.5GHz로 주파수 경매된 대역에서 서비스를 하고 있는데, mmWave 주파수 대역에서는 SKT 28.1~28.9GHz, KT 26.5~27.3GHz, U+ 27.3~28.1GHz로 보다 많은 대역으로 할당되어 있습니다. Sub-6GHz 대역에서는 3개사에 280MHz 대역폭이 할당되어 있으나, mmWave 대역에서는 2400MHz 대역폭이 할당되어 있어 진정한 5G 속도를 제공할 것으로 보입니다.

2020년 5월 27일 수요일

파이썬 list 구조체내 특정 멤버 개수를 카운트

파이썬 list 구조체에서는 특정 값을 가진 멤버들의 개수도 알아낼 수가 있네요.

이런 것은 C 언어에서는 하나의 함수를 작성하던지 해야 하는데, 파이썬에서는 아주 간단히 처리할 수 있어요.

아래 코드가 하나의 간단한 예제입니다.

list1 = [4, 7, 2, 6, 6, 9, 7, 3, 2, 4]
print ("원래 List1은 ", list1, " 입니다\n")

print ("4 의 갯수는 ", list1.count(4))
print ("9 의 갯수는 ", list1.count(9))


list1에서 4의 값을 가진 멤버 개수 및 9의 값을 가진 멤버 개수를 출력할 수 있습니다.

원래 List1은  [4, 7, 2, 6, 6, 9, 7, 3, 2, 4]  입니다

4 의 갯수는  2
9 의 갯수는  1


그리고 숫자가 아닌 문자열의 list 구조체에서도 마찬가지로 가능합니다.

아래 코드는 간단한 문자들의 list 구조체입니다.

list1 = ['D', 'G', 'B', 'F', 'F', 'I', 'G', 'C', 'B', 'D']
print ("원래 List1은 ", list1, " 입니다\n")

print ("D 의 갯수는 ", list1.count('D'))
print ("I 의 갯수는 ", list1.count('I'))


그리고 위의 코드의 실행결과는 아래와 같습니다.

원래 List1은  ['D', 'G', 'B', 'F', 'F', 'I', 'G', 'C', 'B', 'D']  입니다

D 의 갯수는  2
I 의 갯수는  1


그럼 아래 코드는 어떨까요?

list1 = ['Da', 'Gb', 'Bc', 'Fe', 'Fh', 'Ij', 'Gh', 'Ca', 'Bi', 'De']
print ("원래 List1은 ", list1, " 입니다\n")

print ("Da 의 갯수는 ", list1.count('Da'))
print ("I 의 갯수는 ", list1.count('I'))


문자열이 정확히 일치해야만 정확한 개수를 출력하네요. 즉 와일드카드로 문자열 검색을 하지 않는군요. 아래 실행결과를 보시면 알 수 있어요.

원래 List1은  ['Da', 'Gb', 'Bc', 'Fe', 'Fh', 'Ij', 'Gh', 'Ca', 'Bi', 'De']  입니다

Da 의 갯수는  1
I 의 갯수는  0

2020년 5월 26일 화요일

파이썬 list 구조체 멤버들의 정렬시키기

새로운 파이썬 list에 대한 기능이 있는데요.

바로 알파벳 또는 숫자 크기순대로 정렬시키는 것입니다.

물론 역으로 정렬시킬 수도 있고요.

list1 = ['Sky', 'Boat', 'Apple', 'Pencil', 'Paper']
print("원래 List1은 ", list1, " 입니다\n")

list1.sort()
print("List1을 정렬하면 ", list1, "와 같이 됩니다\n")

list1.sort(reverse=True)
print("List1을 거꾸로 정렬하면 ", list1, "와 같이 됩니다\n")


sort()에 인자가 없이 사용하면 오름차순으로 정렬이 됩니다.

역으로 정렬시킬려면 reverse=True를 넣어서 정렬시키면 됩니다.

위의 코드를 실행시키면 아래와 같이 나옵니다.

원래 List1은  ['Sky', 'Boat', 'Apple', 'Pencil', 'Paper']  입니다

List1을 정렬하면  ['Apple', 'Boat', 'Paper', 'Pencil', 'Sky'] 와 같이 됩니다

List1을 거꾸로 정렬하면  ['Sky', 'Pencil', 'Paper', 'Boat', 'Apple'] 와 같이 됩니다

Business Email Compromise (BEC) 공격

BEC (Business Email Compromise)는 일반적으로 파트너에게 송금을 정기적으로 보내는 회사 직원을 대상으로 하는 지능형 이메일 사기입니다.

BEC는 손상된 전자 메일 계정을 사용하여 전자 메일 수신자가 회사 정보를 제공하거나 돈을 보내거나 회사 혁신과 기술을 공유하도록 속입니다.

BEC는 전자 메일 수신자의 신뢰를 얻는데 의존하는 사회 공학 기술입니다. BEC의 사이버 범죄자들은 ​​대부분의 사람들이 발신자 이메일 주소를 면밀히 보지않거나 URL에 약간의 불일치를 알아채지 못한다는 것을 알고 있습니다.

친숙하고 긴급하며 전략적인 이메일 문구와 함께 이러한 기술을 사용하면 회사 직원이 BEC 위협을 쉽고 빠르게 인식하기가 어렵습니다.

BEC 사이버 범죄자는 피싱, 스피어 피싱 및 사회 공학을 사용하여 회사 임원, 회계 부서 및 기타 조직의 고위 구성원을 사칭합니다.

BEC의 5가지 유형

가짜 송장 체계

사이버 범죄는 맬웨어나 다른 피싱 기술을 사용하여 회사의 전자 메일 시스템에 침투합니다. 그런 다음 사이버 범죄자는 일반적으로 인보이스 지불 및 송금을 요청하는데 사용되는 직원 이메일 계정을 인수합니다.

사이버 범죄자는 손상된 직원으로부터 다른 직원에게 자금을 이체하거나 특정 계정으로 송장을 지불하도록 요청하는 이메일을 보냅니다. 이메일은 종종 긴급한 톤으로 작성됩니다. 대상 직원은 전자 메일 보낸 사람을 신뢰하고 실수로 사이버 범죄에 연결된 사기 계정으로 자금을 보냅니다.

CEO 사기

사이버 범죄자는 경영진의 이메일 계정을 변조한 다음 이 ID를 사용하여 회사를 도용합니다. 일반적으로 변조된 전자 메일 계정은 실제 계정과 약간 다릅니다 (예 : tomp@widgets.com 대신 tomp@widgets.co).

사이버 범죄자는 이 이메일 주소와 신원을 사용하여 긴급 송금을 요청하는 메시지가 포함된 이메일을 보냅니다. 이메일 수신자는 발신자를 신뢰하며 이메일 주소가 정확한지 다시 확인해야 한다는 느낌이 들지 않습니다. 이메일 수신자는 요청에 따라 자금을 송금하며 송금과 관련된 은행 이름 또는 회사 이름을 확인하지 않습니다.

계정 손상

정통한 피싱 기술을 사용하여 직원의 계정이 해킹됩니다. 사이버 범죄자는 회사 공급 업체, 파트너 및 공급 업체의 직원 연락처 목록을 채굴합니다. 그런 다음 해킹된 계정에서 이 주요 연락처로 이메일이 전송되어 사이버 범죄자가 관리하는 가짜 계정으로 지불이 요청됩니다.

변호사 가장

고객을 대리하는 변호사로 가장한 사이버 범죄자는 직원 또는 CEO를 접촉합니다. 사이버 범죄자는 이 이메일 대화가 시간에 민감하고 기밀로 유지되어야 함을 분명히 합니다. 압박감을 느끼고 그들이 옳은 일을 하고 있다고 생각하면 BEC 피해자는 요청된 자금을 보냅니다.

정통한 사이버 범죄자들은 종종 금요일 오후나 공휴일이 시작되기 전에 이 BEC 체계를 사용합니다. 이메일 수신자가 업무 완수를 서두르고 있다는 사실을 알고 있습니다.

데이터 도난

사이버 범죄자는 하나 이상의 인사팀 구성원의 회사 이메일을 알아냅니다. 이 이메일 주소는 직원, 회사, 파트너 및 투자자에 대한 기밀 정보 요청을 보내는데 사용됩니다. 이 데이터는 나중에 사이버 범죄자가 더 큰 BEC 공격 또는 회사에 대한 고급 사이버 공격의 일부로 사용됩니다.

BEC 공격이 이루어지는 방법

사이버 사기와 범죄의 성격으로 인해 BEC 공격에는 전략적이고 철저한 접근이 필요합니다.

1. 사이버 범죄자는 대상 회사를 조사하는데 시간을 보냅니다. 범죄자는 보도 자료, LinkedIn 프로필, 웹사이트 컨텐츠 및 소셜 미디어 게시물과 같은 공개 정보를 사용하여 주요 직원의 이름과 직함을 수집합니다. 일부 사이버 범죄자들은 ​​여행 계획, 회의 참석 세부 정보, 회사 파트너 및 투자자, 새로운 제품 정보 및 회사에 대한 기본 사실을 찾고 있습니다.

2. 사이버 범죄자는이 정보를 사용하여 피싱 기술을 사용하여 회사 전자 메일 시스템을 해킹하거나 주요 직원의 전자 메일 계정을 변조합니다.

3. 회사 내부에서 사이버 범죄자는 이 이메일 액세스 및 회사에 대해 수집한 정보를 사용하여 범죄에 따라 대응할 것으로 판단되는 직원에게 친숙하고 친근하고 긴급한 이메일을 발송합니다.

4. 의심하지 않는 직원은 사이버 범죄 범죄자로부터 동료, 변호사 또는 회사 파트너로서 지불, 자금 이체 또는 기밀 정보를 요청하는 이메일을 받습니다.

5. 이메일 주소는 친숙하고 요청이 평범하지 않기 때문에 무고한 직원은 두번 생각하지 않고 사이버 범죄 요청과 정확히 동일하게 행동합니다. 일반적으로 직원은 연체된 인보이스를 지불하거나 새로운 회사 파트너에게 자금을 이체함으로써 회사의 최선의 이익을 위해 행동한다고 ​​생각합니다.

BEC 공격을 방지하는 방법

1. 5가지 유형의 BEC 공격에 대해 직원을 교육하고, 무료 피싱 시뮬레이션 도구를 활용하여 BEC 및 피싱 위험을 교육하고 식별시킵니다.

2. 입증된 보안 인식 교육 및 피싱 시뮬레이션 플랫폼을 사용하여 직원에게 BEC 및 사회 공학 위험을 최우선으로 주지시킵니다.

3. 보안 담당자들은 피싱 시뮬레이션 도구를 사용하여 직원 BEC 및 피싱 인식을 정기적으로 모니터링하도록 상기시킵니다.

4. 사이버 보안, BEC 및 사회 공학에 대한 지속적인 커뮤니케이션 및 캠페인을 제공합니다. 여기에는 강력한 비밀번호 정책을 설정하고 이메일, URL 및 첨부 파일 형식으로 발생할 수 있는 위험에 대해 직원들에게 상기시킵니다.

5. 개인 장치의 사용과 회사 네트워크 외부의 정보 공유를 제한하는 네트워크 액세스 규칙을 설정합니다.

6. 모든 응용 프로그램, 운영 체제, 네트워크 도구 및 내부 소프트웨어가 최신 상태이고 안전한지 확인하고, 맬웨어 방지 및 스팸 방지 소프트웨어를 설치합니다.

7. 사이버 보안 인식 캠페인, 교육, 지원, 교육 및 프로젝트 관리를 조직문화로 정착시킵니다.

2020년 5월 25일 월요일

파이썬 list 구조체에 대한 추가적인 연산 - '+', insert, extend, remove

파이썬 list 구조체에 대한 멤버 추가나 삭제에 대한 또다른 방법들이 많네요.

이전에는 단순히 list의 마지막에 추가하거나 특정 위치의 멤버 삭제 방법만 알았는데요.

특정 위치에 삽입하는 방법도 있네요

list1 = [1, 2, 3]
print("List1은 ", list1)
list1.insert(1, 'A')
print("List1은 ", list1)


위의 소스는 인덱스 1의 위치에 'A'라는 새 멤버를 삽입하면서 추가하는 방법입니다. 실행결과는 아래에 있습니다.

List1은  [1, 2, 3]
List1은  [1, 'A', 2, 3]


'+' 연산자를 사용해서 append 효과를 낼 수 있는 방법도 있네요. list1과 list2를 합치는 코드입니다.

list1 = [1, 2, 3]
list2 = ['A', 'B', 'C']
list3 = list1 + list2
print("List1은 ", list1)
print("List2은 ", list2)
print("List3은 ", list3)


실행결과는 아래에 나와 있습니다.

List1은  [1, 2, 3]
List2은  ['A', 'B', 'C']
List3은  [1, 2, 3, 'A', 'B', 'C']


'+=' 연산자로 간단히 코드를 작성할 수도 있네요

list3 += ['가', '나']
print("List3은 ", list3)


실행결과는 아래에 나와 있습니다.

List3은  [1, 2, 3, 'A', 'B', 'C', '가', '나']

extend를 사용해서 list 구조체의 멤버들을 확장할 수 있네요

list1 = [1, 2, 3]
print("List1은 ", list1)
list1.extend(['A', 'B', 'C'])
print("List1은 ", list1)


위의 코드 실행결과는 아래와 같습니다.

List1은  [1, 2, 3]
List1은  [1, 2, 3, 'A', 'B', 'C']


이전 del과 달리 삭제할 값과 일치하는 멤버를 찾아서 삭제하는 방법도 있는데요.

list1 = ['A', 'B', 'C']
print("list1은 ", list1)
list1.remove('A')
print("list1은 ", list1)


이 방법은 아주 유용할거 같네요. 'A'와 일치하는 멤버만 삭제되었네요.

list1은  ['A', 'B', 'C']
list1은  ['B', 'C']


만약 아래와 같이 'A'가 2개가 있을 경우에는 어떨까요?

list1 = ['A', 'B', 'C', 'A']
print("\nlist1은 ", list1)
list1.remove('A')
print("\nlist1은 ", list1)


실제 실행해보니 첫번째 'A'만 하나 삭제되는군요.

list1은  ['A', 'B', 'C', 'A']
list1은  ['B', 'C', 'A']

Identity as a Service (IDaaS)

IDaaS (Identity-as-a-Service)는 가입 (Subscription) 기반으로 클라우드를 통해 제공되는 ID 및 액세스 관리 서비스를 나타냅니다. IDaaS는 일반적으로 일련의 소프트웨어 및 하드웨어 수단을 통해 제공됩니다.

ID 서비스는 전자 거래에서 추가 이용을 위해 관리 및 조회될 수 있는 형태로 디지털 엔티티와 연결된 정보를 저장합니다. Identity Services의 주요 핵심 기능은 다음과 같습니다.

▶ 데이터 저장소.
▶ 쿼리 엔진.
▶ 정책 엔진.

클라우드 컴퓨팅 시스템 및 Inter-network과 같은 일부 분산 트랜잭션 시스템은 개인 네트워크보다 침입자에게 더 큰 공격 대상을 보여줌으로써 ID 관리 시스템이 해결해야 할 문제가 많습니다.

네트워크 정체 방지, 권한있는 구성 요소 액세스 또는 기타 정의된 권한인지 여부에 관계없이 보안 네트워크 스키마의 중심 원리는 개체에 대한 개체의 유효성 검사 권한을 기반으로 합니다. 그러므로, 정체성을 확립하는 것은 신뢰를 얻고 대상이 소유하고 있다고 생각하는 모든 것에 대한 열쇠입니다.

디지털 ID 관리를 서비스로 제공하는 서비스는 Inter-network 시스템의 분류입니다. IDaaS는 이미 존재하는 많은 서비스에 적용됩니다. 수많은 인터넷 도메인 (.COM, .ORG, .EDU, .MIL, .RU, .TV 등)을 실행하는 서버는 IDaaS 서버입니다. DNS는 도메인의 ID를 할당된 네트워크 그룹에 속하고 소유자 및 그의 정보 등과 연결된 것으로 구성합니다. ID가 IP 번호 형식으로 구성된 경우 메타 데이터는 다른 속성입니다.

ID는 무언가를 인식하거나 알 수 있게 하는 일련의 속성 또는 특성을 말합니다. 컴퓨터 네트워크 시스템에 주로 관련된 개인의 디지털 신원입니다. 객체를 식별할 수 있게 하는 다른 객체와 관련된 객체의 속성 및 메타 데이터를 디지털 ID라고 합니다. 신원은 개인에 속할 수 있으며 다음으로 구성될 수 있습니다.

▶ 현재의 것 : 성별, 연령 등과 같은 생물학적 특성
▶ 알아야 할 사항 : 주민등록번호 등의 개인 데이터
▶ 가지고있는 것 : 당신이 접근 할 수있는 지문, 은행 계좌 등
▶ 관련 사항 : 가족 및 친구, 신념 및 가치 등

ID를 식별하기 위해서는 개인은 이름 및 패스워드를 제공하도록 요구될 수 있는데, 이를 단일-인자 인증 방법이라고합니다. 보다 안전한 인증을 위해서는 최소 2단계 인증을 사용해야 합니다. 다단계 인증을 얻기 위해 개인은 고유 한 지문 패턴과 같은 생체 인자를 검사하는 시스템을 보유할 수 있습니다. 다단계 인증은 클라우드 컴퓨팅에 가장 일반적인 IDaaS 응용 프로그램이 사용되는 안정적인 서비스를 배포하는 네트워크 보안 또는 안정적인 서비스를 사용해야 합니다.

2020년 5월 22일 금요일

파이썬 list 구조체에 데이타 타입이 다른 항목 추가

파이썬의 list는 서로 다른 데이타 타입도 저장가능하다고 했었죠.

그래서 다른 데이타 타입을 추가하는 것은 어떤지 해보았어요.

list1 = ['가', 2, '다', 4, '마']
print("\nList1은 ", list1)

list1.append(6)
print("\nList1은 ", list1)

list2 = [10, 100, 'ABC']
list1.append(list2)
print("\nlist1은 ", list1)


아래에 실제 실행 결과를 보니 문제없이 동작하는군요.

List1은  ['가', 2, '다', 4, '마']

List1은  ['가', 2, '다', 4, '마', 6]

list1은  ['가', 2, '다', 4, '마', 6, [10, 100, 'ABC']]


심지어 list에 list를 추가하는 것도 가능하군요.


list속에 list가 있는 경우에 삭제는 가능할까요?

list2 = [10, 100, 'ABC']
list1.append(list2)
print("\nlist1은 ", list1)

del list1[5]

print("\nlist1은 ", list1)

위의 경우의 list속에 list가 있는 경우에도 삭제에 문제가 없네요.

list1은  ['가', 2, '다', 4, '마', 6, [10, 100, 'ABC']]

list1은  ['가', 2, '다', 4, '마', [10, 100, 'ABC']]

파이썬 list 구조체에 새로운 값 추가 및 삭제, 범위 지정

일반적인 C 언어에서의 Array에서는 새로운 값을 Array에 추가하거나 기존 값을 삭제하는 것이 지원되지 않습니다.

물론 새로운 함수를 작성하면 되겠지만요.

그러나 파이썬에서는 이런 동작이 기본적으로 지원되고 있어 프로그래머들에게 아주 쉽게 코드를 작성할 수 있네요

list1 = ['가', '나', '다', '라', '마']
print("\nList1은 ", list1)

list1.append('바')
print("\nList1은 ", list1)

del list1[2]
print("\nList1은 ", list1)


위의 코드에서 list 이름에 ".append"에 새로운 값을 넣고 실행시키면 해당 list 구조체의 마지막에 추가됩니다.

그리고 "del"을 사용하여 해당 list의 원하는 인덱스를 지정하면 해당 인덱스에 저장된 값이 삭제됩니다. C 언어에서도 마찬가지이지만 첫번째 항목의 인덱스 값은 0입니다. 그래서 위의 코드에서 삭제된 것은 인덱스 2의 위치에 있는 '다'가 삭제된 것입니다.

아래 결과를 보시면 금방 이해가 되실겁니다. print문에 "\n"을 넣은건 결과를 보기 좋게 하기 위해 넣었습니다.

List1은  ['가', '나', '다', '라', '마']

List1은  ['가', '나', '다', '라', '마', '바']

List1은  ['가', '나', '라', '마', '바']


그리고 어떤 list의 특정 범위를 지정후 다른 list에 쉽게 복사할 수도 있습니다.

str1 = list1[2]
print("\nstr1은 ", str1)

list2 = list1[1:3]
print("\nList2은 ", list2)


위의 코드에서 첫번째 것은 C 언어 등에서 일반적으로 사용하는 것이니 다들 아실 것이고요.

두번째 코드를 보면 인덱스 1에서 부터 인덱스 2까지 항목을 list2에 복사하는 코드입니다. 파이썬에서는 항상 마지막 범위를 지정하는 인덱스보다 1이 작은 인덱스까지 범위가 정해집니다.

str1은  라

List2은  ['나', '라']


위의 결과를 보시면 잘 이해되겠죠.

Living off the Land (LotL) 공격

'Living off the land'라는 말 자체는 전통적으로 사냥, 모임 또는 생계 농사를 통해 생존에 의존하는 것을 의미했습니다. 사이버 보안에 관해 이야기할때 그 의미는 훨씬 더 어둡습니다.

Living off the Land (LotL) 공격이란?

사이버 보안 세계에서 LotL 공격은 대상 컴퓨터에 이미 설치된 도구를 사용하거나 간단한 스크립트와 셸 코드를 메모리에서 직접 실행하는 공격을 말합니다. 공격자는 눈에 잘 띄지 않고 하드 디스크에 더 적은 수의 새 파일을 만들기 때문에 이 전략을 사용합니다. 기존 보안 도구로 탐지 될 가능성이 적으며, 궁극적으로 공격 차단 위험이 줄어 듭니다.

LotL 공격, 멀웨어가 아니면서 파일없는 또는 메모리 기반 공격은 기존 소프트웨어, 허용된 응용 프로그램 및 인증된 프로토콜을 사용하여 악의적인 활동을 수행하는 것과 같은 동일한 전술을 사용합니다. LotL 공격을 피하는데 사용되는 도구로는 운영 체제 기능, 합법적인 도구 및 클라우드 서비스가 있습니다.

LotL 공격자는 어떻게 공격하는가?

사용자는 Firefox를 사용하여 스팸 메시지가 있을 수 있는 웹 사이트를 방문할 수 있습니다.

이 페이지에서 플래시가 로드됩니다. 플래시는 끝없는 취약점으로 인해 일반적인 공격 경로입니다.

Flash는 모든 Windows 시스템에 존재하는 OS 도구인 PowerShell을 호출하고 명령행 (모두 메모리에서 작동)을 통해 명령을 제공합니다.

PowerShell은 stealth 명령 및 제어 서버에 연결하여 중요한 데이터를 찾아 공격자에게 보내는 악의적인 PowerShell 스크립트를 다운로드합니다.

2016년 가장 일반적인 맬웨어 전파 방법은 매크로와 PowerShell을 활용하여 페이로드 (일반적으로 랜섬웨어)를 설치한 악성 Office 파일을 사용하는 것입니다.

2016 년 민주당 해킹은 사회 공학과 스피어 피싱 이메일에 의한 LotL 공격의 예입니다.

LotL 공격, 지하 경제 및 랜섬웨어

LotL 공격은 지하 경제를 강화시킵니다. 공격자는 악의적인 Office 매크로를 사용하여 사용자가 Office 첨부 파일을 열때 매크로를 실행하도록 유도합니다. 이러한 전자 메일 손상 공격은 피해자가 지하 경제에서 판매할 수 있는 많은 돈이나 개인 정보를 포기하도록 속일 수 있습니다. 맬웨어는 일반적으로 이러한 공격의 구성 요소이며, 맬웨어는 지하 경제에서도 키트로 제품화 및 판매될 수 있습니다.

랜섬웨어는 매우 위험한 위협이며 LotL 공격에 이용될 수 있습니다. 2017년 6월 우크라이나 및 기타 여러 국가의 조직에 피해를 입힌 Ransom.Petya은 LotL 공격 전략을 사용하여 공격하는 예입니다. 랜섬웨어 위협은 널리 사용되는 회계 소프트웨어 프로그램의 업데이트 프로세스를 손상시켜 초기 감염 벡터로 사용했습니다.

LotL 공격과의 싸움

사용자의 경우 육상 공격을 막는 것은 표준 지침을 따르는 것을 의미합니다. 의심스러운 것처럼 보이는 전자 메일, 특히 링크나 첨부 파일이 포함된 전자 메일을 삭제하는 것입니다. 신뢰할 수 있는 출처의 이메일인지 확실하지 않으면 매크로 사용을 권유하는 첨부 파일을 피해야 합니다.

보안 전문가의 경우 이러한 유형의 공격에 대처하려면 시스템 관리자가 아니라 공격자가 기존 허용된 도구를 공격을 위해 어떻게 다르게 사용하는지와 같은 많은 상황 정보가 필요합니다. 그러한 정보를 기반으로 PowerShell 업그레이드, 로깅 활성화, 네트워크에서 이중 사용 도구 사용을 모니터링을 통해 모범 사례 기술들을 제시해야 합니다.

2020년 5월 21일 목요일

Array와 비슷하지만 더 편리한 파이썬의 list 구조체

C 언어에서 많이 사용하는 Array라는 구조체가 있죠.

파이썬에서도 그와 비슷한 개념의 구조체가 있는데 'list'라고 부릅니다.

그런데 파이썬에서는 이 list 구조체에 어떤 값이나 문자열 등을 추가하거나 제거하거나 하는 동작을 편리하게 사용할 수 있게 되어 있습니다.

C 언어에서는 이런 동작을 지원하지는 않죠.

list1 = []
list2 = [1, 2, 3, 4, 5]
list3 = ['가', '나', '다', '라', '마']

print("List1은 ", list1)
print("List2은 ", list2)
print("List3은 ", list3)


위의 코드를 보면 숫자나 문자열을 편리하게 list에 저장하고 출력할 수 있으며, list 구조체에 아무런 값이 없는 비어 있는 list를 선언할 수도 있습니다.


실행을 시켜보면



list4 = [1, '가']
list5 = [2, '나', list4]

print("List4는", list4)
print("List5는", list5)


그리고 list는 숫자나 문자열로만 저장하는게 아니라 여러가지 형태의 값이나 문자열을 동시에 저장할 수 있습니다.



C 언어에서는 볼 수 없는 편리성을 제공합니다.

5G VoNR (Voice over New Radio)

VoLTE와 같은 새로운 음성 서비스를 계획, 테스트 및 상용화하는데도 몇년이 걸렸으며 5G VoNR도 비슷한 일정을 따를 것으로 생각합니다. 그리고 4G는 5G NR 구축의 기반이므로 VoLTE는 앞으로 5G 음성 솔루션으로 남아있을 것으로 기대합니다.

5G NSA (Non-Standalone)

옵션 3을 사용한 초기 5G 설치에서는 5G EPS에 RAN에 독립형 NR이 포함됩니다. 코어 네트워크 업그레이드없이 4G 음성 (VoLTE) 및 기타 IMS 서비스가 계속 사용됩니다. IMS가 업데이트된 RAN을 인식하지 못합니다. 모든 4G VoLTE 원칙이 유지됩니다.

5G SA (Standalone)

5G 독립형 NR 설치의 경우 SA2는 RNR에서 VoNR (Voice over NR) 및 VoNR->VoLTE 폴백을 음성 솔루션으로 정의했습니다.

옵션 2를 사용하는 5G 시스템 (5GS)은 RAN에 NR 독립형을 포함합니다. 적어도 처음에는 5G 시스템 (5GS)이 전체 네트워크 범위로 배포되지 않습니다. 따라서 5GS는 기존 4G VoLTE 구축에 긴밀하게 연결되어 전체 4G + 5G 네트워크에서 원활한 음성 서비스를 우수한 성능으로 제공해야 합니다.

EPC 폴백 (Fallback)

EPS 폴백은 5GS 초기에 사용됩니다. UE는 호 설정 동안 5G RAN에서 LTE로 폴백한다. 따라서 모든 음성 관련 기능은 5G RAN, 5GC 및 IMS에서 필요하며 NG-RAN을 통한 호출을 완전히 설정하는 데 필요한 기능은 제외됩니다.

Voice over NR (New Radio)은 5G New Radio에서 음성 통화를 할 수 있음을 의미합니다. 이를 위해서는 5G의 NR이 모든 음성 기능을 지원하고 음성 범위에 맞게 조정되어야 합니다. 5GS와 5G EPS 사이의 음성 호의 핸드 오버는 UE에 의해 제공된 측정보고에 기초하여 수행될 수 있습니다.

5G는 음성 솔루션을 위한 3단계

▶ 5G NSA 단계 : 5G 서비스가 시작되면 운영자는 기본적으로 5G NSA 가입자에게 VoLTE 서비스를 활성화해야 합니다.

▶ 5G SA 초기 단계 : 3GPP R-15에 정의된 대로 5G에서 2G / 3G 로의 CS 폴백은 지원되지 않습니다. 이는 음성 통화 설정 단계에서 5G SA 네트워크가 LTE 네트워크로의 음성 폴백을 위해 EPS FB (Evolved Packet System Fallback) 기술을 사용하여 VoLTE를 통한 연결을 완료해야함을 의미합니다.

▶ 5G SA 성숙 단계 : 5G SA에 대한 터미널 지원은 주류가 되어야 하며 기본 구성은 VoNR에 대한 것이어야 합니다 (기본적으로 ON으로 설정). 통화중에 사용자가 5G 서비스 범위를 벗어나면 PSHO (Packet Switched Handover) 기술을 사용하여 세션을 NR에서 LTE로 원활하게 전환하여 VoLTE가 음성 서비스를 인수할 수 있습니다. (이것은 4G의 SRVCC와 같지만 원리는 다릅니다.)


2020년 5월 20일 수요일

파이썬에서 특이한 사칙 연산자 (제곱, 몫, 나머지) 및 문자열 연산

보통의 사칙연산자인 '+', '-', '*', '/'에 대해서는 다들 알고 있을 것이고요.

파이썬에서는 여기에 좀더 편리한 연산자를 기본 제공하고 있는데요.

어떤 수의 제곱수를 구한다거나 나눗셈을 할때 몫과 나머지를 쉽게 구할 수 있는 연산자를 제공합니다.

a = 2
b = 13

print("a의 3제곱은 ", a ** 3)

print("b 나누기 a의 몫은 ", b // a)
print("b 나누기 a의 나머지는 ", b % a)


위의 소스를 실행하면

a의 3제곱은  8
b 나누기 a의 몫은  6
b 나누기 a의 나머지는  1


너무 편한 연산자인거 같습니다.

그리고 재미있는건 문자열 연산인데요. '+'와 '*'를 사용할 수 있습니다.

'+'는 대충 상상하듯이 2개의 문자열을 붙여주는 연산자입니다.

'*'는 어떤 문자열 * 숫자를 하면 그 문자열이 숫자만큼 반복해서 붙여져서 길어집니다.

a = "Hello"
b = "World"

print("문자열 a 더하기 b 연산 : ", a + b)
print("문자열 a 곱하기 2 연산 : ", a * 2)


위의 소스의 실행결과를 보면

문자열 a 더하기 b 연산 :  HelloWorld
문자열 a 곱하기 2 연산 :  HelloHello


파이썬의 문자열 연산자 '*'가 재미있네요.

5G망에서의 Control and User Plane Separation (CUPS)

CUPS (Control and User Plane Separation)는 3GPP Release 14 규격의 Evolved Packet Core (EPC)를 위해 도입되었다.

전세계의 서비스 제공 업체는 비디오, 온라인 게임 및 소셜 미디어 서비스의 소비 증가로 인해 매년 모바일 데이터 증가가 급증하고 있습니다. 5G는 더 빠른 데이터 속도를 지원해야 할뿐만 아니라 고객의 네트워크 대기 시간을 줄여야 합니다. 네트워크 대기 시간은 고객 경험에 직접적인 영향을 미치며 새로운 5G 사용 사례에서는 거의 협상할 수 없는 것입니다.

5G 설계자는 스마트 자동차, AR / VR 및 홀로그램과 같은 새로운 5G 사용 사례의 요구 사항을 충족하기 위해 고객의 네트워크 대기 시간을 줄이는 여러가지 방법을 모색하고 있습니다. 5G 아키텍처는 네트워크 슬라이싱, Massive MIMO, 스몰 셀 및 MEC (Multi-access Edge Computing)와 같은 여러 메커니즘을 통해 네트워크 대기 시간을 줄입니다. 사용자에게 더 가까운 MEC 인프라는 OTT (Over-The-Top) 및 IOT (Internet of Things) 서비스를 위한 컴퓨팅 인프라를 제공함으로써 네트워크 대기 시간을 줄이는데 중요한 역할을합니다. CUPS는 5G망을 위한 또 다른 대안으로 네트워크 대기 시간을 줄이는데 도움이 됩니다.

▲ 대량 데이터 지원 : 최근 몇년 동안 이동 통신 사업자의 사용자 데이터 트래픽이 매년 두배로 증가했으며, 이러한 트래픽 증가의 이유는 스마트 장치의 사용, 비디오 및 기타 응용 프로그램의 확산과 셀룰러 네트워크를 사용하는 USB 모뎀 동글 및 개인 핫스팟의 사용이 급격히 증가하고 있기 때문입니다.

▲ RCS (Rich Communication Services) : 전세계적으로 모바일 단말기의 보급이 증가하고 있으며 콘텐츠가 풍부한 멀티미디어 서비스 (예 : OTT 비디오 스트리밍 서비스, P2P 비디오, 콘텐츠 공유)에 대한 관심이 높아짐에 따라 데이터 트래픽이 빠르게 증가하는 추세입니다.

▲ 고객 경험 및 낮은 대기 시간 : 사용자 경험 개선에 대한 강력한 소비자 요구가 있으며, 대기 시간이 단축되는 것은 중요한 KPI중 하나입니다.

CUPS가 지원하는 다중 배치 옵션은 서비스 제공 업체에게 뛰어난 유연성을 제공하고 고객 서비스의 대역폭 및 대기 시간 요구 사항을 충족시키기 위해 하나이상의 위치에 User Plane 기능을 배치합니다. 예를 들어, 서비스 제공 업체는 수백명의 학생들이 비디오를 보고 온라인 게임을 하는 대학 근처에 더많은 User Plane 기능 인스턴스를 배치해야 할 수 있습니다. 그러나 상점가에는 상점과 쇼핑 거래에 대한 정보를 확인하기 위해 인터넷을 탐색하는 수천 명의 모바일 사용자가 있습니다. 이러한 위치에서 Control Plane은 수천 개의 고객 세션을 지원하도록 확장되어야합니다. 따라서 서비스 제공 업체는 이러한 지역에 1000명의 모바일 사용자를 지원하기 위해 더 많은 Control Plane 기능을 배치해야 할 수 있습니다.

5G Core에는 4G EPC에서 SGW-U 및 PGW-U가 수행하는 모든 User Plane 기능을 처리하는 고유한 UPF (User Plane Function)가 있습니다. 5G의 제어 기능은 ASF (Authentication Server Function), UMD (User Data Management), PCF (Policy and Charging Function) 및 SMF (Session Management Function)와 같은 다양한 네트워크 기능에 분산되어 있습니다. 이는 서비스 제공 업체가 네트워크 기능을 결정할 수있는 유연성을 제공합니다.

5G는 클라우드 네이티브 네트워크 서비스를 지원하기 때문에 공급 업체와 서비스 제공 업체는 5G 네트워크 아키텍처 (4G 네트워크와 비교할때)에서 CUPS를 구현하기가 쉬워집니다.

CUPS 아키텍처 장점은 아래와 같습니다.

▲ 애플리케이션 서비스 대기 시간 감소 (예 : Control Plane 노드의 수를 증가시키지 않으면서 의도된 UE 사용 유형에 대해 RAN에 더 가깝거나 더 적합한 User Plane 노드를 선택
▲ 네트워크에서 SGW-C, PGW-C 및 TDF-C의 수를 변경하지 않고 User Plane 노드를 추가할 수 있으므로 데이터 트래픽 증가 지원
▲ EPC 노드의 Control Plane 및 User Plane 리소스를 독립적으로 찾고 확장
▲ Control Plane과 User Plane 기능의 독립적 진화.
▲ 소프트웨어 정의 네트워킹을 활성화하여 User Plane 데이터를 보다 효율적으로 제공



2020년 5월 19일 화요일

파이썬 소스코드 작성시 주의점 - 코딩룰

파이썬 소스코드를 작성시 주의할 점이 있는데요.

보통의 C 언어나 Java 언어에서도 대부분이 코드 실행문이 한줄로 되어 있죠.

파이썬에서도 마찬가지이고요.

그러나 간혹 코드 실행문이 길다보면 한줄에 코드를 다 작성이 안될때가 있죠.

if ((a == 0) && (b == 1) && (c == 2) && (d == 3)
   (e == 4))
   printf ("%d %d %d %d %e\n", a, b, c, d, e);


C 언어에서는 위의 코드와 같이 여러 줄에 걸쳐 코드를 작성할 수가 있죠.

if 1900 < year < 2100 and 1 <= month <= 12 \
   and 1 <= day <= 31 and 0 <= hour < 24 \
   and 0 <= minute < 60 and 0 <= second < 60:   # Looks like a valid date
        return 1


위의 코드가 하나의 예입니다.

위의 코드에서 '#'로 시작되는 부분은 Comment입니다.

C 언어에서 Comment를 시작할때 '/*'로 시작하고 Comment를 끝나는 부분에 '*/'를 붙여야 하죠.

그리고 괄호로 묶이는 코드의 경우에는 '\'를 붙이지 않아도 여러 줄에 걸쳐 하나의 코드로 인식이 되는 경우가 있는데, 아래의 코드가 그 예입니다.

month_names = ['Januari', 'Februari', 'Maart',      # These are the
               'April',   'Mei',      'Juni',       # Dutch names
               'Juli',    'Augustus', 'September',  # for the months
               'Oktober', 'November', 'December']   # of the year


그다음 중요한 점은 들여쓰기인데요.

다른 언어들도 다른 프로그래머들이 분석하고 읽어보기 쉽게 하기위해 들여쓰기를 강력 권고하고 있죠.

하지만 굳이 들여쓰기를 하지 않아도 컴파일후 실행을 시키는데는 별 문제가 없죠.

파이썬에서는 들여쓰기에 따라 전혀 다른 결과를 보여주는데, 아래의 2가지 코드가 그 예입니다.

a = 2

for b in range(2,5):
    print (a," X ",b," = ",a*b)
    print ("----------")




a = 2

for b in range(2,5):
    print (a," X ",b," = ",a*b)
print ("----------")




들여쓰기에 따라 마지막 부분의 print ("----------")의 실행되는 위치가 다르죠.

그래서 파이썬에서 반드시 들여쓰기 규칙을 잘 체크해야 합니다.

DNS (Domain Name Server)와 DNS over HTTPS (DoH)

DNS (Domain Name Server) 정의 :

DNS는 도메인 이름 서버 (Domain Name Server)를 나타내며 컴퓨터 네트워크가 다양한 정보를 각 웹 도메인에 연결하도록 도와줍니다. 간단히 말해서 모든 도메인 네임 서버는 기본적으로 인터넷 주소록입니다.

그러나 사람들은 도메인 이름을 쉽게 기억할 수 있지만 컴퓨터를 이해하려면 숫자가 필요합니다. 그렇기 때문에 DNS 시스템은 각 도메인 이름을 IP 번호로 '번역'하고 이 정보를 다른 세부 정보와 함께 할당합니다.

DNS 트래픽 필터링 솔루션은 기업과 소비자 모두에게 중요한 보안 계층입니다.

DNS 및 DNS 필터링을 정의했으므로 사이버 보안 뉴스의 새로운 전문 용어인 DNS over HTTPS (DoH)에 대해서는 아래에 설명되어 있습니다.

DNS over HTTPS (DoH) 정의 :

IETF가 발표한 새로운 표준은 HTTPS 연결 (보다 안전한 HTTP 형식)을 통해 DNS 프로토콜을 사용할 수 있도록 합니다.

DNS over HTTPS (DoH로 약칭)는 HTTPS 연결을 통해 암호화된 방식으로 도메인 이름 서버 정보를 통신하는 인터넷 보안 프로토콜입니다.

HTTPS를 사용하여 사이트를 방문하더라도 DNS 쿼리는 암호화되지 않은 연결을 통해 전송됩니다. 즉, https://www.naver.com을 탐색하더라도 네트워크에서 패킷을 수신하는 모든 사람은 사용자가 www.naver.com을 방문하려고 한다는 것을 알고 있습니다.

암호화되지 않은 DNS의 두번째 문제는 Man-In-The-Middle이 DNS 응답을 변경하여 의심없는 방문자를 피싱, 맬웨어 또는 감시 사이트로 쉽게 라우팅할 수 있다는 것입니다. DNSSEC는 DNS 응답의 유효성을 검사하는 메커니즘을 제공하여 이 문제를 해결하지만 한자리 수의 도메인만 DNSSEC를 사용합니다.

이 문제를 해결하기 위해 HTTPS 엔드 포인트를 통해 DNS 확인을 제공합니다. 모바일 애플리케이션, 브라우저, 운영 체제, IoT 디바이스 또는 라우터를 빌드하는 경우 사용자의 보안 및 개인 정보 보호를 위해 일반 텍스트를 통해 DNS 쿼리를 보내는 대신 DNS over HTTPS 엔드 포인트를 사용하도록 사용자를 선택할 수 있습니다.

2020년 5월 17일 일요일

Man in the middle (MITM) 공격

MitM (Man in the Middle) 공격은 가해자가 사용자와 응용 프로그램간의 대화에서 자신을 도청하거나 당사자중 하나를 가장하여 일반적인 정보 교환처럼 보이게 하는 일반적인 용어입니다.

공격의 목표는 로그인 자격 증명, 계정 세부 정보 및 신용 카드 번호와 같은 개인 정보를 도용하는 것입니다. 대상은 일반적으로 금융 애플리케이션, SaaS 비즈니스, 전자 상거래 사이트 및 로그인이 필요한 기타 웹사이트 사용자입니다.

공격중에 얻은 정보는 신원 도용, 승인되지 않은 자금 이체 또는 불법적인 비밀번호 변경을 포함하여 많은 목적으로 사용될 수 있습니다.

또한 APT (Advanced Persistent Threat) 공격의 침투 단계에서 보안 경계 내부에서 발판을 확보하는데 사용할 수 있습니다.

대체로 MitM 공격은 우체부가 은행 계좌 명세서를 개설하고 계좌 정보를 기록한 다음 봉투를 다시 봉인하여 문으로 전달하는 것과 같습니다.


man-in-the-middle attack

MitM 공격 진행

성공적인 MitM 실행에는 Interception와 Decryption이라는 두가지 단계가 있습니다.

Interception

첫번째 단계는 공격자가 의도한 대상에 도달하기 전에 공격자의 네트워크를 통해 사용자 트래픽을 가로챕니다.

가장 일반적이고 간단한 방법은 공격자가 공개적으로 악의적인 WiFi 핫스팟을 무료로 제공하는 수동 공격입니다. 일반적으로 해당 위치에 해당하는 방식으로 이름이 지정되며 비밀번호로 보호되지 않습니다. 피해자가 그러한 핫스팟에 연결되면 공격자는 온라인 데이터 교환에 대한 완전한 가시성을 얻습니다.

보다 적극적으로 차단에 접근하려는 공격자는 다음 공격중 하나를 시작할 수 있습니다.

▲ IP Spoofing은 IP 주소의 패킷 헤더를 변경하여 공격자가 자신을 응용프로그램으로 위장하는 것을 포함합니다. 결과적으로 응용프로그램에 연결된 URL에 액세스하려는 사용자는 공격자의 웹사이트로 전송됩니다.

▲ ARP Spoofing은 가짜 ARP 메시지를 사용하여 공격자의 MAC 주소를 근거리 통신망에 있는 합법적인 사용자의 IP 주소와 연결하는 프로세스입니다. 결과적으로 사용자가 호스트 IP 주소로 보낸 데이터는 대신 공격자에게 전송됩니다.

▲ DNS Cache Poisoning이라고도 하는 DNS Spoofing에는 DNS 서버에 침투하여 웹사이트의 주소 레코드를 변경하는 작업이 포함됩니다. 결과적으로 사이트에 액세스하려는 사용자는 변경된 DNS 레코드를 통해 공격자의 사이트로 전송됩니다.

Decryption

Interception후 사용자 또는 응용프로그램에 알리지 않고 양방향 SSL 트래픽을 해독해야 합니다. 이를 달성하기위한 여러가지 방법이 있습니다.

▲ HTTPS Spoofing은 보안 사이트에 대한 초기 연결 요청이 이루어지면 피해자의 브라우저로 가짜 인증서를 보냅니다. 브라우저는 손상된 응용프로그램과 관련된 디지털 지문을 가지고 있으며 브라우저는 기존의 신뢰할 수 있는 사이트 목록에 따라 확인합니다. 그런 다음 공격자는 응용프로그램으로 전달되기 전에 피해자가 입력한 모든 데이터에 액세스할 수 있습니다.

▲ SSL BEAST (SSL / TLS에 대한 브라우저 악용)는 SSL의 TLS 버전 1.0 취약점을 대상으로 합니다. 여기서 피해자의 컴퓨터는 웹 응용프로그램에서 보낸 암호화된 쿠키를 가로채는 악성 JavaScript에 감염되었습니다. 그런 다음 쿠키와 인증 토큰을 해독하기 위해 앱의 암호화 블록 체인 (CBC)을 가로채도록 됩니다.

▲ SSL 하이재킹은 TCP 핸드 셰이크 중에 공격자가 위조된 인증키를 사용자와 응용프로그램 모두에 전달할때 발생합니다. 이것은 실제로 중간에 있는 사람이 전체 세션을 제어할때 안전한 연결로 보이는 것을 설정합니다.

▲ SSL Stripping은 애플리케이션에서 사용자에게 전송된 TLS 인증을 차단하여 HTTPS 연결을 HTTP로 다운그레이드합니다. 공격자는 응용프로그램과의 보안 세션을 유지하면서 응용프로그램 사이트의 암호화되지 않은 버전을 사용자에게 보냅니다. 한편, 사용자의 전체 세션은 공격자가 볼 수 있습니다.

2020년 5월 16일 토요일

for문 대신 while문을 사용한 구구단 출력하기

for문과 비슷한 while문을 사용해서 구구단을 출력할 수 있습니다.

같은 반복문이지만 사용법은 조금 다른데요.

우선 아래 소스코드를 보면

a = 2
b = 2

while (b<10):
    print (a," X ",b," = ",a*b)
    b = b + 1



for문과 달리 b의 값을 while문 안에서 1씩 증가시켜 주어야 합니다.

while문의 조건에서 b가 9가 될때가지 아래 실행 코드가 수행되고 b가 10이 되면 조건이 False가 되어 while문을 빠져 나오게 됩니다.

실형 결과는 아래와 같이 됩니다.

2020년 5월 15일 금요일

print와 for 문을 사용한 구구단 역순으로 출력하기

print와 for 문을 사용한 구구단 역순으로 출력

이제는 역순으로 구구단을 출력해보고자 하는데요.

역시 for 문을 사용하는데 range에서 1씩 감소하도록 코드를 수정했습니다.

a = 2

for b in range (9,1,-1):
    print (a," X ",b," = ",a*b)




이 소스코드를 이전과 같이 커맨드창에서

python test.py

하면 아래와 같이 출력이 됩니다. 즉, 구구단이 역순으로 출력하도록 하는 파이썬 프로그램입니다.




위의 for 문의 range에서 세번째 인자를 -1로 하면 9부터 시작해서 2까지 감소하면서 구구단이 출력되도록 합니다.

range에서 첫번째 인자는 시작점이고 두번째 인자는 그 이전까지만 카운트되도록 하는 인자입니다.

print와 for 문을 사용한 구구단 출력

이제는 실제 간단한 소스코드를 작성하여 파이썬을 실행해보고자 하는데요.

아래 소스코드를 작성했습니다.

a = 2

for b in range(2,10):
    print (a," X ",b," = ",a*b)


이 소스코드를 test.py라는 파일로 저장후 커맨드창에서

python test.py

하면 아래와 같이 출력이 됩니다. 즉, 구구단 일부를 출력하는 파이썬 프로그램입니다.


위의 for 문은 어는 범위만큼 반복적으로 실행되게 하는 파이썬 키워드입니다.

위의 예에서 b라는 변수의 값을 2부터 시작해서 1씩 증가시키는데 b가 10미만일때까지 반복적으로 아래 print 문이 실행됩니다.

이 예는 for 문 사용의 간단한 예제입니다.

GNSS (Global Navigation Satellite System)란?

GNSS (Global Navigation Satellite System)는 위치 및 타이밍 데이터를 GNSS 수신기로 전송할 신호를 제공하는 위성들 시스템을 말합니다. 그러면 수신기는 이 데이터를 사용하여 위치를 결정합니다. GNSS는 위성 범위 내비게이션을 자율적으로 제공하는 위성 내비게이션 시스템의 표준 용어입니다.

GNSS의 예로는 유럽의 갈릴레오 (Galileo), 미국의 NAVSTAR GPS (Global Positioning System), 러시아의 Global'naya Navigatsionnaya Sputnikovaya Sistema (GLONASS) 및 중국의 BeiDou Navigation Satellite System이 있습니다.

GNSS의 성능은 4가지 기준을 사용하여 평가됩니다.

• 정확도 (Accuracy) : 수신기의 측정 위치와 실제 위치, 속도 또는 시간의 차이
• 무결성 (Integrity) : 신뢰 임계 값을 제공하고 위치 데이터에 이상이 있는 경우 경보를 제공할 수있는 시스템의 능력
• 연속성 (Continuity) : 시스템이 중단없이 작동하는 능력
• 가용성 (Availability) : 신호가 위의 정확도, 무결성 및 연속성 기준을 충족하는 시간의 백분율

이 성능은 EGNOS (European Geostationary Navigation Overlay Service)와 같은 지역 위성 기반 Augmentation System (SBAS)으로 개선할 수 있습니다. EGNOS는 신호 측정 오류를 수정하고 신호 무결성에 대한 정보를 제공하여 GPS 정보의 정확성과 신뢰성을 향상시킵니다.

2017년 현재 주요 GNSS는 다음과 같습니다.

• GPS : 미국의 글로벌 포지셔닝 시스템입니다.
• GLONASS : 러시아의 글로벌 궤도 내비게이션 위성 시스템입니다.
• BeiDou-2 : 중국에서 개발 중인 시스템으로 현재 완전하게 작동하지 않습니다.
• Galileo : 현재 완전하게 작동하지 않으며, EU에서 개발중인 시스템입니다.

2020년 5월 14일 목요일

5G DSS (5G Dynamic Spectrum Sharing)

많은 사업자들은 5G의 Dynamic Spectrum Sharing이 4G 고객의 성능 저하없이 기존 인프라를 활용할 수 있는 매력적인 기술이라는 사실을 알고 있습니다. 3GPP Release 15의 일부으로서 사업자는 이미 사용중인 4G LTE 스펙트럼의 일부를 5G NR에 할당할 수 있습니다. 이는 4G LTE와 5G NR 사용자가 동시에 동일한 주파수 대역/채널에 공존할 수 있음을 의미합니다. 단순히 소프트웨어 업그레이드를 수행함으로써 기존 RAN (5G 가능)을 사용하여 5G 서비스를 제공할 수 있습니다.


DSS를 통해 네트워크 운영자는 동일한 스펙트럼내에서 4G와 5G를 모두 제공할 수 있으므로 두 기술간에 원활하게 전환할 수 있어 보다 비용 효율적입니다. DSS는 기존 4G 고객을 계속 지원하면서 점점 더 많은 고객이 기술을 채택함에 따라 사업자가 새로운 5G 사용자를 점진적으로 도입할 수 있는 효과적인 방법입니다. 과거에는 사업자가 새로운 기술로 업그레이드하고 싶을때 스펙트럼 재배치을 수행해야 했습니다. 즉, 기존 사용자를 스펙트럼의 일부로 옮기고 새로운 사용자를 위해 블록을 예약해야 했습니다.

DSS가 없으면 20MHz의 중간 대역 스펙트럼을 가진 사업자는 해당 스펙트럼을 2개로 분할해야 합니다. 다시 말해, 그들은 4MHz LTE에 10MHz 스펙트럼을 할당하고 모든 LTE 사용자를 10MHz 스펙트럼에 포함시켜야 합니다. 그러면 처음에는 최소 5G 사용자만 있을지라도 나머지 10MHz의 AWS 스펙트럼을 5G에 사용할 수 있습니다.

DSS를 사용하면 운영자는 중간 대역 스펙트럼을 분할하거나 4G LTE 또는 5G 전용 스펙트럼을 가질 필요가 없습니다. 대신, 두 기술간에 20MHz의 스펙트럼을 공유할 수 있습니다. 5G의 Dynamic Spectrum Sharing을 통해 운영자는 동일한 스펙트럼 블록에 4G와 5G를 모두 배치하고 수요에 따라 다양한 유형의 사용자에게 적절한 양을 동적으로 할당할 수 있습니다.

DSS의 유연성은 이동 통신 사업자를위한 실용적인 솔루션으로 인기를 끌고 있습니다.

파이썬의 기본 데이터 타입 - int, float, string, boolean

파이썬에서도 다른 프로그래밍 언어와 마찬가지로 여러가지 데이타 타입을 지원합니다.

가장 기본적인 타입은 정수형, 실수형, 문자열입니다.

정수형은 소수점이 없는 정수만을 지정할 수 있는 데이타 타입이며, 실수형은 소수점을 포함하는 실수를 지정할 수 있는 데이터 타입입니다.

아래 예를 보면

a라는 변수에 1이라는 데이타를 저장하기 위해서는

a=1

이라고 하면 되고 b라는 변수에 1.2라는 데이타를 저장하기 위해서는

b=1.2

이라고 하면 됩니다.

만약 b=1.0이라고 하면 어떻게 될까요?

정수 1과 실수 1.0은 실제 값은 같지만 파이썬 내부적으로는 다른 데이터 타입으로 됩니다.

만약 a+b의 결과는 어떻게 될까요?

파이썬에서는 c=a+b를 계산시키면 변수 c는 실수형으로 되고 값이 2.2로 나오게 됩니다.

문자열은 "" 사이에 있는 문자들을 말하며, d="Hello World"라고 하면 변수 d에 이 문자열이 저장됩니다.

아래는 이를 실제 파이썬으로 실행한 결과입니다.



그외 Boolean이라는 데이터 타입도 있는데 참이면 True, 거짓이면 False로 지정하면 됩니다.

a=True 또는 b=False

그러면

c=a or b 그리고 c=a and b는 결과가 어떻게 나올까요?

아래 실행결과를 보시면 됩니다.


여기서 참, 거짓은 대문자로 시작해야 하네요.

그외에 list, tuple, set, dict라는 데이터 타입이 있는데 좀더 공부해야겟네요.

2020년 5월 13일 수요일

파이썬 (Python) 설치

현재 개발자들이 사용하는 프로그래밍 언어들의 순위는 아래와 같은데요.

요즘 파이썬이 빅데이터 및 인공지능 분야에서 많이 사용하고 있어 대세입니다.


이에 따라 파이썬을 독학하고자 파이썬을 설치해보고자 하는데요.

아래 python.org를 접속하면 아래와 같이 메뉴가 나오는데, 이 메뉴들중 "Downloads"를 클릭하면


아래와 같이 화면이 나옵니다.

현재 버젼이 3.8.2이네요.


3.8.2 버젼을 다운로드하여 설치프로그램을 실행시키면 컴퓨터에 설치가 간단히 됩니다.

아래와 같이 설치 화면이 나올때 "Add Python 3.8 to PATH"를 체크해야만 어디서든 Python Interpretor를 실행시킬 수 있습니다.


설치 완료후 Command 창에서 "python"이라고 치면 아래와 같이 Python Interpretor가 실행됨을 볼 수 있습니다.

이전에 설치한 버젼이 있어 3.8.1로 나오네요.


양자 암호화 (Quantum Cryptography) (또는 양자 키 분배 (Quantum Key Distribution))란?

양자 암호화 ((Quantum Cryptography)는 양자 물리를 사용하여 대칭 암호화 키 (Symmetric Encryption Key)의 배포를 보호하는 기술입니다. 더 정확한 이름은 QKD (Quantum Key Distribution)입니다. 광 링크를 통해 빛의 "양자 입자"인 광자를 전송하여 작동합니다.

양자 물리학의 원리는 양자 상태의 관찰이 교란을 유발한다고 규정하고 있습니다. 다양한 QKD 프로토콜은 도청자가 전송된 광자를 관찰하려는 시도가 광자 전송을 교란하게 설계되었습니다.

이 교란은 전송 오류로 이어질 것이며 이를 합법적인 사용자가 감지할 수 있습니다. 이를 통해 분산 키의 보안을 확인하는데 사용됩니다.

QKD 구현에는 합법적인 사용자간의 상호 작용이 필요합니다. 이러한 상호 작용은 인증되어야 합니다. 이것은 다양한 암호화 수단을 통해 인증될 수 있습니다.

최종 결과는 QKD가 인증된 통신 채널을 활용하여 이를 안전한 통신 채널로 변환할 수 있다는 것입니다. 이론적으로 QKD는 OTP (One-Time Pad) 암호화와 결합하여 보안을 확보해야 합니다. 그러나 OTP에는 데이터를 암호화하는 하나의 키는 한번만 사용되도록 해야 합니다.

하지만 QKD의 주요 배포 속도가 일반적으로 기존 광통신보다 1,000배에서 10만배 낮기 때문에 가용 대역폭에 대한 강력한 제한이 있어도 문제가 되지 않습니다.

따라서 실제로 QKD는 종종 AES와 같은 기존의 대칭 암호화와 결합되어 짧은 암호화 키를 자주 새로 배포하는데 사용됩니다. 이것은 양자 안전 보안을 제공하기에 충분합니다.

현재 암호화 기술에 대한 사이버 보안 위험

우리의 사이버 보안 인프라에는 인증과 신뢰성의 두 가지 기능이 필요합니다. 인증을 통해 원격 사용자는 상대방을 신뢰하고 교환 내용을 검증할 수 있습니다.

주로 공개 키 서명 (Public Key Signature) 체계로 구현됩니다. 개인 정보를 교환하려면 신뢰성 (Confidentiality)이 필요합니다. 종종 2개 단계 프로세스로 수행됩니다. 먼저 사용자는 공통 비밀 키 (Common Secret Key)를 교환해야 합니다.

이것은 다른 공개 키 프로토콜 (Public-Key Protocol)인 키 교환 메커니즘 (Key Exchange Mechanism)에 의존합니다. 그런 다음 비밀 키는 대칭 키 암호화 체계 (Symmetric Key Encryption Scheme)에서 사용됩니다. 따라서 두 기능 모두 비대칭 또는 공개 키 암호화로 알려진 유사한 암호화 기술에 의존합니다.

사이버 보안은 기본 암호화 기술 그 이상입니다. 현재의 모든 보안 실패는 미약한 암호화가 아니라 잘못된 구현, 사회 공학 등에서 비롯됩니다. 오늘날 데이터를 인증하고 데이터 암호화 키를 안전하게 교환하는데 사용되는 RSA 또는 Elliptic Curve와 같은 알고리즘을 기반으로 하는 공개 키 암호화가 암호화 취약점입니다.

양자 컴퓨터의 처리 능력은 기존 컴퓨터보다 기하 급수적으로 이러한 수학적 문제를 해결하고 공개 키 암호화를 깨뜨릴 수 있습니다.

이는 현재 사용되는 공개 키 암호화 시스템이 장기적인 신뢰성을 요구하는 데이터를 보호하는데 적합하지 않음을 의미합니다. 공격자는 실제로 암호화된 데이터를 기록하고 공개 키를 공격하여 양자 컴퓨터가 해독할 수 있을 때까지 기다릴 수 있습니다.

양자 안전 암호화가 필요한 이유

가장 큰 위협은 디지털 서명 및 키 교환에 사용되는 공개 암호화 또는 비대칭 알고리즘입니다. 범용 양자 컴퓨터를 사용할 수 있게 되면 RSA 및 Elliptic Curve 알고리즘을 파괴할 수 있는 유명한 Shor 알고리즘과 같은 양자 알고리즘이 이미 있습니다.

또 다른 유명한 양자 알고리즘인 Grover 알고리즘은 대칭 암호화를 공격합니다. 다행히도 키 크기의 간단한 확장으로 Grover를 대응할 수 있습니다. 예를 들어 256 비트 키를 사용하는 AES 대칭 암호화 체계는 안전한 것으로 간주됩니다.

양자 컴퓨터 위협에 대응하기 위해서는 두 가지 대안이 필요합니다. 하나는 양자 컴퓨터에 저항해야 하는 새로운 고전 알고리즘의 개발입니다. 이를 Post-Quantum 또는 Quantum-Resistant 알고리즘이라고 합니다.

우리는 이미 암호화를 위해 위의 AES 사례를 보았습니다. 또한 해시 함수를 기반으로하는 일부 서명 체계 (LMS 및 XMSS)를 언급할 수 있으며, NIST 프로세스의 프레임 워크에서 서명 및 키 교환을 위한 많은 다른 알고리즘이 개발되고 있습니다. 그들의 특성과 양자 저항은 여전히 ​​테스트 중입니다. 표준화는 2023-2024 년에 예상됩니다.

오늘날 사용 가능한 두 번째 대안은 매우 다른 원리를 따르는 양자 안전 키 교환을 제공하는 QKD (Quantum Key Distribution)입니다.

대부분의 QKD 솔루션은 링크 암호화기가 있는 키 분배장치로 구성됩니다. QKD 장치는 비밀 키를 링크 암호화기에 전달합니다. 링크 암호화기는 일반적으로 최대 100Gb/s의 대용량 데이터를 암호화하기 위해 이 키를 사용합니다.

이 솔루션은 광섬유의 품질에 따라 약 80km의 범위에 해당하는 18dB의 광섬유에서 광학 감쇠까지 작동합니다.

따라서 이러한 시스템은 일반적으로 회사 캠퍼스 또는 데이터 센터 상호 연결과 같은 LAN (Local Area Network) 또는 수도권 네트워크에 설치됩니다.

이러한 응용은 소위 Trusted Node를 사용하여 훨씬 더 먼 거리로 확장되었습니다. 이러한 Trusted Node는 키 호핑을 수행하여 키가 시작 노드에서 생성되어 종단 노드까지 노드에서 노드로 안전하게 전송됩니다.

전체 전송 채널의 보안에 의존하는 대신 각 노드에서만 보안을 제공해야 합니다. 유사한 기술을 사용하여 링 네트워크 (Ring Network) 및 스타 네트워크 (Star Network)와 같은 다양한 유형의 QKD 네트워크를 구축할 수도 있습니다.

이를 위해서는 네트워크의 모든 노드와 키를 분배하기 위한 보다 복잡한 키 관리 체계가 필요하며, 글로벌 사용을 위해 Free-Space QKD를 사용하여 Trusted Node를 위성으로 구현할 수 있습니다.

현재 암호화기는 최대 10Gbps의 링크 대역폭으로 이더넷 및 파이버 채널과 호환됩니다. 또한 표준 QKD 인터페이스는 ETSI (European Telecommunication Standards Institute)에서 개발되었습니다.

2020년 5월 12일 화요일

Mobile Edge Computing이란?

이전에 모바일 엣지 컴퓨팅 (Mobile Edge Computing : MEC)으로 알려진 MEC (Multi-Access Edge Computing)는 클라우드 컴퓨팅을 네트워크 엣지로 가져 와서 클라우드 컴퓨팅 기능을 확장하는 일종의 엣지 컴퓨팅입니다. MEC는 원래 모바일 네트워크에 엣지 노드를 배치하는데 중점을 둔 ETSI (European Telecommunications Standards Institute) 이니셔티브에서 시작되었지만 이제는 고정 (또는 결국 수렴된) 네트워크를 포함하도록 확장되었습니다.

MEC는 셀룰러 네트워크의 가장자리에서 IT 및 클라우드 컴퓨팅 기능을 지원하는 네트워크 아키텍처입니다. 기존 클라우드 컴퓨팅은 사용자 및 장치와 멀리 떨어진 원격 서버에서 발생하지만 MEC를 사용하면 네트워크의 기지국, 중앙 사무실 및 기타 지점에서 프로세스를 수행할 수 있습니다.

MEC는 클라우드 컴퓨팅의 로드를 개별 로컬 서버로 전환함으로써 모바일 네트워크의 혼잡을 줄이고 대기 시간을 줄임으로써 최종 사용자의 QoE (Quality of Experience)를 향상시킵니다. 최종 사용자에게 더 가까운 관련 처리 작업을 수행하여 네트워크 정체를 줄이고 응용 프로그램을 개선하는 것입니다. 이 기술은 셀룰러 기지국에서 구현되도록 설계되어 응용 프로그램 및 기타 고객 서비스를 신속하게 배포할 수 있습니다.

MEC의 사용예

다양한 사용 사례에서 논의되고 있지만 MEC를 위한 "킬러앱"은 없습니다. MEC는 컨텐츠 전달 또는 캐싱과 같은 기존 애플리케이션의 성능을 향상시키기 위한 도구이지만 새로운 애플리케이션의 핵심 요소가 되었습니다. MEC는 새로운 수익 창출 (5G) 사용 사례를 주도할 뿐만 아니라 통신량이 고도로 분산된 고용량 콘텐츠 사용 사례를 제공할때 효율성을 향상시킬 수 있습니다. 따라서 MEC는 고객과 통신사 모두에게 이점을 제공할 수 있습니다.

자율 주행 차량의 경우 MEC를 사용하여 중앙 클라우드 서버와 인터페이스할 필요없이 도로 인프라, 보행자 / 기타 자동차 / 동물 및 날씨 조건을 차량에 직접 공유할 수 있습니다. MEC와 AI / ML을 결합하면 자율 주행 차량이 주변 상황을 실시간으로 인식할 수 있습니다. MEC가 제공하는 낮은 대기 시간은 차량이 클라우드에서 정보가 처리될 때까지 기다릴 수 없기 때문에 자율 차량이 안전하게 작동하는데 중요합니다.

AR / VR에서 MEC는 원격 작업자가 현장에서 유지 보수 및 수리 작업을 수행하도록 지원할 수 있습니다. MEC 솔루션은 수리해야 하는 특정 자산과 관련된 풍부한 정보를 헤드셋 또는 모바일 장치의 현장 직원의 디스플레이에 오버레이로 제공합니다. 현재 3D 모델은 최종 장치에서 렌더링하기에 너무 무거워서 대기 시간이 너무 길어 클라우드에서 수행할 수 없습니다. MEC를 사용하면 장치에서 데이터 처리 및 3D 모델의 잠재적인 렌더링을 통해 작업자의 관점에서 디지털 모델을 보강할 수 있을 뿐만 아니라 원격 전문가가 헤드셋 또는 모바일에서 스트리밍되는 이미지 / 비디오에 주석을 달 수 있습니다.

MEC가 지원하는 또다른 엔터프라이즈 MR 애플리케이션은 건축, 엔지니어링 및 건설팀을 위한 다중 사용자 협업입니다. 팀이 엣지 클라우드에서 공동으로 작업할 모델을 렌더링하여 실시간 협업이 가능합니다. 특히 이러한 3D 디자인이 종종 엄청난 큰 파일이기 때문에 MEC를 통하면 지연 시간이 줄어 듭니다. MEC 배포는 또한 분산 네트워크를 통해 다른 이해 관계자들과 쉽게 공유할 수 있습니다.

MEC는 많은 컴퓨팅 / 그래픽 처리를 하는 전용 게임 콘솔 또는 클라우드 게임이 성장함에 따라 데이터 센터를 기존 위치에서 네트워크 엣지로 이동합니다. 게이머는 네트워크 범위내에서 더 얇은 클라이언트에서 동일한 품질의 게임에 액세스할 수 있습니다. MEC는 게임 스튜디오와 개발자에게 대기 시간이 극히 낮기 때문에 클라우드 게임이 더 많은 청중에게 고급 게임 환경 및 새로운 구독 모델과 결합할 경우 새로운 수입원을 제공할 수 있는 실용적인 방법이 되었습니다.

드론이 보안 구역에 진입한 시기를 감지하고 사이트를 관리하는 보안팀이 정의한대로 필요한 경보 / 조치를 위한 솔루션에 대한 필요성이 증가하고 있습니다. 2018년 영국에서 Gatwick Airport 드론 사건에서 보듯이 MEC를 통해 가능한 위협에 즉시 대응할 수 있어야 하기 때문에 공항, 교도소와 병원이 이 기술의 주요 고객이 될 수 있습니다. MEC를 사용하면 외국 무인 항공기를 식별하고 경로를 매핑하는데 지연 시간이 줄어들어 보안 영역에 접근하는지 여부가 조속히 결정됩니다.

요구되는 증가된 카메라 수와 높은 영상 품질로 인해 도시 / 기업에서 비디오 감시 사용이 증가하고 있습니다. MEC를 사용하면 분석을 위해 비디오 트래픽을 중앙 제어로 라우팅하는 것과 달리 네트워크 엣지에서 트래픽 및 로컬 분석할 수 있습니다. 이를 통해 다양한 유형의 카메라에서 비디오 스트림을 집계할 수 있으며 실시간 얼굴 인식, 자산 모니터링 및 풋폴 분석을 포함한 다른 비디오 분석 응용 프로그램을 사용할 수 있습니다. MEC는 클라우드 / 중앙 서버로 전송하는데 소요되는 비용, 볼륨 및 시간을 줄이고 분석을 기반으로 실시간 처리를 가능하게 합니다.

2020년 5월 11일 월요일

SU-MIMO와 MU-MIMO의 차이점

무선 기술의 작동 방식을 이해하려면 먼저 무선이 전통적으로 작동하는 방식을 이해해야 합니다. 가정, 기숙사 또는 사무실에 있든 무선은 공유 매체이며, 많은 다른 무선 장치가 모두 한번에 하나의 무선 안테나 하드웨어로 데이터를 주고 받고 패킷을 주고 받습니다. 전통적으로, 액세스 포인트는 한번에 하나의 장치에만 패킷을 보내거나 받을 수 있었습니다. 그러나 무선 하드웨어는 패킷을 너무 빨리 보내고 받을 수 있기 때문에 좋아하는 웹 사이트를 로드하거나 Netflix 스트림을 시청할때 심지어 가정의 다른 사람과 공유할 때에도 속도 저하를 느끼지 못할 수도 있습니다.

그러나 단일 무선 안테나에서 더 많은 사용자를 추가하거나 스카이프 통화와 같이 특정 네트워크 패킷을 추가하거나 온라인 멀티 플레이어 게임을 로드할때, 패킷이 긴급하게 전송 및 수신되는데 매우 의존적인 경우 사용자가 "지연"을 경험할 수 있습니다. 하드웨어는 한번에 하나의 장치로만 송수신할 수 있고 장치에서 장치로 송수신하기 위해 스위치를 전환해야 하기 때문에 장치에서 패킷을 충분히 빨리 보내거나 받을 수 없는 경우 이러한 지연이 발생합니다. 그리고 그동안 다른 사람들은 대기자 명단에 올라갑니다.

이때 부하가 많은 네트워크에서 지연을 완화하는데 도움이 되는 SU-MIMO 및 MU-MIMO가 제공됩니다. SU는 Single User의 약어이며, MU는 Multiple User의 약어입니다. 또 MIMO는 Multiple-Input Multiple-Output의 약어입니다.

이러한 무선 표준은 기존의 무선 병목 현상, 즉 한번에 하나의 장치에서 패킷을 보내거나 받을 수 있는 기능을 완화하기 위해 작동합니다. SU-MIMO를 사용하면 단일 장치가 한번에 패킷을 보내고 받을 수 있으며, MU-MIMO는 한 번에 여러 장치에서 데이터를 주고 받을 수 있으며, 대기 목록을 줄여 장치로 데이터를 보내는 작업을 효과적으로 수행할 수 있습니다.

SU-MIMO는 802.11n 표준과 함께 제공되는 선택적 기술입니다. 단일 사용자 MIMO는 한번에 하나의 장치간에 여러 데이터 스트림을 보내거나 받아야 합니다. 이 기술을 사용하려면 송수신 안테나가 다중 안테나와 함께 MIMO 기술을 지원하는 송수신 Wi-Fi RF가 필요합니다.



MU-MIMO는 802.11ac 표준의 웨이브 2에서만 사용할 수 있게 되었습니다. 이 기술을 통해 Wi-Fi는 이전 버전 (SU-MIMO)과 비교할때 단일 장치 대신 여러 개의 스트림을 동시에 다른 Wi-Fi 장치로 전송할 수 있습니다. 'MU'의 또 다른 이점은 MIMO 데이터 스트림중 하나를 수신하는 Wi-Fi 장치가 여러 개의 안테나를 가질 필요가 없으므로 단일 안테나가 있는 장치라도 이를 지원한다는 것입니다. 그러나 수신 Wi-Fi 장치는 MU-MIMO 기술을 지원해야 합니다.

MU-MIMO는 무선 기술의 미래입니다. 표준 구현 비용이 거의 들지 않으며 다른 것을 수정하지 않고도 막힌 네트워크에 눈에 띄는 영향을 미칩니다. 이제 장치는 패킷을 가져오고 보내기 위해 훨씬 더 짧은 시간만 소요되며, 전반적으로 보다 효율적인 무선 네트워크를 만듭니다. 하지만 모든 문제가 해결되지는 않습니다. 무선은 항상 공유 매체이며, 장비가 워크로드에 대해 등급이 지정되지 않은 경우 파장 혼잡, 간섭 및 순수한 과밀화와 같은 다른 요인에 의존 할 수 있습니다.

2020년 5월 9일 토요일

중국 OnePlus에서 개발, 판매중인 5G 스마트폰 OnePlus 8 Pro 및 OnePlus 8

중국 OnePlus라는 업체에서 4월 중순부터 판매하고 있는 5G 스마트폰입니다.

OnePlus 8 Pro

OnePlus 8

OnePlus 8 Pro와 OnePlus 8의 2개 모델인데요. 화면 크기는 무려 6.78인치와 6.55인치 대화면이네요.

가격은 미국에서 OnePlus 8 Pro는 899불, OnePlus 8은 699불로 책정되어 있습니다.

두 모델의 차이점은 주로 화면 크기와 카메라 부분인데요.

화면 크기에 따른 해상도 차이가 눈에 띕니다.

카메라 부분에서도 Main Camera외에 OnePlus 8 Pro는 보다 다양한 카메라를 지원합니다.

위에 있는 사진을 보면 뒷면의 카메라 부분이 조금 다른걸 보실 수 있습니다.

또 특이한 점은 OS인데요. Android 10 기반으로 좀더 개선했다는 OxygenOS라는 점인데, 2020년 3월 Google Security Patch가 이미 적용되어 있다고 하고, Google Drive, Gmail, Google Photo 등이 지원된다고 합니다.

칩셋은 퀄컴 스냅드래곤 865를 탑재했습니다.

 

 

OnePlus 8 Pro

OnePlus 8

Diemesions

Height: 165.3 mm

Width: 74.3 mm

Thickness: 8.5 mm

Weight: 199g

Height160.2 mm

Width72.9 mm

Thickness8.0 mm

Weight180g

Display

Size: 6.78 inches

Resolution: 3168 x 1440 pixels 513 ppi

Aspect Ratio: 19.8:9

Type: Fluid AMOLED

Support sRGB, Display P3

Cover Glass: 3D Corning® Gorilla® Glass

Size: 6.55 inches

Resolution: 2400 x 1080 pixels 402 ppi

Aspect Ratio: 20:9

Type: Fluid AMOLED

Support sRGB, Display P3

Cover Glass: 3D Corning® Gorilla® Glass

Performance

Operating System: OxygenOS based on Android™ 10

CPU: Qualcomm® Snapdragon™ 865

5G Chipset: X55

GPU: Adreno 650

RAM: 8GB/12GB LPDDR5

Storage: 128GB/256GB UFS 3.0 2-LANE

Battery: 4510 mAh (non-removable)

Warp Charge 30T Fast Charging (5V/6A)

30W Wireless Charging

Operating System: OxygenOS based on Android™ 10

CPU: Qualcomm® Snapdragon™865

5G Chipset: X55

GPU: Adreno 650

RAM: 8GB/12GB LPDDR4X

Storage: 128GB/256GB UFS 3.0 2-LANE

Battery: 4300 mAh (non-removable)

Warp Charge 30T Fast Charging (5V/6A)

Camera – Main

Sensor: Sony IMX689

Megapixels: 48

Pixel Size: 1.12 µm/48M; 2.24 µm (4 in 1)/12M

Lens Quantity: 7P

OIS: Yes

EIS: Yes

Aperture: f/1.78

Sensor: Sony IMX586

Megapixels: 48

Pixel Size: 0.8µm

Lens Quantity: 6P

OIS: Yes

EIS: Yes

Aperture: f/1.75

Camera – Telephoto

Megapixels: 8

Pixel Size: 1.0µm

OIS: Yes

Aperture: f/2.44

 

Camera – Macro

 

Megapixels: 2

Pixel Size: 1.75µm

Aperture: f/2.4

Camera – Ultra Wide Angle

Megapixels: 48

Aperture: f/2.2

Field of View: 120°

Megapixels: 16

Aperture: f/2.2

Field of View: 116°

Camera – Color Filter

Megapixels: 5

Aperture: f/2.4

 

Camera – Front

Sensor: Sony IMX471

Megapixels: 16

Pixel Size: 1.0 µm

EIS: Yes

Autofocus: Fixed Focus

Aperture: f/2.45

Sensor: Sony IMX471

Megapixels: 16

Pixel Size: 1.0 µm

EIS: Yes

Autofocus: Fixed Focus

Aperture: f/2.45

Radio Band

GSMGSM850GSM900GSM1800GSM1900

WCDMAB1B2B4B5B8B9B19

CDMABC0BC1BC10

LTE-FDDB1, 2, 3, 4, 5, 7, 8, 12, 13, 17, 18, 19, 20, 25, 26, 28, 29, 30, 66, 71

LTE-TDDB34, 38, 39, 40(Roaming), 41, 46, 48

5G: n2, n5, n66, n41, n71

MIMOLTE: B2, 4, 7, 25, 66, 41, 48 NR: n2, n66, n41

GSMGSM850GSM900GSM1800GSM1900

WCDMAB1B2B4B5B8B9B19

CDMABC0BC1BC10

LTE-FDDB1, 2, 3, 4, 5, 7, 8, 12, 13, 17, 18, 19, 20, 25, 26, 28, 29, 30, 66, 71

LTE-TDDB34, 38, 39, 40(Roaming), 41, 46, 48

5G: N2,N5,N66,N41,N71

MIMOLTEB2, 4, 7, 25, 66, 41, 48 NR: n2, n66, n41

WiFi

IEEE 802.11 a/b/g/n/ac/ax, 2.4G+5G, 2x2 MIMO

IEEE 802.11 a/b/g/n/ac/ax, 2.4G+5G, 2x2 MIMO

Bluetooth

Bluetooth 5.1, support aptX & aptX HD & LDAC & AAC & SBC

Bluetooth 5.1, support aptX & aptX HD & LDAC & AAC & SBC

NFC

NFC enabled

NFC enabled

Positioning

GPS (L1+L5 Dual Band), GLONASS, Galileo (E1+E5a Dual Band), Beidou, A-GPS

GPS (L1+L5 Dual Band), GLONASS, Galileo (E1+E5a Dual Band), Beidou, A-GPS

Sensors

In-display Fingerprint Sensor

Accelerometer

Electronic Compass

Gyroscope

Ambient Light Sensor

Proximity Sensor

Sensor Core

Laser Sensor

Flicker-detect sensor

Front RGB sensor

In-display Fingerprint Sensor

Accelerometer

Electronic Compass

Gyroscope

Ambient Light Sensor

Proximity Sensor

Sensor Core

Ports

USB 3.1 GEN1 Type-C

Support standard Type-C earphone

Dual nano-SIM slot

USB 3.1 GEN1 Type-C

Support standard Type-C earphone

Dual nano-SIM slot