What Trusted Execution Environment (TEE) solutions exist for mobile devices?

A trusted execution environment (TEE) provides a way for one to deploy tamper-proof programs on a device. The most prominent example of TEEs seem to be Intel SGX for PCs.

What I wonder is, if there exists an equivalent solution for mobile devices. For example, I want to deploy an arbitrary application on a smartphone that even a malicious OS can’t tamper with. Is there such a solution at the moment?

Why do people use “burner phones” rather Signal or similar solutions?

Why do people use burner phones rather than Signal or similar? I would imagine that if you are high value target the police or intelligence service would simply eavesdrop every phone call passing the base station nearest the location where you dwell. Doing that then it is easy to filter out all phone calls made between phone numbers that have been used more than hundred times or for more than three months (or something like that) in both ends. The amount of remaining phone calls should minuscule, and there you have your criminal, spy or whatever speaking in cleartext on a non-encrypted line.

if you instead of using a dumb phone used something more modern you can on the one hand be exposed through a trojan or a rootkit but is that really a doable attack vector, even for very valuable targets?

If you use something like OpenBSD or one of the hardened Android phones that are on the market and only install Signal on it and then only use it for Signal. Never browse the web, never use it for regular phone calls and texts etc and keep it updated (Maybe regular factory resets too?), can the authorities, even if they have a lot of resources, really manage to sneak in some malware on it? Malware that can’t be caught by another layer of security (E.g., your firewall could be setup to only allows device A to connect to internet to Signal destinations and ports using the Signal protocol – making it difficult to deliver whatever the malware manage to find to the people controlling it.).

What are the best practises for safe phone calls if you are a private citizen that some authorities are very interested in listening to?

finding solutions numerically of the equation

given the equation x^5 – y^5 = 1 ,x-2y=1 i need to find the numerical values of the solutions. Now as far as i know N is the command that we’ll be using to get numerical values , NSolve for solving the equation numerically and that it must contain in the output, numbers , not symbols, but i havent been specified either to solve for x or y, nor have i been given values for any of them . if i choose to solve for x , the output gives solution containing y and solving for y gives result in x, these arent numerical forms of solutions. the N command is only used to give a value numerically. how can i get that in this equation? or maybe i can use another command that can be helpful?

Is Windows Sandbox a viable alternative to conventional VM solutions considering its design?

The idea of having a fast, disposable VM at the palm of my hand appeals to me very much. It makes adding an extra layer of security to any thing I want to do so easy – just launch the sandbox application in a matter of seconds and you’re done. Of course, that is considering the VM actually does the job it’s supposed to do…

A little disclaimer beforehand – I’ve read the article Beware the perils of Windows Sandbox at Magnitude8, describing how the Windows Sandbox comes with a NAT pre-enabled and thus any malware running on the guest would still get a direct access to your intranet, which is already a large problem. But for the purpose of this question, let us just consider the host-guest scenarios.

Windows Sandbox claims to “achieve a combination of security, density, and performance that isn’t available in traditional VMs”, by leveraging a different approach to memory and disk management. If I understand things correctly, everything that in theory can be safely shared between the host and the guest, gets shared. According to the official documentation, the Sandbox shares both the host’s immutable system files, as well as the physical memory pages.

Despite that, Microsoft seems to remain confident that their solution is secure as implied by one of bullet points mentioned in the Sandbox overview:

Secure: Uses hardware-based virtualization for kernel isolation. It relies on the Microsoft hypervisor to run a separate kernel that isolates Windows Sandbox from the host.

This obviously raises a lot of questions, because at the first glance, all this resource sharing should increase the attack surface greatly, leaving more space for exploits to be found. Also, even the most sophisticated technology, which changes only the implementation and not the design, does ultimately make the discovery of an exploit only more time and resource consuming, but not less possible, doesn’t it?

So, my question is

Would you consider Windows Sandbox to be a viable alternative to conventional VM solutions in terms of security, or do the shortcuts used to achieve the performance undermine the VM’s core principles too much? Or am I just not understanding the technology and all of what the Sandbox is doing is technically safe?

An extra question: Does the situation change when we’re talking about a web-based attack, such as opening a malicious site in a browser from within the Sandbox, or does it come down to the same situation as running an infected executable? (disregarding the extra layer of sandboxing done in the browser itself)

Would this algorithm fail to count solutions $>$ $1$ for Exact-3-cover?

Decision Problem: Given a set $ S$ , is there at least a given $ N$ $ >$ $ 1$ amount of solutions, for an $ Exact~Cover~by~3-sets$ for $ C%$ ?

$ s$ = $ 1,2,3,4,5,6$

$ c$ = $ [[1,2,3],[4,3,2],[4,5,6],[5,1,6],[5,6,3]]$

Solutions

$ [1,2,3],[4,5,6]$

$ [4,3,2],[5,1,6]$

$ N$ = $ 2$

Yes, there are $ N$ solutions.

Algorithm

  1. Remove sets that have repeating elements

    (eg. [1,1,2] is deleted from $ C$ )

  2. Remove sets that have elements that don’t exist in $ S$

    (eg. [9,5,6] is deleted because $ 9$ not in $ S$ )

  3. Make sure all elements in $ S$ exist in $ C$ .

$ for$ a $ in$ $ range(0, length(s)):$

$ ~~~~~~~~$ $ IF$ $ s[a]$ $ not$ in $ c$ :

$ ~~~~~~~~~~~~~$ OUTPUT NO

Convert $ C$ into a complete list

$ WHILE$ $ c[i]$ has [brackets]:

$ ~~~~~~~~~~$ DELETE [BRACKETS] FROM $ C$

now $ c$ = $ [1, 2, 3, 4, 3, 2, 4, 5, 6, 5, 1, 6, 5, 6, 3]$

Finally, Decide

$ n$ = $ (‘Enter~for~N:~’))$

$ yes$ = $ 0$

$ for$ a $ in$ $ range$ (0, $ length(c)):$

$ ~~~~~~$ $ if$ $ c$ .count($ c$ [a]) >= $ n$ :

$ ~~~~~~~~~~$ $ yes$ = $ 1$

$ ~~~~~~$ else:

$ ~~~~~~~~~~$ OUTPUT NO

$ ~~~~~~~~~~$ HALT

$ if$ $ yes$ == $ 1$ :

$ ~~~~$ OUTPUT YES

Edit: The above should do the same below.

yes = 0 for a in range(0, length(s)):     if c.count(s[a]) >= n:         yes = 1     else:         OUTPUT('No')         break  if yes == 1:     OUTPUT('yes') 

Facts to consider

  1. There cannot be any sets with elements that don’t exist in $ S$ .

  2. There cannot be any sets with repeating elements.

  3. All elements in $ S$ must exist in $ C$ . Else, a $ no$ is given.
  4. $ N$ must be > $ 1$
  5. If any element in $ C$ occurs < $ N$ times then the output must be $ No$ , because there wouldn’t be at least $ N$ solutions.

Question

Will this algorithm always work if the input is > $ 1$ , and if no how would it fail?

Solutions for backing-up my codebase

I have a codebase that I’ve been keeping on Github that I don’t want to worry about losing. I’ve intermittently backed up all the repos to an S3 instance, but this doesn’t feel secure. If my Github and AWS accounts, or just my machine, were compromised then our entire codebase & its backups could be deleted.

What can I do to protect against this? I’m having a difficult time finding solutions which guarantee that I won’t have to worry about an account being compromised and everything being subsequently deleted.

Must a decision problem in $NP$ have a complement in $Co-NP$, if I can verify the solutions to in polynomial-time?

Goldbach’s Conjecture says every even integer $ >$ $ 2$ can be expressed as the sum of two primes.

Let’s say $ N$ is our input and its $ 10$ . Which is an integer > 2 and is not odd.

Algorithm

1.Create list of numbers from $ 1,to~N$

2.Use prime-testing algorithm for creating a second list of prime numbers

3.Use my 2_sum solver that allows you to use primes twice that sum up to $ N$

for j in range(list-of-primes)):   if N-(list-of-primes[j]) in list-of-primes:    print('yes')    break 

4.Verify solution efficently

if AKS-primality(N-(list-of-primes[j])):     if AKS-primality(list-of-primes[j]):         print('Solution is correct') 

5.Output

yes 7 + 3 Solution is correct 

Question

If the conjecture is true, then the answer will always be Yes. Does that mean it can’t be in $ Co-NP$ because the answer is always Yes?

Multiple Optimal Solutions in Dynamic Programming

In 2-D dynamic programming problems like Edit Distance and binary knapsack, there can be multiple optimal solutions. By tracing back from the last element in the matrix one could trace out all the possible solutions.

Here’s the question: How to count the number of unique optimal solutions without backtracking? Is it even possible?

I’ve been stuck on this problem for a while. Any help would be appreciated.

Example: The edit distance between two strings, TREE and TOR is 3.However, it has four optimal solutions.

1) TREE TOR_

Replace(R,O), Replace(E,R), Delete(E)

2) TREE TO_R

Replace(R,O), Delete(E) Replace(E,R)

3) TREE T_OR

Delete(R), Replace(E,O), Replace(E,R)

4) T_REE TOR__

Insert(O), Delete(E), Delete(E)